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 1vJQVZ-005yqx-2G for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Nov 2025 06:08:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vJQVX-00GesS-1P for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Nov 2025 06:08:35 +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 1vJQVW-00GesK-2y for pgsql-hackers@lists.postgresql.org; Thu, 13 Nov 2025 06:08:35 +0000 Received: from mail-oa1-x31.google.com ([2001:4860:4864:20::31]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vJQVT-007U3W-2l for pgsql-hackers@lists.postgresql.org; Thu, 13 Nov 2025 06:08:34 +0000 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-3de7e765439so225645fac.1 for ; Wed, 12 Nov 2025 22:08:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763014110; x=1763618910; 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=uSh016JwWyt0cwjfZk9skmt3eurACkYk5RONQWzuKXQ=; b=JEXoUGmU2rBRmUEIQlzvIqZY5G3G8PcDbzTRgqtqLHfbNLj4DpruIBox/J9TSKDcry n3sHepTDuhaS5PuNd2oszwZSTu2u5sbrYK31lzqqo0MtNPyc1Od/6v4ncq08K9LSX+fB b6RTnhlL6ROjypMqo9UX3cY57B/zVhXPAOLRy6d3tllla2O1oP1EewRLoTWyIqVr8JwK hLaf8qT0o3kBKb4om0E8/qsSAurOkGk09IQq8MkSwJTDgZalpHo7AkDVHYgOAdLiJLXD B5SDESGCD8SJitf7q2ZAIGHXIr/Axzalqlz+LFQbfZNrEHXVgSxpVVpNSrIK71eh30ZT vloQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763014110; x=1763618910; 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=uSh016JwWyt0cwjfZk9skmt3eurACkYk5RONQWzuKXQ=; b=vQu1LTnQ+lEbc/lcQ/zWx48cu70CbY/wVYdC0A9HKABS05ZLP5K2FvLK9bGo4fPJzs UQuLFPpUDFCqeq2ytD1bzsqXRzRXDmTF2wOrITb4C/MasM9H0fpFcPXZy8beZsGigOyO 5eHYrzGSqStZP4U1xRUIedyXFuixnMPPZrSgDH87Ikg55cbxEedJAVyfLn3VWOsILQNL PtanhrjrxMEbrvjtrGWCe/hMGZ1T7QHzGsDK79IviEzhG0Mm5O1bjrh1F4A5uCM1aA4d UikMpaZQ6p+xFbGJ7dw+1L4gbzejKU9VqBbSylG+VUwW12cvIYa7GGof66BV61Ii9Vkg 9Gtg== X-Forwarded-Encrypted: i=1; AJvYcCWGmn7Kg0hFFdHsP1g6wGSnSmH9lxxPd4DrnyZwkBzXWJI1EzMGxFKS9X2aCaGu4PwdOLo1YnrSHv/RHbHe@lists.postgresql.org X-Gm-Message-State: AOJu0YxfGNhotj1DJLWT6xtmHpF0PzkY5lyphrzjY6A8chlUaZBahaDc VDI5sdhii4Pp5ysxxk8448m4JAB4y5Xp+vgBNPTrcE3mdg/qWU0iAUKIOZMEBQJexm+GtVVE6Mp 1i7ak0mfrXbXajsWdnt7dTgYHSf+M1mg= X-Gm-Gg: ASbGncuADpiJZ1/OwDveapjxPfe6b1gPMOVn0WOOm/fbzXRkPyf0hDpApZ8yJOYc2Za 1BVZjp0pQUWlw62cUFJq9BMKZMTXWaN+YM/LjmQ3eIY691dFd7SUMKiDqacu5iiOyD4IukjVwya scx7ILT/5uFgA1yMubhgTNdJ1oKrzNJuOao3MiNYA0+5GrnkIic1UI0qHqfpEABGMJQhvBkKTcg xuEJ3eJSRsbgeMVgFCKqqt13bD5gDsCF1fM+VZ8rIaQpGQgNuuK1hpzLB6kKYw= X-Google-Smtp-Source: AGHT+IGfdAG+fWrgzWQlnBDXPp3RbW+gh6Iz4nRciS7ENgTRmPxL0KcSkyMdjtRbJpYvOlDytt3F6VpOdmJ52hp+oYU= X-Received: by 2002:a05:6808:350b:b0:44f:ff53:18a0 with SMTP id 5614622812f47-450744f4b6emr2545888b6e.18.1763014109762; Wed, 12 Nov 2025 22:08:29 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Thu, 13 Nov 2025 11:38:17 +0530 X-Gm-Features: AWmQ_blgHkdV0Qf2Iin5PUPUYwaxMwduaZDXOKb-wWMZ9FHJYbgVr_GfBFf4cD4 Message-ID: Subject: Re: Skipping schema changes in publication To: Peter Smith Cc: vignesh C , Amit Kapila , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000bf9590064373b5ae" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bf9590064373b5ae Content-Type: text/plain; charset="UTF-8" On Tue, 11 Nov 2025 at 15:50, Shlok Kyal wrote: > > On Fri, 7 Nov 2025 at 11:36, Peter Smith wrote: > > > > Hi Shlok. > > > > Some questions for the patch v25-0002 (EXCEPT tables) > > > > ====== > > doc/src/sgml/ref/alter_publication.sgml > > > > 1. > > +ALTER PUBLICATION name > > ADD ALL TABLES [ EXCEPT [ TABLE ] ( > class="parameter">exception_object [, ... ] ) ] > > > > You can do both ADD/SET the , so really there > > should be an ADD/SET ALL TABLES command as well, right? > > > These patches only added the ADD ALL TABLES command. I think once the > ADD ALL TABLES patch is committed, we can add the syntax SET ALL > TABLES. > > > ~~~ > > > > 2. > > What was your reason for changing the syntax? > > AFAICT those added "( )" are not strictly necessary, so I just > > wondered your reason. > > > > For example, we do not have any "( )" for [,...]. > > It is: ALTER PUBLICATION name ADD publication_object [, ...] > > Not: ALTER PUBLICATION name ADD (publication_object [, ...]) > > > > So in the same way we could have EXCEPT syntax like that: > > ALTER PUBLICATION name ADD ALL TABLES [EXCEPT [, ...]] > > Where table_exception_object is: [ TABLE ] [ ONLY ] table_name [ * ] > > > > Currently, if the user just wants to exclude a single table they must do: > > ALTER PUBLICATION name ADD ALL TABLES EXCEPT (t1); > > instead of just ALTER PUBLICATION name ADD ALL TABLES EXCEPT t1; > > > With recent commit now we support > CREATE PUBLICATION .. FOR ALL TABLES, ALL SEQUENCES. > > Now when I am trying to support "FOR ALL TABLE EXCEPT t1, t2" , I am > getting a conflict when compiling this grammar. > For example > CREATE PUBLICATION .. FOR ALL TABLES EXCEPT t1, ... > After this comma, bison is giving conflict because it is not able to > figure whether to pick > ExceptPublicationObjSpec or a PublicationAllObjSpec. > So to handle this I introduced brackets around the table list. > And to make ALTER PUBLICATION similar to CREATE PUBLICATION, I have > added the same syntax for it. > > So current syntax for CREATE/ALTER PUBLICATION is like: > CREATE PUBLICATION ... ALL TABLES EXCEPT TABLE(t1, t2, t3); > ALTER PUBLICATION ... ADD ALL TABLES EXCEPT TABLE(t1, t2, t3); > > > ~~~ > > > > 3. > > BTW, I think you may need to consider a > > instead of a generic name like , because in the > > future if we EXCEPT SEQUENCES the name may be not > > appropriate because things like [ONLY] and [*] are not applicable for > > sequences. > Fixed > > I have attached the latest patch here. > I have also addressed the comments for [1], [2]. > > [1]: https://www.postgresql.org/message-id/CALDaNm0xDv96F%2B5LzcJYV6RC3Jg%2BRtdUqpQ-zoauwq3woTFzmQ%40mail.gmail.com > [2]: https://www.postgresql.org/message-id/CAHut+PsRD8ybC7MDBNBXXs=J2DuGiOc8kSePRyZc0s63U5f7tw@mail.gmail.com > The patches needed a rebase. Here are the rebased patches. Thanks, Shlok Kyal --000000000000bf9590064373b5ae Content-Type: application/octet-stream; name="v27-0001-Add-RESET-clause-to-Alter-Publication-which-will.patch" Content-Disposition: attachment; filename="v27-0001-Add-RESET-clause-to-Alter-Publication-which-will.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhx11mev0 RnJvbSAwNWRlODg5YTczMzA1NzcxOTM0YzVmZGIzZTU2ZDMwZDAzNmJmOGVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgMzAgT2N0IDIwMjUgMTA6NTI6NTYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYy NyAxLzNdIEFkZCBSRVNFVCBjbGF1c2UgdG8gQWx0ZXIgUHVibGljYXRpb24gd2hpY2ggd2lsbAog cmVzZXQgdGhlIHB1YmxpY2F0aW9uIHdpdGggZGVmYXVsdCB2YWx1ZXMuCgpUaGlzIHBhdGNoIGFk ZHMgYSBuZXcgUkVTRVQgY2xhdXNlIHRvIEFMVEVSIFBVQkxJQ0FUSU9OIHdoaWNoIHdpbGwgcmVz ZXQKdGhlIHB1YmxpY2F0aW9uIHRvIHRoZSBkZWZhdWx0IHN0YXRlLiBUaGlzIGluY2x1ZGVzIHJl c2V0dGluZyB0aGUgcHVibGljYXRpb24KcGFyYW1ldGVycywgc2V0dGluZyBBTEwgVEFCTEVTIGFu ZCBBTEwgU0VRVUVOQ0VTIGZsYWdzIHRvIGZhbHNlIGFuZCBkcm9wcGluZwp0aGUgcmVsYXRpb25z IGFuZCBzY2hlbWFzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVibGljYXRpb24uClVz YWdlOgpBTFRFUiBQVUJMSUNBVElPTiBwdWIxIFJFU0VUOwotLS0KIGRvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfcHVibGljYXRpb24uc2dtbCAgIHwgIDM1ICsrKysrLS0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5jICAgIHwgMTA4ICsrKysrKysrKysrKysrKysrKy0tCiBzcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICB8ICAxMyArKy0KIHNyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICB8ICAxMCArKwogc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wdWJsaWNhdGlvbi5vdXQgfCAxMTkgKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgfCAgNTMgKysrKysrKysrKwogOCBmaWxl cyBjaGFuZ2VkLCAzMjUgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IDhkZDI1MGQyZjNiLi5kOGMyNGVmZDc4 NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbApAQCAtMjcsNiArMjcs NyBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+IERST1AgPHJlcGxhYwogQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBTRVQgKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4g Wz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFss IC4uLiBdICkKIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uYW1lPC9yZXBsYWNlYWJsZT4gT1dORVIgVE8geyA8cmVwbGFjZWFibGU+bmV3X293bmVyPC9y ZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1JPTEUgfCBDVVJSRU5UX1VTRVIgfCBTRVNTSU9OX1VTRVIg fQogQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHJlcGxhY2VhYmxlPm5ld19uYW1lPC9yZXBsYWNlYWJs ZT4KK0FMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4gUkVTRVQKIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwv cGhyYXNlPgogCkBAIC03MywxOCArNzQsMzIgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAg PC9wYXJhPgogCiAgIDxwYXJhPgotICAgVGhlIHJlbWFpbmluZyB2YXJpYW50cyBjaGFuZ2UgdGhl IG93bmVyIGFuZCB0aGUgbmFtZSBvZiB0aGUgcHVibGljYXRpb24uCisgICBUaGUgPGxpdGVyYWw+ T1dORVI8L2xpdGVyYWw+IGNsYXVzZSB3aWxsIGNoYW5nZSB0aGUgb3duZXIgb2YgdGhlCisgICBw dWJsaWNhdGlvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlIDxsaXRlcmFsPlJFTkFN RTwvbGl0ZXJhbD4gY2xhdXNlIHdpbGwgY2hhbmdlIHRoZSBuYW1lIG9mIHRoZQorICAgcHVibGlj YXRpb24uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSA8bGl0ZXJhbD5SRVNFVDwvbGl0 ZXJhbD4gY2xhdXNlIHdpbGwgcmVzZXQgdGhlIHB1YmxpY2F0aW9uIHRvIHRoZSBkZWZhdWx0Cisg ICBzdGF0ZS4gVGhpcyBpbmNsdWRlcyByZXNldHRpbmcgYWxsIHB1YmxpY2F0aW9uIHBhcmFtZXRl cnMsIHNldHRpbmcgdGhlCisgICA8bGl0ZXJhbD5BTEwgVEFCTEVTPC9saXRlcmFsPiBhbmQgPGxp dGVyYWw+QUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4gZmxhZ3MgdG8KKyAgIDxsaXRlcmFsPmZhbHNl PC9saXRlcmFsPiwgYW5kIHJlbW92aW5nIGFsbCBhc3NvY2lhdGVkIHRhYmxlcyBhbmQgc2NoZW1h cyBmcm9tCisgICB0aGUgcHVibGljYXRpb24uCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KICAgIFlv dSBtdXN0IG93biB0aGUgcHVibGljYXRpb24gdG8gdXNlIDxjb21tYW5kPkFMVEVSIFBVQkxJQ0FU SU9OPC9jb21tYW5kPi4KICAgIEFkZGluZyBhIHRhYmxlIHRvIGEgcHVibGljYXRpb24gYWRkaXRp b25hbGx5IHJlcXVpcmVzIG93bmluZyB0aGF0IHRhYmxlLgotICAgVGhlIDxsaXRlcmFsPkFERCBU QUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiBhbmQKLSAgIDxsaXRlcmFsPlNFVCBUQUJMRVMgSU4g U0NIRU1BPC9saXRlcmFsPiB0byBhIHB1YmxpY2F0aW9uIHJlcXVpcmVzIHRoZQotICAgaW52b2tp bmcgdXNlciB0byBiZSBhIHN1cGVydXNlci4KLSAgIFRvIGFsdGVyIHRoZSBvd25lciwgeW91IG11 c3QgYmUgYWJsZSB0byA8bGl0ZXJhbD5TRVQgUk9MRTwvbGl0ZXJhbD4gdG8gdGhlCi0gICBuZXcg b3duaW5nIHJvbGUsIGFuZCB0aGF0IHJvbGUgbXVzdCBoYXZlIDxsaXRlcmFsPkNSRUFURTwvbGl0 ZXJhbD4KLSAgIHByaXZpbGVnZSBvbiB0aGUgZGF0YWJhc2UuCisgICBUaGUgPGxpdGVyYWw+QURE IFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LAorICAgPGxpdGVyYWw+U0VUIFRBQkxFUyBJTiBT Q0hFTUE8L2xpdGVyYWw+IHRvIGEgcHVibGljYXRpb24gYW5kCisgICA8bGl0ZXJhbD5SRVNFVDwv bGl0ZXJhbD4gb2YgcHVibGljYXRpb24gcmVxdWlyZXMgdGhlIGludm9raW5nIHVzZXIgdG8gYmUg YQorICAgc3VwZXJ1c2VyLiBUbyBhbHRlciB0aGUgb3duZXIsIHlvdSBtdXN0IGJlIGFibGUgdG8K KyAgIDxsaXRlcmFsPlNFVCBST0xFPC9saXRlcmFsPiB0byB0aGUgbmV3IG93bmluZyByb2xlLCBh bmQgdGhhdCByb2xlIG11c3QgaGF2ZQorICAgPGxpdGVyYWw+Q1JFQVRFPC9saXRlcmFsPiBwcml2 aWxlZ2Ugb24gdGhlIGRhdGFiYXNlLgogICAgQWxzbywgdGhlIG5ldyBvd25lciBvZiBhCiAgICA8 bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci10YWJsZXMtaW4t c2NoZW1hIj48bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD48L2xpbms+CiAg ICBvciA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1hbGwt dGFibGVzIj48bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD48L2xpbms+CkBAIC0yMzYs NiArMjUxLDEyIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0aW9uIEFERCBUQUJM RVMgSU4gU0NIRU1BIG1hcmtldGluZywgc2FsZXM7CiAgICA8c3RydWN0bmFtZT5wcm9kdWN0aW9u X3B1YmxpY2F0aW9uPC9zdHJ1Y3RuYW1lPjoKIDxwcm9ncmFtbGlzdGluZz4KIEFMVEVSIFBVQkxJ Q0FUSU9OIHByb2R1Y3Rpb25fcHVibGljYXRpb24gQUREIFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50 cywgVEFCTEVTIElOIFNDSEVNQSBwcm9kdWN0aW9uOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+ CisKKyAgPHBhcmE+CisgICBSZXNldCB0aGUgcHVibGljYXRpb24gPHN0cnVjdG5hbWU+cHJvZHVj dGlvbl9wdWJsaWNhdGlvbjwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQ VUJMSUNBVElPTiBwcm9kdWN0aW9uX3B1YmxpY2F0aW9uIFJFU0VUOwogPC9wcm9ncmFtbGlzdGlu Zz48L3BhcmE+CiAgPC9yZWZzZWN0MT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNt ZHMuYwppbmRleCAxZmFmM2E4YzM3Mi4uNTAyMzk1MTNlM2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3B1YmxpY2F0aW9uY21kcy5jCkBAIC05MCwxMiArOTAsMTIgQEAgcGFyc2VfcHVibGljYXRpb25f b3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJKnB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnNf Z2l2ZW4gPSBmYWxzZTsKIAogCS8qIGRlZmF1bHRzICovCi0JcHViYWN0aW9ucy0+cHViaW5zZXJ0 ID0gdHJ1ZTsKLQlwdWJhY3Rpb25zLT5wdWJ1cGRhdGUgPSB0cnVlOwotCXB1YmFjdGlvbnMtPnB1 YmRlbGV0ZSA9IHRydWU7Ci0JcHViYWN0aW9ucy0+cHVidHJ1bmNhdGUgPSB0cnVlOwotCSpwdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlOwotCSpwdWJsaXNoX2dlbmVyYXRlZF9jb2x1 bW5zID0gUFVCTElTSF9HRU5DT0xTX05PTkU7CisJcHViYWN0aW9ucy0+cHViaW5zZXJ0ID0gUFVC X0RFRkFVTFRfQUNUSU9OX0lOU0VSVDsKKwlwdWJhY3Rpb25zLT5wdWJ1cGRhdGUgPSBQVUJfREVG QVVMVF9BQ1RJT05fVVBEQVRFOworCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSA9IFBVQl9ERUZBVUxU X0FDVElPTl9ERUxFVEU7CisJcHViYWN0aW9ucy0+cHVidHJ1bmNhdGUgPSBQVUJfREVGQVVMVF9B Q1RJT05fVFJVTkNBVEU7CisJKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gUFVCX0RFRkFV TFRfVklBX1JPT1Q7CisJKnB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMgPSBQVUJfREVGQVVMVF9H RU5DT0xTOwogCiAJLyogUGFyc2Ugb3B0aW9ucyAqLwogCWZvcmVhY2gobGMsIG9wdGlvbnMpCkBA IC0xMjA5LDYgKzEyMDksMTAwIEBAIEludmFsaWRhdGVQdWJsaWNhdGlvblJlbHMoTGlzdCAqcmVs aWRzKQogCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOwogfQogCisvKgorICogUmVzZXQg dGhlIHB1YmxpY2F0aW9uLgorICoKKyAqIFJlc2V0IHRoZSBwdWJsaWNhdGlvbiBwYXJhbWV0ZXJz LCBzZXR0aW5nIEFMTCBUQUJMRVMgZmxhZyB0byBmYWxzZSBhbmQgZHJvcAorICogYWxsIHJlbGF0 aW9ucyBhbmQgc2NoZW1hcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9u LgorICovCitzdGF0aWMgdm9pZAorQWx0ZXJQdWJsaWNhdGlvblJlc2V0KFBhcnNlU3RhdGUgKnBz dGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCisJCQkJCSAgUmVsYXRpb24gcmVsLCBI ZWFwVHVwbGUgdHVwKQoreworCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3Bn X3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKKwlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9p ZDsKKwlMaXN0CSAgICpzY2hlbWFpZHMgPSBOSUw7CisJTGlzdAkgICAqcmVscyA9IE5JTDsKKwlM aXN0CSAgICpyZWxpZHMgPSBOSUw7CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfcHVibGljYXRpb25d OworCWJvb2wJCXJlcGxhY2VzW05hdHRzX3BnX3B1YmxpY2F0aW9uXTsKKwlEYXR1bQkJdmFsdWVz W05hdHRzX3BnX3B1YmxpY2F0aW9uXTsKKworCS8qIFJFU0VUIHB1YmxpY2F0aW9uIHJlcXVpcmVz IHN1cGVydXNlciAqLworCWlmICghc3VwZXJ1c2VyKCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ ZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCWVycm1zZygibXVz dCBiZSBzdXBlcnVzZXIgdG8gUkVTRVQgcHVibGljYXRpb24iKSk7CisKKwltZW1zZXQodmFsdWVz LCAwLCBzaXplb2YodmFsdWVzKSk7CisJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxz KSk7CisJbWVtc2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9mKHJlcGxhY2VzKSk7CisKKwkvKiBS ZXNldCB0aGUgcHVibGljYXRpb24gcGFyYW1ldGVycyAqLworCXZhbHVlc1tBbnVtX3BnX3B1Ymxp Y2F0aW9uX3B1Ymluc2VydCAtIDFdID0gQm9vbEdldERhdHVtKFBVQl9ERUZBVUxUX0FDVElPTl9J TlNFUlQpOworCXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHViaW5zZXJ0IC0gMV0gPSB0 cnVlOworCisJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVidXBkYXRlIC0gMV0gPSBCb29s R2V0RGF0dW0oUFVCX0RFRkFVTFRfQUNUSU9OX1VQREFURSk7CisJcmVwbGFjZXNbQW51bV9wZ19w dWJsaWNhdGlvbl9wdWJ1cGRhdGUgLSAxXSA9IHRydWU7CisKKwl2YWx1ZXNbQW51bV9wZ19wdWJs aWNhdGlvbl9wdWJkZWxldGUgLSAxXSA9IEJvb2xHZXREYXR1bShQVUJfREVGQVVMVF9BQ1RJT05f REVMRVRFKTsKKwlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRlbGV0ZSAtIDFdID0g dHJ1ZTsKKworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnRydW5jYXRlIC0gMV0gPSBC b29sR2V0RGF0dW0oUFVCX0RFRkFVTFRfQUNUSU9OX1RSVU5DQVRFKTsKKwlyZXBsYWNlc1tBbnVt X3BnX3B1YmxpY2F0aW9uX3B1YnRydW5jYXRlIC0gMV0gPSB0cnVlOworCisJdmFsdWVzW0FudW1f cGdfcHVibGljYXRpb25fcHVidmlhcm9vdCAtIDFdID0gQm9vbEdldERhdHVtKFBVQl9ERUZBVUxU X1ZJQV9ST09UKTsKKwlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnZpYXJvb3QgLSAx XSA9IHRydWU7CisKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJnZW5jb2xzIC0gMV0g PSBDaGFyR2V0RGF0dW0oUFVCX0RFRkFVTFRfR0VOQ09MUyk7CisJcmVwbGFjZXNbQW51bV9wZ19w dWJsaWNhdGlvbl9wdWJnZW5jb2xzIC0gMV0gPSB0cnVlOworCisJdmFsdWVzW0FudW1fcGdfcHVi bGljYXRpb25fcHViYWxsdGFibGVzIC0gMV0gPSBCb29sR2V0RGF0dW0oUFVCX0RFRkFVTFRfQUxM X1RBQkxFUyk7CisJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJhbGx0YWJsZXMgLSAx XSA9IHRydWU7CisKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJhbGxzZXF1ZW5jZXMg LSAxXSA9IEJvb2xHZXREYXR1bShQVUJfREVGQVVMVF9BTExfU0VRVUVOQ0VTKTsKKwlyZXBsYWNl c1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmFsbHNlcXVlbmNlcyAtIDFdID0gdHJ1ZTsKKworCWlm IChwdWJmb3JtLT5wdWJhbGx0YWJsZXMpCisJCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hlQWxsKCk7 CisKKwl0dXAgPSBoZWFwX21vZGlmeV90dXBsZSh0dXAsIFJlbGF0aW9uR2V0RGVzY3IocmVsKSwg dmFsdWVzLCBudWxscywKKwkJCQkJCQlyZXBsYWNlcyk7CisKKwkvKiBVcGRhdGUgdGhlIGNhdGFs b2cuICovCisJQ2F0YWxvZ1R1cGxlVXBkYXRlKHJlbCwgJnR1cC0+dF9zZWxmLCB0dXApOworCisJ LyogUmVtb3ZlIHRoZSBhc3NvY2lhdGVkIHNjaGVtYXMgZnJvbSB0aGUgcHVibGljYXRpb24gKi8K KwlzY2hlbWFpZHMgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViaWQpOworCisJLyoKKwkgKiBT Y2hlbWEgbG9jayBpcyBoZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlvbiBpcyBhbHRlcmVkIHRvIHBy ZXZlbnQKKwkgKiBjb25jdXJyZW50IHNjaGVtYSBkZWxldGlvbi4KKwkgKi8KKwlMb2NrU2NoZW1h TGlzdChzY2hlbWFpZHMpOworCisJLyogUmVtb3ZlIFNjaGVtYXMgKi8KKwlQdWJsaWNhdGlvbkRy b3BTY2hlbWFzKHB1YmlkLCBzY2hlbWFpZHMsIHRydWUpOworCisJLyogR2V0IGFsbCByZWxhdGlv bnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwdWJsaWNhdGlvbiAqLworCXJlbGlkcyA9IEdldFB1Ymxp Y2F0aW9uUmVsYXRpb25zKHB1YmlkLCBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCisJZm9yZWFj aF9vaWQocmVsaWQsIHJlbGlkcykKKwl7CisJCVB1YmxpY2F0aW9uUmVsSW5mbyAqcmVsOworCisJ CXJlbCA9IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25SZWxJbmZvKSk7CisJCXJlbC0+d2hlcmVD bGF1c2UgPSBOVUxMOworCQlyZWwtPmNvbHVtbnMgPSBOSUw7CisJCXJlbC0+cmVsYXRpb24gPSB0 YWJsZV9vcGVuKHJlbGlkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQlyZWxzID0gbGFw cGVuZChyZWxzLCByZWwpOworCX0KKworCS8qIFJlbW92ZSB0aGUgYXNzb2NpYXRlZCByZWxhdGlv bnMgZnJvbSB0aGUgcHVibGljYXRpb24gKi8KKwlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQs IHJlbHMsIHRydWUpOworCUNsb3NlVGFibGVMaXN0KHJlbHMpOworfQorCiAvKgogICogQWRkIG9y IHJlbW92ZSB0YWJsZSB0by9mcm9tIHB1YmxpY2F0aW9uLgogICovCkBAIC0xNTUzLDYgKzE2NDcs OCBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlv blN0bXQgKnN0bXQpCiAKIAlpZiAoc3RtdC0+b3B0aW9ucykKIAkJQWx0ZXJQdWJsaWNhdGlvbk9w dGlvbnMocHN0YXRlLCBzdG10LCByZWwsIHR1cCk7CisJZWxzZSBpZiAoc3RtdC0+YWN0aW9uID09 IEFQX1Jlc2V0KQorCQlBbHRlclB1YmxpY2F0aW9uUmVzZXQocHN0YXRlLCBzdG10LCByZWwsIHR1 cCk7CiAJZWxzZQogCXsKIAkJTGlzdAkgICAqcmVsYXRpb25zID0gTklMOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5k ZXggYzNhMGEzNTRhOWMuLmE4YjlhZTYxODJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTEwOTA0LDE1ICsx MDkwNCwxNyBAQCBwdWJfYWxsX29ial90eXBlX2xpc3Q6CVB1YmxpY2F0aW9uQWxsT2JqU3BlYwog ICoKICAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgQUREIHB1Yl9vYmogWywgLi4uXQogICoKLSAq IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgRFJPUCBwdWJfb2JqIFssIC4uLl0KLSAqCiAgKiBBTFRF UiBQVUJMSUNBVElPTiBuYW1lIFNFVCBwdWJfb2JqIFssIC4uLl0KICAqCisgKiBBTFRFUiBQVUJM SUNBVElPTiBuYW1lIERST1AgcHViX29iaiBbLCAuLi5dCisgKgogICogcHViX29iaiBpcyBvbmUg b2Y6CiAgKgogICoJCVRBQkxFIHRhYmxlX25hbWUgWywgLi4uXQogICoJCVRBQkxFUyBJTiBTQ0hF TUEgc2NoZW1hX25hbWUgWywgLi4uXQogICoKKyAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgUkVT RVQKKyAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIEFsdGVyUHVibGljYXRpb25TdG10OgpA QCAtMTA5NTQsNiArMTA5NTYsMTMgQEAgQWx0ZXJQdWJsaWNhdGlvblN0bXQ6CiAJCQkJCW4tPmFj dGlvbiA9IEFQX0Ryb3BPYmplY3RzOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJ fCBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIFJFU0VUCisJCQkJeworCQkJCQlBbHRlclB1YmxpY2F0 aW9uU3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyUHVibGljYXRpb25TdG10KTsKKwkJCQkJbi0+cHVi bmFtZSA9ICQzOworCQkJCQluLT5hY3Rpb24gPSBBUF9SZXNldDsKKwkJCQkJJCQgPSAoTm9kZSAq KW47CisJCQkJfQogCQk7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jCmluZGV4IDUxODA2NTk3MDM3Li41ZDkxOGFiYWE4NyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4u YwpAQCAtMjI4OSw3ICsyMjg5LDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5f aWQsCiAKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gKi8KIAllbHNlIGlmIChNYXRjaGVz KCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55KSkKLQkJQ09NUExFVEVfV0lUSCgiQURE IiwgIkRST1AiLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwgIlNFVCIpOworCQlDT01QTEVURV9X SVRIKCJBREQiLCAiRFJPUCIsICJPV05FUiBUTyIsICJSRU5BTUUgVE8iLCAiUkVTRVQiLCAiU0VU Iik7CiAJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IEFERCAqLwogCWVsc2UgaWYgKE1hdGNo ZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBREQiKSkKIAkJQ09NUExFVEVf V0lUSCgiVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5oCmluZGV4IDIyZjQ4YmI4OTc1Li43N2IwYTJmOWViOCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHVibGljYXRpb24uaApAQCAtMTUyLDYgKzE1MiwxNiBAQCBleHRlcm4gUHVibGljYXRp b24gKkdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCk7CiBleHRlcm4gUHVibGljYXRpb24gKkdldFB1 YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKnB1Ym5hbWUsIGJvb2wgbWlzc2luZ19vayk7CiBl eHRlcm4gTGlzdCAqR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkKTsKIAorLyogZGVm YXVsdCB2YWx1ZXMgZm9yIGZsYWdzIGFuZCBwdWJsaWNhdGlvbiBwYXJhbWV0ZXJzICovCisjZGVm aW5lIFBVQl9ERUZBVUxUX0FDVElPTl9JTlNFUlQgdHJ1ZQorI2RlZmluZSBQVUJfREVGQVVMVF9B Q1RJT05fVVBEQVRFIHRydWUKKyNkZWZpbmUgUFVCX0RFRkFVTFRfQUNUSU9OX0RFTEVURSB0cnVl CisjZGVmaW5lIFBVQl9ERUZBVUxUX0FDVElPTl9UUlVOQ0FURSB0cnVlCisjZGVmaW5lIFBVQl9E RUZBVUxUX1ZJQV9ST09UIGZhbHNlCisjZGVmaW5lIFBVQl9ERUZBVUxUX0FMTF9UQUJMRVMgZmFs c2UKKyNkZWZpbmUgUFVCX0RFRkFVTFRfQUxMX1NFUVVFTkNFUyBmYWxzZQorI2RlZmluZSBQVUJf REVGQVVMVF9HRU5DT0xTIFBVQkxJU0hfR0VOQ09MU19OT05FCisKIC8qLS0tLS0tLS0tCiAgKiBF eHBlY3RlZCB2YWx1ZXMgZm9yIHB1Yl9wYXJ0b3B0IHBhcmFtZXRlciBvZiBHZXRQdWJsaWNhdGlv blJlbGF0aW9ucygpLAogICogd2hpY2ggYWxsb3dzIGNhbGxlcnMgdG8gc3BlY2lmeSB3aGljaCBw YXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIHRhYmxlcwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4 IGQxNDI5NGE0ZWNlLi44Y2Y3NTcyNGE3YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDMy Niw2ICs0MzI2LDcgQEAgdHlwZWRlZiBlbnVtIEFsdGVyUHVibGljYXRpb25BY3Rpb24KIAlBUF9B ZGRPYmplY3RzLAkJCQkvKiBhZGQgb2JqZWN0cyB0byBwdWJsaWNhdGlvbiAqLwogCUFQX0Ryb3BP YmplY3RzLAkJCQkvKiByZW1vdmUgb2JqZWN0cyBmcm9tIHB1YmxpY2F0aW9uICovCiAJQVBfU2V0 T2JqZWN0cywJCQkJLyogc2V0IGxpc3Qgb2Ygb2JqZWN0cyAqLworCUFQX1Jlc2V0LAkJCQkJLyog cmVzZXQgdGhlIHB1YmxpY2F0aW9uICovCiB9IEFsdGVyUHVibGljYXRpb25BY3Rpb247CiAKIHR5 cGVkZWYgc3RydWN0IEFsdGVyUHVibGljYXRpb25TdG10CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IGU3MmQxMzA4OTY3Li5lM2JlMjllMzc4ZCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTIwMDksNiArMjAwOSwx MjUgQEAgVGFibGVzOgogRFJPUCBQVUJMSUNBVElPTiBwdWIxOwogRFJPUCBQVUJMSUNBVElPTiBw dWIyOwogRFJPUCBUQUJMRSBnZW5jb2xzOworLS0gVGVzdHMgZm9yIEFMVEVSIFBVQkxJQ0FUSU9O IC4uLiBSRVNFVAorQ1JFQVRFIFNDSEVNQSBwdWJfc2NoMTsKK0NSRUFURSBUQUJMRSBwdWJfc2No MS50YmwxIChhIGludCk7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBGT1IgQUxMIFRBQkxFUzsKK1JFU0VUIGNsaWVu dF9taW5fbWVzc2FnZXM7CistLSBWZXJpZnkgdGhhdCBvbmx5IHN1cGVydXNlciBjYW4gcmVzZXQg YSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBPV05FUiBUTyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOworU0VUIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyMjsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7IC0tIGZhaWwgLSBt dXN0IGJlIHN1cGVydXNlcgorRVJST1I6ICBtdXN0IGJlIHN1cGVydXNlciB0byBSRVNFVCBwdWJs aWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBPV05FUiBUTyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXI7CitTRVQgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXI7Cist LSBWZXJpZnkgdGhhdCAnQUxMIFRBQkxFUycgZmxhZyBpcyByZXNldAorXGRScCsgdGVzdHB1Yl9y ZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYKKygxIHJvdykKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNF VDsKK1xkUnArIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJv b3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCisoMSByb3cpCisKKy0tIFZlcmlmeSB0aGF0IGFz c29jaWF0ZWQgdGFibGVzIGFyZSByZW1vdmVkIGZyb20gdGhlIHB1YmxpY2F0aW9uIGFmdGVyIFJF U0VUCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBUQUJMRSBwdWJfc2NoMS50 YmwxOworXGRScCsgdGVzdHB1Yl9yZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK1RhYmxlczoKKyAgICAicHViX3NjaDEudGJs MSIKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKK1xkUnArIHRlc3Rw dWJfcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAg ICAgICAgICAgfCBmCisoMSByb3cpCisKKy0tIFZlcmlmeSB0aGF0IGFzc29jaWF0ZWQgc2NoZW1h cyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbiBhZnRlciBSRVNFVAorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWM7CitcZFJw KyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5v bmUgICAgICAgICAgICAgIHwgZgorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHVibGljIgor CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOworXGRScCsgdGVzdHB1Yl9y ZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYKKygxIHJvdykKKworLS0gVmVyaWZ5IHRoYXQgJ1BVQkxJU0gnIHBhcmFtZXRlciBp cyByZXNldAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBTRVQgKFBVQkxJU0ggPSAn Jyk7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAg ICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCitBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX3Jlc2V0IFJFU0VUOworXGRScCsgdGVzdHB1Yl9yZXNldAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9yZXNldAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2Vx dWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJh dGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKKygxIHJvdykK KworLS0gVmVyaWZ5IHRoYXQgJ1BVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UJyBwYXJhbWV0ZXIg aXMgcmVzZXQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgU0VUIChQVUJMSVNIX1ZJ QV9QQVJUSVRJT05fUk9PVCA9ICd0cnVlJyk7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX3Jlc2V0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBH ZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgdAorKDEg cm93KQorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOworXGRScCsgdGVz dHB1Yl9yZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAg ICAgICAgICAgICB8IGYKKygxIHJvdykKKworLS0gVmVyaWZ5IHRoYXQgJ1BVQkxJU0hfR0VORVJB VEVEX0NPTFVNTlMnIHBhcmFtZXRlciBpcyByZXNldAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9yZXNldCBTRVQgKFBVQkxJU0hfR0VORVJBVEVEX0NPTFVNTlMgPSBzdG9yZWQpOworXGRScCsg dGVzdHB1Yl9yZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBzdG9y ZWQgICAgICAgICAgICB8IGYKKygxIHJvdykKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9y ZXNldCBSRVNFVDsKK1xkUnArIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5z IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCisoMSByb3cpCisKK0RST1AgUFVC TElDQVRJT04gdGVzdHB1Yl9yZXNldDsKK0RST1AgVEFCTEUgcHViX3NjaDEudGJsMTsKK0RST1Ag U0NIRU1BIHB1Yl9zY2gxOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIC0tIFRlc3QgdGhh dCB0aGUgSU5TRVJUIE9OIENPTkZMSUNUIGNvbW1hbmQgY29ycmVjdGx5IGNoZWNrcyBSRVBMSUNB IElERU5USVRZCiAtLSB3aGVuIHRoZSB0YXJnZXQgdGFibGUgaXMgcHVibGlzaGVkLgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDAwMzkwYWVjZDQ3Li44NGRlYWFmNWExZiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMTI2OCw2ICsxMjY4LDU5IEBA IERST1AgUFVCTElDQVRJT04gcHViMTsKIERST1AgUFVCTElDQVRJT04gcHViMjsKIERST1AgVEFC TEUgZ2VuY29sczsKIAorLS0gVGVzdHMgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBSRVNFVAor Q1JFQVRFIFNDSEVNQSBwdWJfc2NoMTsKK0NSRUFURSBUQUJMRSBwdWJfc2NoMS50YmwxIChhIGlu dCk7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9yZXNldCBGT1IgQUxMIFRBQkxFUzsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXM7CisKKy0tIFZlcmlmeSB0aGF0IG9ubHkgc3VwZXJ1c2VyIGNhbiByZXNldCBhIHB1YmxpY2F0 aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IE9XTkVSIFRPIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlcjI7CitTRVQgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOworQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsgLS0gZmFpbCAtIG11c3QgYmUgc3Vw ZXJ1c2VyCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IE9XTkVSIFRPIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlcjsKK1NFVCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjsKKwor LS0gVmVyaWZ5IHRoYXQgJ0FMTCBUQUJMRVMnIGZsYWcgaXMgcmVzZXQKK1xkUnArIHRlc3RwdWJf cmVzZXQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CitcZFJwKyB0ZXN0 cHViX3Jlc2V0CisKKy0tIFZlcmlmeSB0aGF0IGFzc29jaWF0ZWQgdGFibGVzIGFyZSByZW1vdmVk IGZyb20gdGhlIHB1YmxpY2F0aW9uIGFmdGVyIFJFU0VUCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX3Jlc2V0IEFERCBUQUJMRSBwdWJfc2NoMS50YmwxOworXGRScCsgdGVzdHB1Yl9yZXNldAor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKK1xkUnArIHRlc3RwdWJfcmVz ZXQKKworLS0gVmVyaWZ5IHRoYXQgYXNzb2NpYXRlZCBzY2hlbWFzIGFyZSByZW1vdmVkIGZyb20g dGhlIHB1YmxpY2F0aW9uIGFmdGVyIFJFU0VUCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jl c2V0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYzsKK1xkUnArIHRlc3RwdWJfcmVzZXQKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CitcZFJwKyB0ZXN0cHViX3Jlc2V0 CisKKy0tIFZlcmlmeSB0aGF0ICdQVUJMSVNIJyBwYXJhbWV0ZXIgaXMgcmVzZXQKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgU0VUIChQVUJMSVNIID0gJycpOworXGRScCsgdGVzdHB1 Yl9yZXNldAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKK1xkUnArIHRl c3RwdWJfcmVzZXQKKworLS0gVmVyaWZ5IHRoYXQgJ1BVQkxJU0hfVklBX1BBUlRJVElPTl9ST09U JyBwYXJhbWV0ZXIgaXMgcmVzZXQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgU0VU IChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVCA9ICd0cnVlJyk7CitcZFJwKyB0ZXN0cHViX3Jl c2V0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOworXGRScCsgdGVzdHB1 Yl9yZXNldAorCistLSBWZXJpZnkgdGhhdCAnUFVCTElTSF9HRU5FUkFURURfQ09MVU1OUycgcGFy YW1ldGVyIGlzIHJlc2V0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFNFVCAoUFVC TElTSF9HRU5FUkFURURfQ09MVU1OUyA9IHN0b3JlZCk7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOworXGRScCsgdGVzdHB1Yl9yZXNl dAorCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQ7CitEUk9QIFRBQkxFIHB1Yl9zY2gx LnRibDE7CitEUk9QIFNDSEVNQSBwdWJfc2NoMTsKKwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdl czsKIAogLS0gVGVzdCB0aGF0IHRoZSBJTlNFUlQgT04gQ09ORkxJQ1QgY29tbWFuZCBjb3JyZWN0 bHkgY2hlY2tzIFJFUExJQ0EgSURFTlRJVFkKLS0gCjIuMzQuMQoK --000000000000bf9590064373b5ae Content-Type: application/octet-stream; name="v27-0003-Skip-publishing-the-columns-specified-in-FOR-TAB.patch" Content-Disposition: attachment; filename="v27-0003-Skip-publishing-the-columns-specified-in-FOR-TAB.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhx11mfd2 RnJvbSA1YzJkZjMyOTlmNjhkMTM2NjY2MzdkZDA3MWY2NjI0NDAxMzc3NmI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgMTMgTm92IDIwMjUgMTE6MDk6MDEgKzA1MzAKU3ViamVjdDogW1BBVENIIHYy NyAzLzNdIFNraXAgcHVibGlzaGluZyB0aGUgY29sdW1ucyBzcGVjaWZpZWQgaW4gRk9SIFRBQkxF IAogRVhDRVBUCgpBIG5ldyAiVEFCTEUgdGFibGVfbmFtZSBFWENFUFQgKGNvbHVtbl9saXN0KSIg Y2xhdXNlIGZvciBDUkVBVEUvQUxURVIKUFVCTElDQVRJT04gYWxsb3dzIG9uZSBvciBtb3JlIGNv bHVtbnMgdG8gYmUgZXhjbHVkZWQuIFRoZSBwdWJsaXNoZXIKd2lsbCBub3Qgc2VuZCB0aGUgZGF0 YSBvZiBleGNsdWRlZCBjb2x1bW5zIHRvIHRoZSBzdWJzY3JpYmVyLgoKVGhlIG5ldyBzeW50YXgg YWxsb3dzIHNwZWNpZnlpbmcgZXhjbHVkZWQgY29sdW1uIGxpc3Qgd2hlbiBjcmVhdGluZyBvcgph bHRlcmluZyBhIHB1YmxpY2F0aW9uLiBGb3IgZXhhbXBsZToKQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1 Ym5hbWUgRk9SIFRBQkxFIHRhYm5hbWUgRVhDRVBUIChjb2wxLCBjb2wyLCBjb2wzKQpvcgpBTFRF UiBQVUJMSUNBVElPTiBwdWJuYW1lIEFERCBUQUJMRSB0YWJuYW1lIEVYQ0VQVCAoY29sMSwgY29s MiwgY29sMykKCldoZW4gY29sdW1uICJwcmV4Y2VwdCIgb2Ygc3lzdGVtIGNhdGFsb2cgInBnX3B1 YmxpY2F0aW9uX3JlbCIgaXMgc2V0CnRvICJ0cnVlIiwgYW5kIGNvbHVtbiAicHJhdHRycyIgb2Yg c3lzdGVtIGNhdGFsb2cgInBnX3B1YmxpY2F0aW9uX3JlbCIKaXMgbm90IE5VTEwsIHRoYXQgbWVh bnMgdGhlIHB1YmxpY2F0aW9uIHdhcyBjcmVhdGVkIHdpdGggIkVYQ0VQVAooY29sdW1uLWxpc3Qp IiwgYW5kIHRoZSBjb2x1bW5zIGluICJwcmF0dHJzIiB3aWxsIGJlIGV4Y2x1ZGVkIGZyb20KYmVp bmcgcHVibGlzaGVkLgoKcGdfZHVtcCBpcyB1cGRhdGVkIHRvIGlkZW50aWZ5IGFuZCBkdW1wIHRo ZSBleGNsdWRlZCBjb2x1bW4gbGlzdCBvZiB0aGUKcHVibGljYXRpb24uCgpUaGUgcHNxbCBcZCBm YW1pbHkgb2YgY29tbWFuZHMgY2FuIG5vdyBkaXNwbGF5IGV4Y2x1ZGVkIGNvbHVtbiBsaXN0LiBl LmcuCnBzcWwgXGRScCsgdmFyaWFudCB3aWxsIG5vdyBkaXNwbGF5IGFzc29jaWF0ZWQgIkVYQ0VQ VCAoY29sdW1uX2xpc3QpIiBpZgphbnkuCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwg ICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNh dGlvbi5zZ21sICAgICAgICAgfCAxMDYgKysrKystLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9w dWJsaWNhdGlvbi5zZ21sICAgICAgIHwgIDEwICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9w dWJsaWNhdGlvbi5zZ21sICAgICAgfCAgNTIgKysrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5jICAgICAgICAgIHwgIDc1ICsrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYyAgICAgICAgfCAgNTIgKystLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDQ0ICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC90YWJsZXN5bmMuYyAgIHwgIDQxICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgIDcwICsrKystCiBzcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNDUgKy0tCiBzcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMgICAgICAgICAgICAgICAgICAgICAgIHwgMjYyICsrKysrKysrKysrLS0tLS0tLQogc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwgIDEzICstCiBzcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmggICAgICB8ICAgNSArLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgICAgIHwgIDg4ICsrKysrKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgICAgIHwgIDU1ICsrKysKIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMSArCiAuLi4vdC8w MzhfcmVwX2NoYW5nZXNfZXhjZXB0X2NvbGxpc3QucGwgICAgICAgfCAxOTMgKysrKysrKysrKysr KwogMTkgZmlsZXMgY2hhbmdlZCwgOTA3IGluc2VydGlvbnMoKyksIDIxNyBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzhfcmVwX2NoYW5n ZXNfZXhjZXB0X2NvbGxpc3QucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGE0ZDMyZGU1OGVjLi43MDE0 NGI2NzIxMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTY1ODYsNyArNjU4NiwxMCBAQCBTQ1JBTS1TSEEt MjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+Ojxy ZXBsYWNlYWJsZT4mbAogICAgICAgPHN0cnVjdGZpZWxkPnByZXhjZXB0PC9zdHJ1Y3RmaWVsZD4g PHR5cGU+Ym9vbDwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFRy dWUgaWYgdGhlIHJlbGF0aW9uIG11c3QgYmUgZXhjbHVkZWQKKyAgICAgICBUcnVlIGlmIHRoZSBj b2x1bW4gbGlzdCBvciByZWxhdGlvbiBtdXN0IGJlIGV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb24u CisgICAgICAgSWYgYSBjb2x1bW4gbGlzdCBpcyBzcGVjaWZpZWQgaW4gPGxpdGVyYWw+cHJhdHRy czwvbGl0ZXJhbD4sIHRoZW4KKyAgICAgICBleGNsdWRlIG9ubHkgdGhvc2UgY29sdW1ucy4gSWYg PGxpdGVyYWw+cHJhdHRyczwvbGl0ZXJhbD4gaXMgbnVsbCwKKyAgICAgICB0aGVuIGV4Y2x1ZGUg dGhlIGVudGlyZSByZWxhdGlvbi4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4K IApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggYzI3ZDc0NjJlZmQuLjE3 YWZjZDc5MTA3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTEzNzYs MTAgKzEzNzYsMTAgQEAgUHVibGljYXRpb25zOgogICA8dGl0bGU+Q29sdW1uIExpc3RzPC90aXRs ZT4KIAogICA8cGFyYT4KLSAgIEVhY2ggcHVibGljYXRpb24gY2FuIG9wdGlvbmFsbHkgc3BlY2lm eSB3aGljaCBjb2x1bW5zIG9mIGVhY2ggdGFibGUgYXJlCi0gICByZXBsaWNhdGVkIHRvIHN1YnNj cmliZXJzLiBUaGUgdGFibGUgb24gdGhlIHN1YnNjcmliZXIgc2lkZSBtdXN0IGhhdmUgYXQKLSAg IGxlYXN0IGFsbCB0aGUgY29sdW1ucyB0aGF0IGFyZSBwdWJsaXNoZWQuIElmIG5vIGNvbHVtbiBs aXN0IGlzIHNwZWNpZmllZCwKLSAgIHRoZW4gYWxsIGNvbHVtbnMgb24gdGhlIHB1Ymxpc2hlciBh cmUgcmVwbGljYXRlZC4KKyAgIEVhY2ggcHVibGljYXRpb24gY2FuIG9wdGlvbmFsbHkgc3BlY2lm eSB3aGljaCBjb2x1bW5zIG9mIGVhY2ggdGFibGUgc2hvdWxkIGJlCisgICByZXBsaWNhdGVkIG9y IGV4Y2x1ZGVkIGZyb20gcmVwbGljYXRpb24uIFRoZSB0YWJsZSBvbiB0aGUgc3Vic2NyaWJlciBz aWRlCisgICBtdXN0IGhhdmUgYXQgbGVhc3QgYWxsIHRoZSBjb2x1bW5zIHRoYXQgYXJlIHB1Ymxp c2hlZC4gSWYgbm8gY29sdW1uIGxpc3QgaXMKKyAgIHNwZWNpZmllZCwgdGhlbiBhbGwgY29sdW1u cyBvbiB0aGUgcHVibGlzaGVyIGFyZSByZXBsaWNhdGVkLgogICAgU2VlIDx4cmVmIGxpbmtlbmQ9 InNxbC1jcmVhdGVwdWJsaWNhdGlvbiIvPiBmb3IgZGV0YWlscyBvbiB0aGUgc3ludGF4LgogICA8 L3BhcmE+CiAKQEAgLTEzOTMsOCArMTM5MywxMSBAQCBQdWJsaWNhdGlvbnM6CiAKICAgPHBhcmE+ CiAgICBJZiBubyBjb2x1bW4gbGlzdCBpcyBzcGVjaWZpZWQsIGFueSBjb2x1bW5zIGFkZGVkIHRv IHRoZSB0YWJsZSBsYXRlciBhcmUKLSAgIGF1dG9tYXRpY2FsbHkgcmVwbGljYXRlZC4gVGhpcyBt ZWFucyB0aGF0IGhhdmluZyBhIGNvbHVtbiBsaXN0IHdoaWNoIG5hbWVzCi0gICBhbGwgY29sdW1u cyBpcyBub3QgdGhlIHNhbWUgYXMgaGF2aW5nIG5vIGNvbHVtbiBsaXN0IGF0IGFsbC4KKyAgIGF1 dG9tYXRpY2FsbHkgcmVwbGljYXRlZC4gSG93ZXZlciwgYSBub3JtYWwgY29sdW1uIGxpc3QgKHdp dGhvdXQKKyAgIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4pIG9ubHkgcmVwbGljYXRlcyB0aGUg c3BlY2lmaWVkIGNvbHVtbnMgYW5kIG5vIG1vcmUuCisgICBUaGVyZWZvcmUsIGhhdmluZyBhIGNv bHVtbiBsaXN0IHRoYXQgbmFtZXMgYWxsIGNvbHVtbnMgaXMgbm90IHRoZSBzYW1lIGFzCisgICBo YXZpbmcgbm8gY29sdW1uIGxpc3QgYXQgYWxsLCBhcyBtb3JlIGNvbHVtbnMgbWF5IGJlIGFkZGVk IHRvIHRoZSB0YWJsZQorICAgbGF0ZXIuCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KQEAgLTE0MDYs NiArMTQwOSwxNCBAQCBQdWJsaWNhdGlvbnM6CiAgICBHZW5lcmF0ZWQgY29sdW1ucyBjYW4gYWxz byBiZSBzcGVjaWZpZWQgaW4gYSBjb2x1bW4gbGlzdC4gVGhpcyBhbGxvd3MKICAgIGdlbmVyYXRl ZCBjb2x1bW5zIHRvIGJlIHB1Ymxpc2hlZCwgcmVnYXJkbGVzcyBvZiB0aGUgcHVibGljYXRpb24g cGFyYW1ldGVyCiAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1z LXdpdGgtcHVibGlzaC1nZW5lcmF0ZWQtY29sdW1ucyI+CisgICA8bGl0ZXJhbD5wdWJsaXNoX2dl bmVyYXRlZF9jb2x1bW5zPC9saXRlcmFsPjwvbGluaz4uIFNwZWNpZnlpbmcgZ2VuZXJhdGVkCisg ICBjb2x1bW5zIHVzaW5nIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBleGNs dWRlcyB0aG9zZSBjb2x1bW5zCisgICBmcm9tIGJlaW5nIHB1Ymxpc2hlZCwgcmVnYXJkbGVzcyBv ZiB0aGUKKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtd2l0 aC1wdWJsaXNoLWdlbmVyYXRlZC1jb2x1bW5zIj4KKyAgIDxsaXRlcmFsPnB1Ymxpc2hfZ2VuZXJh dGVkX2NvbHVtbnM8L2xpdGVyYWw+PC9saW5rPiBzZXR0aW5nLiBIb3dldmVyLCBmb3IKKyAgIGdl bmVyYXRlZCBjb2x1bW5zIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaW4gdGhlIDxsaXRlcmFsPkVYQ0VQ VDwvbGl0ZXJhbD4KKyAgIGNsYXVzZSwgd2hldGhlciB0aGV5IGFyZSBwdWJsaXNoZWQgb3Igbm90 IHN0aWxsIGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mCisgICA8bGluayBsaW5rZW5kPSJzcWwtY3Jl YXRlcHVibGljYXRpb24tcGFyYW1zLXdpdGgtcHVibGlzaC1nZW5lcmF0ZWQtY29sdW1ucyI+CiAg ICA8bGl0ZXJhbD5wdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zPC9saXRlcmFsPjwvbGluaz4uIFNl ZQogICAgPHhyZWYgbGlua2VuZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1nZW5jb2xzIi8+IGZvciBk ZXRhaWxzLgogICA8L3BhcmE+CkBAIC0xNDI3LDExICsxNDM4LDE0IEBAIFB1YmxpY2F0aW9uczoK IAogICA8cGFyYT4KICAgIElmIGEgcHVibGljYXRpb24gcHVibGlzaGVzIDxjb21tYW5kPlVQREFU RTwvY29tbWFuZD4gb3IKLSAgIDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4gb3BlcmF0aW9ucywg YW55IGNvbHVtbiBsaXN0IG11c3QgaW5jbHVkZSB0aGUKLSAgIHRhYmxlJ3MgcmVwbGljYSBpZGVu dGl0eSBjb2x1bW5zIChzZWUKLSAgIDx4cmVmIGxpbmtlbmQ9InNxbC1hbHRlcnRhYmxlLXJlcGxp Y2EtaWRlbnRpdHkiLz4pLgorICAgPGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPiBvcGVyYXRpb25z LCBhbnkgY29sdW1uIGxpc3QgbXVzdCBpbmNsdWRlIHRhYmxlJ3MKKyAgIHJlcGxpY2EgaWRlbnRp dHkgY29sdW1ucyBhbmQgYW55IGNvbHVtbiBsaXN0IHNwZWNpZmllZCB3aXRoCisgICA8bGl0ZXJh bD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBtdXN0IG5vdCBpbmNsdWRlIHRoZSB0YWJsZSdzIHJl cGxpY2EKKyAgIGlkZW50aXR5IGNvbHVtbnMgKHNlZSA8eHJlZiBsaW5rZW5kPSJzcWwtYWx0ZXJ0 YWJsZS1yZXBsaWNhLWlkZW50aXR5Ii8+KS4KICAgIElmIGEgcHVibGljYXRpb24gcHVibGlzaGVz IG9ubHkgPGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiBvcGVyYXRpb25zLCB0aGVuCi0gICB0aGUg Y29sdW1uIGxpc3QgbWF5IG9taXQgcmVwbGljYSBpZGVudGl0eSBjb2x1bW5zLgorICAgdGhlIGNv bHVtbiBsaXN0IG1heSBvbWl0IHJlcGxpY2EgaWRlbnRpdHkgY29sdW1ucyBhbmQgdGhlIGNvbHVt biBsaXN0CisgICBzcGVjaWZpZWQgd2l0aCA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVz ZSBtYXkgaW5jbHVkZSByZXBsaWNhIGlkZW50aXR5CisgICBjb2x1bW5zLgogICA8L3BhcmE+CiAK ICAgPHBhcmE+CkBAIC0xNDc2LDE4ICsxNDkwLDIxIEBAIFB1YmxpY2F0aW9uczoKICAgIDx0aXRs ZT5FeGFtcGxlczwvdGl0bGU+CiAKICAgIDxwYXJhPgotICAgIENyZWF0ZSBhIHRhYmxlIDxzdHJ1 Y3RuYW1lPnQxPC9zdHJ1Y3RuYW1lPiB0byBiZSB1c2VkIGluIHRoZSBmb2xsb3dpbmcgZXhhbXBs ZS4KKyAgICBDcmVhdGUgdGFibGVzIDxsaXRlcmFsPnQxPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+ dDI8L2xpdGVyYWw+IHRvIGJlIHVzZWQgaW4KKyAgICB0aGUgZm9sbG93aW5nIGV4YW1wbGUuCiA8 cHJvZ3JhbWxpc3Rpbmc+CiAvKiBwdWIgIyAqLyBDUkVBVEUgVEFCTEUgdDEoaWQgaW50LCBhIHRl eHQsIGIgdGV4dCwgYyB0ZXh0LCBkIHRleHQsIGUgdGV4dCwgUFJJTUFSWSBLRVkoaWQpKTsKKy8q IHB1YiAjICovIENSRUFURSBUQUJMRSB0MihpZCBpbnQsIGEgdGV4dCwgYiB0ZXh0LCBjIHRleHQs IGQgdGV4dCwgZSB0ZXh0LCBQUklNQVJZIEtFWShpZCkpOwogPC9wcm9ncmFtbGlzdGluZz48L3Bh cmE+CiAKICAgIDxwYXJhPgogICAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIDxsaXRlcmFsPnAxPC9s aXRlcmFsPi4gQSBjb2x1bW4gbGlzdCBpcyBkZWZpbmVkIGZvcgotICAgIHRhYmxlIDxzdHJ1Y3Ru YW1lPnQxPC9zdHJ1Y3RuYW1lPiB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBjb2x1bW5zIHRoYXQg d2lsbCBiZQotICAgIHJlcGxpY2F0ZWQuIE5vdGljZSB0aGF0IHRoZSBvcmRlciBvZiBjb2x1bW4g bmFtZXMgaW4gdGhlIGNvbHVtbiBsaXN0IGRvZXMKLSAgICBub3QgbWF0dGVyLgorICAgIHRhYmxl IDxsaXRlcmFsPnQxPC9saXRlcmFsPiwgYW5kIGFub3RoZXIgY29sdW1uIGxpc3QgaXMgZGVmaW5l ZCBmb3IgdGFibGUKKyAgICA8bGl0ZXJhbD50MjwvbGl0ZXJhbD4gdXNpbmcgdGhlIDxsaXRlcmFs PkVYQ0VQVDwvbGl0ZXJhbD4gY2xhdXNlIHRvIHJlZHVjZQorICAgIHRoZSBudW1iZXIgb2YgY29s dW1ucyB0aGF0IHdpbGwgYmUgcmVwbGljYXRlZC4gTm90ZSB0aGF0IHRoZSBvcmRlciBvZiBjb2x1 bW4KKyAgICBuYW1lcyBpbiB0aGUgY29sdW1uIGxpc3RzIGRvZXMgbm90IG1hdHRlci4KIDxwcm9n cmFtbGlzdGluZz4KLS8qIHB1YiAjICovIENSRUFURSBQVUJMSUNBVElPTiBwMSBGT1IgVEFCTEUg dDEgKGlkLCBiLCBhLCBkKTsKKy8qIHB1YiAjICovIENSRUFURSBQVUJMSUNBVElPTiBwMSBGT1Ig VEFCTEUgdDEgKGlkLCBiLCBhLCBkKSwgdDIgRVhDRVBUIChkLCBhKTsKIDwvcHJvZ3JhbWxpc3Rp bmc+PC9wYXJhPgogCiAgICAgPHBhcmE+CkBAIC0xNTAxLDYgKzE1MTgsNyBAQCBQdWJsaWNhdGlv bnM6CiAgcG9zdGdyZXMgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgogVGFi bGVzOgogICAgICJwdWJsaWMudDEiIChpZCwgYSwgYiwgZCkKKyAgICAicHVibGljLnQyIiBFWENF UFQgKGEsIGQpCiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMTUy MSwyMyArMTUzOSw0MSBAQCBJbmRleGVzOgogICAgICJ0MV9wa2V5IiBQUklNQVJZIEtFWSwgYnRy ZWUgKGlkKQogUHVibGljYXRpb25zOgogICAgICJwMSIgKGlkLCBhLCBiLCBkKQorCisvKiBwdWIg IyAqLyBcZCB0MgorICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnQyIgorIENvbHVtbiB8 ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQKKy0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCBub3QgbnVsbCB8CisgYSAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwKKyBiICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfAor IGMgICAgICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8CisgZCAgICAgIHwgdGV4 dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwKKyBlICAgICAgfCB0ZXh0ICAgIHwgICAgICAg ICAgIHwgICAgICAgICAgfAorSW5kZXhlczoKKyAgICAidDJfcGtleSIgUFJJTUFSWSBLRVksIGJ0 cmVlIChpZCkKK1B1YmxpY2F0aW9uczoKKyAgICAicDEiIEVYQ0VQVCAoYSwgZCkKIDwvcHJvZ3Jh bWxpc3Rpbmc+PC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgIE9uIHRoZSBzdWJzY3JpYmVyIG5v ZGUsIGNyZWF0ZSBhIHRhYmxlIDxzdHJ1Y3RuYW1lPnQxPC9zdHJ1Y3RuYW1lPiB3aGljaCBub3cK LSAgICAgb25seSBuZWVkcyBhIHN1YnNldCBvZiB0aGUgY29sdW1ucyB0aGF0IHdlcmUgb24gdGhl IHB1Ymxpc2hlciB0YWJsZQotICAgICA8c3RydWN0bmFtZT50MTwvc3RydWN0bmFtZT4sIGFuZCBh bHNvIGNyZWF0ZSB0aGUgc3Vic2NyaXB0aW9uCisgICAgIE9uIHRoZSBzdWJzY3JpYmVyIG5vZGUs IGNyZWF0ZSB0YWJsZXMgPGxpdGVyYWw+dDE8L2xpdGVyYWw+IGFuZAorICAgICA8bGl0ZXJhbD50 MjwvbGl0ZXJhbD4gd2hpY2ggbm93IG9ubHkgbmVlZHMgYSBzdWJzZXQgb2YgdGhlIGNvbHVtbnMg dGhhdAorICAgICB3ZXJlIG9uIHRoZSBwdWJsaXNoZXIgdGFibGVzIDxsaXRlcmFsPnQxPC9saXRl cmFsPiBhbmQKKyAgICAgPGxpdGVyYWw+dDI8L2xpdGVyYWw+LCBhbmQgYWxzbyBjcmVhdGUgdGhl IHN1YnNjcmlwdGlvbgogICAgICA8bGl0ZXJhbD5zMTwvbGl0ZXJhbD4gdGhhdCBzdWJzY3JpYmVz IHRvIHRoZSBwdWJsaWNhdGlvbgogICAgICA8bGl0ZXJhbD5wMTwvbGl0ZXJhbD4uCiA8cHJvZ3Jh bWxpc3Rpbmc+CiAvKiBzdWIgIyAqLyBDUkVBVEUgVEFCTEUgdDEoaWQgaW50LCBiIHRleHQsIGEg dGV4dCwgZCB0ZXh0LCBQUklNQVJZIEtFWShpZCkpOworLyogc3ViICMgKi8gQ1JFQVRFIFRBQkxF IHQyKGlkIGludCwgYiB0ZXh0LCBjIHRleHQsIGUgdGV4dCwgUFJJTUFSWSBLRVkoaWQpKTsKIC8q IHN1YiAjICovIENSRUFURSBTVUJTQ1JJUFRJT04gczEKIC8qIHN1YiAtICovIENPTk5FQ1RJT04g J2hvc3Q9bG9jYWxob3N0IGRibmFtZT10ZXN0X3B1YiBhcHBsaWNhdGlvbl9uYW1lPXMxJwogLyog c3ViIC0gKi8gUFVCTElDQVRJT04gcDE7CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KIAogICAg IDxwYXJhPgotICAgICBPbiB0aGUgcHVibGlzaGVyIG5vZGUsIGluc2VydCBzb21lIHJvd3MgdG8g dGFibGUgPHN0cnVjdG5hbWU+dDE8L3N0cnVjdG5hbWU+LgorICAgICBPbiB0aGUgcHVibGlzaGVy IG5vZGUsIGluc2VydCBzb21lIHJvd3MgdG8gdGFibGVzIDxsaXRlcmFsPnQxPC9saXRlcmFsPgor ICAgICBhbmQgPGxpdGVyYWw+dDI8L2xpdGVyYWw+CiA8cHJvZ3JhbWxpc3Rpbmc+CiAvKiBwdWIg IyAqLyBJTlNFUlQgSU5UTyB0MSBWQUxVRVMoMSwgJ2EtMScsICdiLTEnLCAnYy0xJywgJ2QtMScs ICdlLTEnKTsKIC8qIHB1YiAjICovIElOU0VSVCBJTlRPIHQxIFZBTFVFUygyLCAnYS0yJywgJ2It MicsICdjLTInLCAnZC0yJywgJ2UtMicpOwpAQCAtMTU0OSwxMSArMTU4NSwyMSBAQCBQdWJsaWNh dGlvbnM6CiAgIDIgfCBhLTIgfCBiLTIgfCBjLTIgfCBkLTIgfCBlLTIKICAgMyB8IGEtMyB8IGIt MyB8IGMtMyB8IGQtMyB8IGUtMwogKDMgcm93cykKKy8qIHB1YiAjICovIElOU0VSVCBJTlRPIHQy IFZBTFVFUygxLCAnYS0xJywgJ2ItMScsICdjLTEnLCAnZC0xJywgJ2UtMScpOworLyogcHViICMg Ki8gSU5TRVJUIElOVE8gdDIgVkFMVUVTKDIsICdhLTInLCAnYi0yJywgJ2MtMicsICdkLTInLCAn ZS0yJyk7CisvKiBwdWIgIyAqLyBJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMywgJ2EtMycsICdiLTMn LCAnYy0zJywgJ2QtMycsICdlLTMnKTsKKy8qIHB1YiAjICovIFNFTEVDVCAqIEZST00gdDIgT1JE RVIgQlkgaWQ7CisgaWQgfCAgYSAgfCAgYiAgfCAgYyAgfCAgZCAgfCAgZQorLS0tLSstLS0tLSst LS0tLSstLS0tLSstLS0tLSstLS0tLQorICAxIHwgYS0xIHwgYi0xIHwgYy0xIHwgZC0xIHwgZS0x CisgIDIgfCBhLTIgfCBiLTIgfCBjLTIgfCBkLTIgfCBlLTIKKyAgMyB8IGEtMyB8IGItMyB8IGMt MyB8IGQtMyB8IGUtMworKDMgcm93cykKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgogCiAgICAg PHBhcmE+Ci0gICAgIE9ubHkgZGF0YSBmcm9tIHRoZSBjb2x1bW4gbGlzdCBvZiBwdWJsaWNhdGlv biA8bGl0ZXJhbD5wMTwvbGl0ZXJhbD4gaXMKLSAgICAgcmVwbGljYXRlZC4KKyAgICAgT25seSBk YXRhIHNwZWNpZmllZCBieSB0aGUgY29sdW1uIGxpc3RzIG9mIHB1YmxpY2F0aW9uCisgICAgIDxs aXRlcmFsPnAxPC9saXRlcmFsPiBpcyByZXBsaWNhdGVkLgogPHByb2dyYW1saXN0aW5nPgogLyog c3ViICMgKi8gU0VMRUNUICogRlJPTSB0MSBPUkRFUiBCWSBpZDsKICBpZCB8ICBiICB8ICBhICB8 ICBkCkBAIC0xNTYyLDYgKzE2MDgsMTMgQEAgUHVibGljYXRpb25zOgogICAyIHwgYi0yIHwgYS0y IHwgZC0yCiAgIDMgfCBiLTMgfCBhLTMgfCBkLTMKICgzIHJvd3MpCisvKiBzdWIgIyAqLyBTRUxF Q1QgKiBGUk9NIHQyIE9SREVSIEJZIGlkOworIGlkIHwgIGIgIHwgIGMgIHwgIGUKKy0tLS0rLS0t LS0rLS0tLS0rLS0tLS0KKyAgMSB8IGItMSB8IGMtMSB8IGUtMQorICAyIHwgYi0yIHwgYy0yIHwg ZS0yCisgIDMgfCBiLTMgfCBjLTMgfCBlLTMKKygzIHJvd3MpCiA8L3Byb2dyYW1saXN0aW5nPjwv cGFyYT4KIAogICA8L3NlY3QyPgpAQCAtMTY1OCw2ICsxNzExLDE3IEBAIFB1YmxpY2F0aW9uczoK ICAgIDwvaXRlbWl6ZWRsaXN0PgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBHZW5lcmF0ZWQg Y29sdW1ucyBzcGVjaWZpZWQgaW4gdGhlIGNvbHVtbiBsaXN0IHdpdGggdGhlCisgICA8bGl0ZXJh bD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBhcmUgbm90IHB1Ymxpc2hlZCwgcmVnYXJkbGVzcyBv ZiB0aGUgdmFsdWUKKyAgIG9mIHRoZSA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRp b24tcGFyYW1zLXdpdGgtcHVibGlzaC1nZW5lcmF0ZWQtY29sdW1ucyI+CisgICA8bGl0ZXJhbD5w dWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zPC9saXRlcmFsPjwvbGluaz4gcGFyYW1ldGVyLiBIb3dl dmVyLAorICAgZ2VuZXJhdGVkIGNvbHVtbnMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIGNvbHVt biBsaXN0IHdpdGggdGhlCisgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBhcmUg cHVibGlzaGVkIGFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgdGhlCisgICA8bGluayBsaW5rZW5k PSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLXdpdGgtcHVibGlzaC1nZW5lcmF0ZWQtY29s dW1ucyI+CisgICA8bGl0ZXJhbD5wdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zPC9saXRlcmFsPjwv bGluaz4gcGFyYW1ldGVyLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUgZm9sbG93aW5n IHRhYmxlIHN1bW1hcml6ZXMgYmVoYXZpb3Igd2hlbiB0aGVyZSBhcmUgZ2VuZXJhdGVkIGNvbHVt bnMKICAgIGludm9sdmVkIGluIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uLiBSZXN1bHRzIGFyZSBz aG93biBmb3Igd2hlbgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNh dGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCmluZGV4 IDhjM2QyMTliOWVhLi44ODVlYjQ3MWNhZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGlj YXRpb24uc2dtbApAQCAtMzIsNyArMzIsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFU0VUCiAKIDxwaHJhc2U+ d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwv cmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAotICAgIFRBQkxFIFsgT05MWSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAq IF0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFj ZWFibGU+IFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0gWywgLi4uIF0KKyAgICBUQUJMRSBbIE9O TFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFi bGU+IFsgKiBdIFsgWyBFWENFUFQgXSAoIGNvbHVtbl9uYW1lIFssIC4uLiBdICkgXSBbIFdIRVJF ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxl PiApIF0gWywgLi4uIF0KICAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9 IFssIC4uLiBdCiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnB1YmxpY2F0aW9uX2Ryb3Bfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNl PgpAQCAtMjY3LDYgKzI2NywxNCBAQCBBTFRFUiBQVUJMSUNBVElPTiBwcm9kdWN0aW9uX3B1Ymxp Y2F0aW9uIEFERCBBTEwgVEFCTEVTIEVYQ0VQVCAodXNlcnMsIGRlcGFydG1lbgogICAgPHN0cnVj dG5hbWU+cHJvZHVjdGlvbl9wdWJsaWNhdGlvbjwvc3RydWN0bmFtZT46CiA8cHJvZ3JhbWxpc3Rp bmc+CiBBTFRFUiBQVUJMSUNBVElPTiBwcm9kdWN0aW9uX3B1YmxpY2F0aW9uIEFERCBUQUJMRSB1 c2VycywgZGVwYXJ0bWVudHMsIFRBQkxFUyBJTiBTQ0hFTUEgcHJvZHVjdGlvbjsKKzwvcHJvZ3Jh bWxpc3Rpbmc+PC9wYXJhPgorCisgIDxwYXJhPgorICAgQWx0ZXIgcHVibGljYXRpb24gPHN0cnVj dG5hbWU+bXlwdWJsaWNhdGlvbjwvc3RydWN0bmFtZT4gdG8gYWRkIHRhYmxlCisgICA8c3RydWN0 bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gZXhjZXB0IGNvbHVtbgorICAgPHN0cnVjdG5hbWU+c2Vj dXJpdHlfcGluPC9zdHJ1Y3RuYW1lPjoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFBVQkxJQ0FU SU9OIHByb2R1Y3Rpb25fcHVibGljYXRpb24gQUREIFRBQkxFIHVzZXJzIEVYQ0VQVCAoc2VjdXJp dHlfcGluKTsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggOGI2MTY2NTEyNzIuLjlmNTgxZTk2 NDQwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTI3LDcg KzI3LDcgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uYW1lPC9yZXBsYWNlYWJsZT4KIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwv cGhyYXNlPgogCi0gICAgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdIFsgV0hF UkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFi bGU+ICkgXSBbLCAuLi4gXQorICAgIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyBbIEVYQ0VQVCBdICgg Y29sdW1uX25hbWUgWywgLi4uIF0gKSBdIFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXSBbLCAuLi4gXQogICAgIFRBQkxF UyBJTiBTQ0hFTUEgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25hbWU8 L3JlcGxhY2VhYmxlPiB8IENVUlJFTlRfU0NIRU1BIH0gWywgLi4uIF0KIAogPHBocmFzZT53aGVy ZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWxsX3B1YmxpY2F0aW9uX29iamVjdDwv cmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KQEAgLTk2LDE3ICs5NiwyNCBAQCBDUkVB VEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+Ci0gICAgICBXaGVuIGEgY29sdW1u IGxpc3QgaXMgc3BlY2lmaWVkLCBvbmx5IHRoZSBuYW1lZCBjb2x1bW5zIGFyZSByZXBsaWNhdGVk LgotICAgICAgVGhlIGNvbHVtbiBsaXN0IGNhbiBjb250YWluIHN0b3JlZCBnZW5lcmF0ZWQgY29s dW1ucyBhcyB3ZWxsLiBJZiB0aGUKLSAgICAgIGNvbHVtbiBsaXN0IGlzIG9taXR0ZWQsIHRoZSBw dWJsaWNhdGlvbiB3aWxsIHJlcGxpY2F0ZSBhbGwgbm9uLWdlbmVyYXRlZAotICAgICAgY29sdW1u cyAoaW5jbHVkaW5nIGFueSBhZGRlZCBpbiB0aGUgZnV0dXJlKSBieSBkZWZhdWx0LiBTdG9yZWQg Z2VuZXJhdGVkCi0gICAgICBjb2x1bW5zIGNhbiBhbHNvIGJlIHJlcGxpY2F0ZWQgaWYgPGxpdGVy YWw+cHVibGlzaF9nZW5lcmF0ZWRfY29sdW1uczwvbGl0ZXJhbD4KLSAgICAgIGlzIHNldCB0byA8 bGl0ZXJhbD5zdG9yZWQ8L2xpdGVyYWw+LiBTcGVjaWZ5aW5nIGEgY29sdW1uIGxpc3QgaGFzIG5v Ci0gICAgICBlZmZlY3Qgb24gPGxpdGVyYWw+VFJVTkNBVEU8L2xpdGVyYWw+IGNvbW1hbmRzLiBT ZWUKKyAgICAgIFdoZW4gYSBjb2x1bW4gbGlzdCB3aXRob3V0IDxsaXRlcmFsPkVYQ0VQVDwvbGl0 ZXJhbD4gaXMgc3BlY2lmaWVkLCBvbmx5CisgICAgICB0aGUgbmFtZWQgY29sdW1ucyBhcmUgcmVw bGljYXRlZC4gVGhlIGNvbHVtbiBsaXN0IGNhbiBjb250YWluIHN0b3JlZAorICAgICAgZ2VuZXJh dGVkIGNvbHVtbnMgYXMgd2VsbC4gSWYgdGhlIGNvbHVtbiBsaXN0IGlzIG9taXR0ZWQsIHRoZSBw dWJsaWNhdGlvbgorICAgICAgd2lsbCByZXBsaWNhdGUgYWxsIG5vbi1nZW5lcmF0ZWQgY29sdW1u cyAoaW5jbHVkaW5nIGFueSBhZGRlZCBpbiB0aGUKKyAgICAgIGZ1dHVyZSkgYnkgZGVmYXVsdC4g U3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zIGNhbiBhbHNvIGJlIHJlcGxpY2F0ZWQgaWYKKyAgICAg IDxsaXRlcmFsPnB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnM8L2xpdGVyYWw+IGlzIHNldCB0bwor ICAgICAgPGxpdGVyYWw+c3RvcmVkPC9saXRlcmFsPi4gU3BlY2lmeWluZyBhIGNvbHVtbiBsaXN0 IGhhcyBubyBlZmZlY3Qgb24KKyAgICAgIDxsaXRlcmFsPlRSVU5DQVRFPC9saXRlcmFsPiBjb21t YW5kcy4gU2VlCiAgICAgICA8eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLWNvbC1s aXN0cyIvPiBmb3IgZGV0YWlscyBhYm91dCBjb2x1bW4KICAgICAgIGxpc3RzLgogICAgICA8L3Bh cmE+CiAKKyAgICAgPHBhcmE+CisgICAgICBXaGVuIGEgY29sdW1uIGxpc3QgaXMgc3BlY2lmaWVk IHdpdGggPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiwgdGhlIG5hbWVkCisgICAgICBjb2x1bW5z IGFyZSBub3QgcmVwbGljYXRlZC4gU3BlY2lmeWluZyBhIGNvbHVtbiBsaXN0IGhhcyBubyBlZmZl Y3Qgb24KKyAgICAgIDxsaXRlcmFsPlRSVU5DQVRFPC9saXRlcmFsPiBjb21tYW5kcy4KKyAgICAg PC9wYXJhPgorCiAgICAgIDxwYXJhPgogICAgICAgT25seSBwZXJzaXN0ZW50IGJhc2UgdGFibGVz IGFuZCBwYXJ0aXRpb25lZCB0YWJsZXMgY2FuIGJlIHBhcnQgb2YgYQogICAgICAgcHVibGljYXRp b24uICBUZW1wb3JhcnkgdGFibGVzLCB1bmxvZ2dlZCB0YWJsZXMsIGZvcmVpZ24gdGFibGVzLApA QCAtMzY3LDEwICszNzQsMTIgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgot ICAgQW55IGNvbHVtbiBsaXN0IG11c3QgaW5jbHVkZSB0aGUgPGxpdGVyYWw+UkVQTElDQSBJREVO VElUWTwvbGl0ZXJhbD4gY29sdW1ucwotICAgaW4gb3JkZXIgZm9yIDxjb21tYW5kPlVQREFURTwv Y29tbWFuZD4gb3IgPGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPgotICAgb3BlcmF0aW9ucyB0byBi ZSBwdWJsaXNoZWQuIFRoZXJlIGFyZSBubyBjb2x1bW4gbGlzdCByZXN0cmljdGlvbnMgaWYgdGhl Ci0gICBwdWJsaWNhdGlvbiBwdWJsaXNoZXMgb25seSA8Y29tbWFuZD5JTlNFUlQ8L2NvbW1hbmQ+ IG9wZXJhdGlvbnMuCisgICBJbiBvcmRlciBmb3IgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiBv ciA8Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+CisgICBvcGVyYXRpb25zIHRvIHdvcmssIGFsbCB0 aGUgPGxpdGVyYWw+UkVQTElDQSBJREVOVElUWTwvbGl0ZXJhbD4gY29sdW1ucyBtdXN0CisgICBi ZSBwdWJsaXNoZWQuIFNvLCBhbnkgY29sdW1uIGxpc3QgbXVzdCBuYW1lIGFsbAorICAgPGxpdGVy YWw+UkVQTElDQSBJREVOVElUWTwvbGl0ZXJhbD4gY29sdW1ucywgYW5kIGFueQorICAgPGxpdGVy YWw+RVhDRVBUPC9saXRlcmFsPiBjb2x1bW4gbGlzdCBtdXN0IG5vdCBuYW1lIGFueQorICAgPGxp dGVyYWw+UkVQTElDQSBJREVOVElUWTwvbGl0ZXJhbD4gY29sdW1ucy4KICAgPC9wYXJhPgogCiAg IDxwYXJhPgpAQCAtMzkzLDYgKzQwMiwxNiBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgdG8gYmUgcHVibGlz aGVkLgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUaGUgZ2VuZXJhdGVkIGNvbHVtbnMgdGhh dCBhcmUgcGFydCBvZiB0aGUgY29sdW1uIGxpc3Qgc3BlY2lmaWVkIHdpdGggdGhlCisgICA8bGl0 ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBhcmUgbm90IHB1Ymxpc2hlZCwgcmVnYXJkbGVz cyBvZiB0aGUKKyAgIDxsaXRlcmFsPnB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnM8L2xpdGVyYWw+ IG9wdGlvbi4gSG93ZXZlciwgZ2VuZXJhdGVkCisgICBjb2x1bW5zIHRoYXQgYXJlIG5vdCBwYXJ0 IG9mIHRoZSBjb2x1bW4gbGlzdCBzcGVjaWZpZWQgd2l0aCB0aGUKKyAgIDxsaXRlcmFsPkVYQ0VQ VDwvbGl0ZXJhbD4gY2xhdXNlIGFyZSBwdWJsaXNoZWQgYWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBv ZiB0aGUKKyAgIDxsaXRlcmFsPnB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnM8L2xpdGVyYWw+IG9w dGlvbi4gU2VlCisgICA8eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLWdlbmNvbHMi Lz4gZm9yIGRldGFpbHMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRoZSByb3cgZmlsdGVy IG9uIGEgdGFibGUgYmVjb21lcyByZWR1bmRhbnQgaWYKICAgIDxsaXRlcmFsPkZPUiBUQUJMRVMg SU4gU0NIRU1BPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQgYW5kIHRoZSB0YWJsZQpAQCAtNTE0LDYg KzUzMywxNSBAQCBDUkVBVEUgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlvbiBGT1IgQUxMIFRBQkxF UyBFWENFUFQgKHVzZXJzLCBkZXBhcnRtZW50cyk7CiBDUkVBVEUgUFVCTElDQVRJT04gdXNlcnNf ZmlsdGVyZWQgRk9SIFRBQkxFIHVzZXJzICh1c2VyX2lkLCBmaXJzdG5hbWUpOwogPC9wcm9ncmFt bGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0 IHB1Ymxpc2hlcyBhbGwgY2hhbmdlcyBmb3IgdGFibGUKKyAgIDxzdHJ1Y3RuYW1lPnVzZXJzPC9z dHJ1Y3RuYW1lPiBleGNlcHQgY2hhbmdlcyBmb3IgY29sdW1uCisgICA8c3RydWN0bmFtZT5zZWN1 cml0eV9waW48L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJQ0FU SU9OIHVzZXJzX3NhZmUgRk9SIFRBQkxFIHVzZXJzIEVYQ0VQVCAoc2VjdXJpdHlfcGluKTsKKzwv cHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIENyZWF0ZSBhIHB1Ymxp Y2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBzZXF1ZW5jZXMgZm9yIHN5bmNocm9uaXphdGlvbjoK IDxwcm9ncmFtbGlzdGluZz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwppbmRleCBi ZWMzYTM0ZTQ4Zi4uMDJhMTIwM2RjYWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmMKQEAgLTI2NiwxNCArMjY2LDE5IEBAIGlzX3NjaGVtYV9wdWJsaWNhdGlvbihPaWQgcHViaWQp CiAgKiBJZiBhIGNvbHVtbiBsaXN0IGlzIGZvdW5kLCB0aGUgY29ycmVzcG9uZGluZyBiaXRtYXAg aXMgcmV0dXJuZWQgdGhyb3VnaCB0aGUKICAqIGNvbHMgcGFyYW1ldGVyLCBpZiBwcm92aWRlZC4g VGhlIGJpdG1hcCBpcyBjb25zdHJ1Y3RlZCB3aXRoaW4gdGhlIGdpdmVuCiAgKiBtZW1vcnkgY29u dGV4dCAobWN4dCkuCisgKgorICogSWYgYSBjb2x1bW4gbGlzdCBpcyBmb3VuZCBzcGVjaWZpZWQg d2l0aCBFWENFUFQgY2xhdXNlLCBleGNlcHRfY29sdW1ucyBpcyBzZXQKKyAqIHRvIHRydWUuCiAg Ki8KIGJvb2wKIGNoZWNrX2FuZF9mZXRjaF9jb2x1bW5fbGlzdChQdWJsaWNhdGlvbiAqcHViLCBP aWQgcmVsaWQsIE1lbW9yeUNvbnRleHQgbWN4dCwKLQkJCQkJCQlCaXRtYXBzZXQgKipjb2xzKQor CQkJCQkJCUJpdG1hcHNldCAqKmNvbHMsIGJvb2wgKmV4Y2VwdF9jb2x1bW5zKQogewogCUhlYXBU dXBsZQljZnR1cGxlOwogCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAKKwkqZXhjZXB0X2NvbHVtbnMg PSBmYWxzZTsKKwogCWlmIChwdWItPmFsbHRhYmxlcykKIAkJcmV0dXJuIGZhbHNlOwogCkBAIC0y OTksNiArMzA0LDE2IEBAIGNoZWNrX2FuZF9mZXRjaF9jb2x1bW5fbGlzdChQdWJsaWNhdGlvbiAq cHViLCBPaWQgcmVsaWQsIE1lbW9yeUNvbnRleHQgbWN4dCwKIAkJCWZvdW5kID0gdHJ1ZTsKIAkJ fQogCisJCS8qIExvb2t1cCB0aGUgZXhjZXB0IGF0dHJpYnV0ZSAqLworCQljZmRhdHVtID0gU3lz Q2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCBjZnR1cGxlLAorCQkJCQkJCQkgIEFudW1f cGdfcHVibGljYXRpb25fcmVsX3ByZXhjZXB0LCAmaXNudWxsKTsKKworCQlpZiAoIWlzbnVsbCkK KwkJeworCQkJQXNzZXJ0KCFwdWItPmFsbHRhYmxlcyk7CisJCQkqZXhjZXB0X2NvbHVtbnMgPSBE YXR1bUdldEJvb2woY2ZkYXR1bSk7CisJCX0KKwogCQlSZWxlYXNlU3lzQ2FjaGUoY2Z0dXBsZSk7 CiAJfQogCkBAIC02NjAsMTAgKzY3NSwxMiBAQCBwdWJfY29sbGlzdF90b19iaXRtYXBzZXQoQml0 bWFwc2V0ICpjb2x1bW5zLCBEYXR1bSBwdWJjb2xzLCBNZW1vcnlDb250ZXh0IG1jeHQpCiAgKiBS ZXR1cm5zIGEgYml0bWFwIHJlcHJlc2VudGluZyB0aGUgY29sdW1ucyBvZiB0aGUgc3BlY2lmaWVk IHRhYmxlLgogICoKICAqIEdlbmVyYXRlZCBjb2x1bW5zIGFyZSBpbmNsdWRlZCBpZiBpbmNsdWRl X2dlbmNvbHNfdHlwZSBpcwotICogUFVCTElTSF9HRU5DT0xTX1NUT1JFRC4KKyAqIFBVQkxJU0hf R0VOQ09MU19TVE9SRUQuIENvbHVtbnMgdGhhdCBhcmUgaW4gdGhlIGV4Y2VwdF9jb2xzIGFyZSBl eGNsdWRlZCBmcm9tCisgKiB0aGUgY29sdW1uIGxpc3QuCiAgKi8KIEJpdG1hcHNldCAqCi1wdWJf Zm9ybV9jb2xzX21hcChSZWxhdGlvbiByZWxhdGlvbiwgUHVibGlzaEdlbmNvbHNUeXBlIGluY2x1 ZGVfZ2VuY29sc190eXBlKQorcHViX2Zvcm1fY29sc19tYXAoUmVsYXRpb24gcmVsYXRpb24sIFB1 Ymxpc2hHZW5jb2xzVHlwZSBpbmNsdWRlX2dlbmNvbHNfdHlwZSwKKwkJCQkgIEJpdG1hcHNldCAq ZXhjZXB0X2NvbHMpCiB7CiAJQml0bWFwc2V0ICAqcmVzdWx0ID0gTlVMTDsKIAlUdXBsZURlc2MJ ZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOwpAQCAtNjg2LDYgKzcwMyw5IEBAIHB1 Yl9mb3JtX2NvbHNfbWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaXNoR2VuY29sc1R5cGUgaW5j bHVkZV9nZW5jb2xzX3R5cGUpCiAJCQkJY29udGludWU7CiAJCX0KIAorCQlpZiAoZXhjZXB0X2Nv bHMgJiYgYm1zX2lzX21lbWJlcihhdHQtPmF0dG51bSwgZXhjZXB0X2NvbHMpKQorCQkJY29udGlu dWU7CisKIAkJcmVzdWx0ID0gYm1zX2FkZF9tZW1iZXIocmVzdWx0LCBhdHQtPmF0dG51bSk7CiAJ fQogCkBAIC03OTAsOCArODEwLDEwIEBAIEdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxp ZCwgYm9vbCBleGNlcHRfZmxhZykKIAl7CiAJCUhlYXBUdXBsZQl0dXAgPSAmcHVicmVsbGlzdC0+ bWVtYmVyc1tpXS0+dHVwbGU7CiAJCU9pZAkJCXB1YmlkID0gKChGb3JtX3BnX3B1YmxpY2F0aW9u X3JlbCkgR0VUU1RSVUNUKHR1cCkpLT5wcnB1YmlkOworCQlib29sCQlpc19leGNlcHRfdGFibGUg PSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKSktPnByZXhjZXB0ICYm CisJCQloZWFwX2F0dGlzbnVsbCh0dXAsIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3ByYXR0cnMs IE5VTEwpOwogCi0JCWlmIChleGNlcHRfZmxhZyA9PSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVs KSBHRVRTVFJVQ1QodHVwKSktPnByZXhjZXB0KQorCQlpZiAoZXhjZXB0X2ZsYWcgPT0gaXNfZXhj ZXB0X3RhYmxlKQogCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwdWJpZCk7CiAJfQog CkBAIC04MzEsMTAgKzg1MywxMiBAQCBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQs IFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKIAl3aGlsZSAoSGVhcFR1cGxlSXNWYWxp ZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKIAl7CiAJCUZvcm1fcGdfcHVibGljYXRp b25fcmVsIHB1YnJlbDsKKwkJYm9vbAkJaGFzX2NvbGxpc3QgPSBmYWxzZTsKIAogCQlwdWJyZWwg PSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOworCQloYXNfY29sbGlz dCA9ICFoZWFwX2F0dGlzbnVsbCh0dXAsIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3ByYXR0cnMs IE5VTEwpOwogCi0JCWlmIChleGNlcHRfZmxhZyA9PSBwdWJyZWwtPnByZXhjZXB0KQorCQlpZiAo ZXhjZXB0X2ZsYWcgPT0gKHB1YnJlbC0+cHJleGNlcHQgJiYgIWhhc19jb2xsaXN0KSkKIAkJCXJl c3VsdCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0 LAogCQkJCQkJCQkJCQkJCXB1YnJlbC0+cHJyZWxpZCk7CiAKQEAgLTEyOTEsNiArMTMxNSw3IEBA IHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJT2lkCQkJc2No ZW1haWQgPSBnZXRfcmVsX25hbWVzcGFjZShyZWxpZCk7CiAJCURhdHVtCQl2YWx1ZXNbTlVNX1BV QkxJQ0FUSU9OX1RBQkxFU19FTEVNXSA9IHswfTsKIAkJYm9vbAkJbnVsbHNbTlVNX1BVQkxJQ0FU SU9OX1RBQkxFU19FTEVNXSA9IHswfTsKKwkJQml0bWFwc2V0ICAqZXhjZXB0X2NvbHVtbnMgPSBO VUxMOwogCiAJCS8qCiAJCSAqIEZvcm0gdHVwbGUgd2l0aCBhcHByb3ByaWF0ZSBkYXRhLgpAQCAt MTMxNSwxMSArMTM0MCwyOSBAQCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9O X0FSR1MpCiAKIAkJaWYgKEhlYXBUdXBsZUlzVmFsaWQocHVidHVwbGUpKQogCQl7Ci0JCQkvKiBM b29rdXAgdGhlIGNvbHVtbiBsaXN0IGF0dHJpYnV0ZS4gKi8KIAkJCXZhbHVlc1syXSA9IFN5c0Nh Y2hlR2V0QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcHVidHVwbGUsCiAJCQkJCQkJCQkJQW51bV9w Z19wdWJsaWNhdGlvbl9yZWxfcHJhdHRycywKIAkJCQkJCQkJCQkmKG51bGxzWzJdKSk7CiAKKwkJ CWlmICghbnVsbHNbMl0pCisJCQl7CisJCQkJRGF0dW0JCWV4Y2VwdERhdHVtOworCQkJCWJvb2wJ CWlzbnVsbDsKKworCQkJCS8qCisJCQkJICogV2UgZmV0Y2ggcHVidHVwbGUgaWYgcHVibGljYXRp b24gaXMgbm90IEZPUiBBTEwgVEFCTEVTIGFuZAorCQkJCSAqIG5vdCBGT1IgVEFCTEVTIElOIFND SEVNQS4gU28gaWYgcHJleGNlcHQgaXMgdHJ1ZSwgaXQKKwkJCQkgKiBpbmRpY2F0ZXMgdGhhdCBw cmF0dHJzIGNvbnRhaW5zIGNvbHVtbnMgdG8gYmUgZXhjbHVkZWQgZm9yCisJCQkJICogcmVwbGlj YXRpb24uCisJCQkJICovCisJCQkJZXhjZXB0RGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUFVCTElD QVRJT05SRUxNQVAsIHB1YnR1cGxlLAorCQkJCQkJCQkJCQkgIEFudW1fcGdfcHVibGljYXRpb25f cmVsX3ByZXhjZXB0LAorCQkJCQkJCQkJCQkgICZpc251bGwpOworCisJCQkJaWYgKCFpc251bGwg JiYgRGF0dW1HZXRCb29sKGV4Y2VwdERhdHVtKSkKKwkJCQkJZXhjZXB0X2NvbHVtbnMgPSBwdWJf Y29sbGlzdF90b19iaXRtYXBzZXQoTlVMTCwgdmFsdWVzWzJdLCBOVUxMKTsKKwkJCX0KKwogCQkJ LyogTnVsbCBpbmRpY2F0ZXMgbm8gZmlsdGVyLiAqLwogCQkJdmFsdWVzWzNdID0gU3lzQ2FjaGVH ZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCBwdWJ0dXBsZSwKIAkJCQkJCQkJCQlBbnVtX3BnX3B1 YmxpY2F0aW9uX3JlbF9wcnF1YWwsCkBAIC0xMzMxLDggKzEzNzQsMTIgQEAgcGdfZ2V0X3B1Ymxp Y2F0aW9uX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQogCQkJbnVsbHNbM10gPSB0cnVlOwogCQl9 CiAKLQkJLyogU2hvdyBhbGwgY29sdW1ucyB3aGVuIHRoZSBjb2x1bW4gbGlzdCBpcyBub3Qgc3Bl Y2lmaWVkLiAqLwotCQlpZiAobnVsbHNbMl0pCisJCS8qCisJCSAqIENvbnN0cnVjdCBjb2x1bW4g bGlzdCB0byBzaG93IGFsbCBjb2x1bW5zIHdoZW4gbm8gY29sdW1uIGxpc3QgaXMKKwkJICogc3Bl Y2lmaWVkIG9yIHRvIHNob3cgcmVtYWluaW5nIGNvbHVtbnMgd2hlbiBhIGNvbHVtbiBsaXN0IGlz CisJCSAqIHByb3ZpZGVkIHdpdGggRVhDRVBULgorCQkgKi8KKwkJaWYgKGV4Y2VwdF9jb2x1bW5z IHx8IG51bGxzWzJdKQogCQl7CiAJCQlSZWxhdGlvbglyZWwgPSB0YWJsZV9vcGVuKHJlbGlkLCBB Y2Nlc3NTaGFyZUxvY2spOwogCQkJaW50CQkJbmF0dG51bXMgPSAwOwpAQCAtMTM2Myw2ICsxNDEw LDEzIEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJ CWNvbnRpbnVlOwogCQkJCX0KIAorCQkJCS8qCisJCQkJICogU2tpcCBjb2x1bW5zIHRoYXQgYXJl IHBhcnQgb2YgY29sdW1uIGxpc3Qgc3BlY2lmaWVkIHdpdGgKKwkJCQkgKiBFWENFUFQuCisJCQkJ ICovCisJCQkJaWYgKGV4Y2VwdF9jb2x1bW5zICYmIGJtc19pc19tZW1iZXIoYXR0LT5hdHRudW0s IGV4Y2VwdF9jb2x1bW5zKSkKKwkJCQkJY29udGludWU7CisKIAkJCQlhdHRudW1zW25hdHRudW1z KytdID0gYXR0LT5hdHRudW07CiAJCQl9CiAKQEAgLTEzNzEsNiArMTQyNSwxMSBAQCBwZ19nZXRf cHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJdmFsdWVzWzJdID0gUG9p bnRlckdldERhdHVtKGJ1aWxkaW50MnZlY3RvcihhdHRudW1zLCBuYXR0bnVtcykpOwogCQkJCW51 bGxzWzJdID0gZmFsc2U7CiAJCQl9CisJCQllbHNlCisJCQl7CisJCQkJdmFsdWVzWzJdID0gKERh dHVtKSAwOworCQkJCW51bGxzWzJdID0gdHJ1ZTsKKwkJCX0KIAogCQkJdGFibGVfY2xvc2UocmVs LCBBY2Nlc3NTaGFyZUxvY2spOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21k cy5jCmluZGV4IDZmYjY5ZTNmM2JhLi4wNGU3NWM1ZWYxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmMKQEAgLTIyNyw3ICsyMjcsNiBAQCBPYmplY3RzSW5QdWJsaWNhdGlv blRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJc3dp dGNoIChwdWJvYmotPnB1Ym9ianR5cGUpCiAJCXsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFC TEU6Ci0JCQkJcHVib2JqLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gZmFsc2U7CiAJCQkJKnJlbHMgPSBs YXBwZW5kKCpyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVC TElDQVRJT05PQkpfRVhDRVBUX1RBQkxFOgpAQCAtMzgxLDggKzM4MCw4IEBAIHB1Yl9yZl9jb250 YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICph bmNlc3RvcnMsCiAgKiBUaGlzIGZ1bmN0aW9uIGV2YWx1YXRlcyB0d28gY29uZGl0aW9uczoKICAq CiAgKiAxLiBFbnN1cmVzIHRoYXQgYWxsIGNvbHVtbnMgcmVmZXJlbmNlZCBpbiB0aGUgUkVQTElD QSBJREVOVElUWSBhcmUgY292ZXJlZAotICogICAgYnkgdGhlIGNvbHVtbiBsaXN0LiBJZiBhbnkg Y29sdW1uIGlzIG1pc3NpbmcsICppbnZhbGlkX2NvbHVtbl9saXN0IGlzIHNldAotICogICAgdG8g dHJ1ZS4KKyAqICAgIGJ5IHRoZSBjb2x1bW4gbGlzdCBhbmQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBj b2x1bW4gbGlzdCBzcGVjaWZpZWQgd2l0aAorICogICAgRVhDRVBULiBJZiBhbnkgY29sdW1uIGlz IG1pc3NpbmcsICppbnZhbGlkX2NvbHVtbl9saXN0IGlzIHNldCB0byB0cnVlLgogICogMi4gRW5z dXJlcyB0aGF0IGFsbCB0aGUgZ2VuZXJhdGVkIGNvbHVtbnMgcmVmZXJlbmNlZCBpbiB0aGUgUkVQ TElDQSBJREVOVElUWQogICogICAgYXJlIHB1Ymxpc2hlZCwgZWl0aGVyIGJ5IGJlaW5nIGV4cGxp Y2l0bHkgbmFtZWQgaW4gdGhlIGNvbHVtbiBsaXN0IG9yLCBpZgogICogICAgbm8gY29sdW1uIGxp c3QgaXMgc3BlY2lmaWVkLCBieSBzZXR0aW5nIHRoZSBvcHRpb24KQEAgLTQwNCw2ICs0MDMsNyBA QCBwdWJfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlv biwgTGlzdCAqYW5jZXN0b3JzLAogCVR1cGxlRGVzYwlkZXNjID0gUmVsYXRpb25HZXREZXNjcihy ZWxhdGlvbik7CiAJUHVibGljYXRpb24gKnB1YjsKIAlpbnQJCQl4OworCWJvb2wJCWV4Y2VwdF9j b2x1bW5zID0gZmFsc2U7CiAKIAkqaW52YWxpZF9jb2x1bW5fbGlzdCA9IGZhbHNlOwogCSppbnZh bGlkX2dlbl9jb2wgPSBmYWxzZTsKQEAgLTQyNyw3ICs0MjcsOCBAQCBwdWJfY29udGFpbnNfaW52 YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3Jz LAogCiAJLyogRmV0Y2ggdGhlIGNvbHVtbiBsaXN0ICovCiAJcHViID0gR2V0UHVibGljYXRpb24o cHViaWQpOwotCWNoZWNrX2FuZF9mZXRjaF9jb2x1bW5fbGlzdChwdWIsIHB1Ymxpc2hfYXNfcmVs aWQsIE5VTEwsICZjb2x1bW5zKTsKKwljaGVja19hbmRfZmV0Y2hfY29sdW1uX2xpc3QocHViLCBw dWJsaXNoX2FzX3JlbGlkLCBOVUxMLCAmY29sdW1ucywKKwkJCQkJCQkJJmV4Y2VwdF9jb2x1bW5z KTsKIAogCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxyZXBsaWRlbnQgPT0gUkVQTElDQV9JREVO VElUWV9GVUxMKQogCXsKQEAgLTUxNyw4ICs1MTgsMTQgQEAgcHViX2NvbnRhaW5zX2ludmFsaWRf Y29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmFuY2VzdG9ycywKIAkJ CWF0dG51bSA9IGdldF9hdHRudW0ocHVibGlzaF9hc19yZWxpZCwgY29sbmFtZSk7CiAJCX0KIAot CQkvKiByZXBsaWNhIGlkZW50aXR5IGNvbHVtbiwgbm90IGNvdmVyZWQgYnkgdGhlIGNvbHVtbiBs aXN0ICovCi0JCSppbnZhbGlkX2NvbHVtbl9saXN0IHw9ICFibXNfaXNfbWVtYmVyKGF0dG51bSwg Y29sdW1ucyk7CisJCS8qCisJCSAqIFJlcGxpY2EgaWRlbnRpdHkgY29sdW1uLCBub3QgY292ZXJl ZCBieSB0aGUgY29sdW1uIGxpc3Qgb3IgaXMgcGFydAorCQkgKiBvZiBjb2x1bW4gbGlzdCBzcGVj aWZpZWQgd2l0aCBFWENFUFQuCisJCSAqLworCQlpZiAoZXhjZXB0X2NvbHVtbnMpCisJCQkqaW52 YWxpZF9jb2x1bW5fbGlzdCB8PSBibXNfaXNfbWVtYmVyKGF0dG51bSwgY29sdW1ucyk7CisJCWVs c2UKKwkJCSppbnZhbGlkX2NvbHVtbl9saXN0IHw9ICFibXNfaXNfbWVtYmVyKGF0dG51bSwgY29s dW1ucyk7CiAKIAkJaWYgKCppbnZhbGlkX2NvbHVtbl9saXN0ICYmICppbnZhbGlkX2dlbl9jb2wp CiAJCQlicmVhazsKQEAgLTE1MDAsNiArMTUwNyw3IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMo QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQlIZWFwVHVwbGUJ cmZ0dXBsZTsKIAkJCU5vZGUJICAgKm9sZHJlbHdoZXJlY2xhdXNlID0gTlVMTDsKIAkJCUJpdG1h cHNldCAgKm9sZGNvbHVtbnMgPSBOVUxMOworCQkJYm9vbAkJb2xkZXhjZXB0ID0gZmFsc2U7CiAK IAkJCS8qIGxvb2sgdXAgdGhlIGNhY2hlIGZvciB0aGUgb2xkIHJlbG1hcCAqLwogCQkJcmZ0dXBs ZSA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElPTlJFTE1BUCwKQEAgLTE1MTMsMjMgKzE1MjEs MjggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwg SGVhcFR1cGxlIHR1cCwKIAkJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHJmdHVwbGUpKQogCQkJewog CQkJCWJvb2wJCWlzbnVsbCA9IHRydWU7Ci0JCQkJRGF0dW0JCXdoZXJlQ2xhdXNlRGF0dW07Ci0J CQkJRGF0dW0JCWNvbHVtbkxpc3REYXR1bTsKKwkJCQlEYXR1bQkJZGF0dW07CiAKIAkJCQkvKiBM b2FkIHRoZSBXSEVSRSBjbGF1c2UgZm9yIHRoaXMgdGFibGUuICovCi0JCQkJd2hlcmVDbGF1c2VE YXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcmZ0dXBsZSwKLQkJCQkJ CQkJCQkJCSAgIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3BycXVhbCwKLQkJCQkJCQkJCQkJCSAg ICZpc251bGwpOworCQkJCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQ LCByZnR1cGxlLAorCQkJCQkJCQkJCUFudW1fcGdfcHVibGljYXRpb25fcmVsX3BycXVhbCwKKwkJ CQkJCQkJCQkmaXNudWxsKTsKIAkJCQlpZiAoIWlzbnVsbCkKLQkJCQkJb2xkcmVsd2hlcmVjbGF1 c2UgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyh3aGVyZUNsYXVzZURhdHVtKSk7 CisJCQkJCW9sZHJlbHdoZXJlY2xhdXNlID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJp bmcoZGF0dW0pKTsKIAogCQkJCS8qIFRyYW5zZm9ybSB0aGUgaW50MnZlY3RvciBjb2x1bW4gbGlz dCB0byBhIGJpdG1hcC4gKi8KLQkJCQljb2x1bW5MaXN0RGF0dW0gPSBTeXNDYWNoZUdldEF0dHIo UFVCTElDQVRJT05SRUxNQVAsIHJmdHVwbGUsCi0JCQkJCQkJCQkJCQkgIEFudW1fcGdfcHVibGlj YXRpb25fcmVsX3ByYXR0cnMsCi0JCQkJCQkJCQkJCQkgICZpc251bGwpOworCQkJCWRhdHVtID0g U3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCByZnR1cGxlLAorCQkJCQkJCQkJCUFu dW1fcGdfcHVibGljYXRpb25fcmVsX3ByYXR0cnMsCisJCQkJCQkJCQkJJmlzbnVsbCk7CisJCQkJ aWYgKCFpc251bGwpCisJCQkJCW9sZGNvbHVtbnMgPSBwdWJfY29sbGlzdF90b19iaXRtYXBzZXQo TlVMTCwgZGF0dW0sIE5VTEwpOwogCisJCQkJLyogTG9hZCB0aGUgcHJleGNlcHQgZmxhZyBmb3Ig dGhpcyB0YWJsZS4gKi8KKwkJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQVUJMSUNBVElPTlJF TE1BUCwgcmZ0dXBsZSwKKwkJCQkJCQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmV4Y2Vw dCwKKwkJCQkJCQkJCQkmaXNudWxsKTsKIAkJCQlpZiAoIWlzbnVsbCkKLQkJCQkJb2xkY29sdW1u cyA9IHB1Yl9jb2xsaXN0X3RvX2JpdG1hcHNldChOVUxMLCBjb2x1bW5MaXN0RGF0dW0sIE5VTEwp OworCQkJCQlvbGRleGNlcHQgPSBEYXR1bUdldEJvb2woZGF0dW0pOwogCiAJCQkJUmVsZWFzZVN5 c0NhY2hlKHJmdHVwbGUpOwogCQkJfQpAQCAtMTU1NiwxMyArMTU2OSwxNCBAQCBBbHRlclB1Ymxp Y2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAog CQkJCSAqIENoZWNrIGlmIGFueSBvZiB0aGUgbmV3IHNldCBvZiByZWxhdGlvbnMgbWF0Y2hlcyB3 aXRoIHRoZQogCQkJCSAqIGV4aXN0aW5nIHJlbGF0aW9ucyBpbiB0aGUgcHVibGljYXRpb24uIEFk ZGl0aW9uYWxseSwgaWYgdGhlCiAJCQkJICogcmVsYXRpb24gaGFzIGFuIGFzc29jaWF0ZWQgV0hF UkUgY2xhdXNlLCBjaGVjayB0aGUgV0hFUkUKLQkJCQkgKiBleHByZXNzaW9ucyBhbHNvIG1hdGNo LiBTYW1lIGZvciB0aGUgY29sdW1uIGxpc3QuIERyb3AgdGhlCi0JCQkJICogcmVzdC4KKwkJCQkg KiBleHByZXNzaW9ucyBhbHNvIG1hdGNoLiBTYW1lIGZvciB0aGUgY29sdW1uIGxpc3QgYW5kIGV4 Y2VwdAorCQkJCSAqIGZsYWcuIERyb3AgdGhlIHJlc3QuCiAJCQkJICovCiAJCQkJaWYgKG5ld3Jl bGlkID09IG9sZHJlbGlkKQogCQkJCXsKIAkJCQkJaWYgKGVxdWFsKG9sZHJlbHdoZXJlY2xhdXNl LCBuZXdwdWJyZWwtPndoZXJlQ2xhdXNlKSAmJgotCQkJCQkJYm1zX2VxdWFsKG9sZGNvbHVtbnMs IG5ld2NvbHVtbnMpKQorCQkJCQkJYm1zX2VxdWFsKG9sZGNvbHVtbnMsIG5ld2NvbHVtbnMpICYm CisJCQkJCQlvbGRleGNlcHQgPT0gbmV3cHVicmVsLT5leGNlcHQpCiAJCQkJCXsKIAkJCQkJCWZv dW5kID0gdHJ1ZTsKIAkJCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggZjI5NzBjYzNmZGYuLjQz MTRhNDU4MGUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTUzNSw3ICs1MzUsNyBAQCBzdGF0aWMgTm9kZSAq bWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogCQkJCU9wdFdoZXJlQ2xhdXNlIG9wZXJhdG9yX2RlZl9hcmcKICV0eXBlIDxs aXN0PglvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdAogJXR5cGUgPGxpc3Q+CXJvd3Nmcm9tX2l0 ZW0gcm93c2Zyb21fbGlzdCBvcHRfY29sX2RlZl9saXN0Ci0ldHlwZSA8Ym9vbGVhbj4gb3B0X29y ZGluYWxpdHkgb3B0X3dpdGhvdXRfb3ZlcmxhcHMKKyV0eXBlIDxib29sZWFuPiBvcHRfb3JkaW5h bGl0eSBvcHRfd2l0aG91dF9vdmVybGFwcyBvcHRfZXhjZXB0CiAldHlwZSA8bGlzdD4JRXhjbHVz aW9uQ29uc3RyYWludExpc3QgRXhjbHVzaW9uQ29uc3RyYWludEVsZW0KICV0eXBlIDxsaXN0Pglm dW5jX2FyZ19saXN0IGZ1bmNfYXJnX2xpc3Rfb3B0CiAldHlwZSA8bm9kZT4JZnVuY19hcmdfZXhw cgpAQCAtNDQ4MCw2ICs0NDgwLDExIEBAIG9wdF93aXRob3V0X292ZXJsYXBzOgogCQkJfCAvKkVN UFRZKi8JCQkJCQkJCXsgJCQgPSBmYWxzZTsgfQogCTsKIAorb3B0X2V4Y2VwdDoKKwkJCUVYQ0VQ VAkJCQkJCQkJCXsgJCQgPSB0cnVlOyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IGZh bHNlOyB9CisJCTsKKwogb3B0X2NvbHVtbl9saXN0OgogCQkJJygnIGNvbHVtbkxpc3QgJyknCQkJ CQkJeyAkJCA9ICQyOyB9CiAJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IE5JTDsgfQpAQCAt MTA3OTYsMTQgKzEwODAxLDE1IEBAIENyZWF0ZVB1YmxpY2F0aW9uU3RtdDoKICAqIHJlbGF0aW9u X2V4cHIgaGVyZS4KICAqLwogUHVibGljYXRpb25PYmpTcGVjOgotCQkJVEFCTEUgcmVsYXRpb25f ZXhwciBvcHRfY29sdW1uX2xpc3QgT3B0V2hlcmVDbGF1c2UKKwkJCVRBQkxFIHJlbGF0aW9uX2V4 cHIgb3B0X2V4Y2VwdCBvcHRfY29sdW1uX2xpc3QgT3B0V2hlcmVDbGF1c2UKIAkJCQl7CiAJCQkJ CSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUg PSBQVUJMSUNBVElPTk9CSl9UQUJMRTsKIAkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVi bGljYXRpb25UYWJsZSk7CiAJCQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMjsKLQkJCQkJ JCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDM7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1 c2UgPSAkNDsKKwkJCQkJJCQtPnB1YnRhYmxlLT5leGNlcHQgPSAkMzsKKwkJCQkJJCQtPnB1YnRh YmxlLT5jb2x1bW5zID0gJDQ7CisJCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkNTsK IAkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJfQogCQkJfCBUQUJMRVMgSU5fUCBTQ0hFTUEg Q29sSWQKQEAgLTEwODE5LDcgKzEwODI1LDcgQEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkk JC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BOwogCQkJ CQkkJC0+bG9jYXRpb24gPSBANDsKIAkJCQl9Ci0JCQl8IENvbElkIG9wdF9jb2x1bW5fbGlzdCBP cHRXaGVyZUNsYXVzZQorCQkJfCBDb2xJZCBvcHRfZXhjZXB0IG9wdF9jb2x1bW5fbGlzdCBPcHRX aGVyZUNsYXVzZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMp OwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTjsKQEAg LTEwODI3LDcgKzEwODMzLDcgQEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkgKiBJZiBlaXRo ZXIgYSByb3cgZmlsdGVyIG9yIGNvbHVtbiBsaXN0IGlzIHNwZWNpZmllZCwgY3JlYXRlCiAJCQkJ CSAqIGEgUHVibGljYXRpb25UYWJsZSBvYmplY3QuCiAJCQkJCSAqLwotCQkJCQlpZiAoJDIgfHwg JDMpCisJCQkJCWlmICgkMiB8fCAkMyB8fCAkNCkKIAkJCQkJewogCQkJCQkJLyoKIAkJCQkJCSAq IFRoZSBPcHRXaGVyZUNsYXVzZSBtdXN0IGJlIHN0b3JlZCBoZXJlIGJ1dCBpdCBpcwpAQCAtMTA4 MzcsOCArMTA4NDMsOSBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJCQkgKi8KIAkJCQkJCSQk LT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwogCQkJCQkJJCQtPnB1YnRh YmxlLT5yZWxhdGlvbiA9IG1ha2VSYW5nZVZhcihOVUxMLCAkMSwgQDEpOwotCQkJCQkJJCQtPnB1 YnRhYmxlLT5jb2x1bW5zID0gJDI7Ci0JCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0g JDM7CisJCQkJCQkkJC0+cHVidGFibGUtPmV4Y2VwdCA9ICQyOworCQkJCQkJJCQtPnB1YnRhYmxl LT5jb2x1bW5zID0gJDM7CisJCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDQ7CiAJ CQkJCX0KIAkJCQkJZWxzZQogCQkJCQl7CkBAIC0xMDg0NiwyNSArMTA4NTMsMjcgQEAgUHVibGlj YXRpb25PYmpTcGVjOgogCQkJCQl9CiAJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOwogCQkJCX0KLQkJ CXwgQ29sSWQgaW5kaXJlY3Rpb24gb3B0X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xhdXNlCisJCQl8 IENvbElkIGluZGlyZWN0aW9uIG9wdF9leGNlcHQgb3B0X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xh dXNlCiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJ CSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9OOwogCQkJCQkkJC0+ cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxlKTsKIAkJCQkJJCQtPnB1YnRhYmxl LT5yZWxhdGlvbiA9IG1ha2VSYW5nZVZhckZyb21RdWFsaWZpZWROYW1lKCQxLCAkMiwgQDEsIHl5 c2Nhbm5lcik7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQzOwotCQkJCQkkJC0+cHVi dGFibGUtPndoZXJlQ2xhdXNlID0gJDQ7CisJCQkJCSQkLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gJDM7 CisJCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQ0OworCQkJCQkkJC0+cHVidGFibGUtPndo ZXJlQ2xhdXNlID0gJDU7CiAJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOwogCQkJCX0KIAkJCS8qIGdy YW1tYXIgbGlrZSB0YWJsZW5hbWUgKiAsIE9OTFkgdGFibGVuYW1lLCBPTkxZICggdGFibGVuYW1l ICkgKi8KLQkJCXwgZXh0ZW5kZWRfcmVsYXRpb25fZXhwciBvcHRfY29sdW1uX2xpc3QgT3B0V2hl cmVDbGF1c2UKKwkJCXwgZXh0ZW5kZWRfcmVsYXRpb25fZXhwciBvcHRfZXhjZXB0IG9wdF9jb2x1 bW5fbGlzdCBPcHRXaGVyZUNsYXVzZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNh dGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0NPTlRJ TlVBVElPTjsKIAkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7 CiAJCQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5j b2x1bW5zID0gJDI7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkMzsKKwkJCQkJ JCQtPnB1YnRhYmxlLT5leGNlcHQgPSAkMjsKKwkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5zID0g JDM7CisJCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkNDsKIAkJCQl9CiAJCQl8IENV UlJFTlRfU0NIRU1BCiAJCQkJewpAQCAtMTk4NTYsNiArMTk4NjUsMTMgQEAgcHJlcHJvY2Vzc19w dWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVy KQogCQkJCQkJZXJybXNnKCJpbnZhbGlkIHRhYmxlIG5hbWUiKSwKIAkJCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihwdWJvYmotPmxvY2F0aW9uKSk7CiAKKwkJCWlmIChwdWJvYmotPnB1YnRhYmxlICYm IHB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCAmJgorCQkJCXB1Ym9iai0+cHVidGFibGUtPmNvbHVt bnMgPT0gTlVMTCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCisJCQkJCQllcnJtc2coInRhYmxlIHdpdGhvdXQgY29sdW1uIGxpc3QgY2Fu bm90IHVzZSBFWENFUFQgY2xhdXNlIiksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHVib2Jq LT5sb2NhdGlvbikpOworCiAJCQlpZiAocHVib2JqLT5uYW1lKQogCQkJewogCQkJCS8qIGNvbnZl cnQgaXQgdG8gUHVibGljYXRpb25UYWJsZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvdGFibGVzeW5jLmMKaW5kZXggZGNjNjEyNGNjNzMuLjI5YTQ1M2Q1ZjYzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTcyMCwxMCArNzIw LDE4IEBAIGNvcHlfcmVhZF9kYXRhKHZvaWQgKm91dGJ1ZiwgaW50IG1pbnJlYWQsIGludCBtYXhy ZWFkKQogICogVGhpcyBmdW5jdGlvbiBhbHNvIHJldHVybnMgKGEpIHRoZSByZWxhdGlvbiBxdWFs aWZpY2F0aW9ucyB0byBiZSB1c2VkIGluCiAgKiB0aGUgQ09QWSBjb21tYW5kLCBhbmQgKGIpIHdo ZXRoZXIgdGhlIHJlbW90ZSByZWxhdGlvbiBoYXMgcHVibGlzaGVkIGFueQogICogZ2VuZXJhdGVk IGNvbHVtbi4KKyAqCisgKiBXaXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIEVYQ0VQVCBxdWFs aWZpZXIgaW4gY29sdW1uIGxpc3RzLCBpdCBpcyBub3cKKyAqIHBvc3NpYmxlIHRvIGRlZmluZSBh IHB1YmxpY2F0aW9uIHRoYXQgZXhjbHVkZXMgYWxsIGNvbHVtbnMgb2YgYSB0YWJsZS4gV2hlbgor ICogdGhlIGNvbHVtbiBsaXN0IGlzIGZldGNoZWQgZnJvbSB0aGUgcmVtb3RlIHNlcnZlciBhbmQg aXMgTlVMTCwgaXQgbm9ybWFsbHkKKyAqIGluZGljYXRlcyB0aGF0IGFsbCBjb2x1bW5zIGFyZSBp bmNsdWRlZC4gVG8gZGlzdGluZ3Vpc2ggdGhpcyBmcm9tIHRoZSBjYXNlCisgKiB3aGVyZSBhbGwg Y29sdW1ucyBhcmUgZXhwbGljaXRseSBleGNsdWRlZCwgdGhlICdhbGxfY29sc19leGNsdWRlZCcg ZmxhZyBoYXMKKyAqIGJlZW4gaW50cm9kdWNlZC4KICAqLwogc3RhdGljIHZvaWQKIGZldGNoX3Jl bW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsIExvZ2ljYWxSZXBS ZWxhdGlvbiAqbHJlbCwKLQkJCQkJCUxpc3QgKipxdWFsLCBib29sICpnZW5jb2xfcHVibGlzaGVk KQorCQkJCQkJTGlzdCAqKnF1YWwsIGJvb2wgKmdlbmNvbF9wdWJsaXNoZWQsCisJCQkJCQlib29s ICphbGxfY29sc19leGNsdWRlZCkKIHsKIAlXYWxSY3ZFeGVjUmVzdWx0ICpyZXM7CiAJU3RyaW5n SW5mb0RhdGEgY21kOwpAQCAtNzM3LDYgKzc0NSw5IEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZv KGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsIExvZ2ljYWxSZXBSZWxhdGlvbiAqbHJlbCwK IAlCaXRtYXBzZXQgICppbmNsdWRlZF9jb2xzID0gTlVMTDsKIAlpbnQJCQlzZXJ2ZXJfdmVyc2lv biA9IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsKIAorCUFz c2VydCgqZ2VuY29sX3B1Ymxpc2hlZCA9PSBmYWxzZSk7CisJQXNzZXJ0KCphbGxfY29sc19leGNs dWRlZCA9PSBmYWxzZSk7CisKIAlscmVsLT5uc3BuYW1lID0gbnNwbmFtZTsKIAlscmVsLT5yZWxu YW1lID0gcmVsbmFtZTsKIApAQCAtNzg3LDcgKzc5OCw3IEBAIGZldGNoX3JlbW90ZV90YWJsZV9p bmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsIExvZ2ljYWxSZXBSZWxhdGlvbiAqbHJl bCwKIAl7CiAJCVdhbFJjdkV4ZWNSZXN1bHQgKnB1YnJlczsKIAkJVHVwbGVUYWJsZVNsb3QgKnRz bG90OwotCQlPaWQJCQlhdHRyc1Jvd1tdID0ge0lOVDJWRUNUT1JPSUR9OworCQlPaWQJCQlhdHRy c1Jvd1tdID0ge0lOVDJWRUNUT1JPSUQsIEJPT0xPSUR9OwogCiAJCS8qIEJ1aWxkIHRoZSBwdWJf bmFtZXMgY29tbWEtc2VwYXJhdGVkIHN0cmluZy4gKi8KIAkJcHViX25hbWVzID0gbWFrZVN0cmlu Z0luZm8oKTsKQEAgLTgwMSw3ICs4MTIsMTcgQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hh ciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICpscmVsLAogCQlh cHBlbmRTdHJpbmdJbmZvKCZjbWQsCiAJCQkJCQkgIlNFTEVDVCBESVNUSU5DVCIKIAkJCQkJCSAi ICAoQ0FTRSBXSEVOIChhcnJheV9sZW5ndGgoZ3B0LmF0dHJzLCAxKSA9IGMucmVsbmF0dHMpIgot CQkJCQkJICIgICBUSEVOIE5VTEwgRUxTRSBncHQuYXR0cnMgRU5EKSIKKwkJCQkJCSAiICAgVEhF TiBOVUxMIEVMU0UgZ3B0LmF0dHJzIEVORCkiKTsKKworCQkvKgorCQkgKiBXaGVuIHB1YmxpY2F0 aW9uIGlzIGNyZWF0ZWQgd2l0aCBFWENFUFQgKGNvbHVtbi1saXN0KSBhbmQgYWxsCisJCSAqIGNv bHVtbnMgYXJlIHNwZWNpZmllZCwgZ3B0LmF0dHJzIHdpbGwgYmUgTlVMTCBhbmQgbm8gY29sdW1u cyBhcmUKKwkJICogcHVibGlzaGVkIGluIHRoaXMgY2FzZS4KKwkJICovCisJCWlmIChzZXJ2ZXJf dmVyc2lvbiA+PSAxOTAwMDApCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICIsIGdwdC5hdHRy cyBJUyBOVUxMIEFORCBjLnJlbG5hdHRzID4gMCIpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJmNt ZCwKIAkJCQkJCSAiICBGUk9NIHBnX3B1YmxpY2F0aW9uIHAsIgogCQkJCQkJICIgIExBVEVSQUwg cGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhwLnB1Ym5hbWUpIGdwdCwiCiAJCQkJCQkgIiAgcGdf Y2xhc3MgYyIKQEAgLTgxMSw3ICs4MzIsNyBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFy ICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLCBMb2dpY2FsUmVwUmVsYXRpb24gKmxyZWwsCiAJCQkJ CQkgcHViX25hbWVzLT5kYXRhKTsKIAogCQlwdWJyZXMgPSB3YWxyY3ZfZXhlYyhMb2dSZXBXb3Jr ZXJXYWxSY3ZDb25uLCBjbWQuZGF0YSwKLQkJCQkJCQkgbGVuZ3Rob2YoYXR0cnNSb3cpLCBhdHRy c1Jvdyk7CisJCQkJCQkJIHNlcnZlcl92ZXJzaW9uID49IDE5MDAwMCA/IDIgOiAxLCBhdHRyc1Jv dyk7CiAKIAkJaWYgKHB1YnJlcy0+c3RhdHVzICE9IFdBTFJDVl9PS19UVVBMRVMpCiAJCQllcmVw b3J0KEVSUk9SLApAQCAtODU4LDYgKzg3OSw5IEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNo YXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsIExvZ2ljYWxSZXBSZWxhdGlvbiAqbHJlbCwKIAkJ CQkJaW5jbHVkZWRfY29scyA9IGJtc19hZGRfbWVtYmVyKGluY2x1ZGVkX2NvbHMsIGVsZW1zW25h dHRdKTsKIAkJCX0KIAorCQkJaWYgKHNlcnZlcl92ZXJzaW9uID49IDE5MDAwMCkKKwkJCQkqYWxs X2NvbHNfZXhjbHVkZWQgPSBEYXR1bUdldEJvb2woc2xvdF9nZXRhdHRyKHRzbG90LCAyLCAmaXNu dWxsKSk7CisKIAkJCUV4ZWNDbGVhclR1cGxlKHRzbG90KTsKIAkJfQogCQlFeGVjRHJvcFNpbmds ZVR1cGxlVGFibGVTbG90KHRzbG90KTsKQEAgLTkyMCw3ICs5NDQsOCBAQCBmZXRjaF9yZW1vdGVf dGFibGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLCBMb2dpY2FsUmVwUmVsYXRp b24gKmxyZWwsCiAJCUFzc2VydCghaXNudWxsKTsKIAogCQkvKiBJZiB0aGUgY29sdW1uIGlzIG5v dCBpbiB0aGUgY29sdW1uIGxpc3QsIHNraXAgaXQuICovCi0JCWlmIChpbmNsdWRlZF9jb2xzICE9 IE5VTEwgJiYgIWJtc19pc19tZW1iZXIoYXR0bnVtLCBpbmNsdWRlZF9jb2xzKSkKKwkJaWYgKCph bGxfY29sc19leGNsdWRlZCB8fAorCQkJKGluY2x1ZGVkX2NvbHMgIT0gTlVMTCAmJiAhYm1zX2lz X21lbWJlcihhdHRudW0sIGluY2x1ZGVkX2NvbHMpKSkKIAkJewogCQkJRXhlY0NsZWFyVHVwbGUo c2xvdCk7CiAJCQljb250aW51ZTsKQEAgLTEwNTIsMTEgKzEwNzcsMTUgQEAgY29weV90YWJsZShS ZWxhdGlvbiByZWwpCiAJUGFyc2VTdGF0ZSAqcHN0YXRlOwogCUxpc3QJICAgKm9wdGlvbnMgPSBO SUw7CiAJYm9vbAkJZ2VuY29sX3B1Ymxpc2hlZCA9IGZhbHNlOworCWJvb2wJCWFsbF9jb2xzX2V4 Y2x1ZGVkID0gZmFsc2U7CiAKIAkvKiBHZXQgdGhlIHB1Ymxpc2hlciByZWxhdGlvbiBpbmZvLiAq LwogCWZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdl dE5hbWVzcGFjZShyZWwpKSwKIAkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCAm bHJlbCwgJnF1YWwsCi0JCQkJCQkJJmdlbmNvbF9wdWJsaXNoZWQpOworCQkJCQkJCSZnZW5jb2xf cHVibGlzaGVkLCAmYWxsX2NvbHNfZXhjbHVkZWQpOworCisJaWYgKGFsbF9jb2xzX2V4Y2x1ZGVk KQorCQlyZXR1cm47CiAKIAkvKiBQdXQgdGhlIHJlbGF0aW9uIGludG8gcmVsbWFwLiAqLwogCWxv Z2ljYWxyZXBfcmVsbWFwX3VwZGF0ZSgmbHJlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v cGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCBhOTU5M2M1ZDlkYS4uN2Y1MzQ2MThjZjQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMTg1LDYgKzE4 NSwxNiBAQCB0eXBlZGVmIHN0cnVjdCBSZWxhdGlvblN5bmNFbnRyeQogCSAqIHJvdyBmaWx0ZXIg ZXhwcmVzc2lvbnMsIGNvbHVtbiBsaXN0LCBldGMuCiAJICovCiAJTWVtb3J5Q29udGV4dCBlbnRy eV9jeHQ7CisKKwkvKgorCSAqIEluZGljYXRlcyB3aGV0aGVyIG5vIGNvbHVtbnMgYXJlIHB1Ymxp c2hlZCBmb3IgYSBnaXZlbiByZWxhdGlvbi4gV2l0aAorCSAqIHRoZSBpbnRyb2R1Y3Rpb24gb2Yg dGhlIEVYQ0VQVCBxdWFsaWZpZXIgaW4gY29sdW1uIGxpc3RzLCBpdCBpcyBub3cKKwkgKiBwb3Nz aWJsZSB0byBkZWZpbmUgYSBwdWJsaWNhdGlvbiB0aGF0IGV4Y2x1ZGVzIGFsbCBjb2x1bW5zIG9m IGEgdGFibGUuCisJICogSG93ZXZlciwgdGhlICdjb2x1bW5zJyBhdHRyaWJ1dGUgY2Fubm90IHJl cHJlc2VudCB0aGlzIGNhc2UsIHNpbmNlIGEKKwkgKiBOVUxMIHZhbHVlIGltcGxpZXMgdGhhdCBh bGwgY29sdW1ucyBhcmUgcHVibGlzaGVkLiBUbyBkaXN0aW5ndWlzaCB0aGlzCisJICogc2NlbmFy aW8sIHRoZSAnYWxsX2NvbHNfZXhjbHVkZWQnIGZsYWcgaXMgaW50cm9kdWNlZC4KKwkgKi8KKwli b29sCQlhbGxfY29sc19leGNsdWRlZDsKIH0gUmVsYXRpb25TeW5jRW50cnk7CiAKIC8qCkBAIC0x MDkxLDEyICsxMTAxLDIxIEBAIGNoZWNrX2FuZF9pbml0X2dlbmNvbChQR091dHB1dERhdGEgKmRh dGEsIExpc3QgKnB1YmxpY2F0aW9ucywKIAkgKi8KIAlmb3JlYWNoX3B0cihQdWJsaWNhdGlvbiwg cHViLCBwdWJsaWNhdGlvbnMpCiAJeworCQlib29sCQloYXNfY29sdW1uX2xpc3QgPSBmYWxzZTsK KwkJYm9vbAkJZXhjZXB0X2NvbHVtbnMgPSBmYWxzZTsKKworCQloYXNfY29sdW1uX2xpc3QgPSBj aGVja19hbmRfZmV0Y2hfY29sdW1uX2xpc3QocHViLAorCQkJCQkJCQkJCQkJCSAgZW50cnktPnB1 Ymxpc2hfYXNfcmVsaWQsCisJCQkJCQkJCQkJCQkJICBOVUxMLCBOVUxMLAorCQkJCQkJCQkJCQkJ CSAgJmV4Y2VwdF9jb2x1bW5zKTsKKwogCQkvKgogCQkgKiBUaGUgY29sdW1uIGxpc3QgdGFrZXMg cHJlY2VkZW5jZSBvdmVyIHRoZQogCQkgKiAncHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucycgcGFy YW1ldGVyLiBUaG9zZSB3aWxsIGJlIGNoZWNrZWQgbGF0ZXIsCi0JCSAqIHNlZSBwZ291dHB1dF9j b2x1bW5fbGlzdF9pbml0LgorCQkgKiBzZWUgcGdvdXRwdXRfY29sdW1uX2xpc3RfaW5pdC4gQnV0 IHdoZW4gYSBjb2x1bW4gbGlzdCBpcyBzcGVjaWZpZWQKKwkJICogd2l0aCBFWENFUFQsIGl0IHNo b3VsZCBiZSBjaGVja2VkLgogCQkgKi8KLQkJaWYgKGNoZWNrX2FuZF9mZXRjaF9jb2x1bW5fbGlz dChwdWIsIGVudHJ5LT5wdWJsaXNoX2FzX3JlbGlkLCBOVUxMLCBOVUxMKSkKKwkJaWYgKGhhc19j b2x1bW5fbGlzdCAmJiAhZXhjZXB0X2NvbHVtbnMpCiAJCQljb250aW51ZTsKIAogCQlpZiAoZmly c3QpCkBAIC0xMTQ1LDE5ICsxMTY0LDQxIEBAIHBnb3V0cHV0X2NvbHVtbl9saXN0X2luaXQoUEdP dXRwdXREYXRhICpkYXRhLCBMaXN0ICpwdWJsaWNhdGlvbnMsCiAJewogCQlQdWJsaWNhdGlvbiAq cHViID0gbGZpcnN0KGxjKTsKIAkJQml0bWFwc2V0ICAqY29scyA9IE5VTEw7CisJCWJvb2wJCWV4 Y2VwdF9jb2x1bW5zID0gZmFsc2U7CisJCWJvb2wJCWFsbF9jb2xzX2V4Y2x1ZGVkID0gZmFsc2U7 CiAKIAkJLyogUmV0cmlldmUgdGhlIGJpdG1hcCBvZiBjb2x1bW5zIGZvciBhIGNvbHVtbiBsaXN0 IHB1YmxpY2F0aW9uLiAqLwogCQlmb3VuZF9wdWJfY29sbGlzdCB8PSBjaGVja19hbmRfZmV0Y2hf Y29sdW1uX2xpc3QocHViLAogCQkJCQkJCQkJCQkJCQkgZW50cnktPnB1Ymxpc2hfYXNfcmVsaWQs Ci0JCQkJCQkJCQkJCQkJCSBlbnRyeS0+ZW50cnlfY3h0LCAmY29scyk7CisJCQkJCQkJCQkJCQkJ CSBlbnRyeS0+ZW50cnlfY3h0LCAmY29scywKKwkJCQkJCQkJCQkJCQkJICZleGNlcHRfY29sdW1u cyk7CisKKwkJLyoKKwkJICogSWYgY29sdW1uIGxpc3QgaXMgc3BlY2lmaWVkIHdpdGggRVhDRVBU IHJldHJpZXZlIGJpdG1hcCBvZiBjb2x1bW5zCisJCSAqIHdoaWNoIGFyZSBub3QgcGFydCBvZiB0 aGlzIGNvbHVtbiBsaXN0LgorCQkgKi8KKwkJaWYgKGV4Y2VwdF9jb2x1bW5zKQorCQl7CisJCQlN ZW1vcnlDb250ZXh0IG9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlbnRyeS0+ZW50cnlf Y3h0KTsKKworCQkJY29scyA9IHB1Yl9mb3JtX2NvbHNfbWFwKHJlbGF0aW9uLAorCQkJCQkJCQkJ IGVudHJ5LT5pbmNsdWRlX2dlbmNvbHNfdHlwZSwgY29scyk7CisJCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3h0KTsKKworCQkJaWYgKCFjb2xzKQorCQkJCWFsbF9jb2xzX2V4Y2x1ZGVkID0g dHJ1ZTsKKwkJfQogCiAJCS8qCi0JCSAqIEZvciBub24tY29sdW1uIGxpc3QgcHVibGljYXRpb25z IOKAlCBlLmcuIFRBQkxFICh3aXRob3V0IGEgY29sdW1uCi0JCSAqIGxpc3QpLCBBTEwgVEFCTEVT LCBvciBBTEwgVEFCTEVTIElOIFNDSEVNQSwgd2UgY29uc2lkZXIgYWxsIGNvbHVtbnMKLQkJICog b2YgdGhlIHRhYmxlIChpbmNsdWRpbmcgZ2VuZXJhdGVkIGNvbHVtbnMgd2hlbgorCQkgKiBJZiAn Y29scycgaXMgbnVsbCwgaXQgaW5kaWNhdGVzIHRoYXQgdGhlIHB1YmxpY2F0aW9uIGlzIGVpdGhl ciBhCisJCSAqIG5vbi1jb2x1bW4gbGlzdCBwdWJsaWNhdGlvbiBvciBvbmUgd2hlcmUgYWxsIGNv bHVtbnMgYXJlIGV4Y2x1ZGVkLgorCQkgKiBXaGVuICdhbGxfY29sc19leGNsdWRlZCcgaXMgdHJ1 ZSwgaXQgZXhwbGljaXRseSBtZWFucyBhbGwgY29sdW1ucworCQkgKiBoYXZlIGJlZW4gZXhjbHVk ZWQuIEZvciBub24tY29sdW1uIGxpc3QgcHVibGljYXRpb25zIOKAlCBlLmcuIFRBQkxFCisJCSAq ICh3aXRob3V0IGEgY29sdW1uIGxpc3QpLCBBTEwgVEFCTEVTLCBvciBBTEwgVEFCTEVTIElOIFND SEVNQSwgd2UKKwkJICogY29uc2lkZXIgYWxsIGNvbHVtbnMgb2YgdGhlIHRhYmxlIChpbmNsdWRp bmcgZ2VuZXJhdGVkIGNvbHVtbnMgd2hlbgogCQkgKiAncHVibGlzaF9nZW5lcmF0ZWRfY29sdW1u cycgcGFyYW1ldGVyIGlzIHRydWUpLgogCQkgKi8KLQkJaWYgKCFjb2xzKQorCQlpZiAoIWFsbF9j b2xzX2V4Y2x1ZGVkICYmICFjb2xzKQogCQl7CiAJCQkvKgogCQkJICogQ2FjaGUgdGhlIHRhYmxl IGNvbHVtbnMgZm9yIHRoZSBmaXJzdCBwdWJsaWNhdGlvbiB3aXRoIG5vCkBAIC0xMTY5LDcgKzEy MTAsNyBAQCBwZ291dHB1dF9jb2x1bW5fbGlzdF9pbml0KFBHT3V0cHV0RGF0YSAqZGF0YSwgTGlz dCAqcHVibGljYXRpb25zLAogCQkJCU1lbW9yeUNvbnRleHQgb2xkY3h0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKGVudHJ5LT5lbnRyeV9jeHQpOwogCiAJCQkJcmVsY29scyA9IHB1Yl9mb3JtX2Nv bHNfbWFwKHJlbGF0aW9uLAotCQkJCQkJCQkJCQllbnRyeS0+aW5jbHVkZV9nZW5jb2xzX3R5cGUp OworCQkJCQkJCQkJCQllbnRyeS0+aW5jbHVkZV9nZW5jb2xzX3R5cGUsIE5VTEwpOwogCQkJCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCQkJfQogCkBAIC0xMTc5LDkgKzEyMjAsMTEg QEAgcGdvdXRwdXRfY29sdW1uX2xpc3RfaW5pdChQR091dHB1dERhdGEgKmRhdGEsIExpc3QgKnB1 YmxpY2F0aW9ucywKIAkJaWYgKGZpcnN0KQogCQl7CiAJCQllbnRyeS0+Y29sdW1ucyA9IGNvbHM7 CisJCQllbnRyeS0+YWxsX2NvbHNfZXhjbHVkZWQgPSBhbGxfY29sc19leGNsdWRlZDsKIAkJCWZp cnN0ID0gZmFsc2U7CiAJCX0KLQkJZWxzZSBpZiAoIWJtc19lcXVhbChlbnRyeS0+Y29sdW1ucywg Y29scykpCisJCWVsc2UgaWYgKChlbnRyeS0+YWxsX2NvbHNfZXhjbHVkZWQgIT0gYWxsX2NvbHNf ZXhjbHVkZWQpIHx8CisJCQkJICFibXNfZXF1YWwoZW50cnktPmNvbHVtbnMsIGNvbHMpKQogCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCiAJCQkJCWVycm1zZygiY2Fubm90IHVzZSBkaWZmZXJlbnQgY29sdW1uIGxpc3RzIGZvciB0 YWJsZSBcIiVzLiVzXCIgaW4gZGlmZmVyZW50IHB1YmxpY2F0aW9ucyIsCkBAIC0xNTA1LDYgKzE1 NDgsMTMgQEAgcGdvdXRwdXRfY2hhbmdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVv cmRlckJ1ZmZlclRYTiAqdHhuLAogCiAJcmVsZW50cnkgPSBnZXRfcmVsX3N5bmNfZW50cnkoZGF0 YSwgcmVsYXRpb24pOwogCisJLyoKKwkgKiBJZiBhbGwgY29sdW1ucyBvZiBhIHRhYmxlIGFyZSBw cmVzZW50IGluIGNvbHVtbiBsaXN0IHNwZWNpZmllZCB3aXRoCisJICogRVhDRVBULCBza2lwIHB1 Ymxpc2hpbmcgdGhlIGNoYW5nZXMuCisJICovCisJaWYgKHJlbGVudHJ5LT5hbGxfY29sc19leGNs dWRlZCkKKwkJcmV0dXJuOworCiAJLyogRmlyc3QgY2hlY2sgdGhlIHRhYmxlIGZpbHRlciAqLwog CXN3aXRjaCAoYWN0aW9uKQogCXsKQEAgLTIwNzgsNiArMjEyOCw3IEBAIGdldF9yZWxfc3luY19l bnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQllbnRyeS0+cHVi bGlzaF9hc19yZWxpZCA9IEludmFsaWRPaWQ7CiAJCWVudHJ5LT5jb2x1bW5zID0gTlVMTDsKIAkJ ZW50cnktPmF0dHJtYXAgPSBOVUxMOworCQllbnRyeS0+YWxsX2NvbHNfZXhjbHVkZWQgPSBmYWxz ZTsKIAl9CiAKIAkvKiBWYWxpZGF0ZSB0aGUgZW50cnkgKi8KQEAgLTIxMjcsNiArMjE3OCw3IEBA IGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9u KQogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPSBmYWxzZTsKIAkJZW50cnktPnB1YmFj dGlvbnMucHViZGVsZXRlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRl ID0gZmFsc2U7CisJCWVudHJ5LT5hbGxfY29sc19leGNsdWRlZCA9IGZhbHNlOwogCiAJCS8qCiAJ CSAqIFR1cGxlIHNsb3RzIGNsZWFudXBzLiAoV2lsbCBiZSByZWJ1aWx0IGxhdGVyIGlmIG5lZWRl ZCkuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYwppbmRleCBlMzRhYWJhNzkzNy4uMWZkYjkwZjY0ODIgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwpAQCAtNDkzMywyNCArNDkzMyw3IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZv dXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCWlmICh0YmluZm8gPT0g TlVMTCkKIAkJCWNvbnRpbnVlOwogCi0JCS8qIE9LLCBtYWtlIGEgRHVtcGFibGVPYmplY3QgZm9y IHRoaXMgcmVsYXRpb25zaGlwICovCi0JCWlmIChzdHJjbXAocHJleGNlcHQsICJmIikgPT0gMCkK LQkJCXB1YnJpbmZvW2pdLmRvYmoub2JqVHlwZSA9IERPX1BVQkxJQ0FUSU9OX1JFTDsKLQkJZWxz ZQotCQkJcHVicmluZm9bal0uZG9iai5vYmpUeXBlID0gRE9fUFVCTElDQVRJT05fRVhDRVBUX1JF TDsKLQotCQlwdWJyaW5mb1tqXS5kb2JqLmNhdElkLnRhYmxlb2lkID0KLQkJCWF0b29pZChQUWdl dHZhbHVlKHJlcywgaSwgaV90YWJsZW9pZCkpOwotCQlwdWJyaW5mb1tqXS5kb2JqLmNhdElkLm9p ZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9vaWQpKTsKLQkJQXNzaWduRHVtcElkKCZw dWJyaW5mb1tqXS5kb2JqKTsKLQkJcHVicmluZm9bal0uZG9iai5uYW1lc3BhY2UgPSB0YmluZm8t PmRvYmoubmFtZXNwYWNlOwotCQlwdWJyaW5mb1tqXS5kb2JqLm5hbWUgPSB0YmluZm8tPmRvYmou bmFtZTsKLQkJcHVicmluZm9bal0ucHVibGljYXRpb24gPSBwdWJpbmZvOwotCQlwdWJyaW5mb1tq XS5wdWJ0YWJsZSA9IHRiaW5mbzsKLQkJaWYgKFBRZ2V0aXNudWxsKHJlcywgaSwgaV9wcnJlbHF1 YWwpKQotCQkJcHVicmluZm9bal0ucHVicmVscXVhbCA9IE5VTEw7Ci0JCWVsc2UKLQkJCXB1YnJp bmZvW2pdLnB1YnJlbHF1YWwgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHJyZWxx dWFsKSk7CisJCXB1YnJpbmZvW2pdLnB1YmV4Y2VwdCA9IChzdHJjbXAocHJleGNlcHQsICJ0Iikg PT0gMCk7CiAKIAkJaWYgKCFQUWdldGlzbnVsbChyZXMsIGksIGlfcHJhdHRycykpCiAJCXsKQEAg LTQ5NzYsMTAgKzQ5NTksMjkgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwg VGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJZWxzZQogCQkJcHVicmluZm9b al0ucHVicmF0dHJzID0gTlVMTDsKIAorCQkvKiBPSywgbWFrZSBhIER1bXBhYmxlT2JqZWN0IGZv ciB0aGlzIHJlbGF0aW9uc2hpcCAqLworCQlpZiAocHVicmluZm9bal0ucHViZXhjZXB0ICYmICFw dWJyaW5mb1tqXS5wdWJyYXR0cnMpCisJCQlwdWJyaW5mb1tqXS5kb2JqLm9ialR5cGUgPSBET19Q VUJMSUNBVElPTl9FWENFUFRfUkVMOworCQllbHNlCisJCQlwdWJyaW5mb1tqXS5kb2JqLm9ialR5 cGUgPSBET19QVUJMSUNBVElPTl9SRUw7CisKKwkJcHVicmluZm9bal0uZG9iai5jYXRJZC50YWJs ZW9pZCA9CisJCQlhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfdGFibGVvaWQpKTsKKwkJcHVi cmluZm9bal0uZG9iai5jYXRJZC5vaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfb2lk KSk7CisJCUFzc2lnbkR1bXBJZCgmcHVicmluZm9bal0uZG9iaik7CisJCXB1YnJpbmZvW2pdLmRv YmoubmFtZXNwYWNlID0gdGJpbmZvLT5kb2JqLm5hbWVzcGFjZTsKKwkJcHVicmluZm9bal0uZG9i ai5uYW1lID0gdGJpbmZvLT5kb2JqLm5hbWU7CisJCXB1YnJpbmZvW2pdLnB1YmxpY2F0aW9uID0g cHViaW5mbzsKKwkJcHVicmluZm9bal0ucHVidGFibGUgPSB0YmluZm87CisJCWlmIChQUWdldGlz bnVsbChyZXMsIGksIGlfcHJyZWxxdWFsKSkKKwkJCXB1YnJpbmZvW2pdLnB1YnJlbHF1YWwgPSBO VUxMOworCQllbHNlCisJCQlwdWJyaW5mb1tqXS5wdWJyZWxxdWFsID0gcGdfc3RyZHVwKFBRZ2V0 dmFsdWUocmVzLCBpLCBpX3BycmVscXVhbCkpOworCiAJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdh bnQgdG8gZHVtcCBpdCAqLwogCQlzZWxlY3REdW1wYWJsZVB1YmxpY2F0aW9uT2JqZWN0KCYocHVi cmluZm9bal0uZG9iaiksIGZvdXQpOwogCi0JCWlmIChzdHJjbXAocHJleGNlcHQsICJ0IikgPT0g MCkKKwkJaWYgKHB1YnJpbmZvW2pdLnB1YmV4Y2VwdCAmJiAhcHVicmluZm9bal0ucHVicmF0dHJz KQogCQkJc2ltcGxlX3B0cl9saXN0X2FwcGVuZCgmZXhjZXB0aW5mbywgJnB1YnJpbmZvW2pdKTsK IAogCQlqKys7CkBAIC01MDU5LDcgKzUwNjEsMTIgQEAgZHVtcFB1YmxpY2F0aW9uVGFibGUoQXJj aGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25SZWxJbmZvICpwdWJyaW5mbykKIAkJCQkJICBm bXRRdWFsaWZpZWREdW1wYWJsZSh0YmluZm8pKTsKIAogCWlmIChwdWJyaW5mby0+cHVicmF0dHJz KQorCXsKKwkJaWYgKHB1YnJpbmZvLT5wdWJleGNlcHQpCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwgIiBFWENFUFQiKTsKKwogCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiAoJXMp IiwgcHVicmluZm8tPnB1YnJhdHRycyk7CisJfQogCiAJaWYgKHB1YnJpbmZvLT5wdWJyZWxxdWFs KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oCmluZGV4IDcyM2I1NTc1YzUzLi5jYTJkMzU2ZjcyYSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oCkBAIC02OTAsNiArNjkwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1YmxpY2F0aW9uUmVsSW5m bwogCVRhYmxlSW5mbyAgKnB1YnRhYmxlOwogCWNoYXIJICAgKnB1YnJlbHF1YWw7CiAJY2hhcgkg ICAqcHVicmF0dHJzOworCWJvb2wJCXB1YmV4Y2VwdDsKIH0gUHVibGljYXRpb25SZWxJbmZvOwog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYwppbmRleCA1MGIxZDQzNTM1OS4uNmNlYjEwOGEzNWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0x NTYwLDYgKzE1NjAsOTEgQEAgZGVzY3JpYmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqcGF0dGVy biwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXN0ZW0pCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8q CisgKiBBZGQgYSBmb290ZXIgdG8gYSBwdWJsaWNhdGlvbiBkZXNjcmlwdGlvbiBvciBhIHRhYmxl IGRlc2NyaXB0aW9uLgorICoKKyAqICdpc19wdWJfZGVzYycgLSB0cnVlIGZvciBhIHB1YiBkZXNj OyBmYWxzZSBmb3IgYSB0YWJsZSBkZXNjCisgKiAncHViX3NjaGVtYXMnIC0gdHJ1ZSBpZiB0aGUg cHViX2Rlc2Mgb25seSBzaG93cyBzY2hlbWFzLCBvdGhlcndpc2UgZmFsc2UKKyAqLworc3RhdGlj IGJvb2wKK2FkZEZvb3RlclRvUHVibGljYXRpb25PclRhYmxlRGVzYyhQUUV4cEJ1ZmZlciBidWYs CisJCQkJCQkJCSAgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnN0IGNvbnQsCisJCQkJCQkJCSAgY29u c3QgY2hhciAqZm9vdGVybXNnLAorCQkJCQkJCQkgIGJvb2wgaXNfcHViX2Rlc2MsIGJvb2wgcHVi X3NjaGVtYXMpCit7CisJUEdyZXN1bHQgICAqcmVzOworCWludAkJCWNvdW50OworCWludAkJCWNv bCA9IGlzX3B1Yl9kZXNjID8gMSA6IDA7CisKKwlyZXMgPSBQU1FMZXhlYyhidWYtPmRhdGEpOwor CWlmICghcmVzKQorCQlyZXR1cm4gZmFsc2U7CisKKwljb3VudCA9IFBRbnR1cGxlcyhyZXMpOwor CWlmIChjb3VudCA+IDApCisJCXByaW50VGFibGVBZGRGb290ZXIoY29udCwgZm9vdGVybXNnKTsK KworCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKwkgKiBEZXNjcmlwdGlvbiBjb2x1bW5zIGZvcjoKKwkgKgorCSAqIFBVQiAg ICAgIFRCTAorCSAqIFswXSAgICAgIC0gICAgICA6IHNjaGVtYSBuYW1lIChuc3BuYW1lKQorCSAq IFtjb2xdICAgIC0gICAgICA6IHRhYmxlIG5hbWUgKHJlbG5hbWUpCisJICogLSAgICAgICAgW2Nv bF0gIDogcHVibGljYXRpb24gbmFtZSAocHVibmFtZSkKKwkgKiBbY29sKzFdICBbY29sKzFdOiBy b3cgZmlsdGVyIGV4cHJlc3Npb24gKHBycXVhbCksIG1heSBiZSBOVUxMCisJICogW2NvbCsyXSAg W2NvbCsyXTogY29sdW1uIGxpc3QgKGNvbW1hLXNlcGFyYXRlZCksIG1heSBiZSBOVUxMCisJICog W2NvbCszXSAgW2NvbCszXTogZXhjZXB0IGZsYWcgKCJ0IiBpZiBFWENFUFQsIGVsc2UgImYiKQor CSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisJeworCQlw cmludGZQUUV4cEJ1ZmZlcihidWYsICIgICAgIik7IC8qIGluZGVudCAqLworCisJCS8qCisJCSAq IEZvb3RlciBlbnRyaWVzIGZvciBhIHB1YmxpY2F0aW9uIGRlc2NyaXB0aW9uIG9yIGEgdGFibGUK KwkJICogZGVzY3JpcHRpb24KKwkJICovCisJCWlmIChpc19wdWJfZGVzYykKKwkJeworCQkJaWYg KHB1Yl9zY2hlbWFzKQorCQkJeworCQkJCS8qIFNjaGVtYXMgb2YgdGhlIHB1YmxpY2F0aW9uLi4u ICovCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoYnVmLCAiXCIlc1wiIiwgUFFnZXR2YWx1ZShyZXMs IGksIDApKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKiBUYWJsZXMgb2YgdGhlIHB1Ymxp Y2F0aW9uLi4uICovCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoYnVmLCAiXCIlcy4lc1wiIiwgUFFn ZXR2YWx1ZShyZXMsIGksIDApLAorCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzLCBpLCBjb2wpKTsK KwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIFB1YmxpY2F0aW9ucyBvZiB0aGUgdGFibGUu Li4gKi8KKwkJCWFwcGVuZFBRRXhwQnVmZmVyKGJ1ZiwgIlwiJXNcIiIsIFBRZ2V0dmFsdWUocmVz LCBpLCBjb2wpKTsKKwkJfQorCisJCS8qIENvbW1vbiBmb290ZXIgb3V0cHV0IGZvciBjb2x1bW4g bGlzdCBhbmQvb3Igcm93IGZpbHRlciAqLworCQlpZiAoIXB1Yl9zY2hlbWFzKQorCQl7CisJCQlp ZiAoIVBRZ2V0aXNudWxsKHJlcywgaSwgY29sICsgMikpCisJCQl7CisJCQkJaWYgKHN0cmNtcChQ UWdldHZhbHVlKHJlcywgaSwgY29sICsgMyksICJ0IikgPT0gMCkKKwkJCQkJYXBwZW5kUFFFeHBC dWZmZXIoYnVmLCAiIEVYQ0VQVCIpOworCQkJCWFwcGVuZFBRRXhwQnVmZmVyKGJ1ZiwgIiAoJXMp IiwgUFFnZXR2YWx1ZShyZXMsIGksIGNvbCArIDIpKTsKKwkJCX0KKworCQkJaWYgKCFQUWdldGlz bnVsbChyZXMsIGksIGNvbCArIDEpKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKGJ1ZiwgIiBXSEVS RSAlcyIsIFBRZ2V0dmFsdWUocmVzLCBpLCBjb2wgKyAxKSk7CisJCX0KKworCQlwcmludFRhYmxl QWRkRm9vdGVyKGNvbnQsIGJ1Zi0+ZGF0YSk7CisJfQorCisJUFFjbGVhcihyZXMpOworCXJldHVy biB0cnVlOworfQorCiAvKgogICogZGVzY3JpYmVPbmVUYWJsZURldGFpbHMgKGZvciBcZCkKICAq CkBAIC0zMDUzLDE2ICszMTM4LDI3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNo YXIgKnNjaGVtYW5hbWUsCiAJCS8qIHByaW50IGFueSBwdWJsaWNhdGlvbnMgKi8KIAkJaWYgKHBz ZXQuc3ZlcnNpb24gPj0gMTAwMDAwKQogCQl7Ci0JCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAw MDApCisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCiAJCQl7CiAJCQkJcHJpbnRmUFFF eHBCdWZmZXIoJmJ1ZiwKKworCQkJCS8qCisJCQkJICogR2V0IGFsbCBwdWJsaWNhdGlvbnMgZm9y IHRoZSBzY2hlbWEgdGhhdCB0aGlzIHJlbGF0aW9uIGlzCisJCQkJICogcGFydCBvZgorCQkJCSAq LwogCQkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgogCQkJCQkJCQkgICIgICAgICwgTlVMTFxu IgogCQkJCQkJCQkgICIgICAgICwgTlVMTFxuIgorCQkJCQkJCQkgICIJCSwgTlVMTFxuIgogCQkJ CQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgogCQkJCQkJCQkgICIg ICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcG4gT04gcC5vaWQg PSBwbi5wbnB1YmlkXG4iCiAJCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNz IHBjIE9OIHBjLnJlbG5hbWVzcGFjZSA9IHBuLnBubnNwaWRcbiIKIAkJCQkJCQkJICAiV0hFUkUg cGMub2lkID0nJXMnIGFuZCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCcl cycpXG4iCisKKwkJCQkvKgorCQkJCSAqIEdldCBhbGwgcHVibGljYXRpb25zIGZvciB0aGlzIHJl bGF0aW9uIGNyZWF0ZWQgdXNpbmcgRk9SCisJCQkJICogVEFCTEUKKwkJCQkgKi8KIAkJCQkJCQkJ ICAiVU5JT05cbiIKIAkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKIAkJCQkJCQkJICAiICAg ICAsIHBnX2dldF9leHByKHByLnBycXVhbCwgYy5vaWQpXG4iCkBAIC0zMDcyLDM1ICszMTY4LDY3 IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJ CQkJCSAgIiAgICAgICAgICAgICAgICBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZVxuIgogCQkJCQkJ CQkgICIgICAgICAgICAgV0hFUkUgYXR0cmVsaWQgPSBwci5wcnJlbGlkIEFORCBhdHRudW0gPSBw cmF0dHJzW3NdKVxuIgogCQkJCQkJCQkgICIgICAgICAgIEVMU0UgTlVMTCBFTkQpICIKKwkJCQkJ CQkJICAiCQksIHByZXhjZXB0ICIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1Ymxp Y2F0aW9uIHBcbiIKIAkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25f cmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgogCQkJCQkJCQkgICIJCUpPSU4gcGdfY2F0 YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCQkgICJXSEVS RSBwci5wcnJlbGlkID0gJyVzJ1xuIiwKLQkJCQkJCQkJICBvaWQsIG9pZCwgb2lkKTsKLQotCQkJ CWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKLQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmJ1ZiwgIiBBTkQgTk9UIHByLnByZXhjZXB0XG4iKTsKKwkJCQkJCQkJICAiV0hFUkUgcHIucHJy ZWxpZCA9ICclcycgIgorCQkJCQkJCQkgICJBTkQJcC5wdWJhbGx0YWJsZXMgPSBmYWxzZVxuIgor CQkJCQkJCQkgICJBTkQgIGMucmVsbmFtZXNwYWNlIE5PVCBJTiAoXG4gIgorCQkJCQkJCQkgICIg CVNFTEVDVCBwbm5zcGlkIEZST01cbiIKKwkJCQkJCQkJICAiIAlwZ19jYXRhbG9nLnBnX3B1Ymxp Y2F0aW9uX25hbWVzcGFjZSlcbiIKIAotCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJ LyoKKwkJCQkgKiBHZXQgYWxsIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucyB0aGF0IGluY2x1 ZGUgdGhpcworCQkJCSAqIHJlbGF0aW9uCisJCQkJICovCiAJCQkJCQkJCSAgIlVOSU9OXG4iCiAJ CQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCiAJCQkJCQkJCSAgIgkJLCBOVUxMXG4iCiAJCQkJ CQkJCSAgIgkJLCBOVUxMXG4iCisJCQkJCQkJCSAgIgkJLCBOVUxMXG4iCiAJCQkJCQkJCSAgIkZS T00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCi0JCQkJCQkJCSAgIldIRVJFIHAucHVi YWxsdGFibGVzIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycp XG4iLAotCQkJCQkJCQkgIG9pZCk7Ci0KLQkJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDAp Ci0JCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCi0JCQkJCQkJCQkgICIgICAgIEFORCBOT1Qg RVhJU1RTIChcbiIKLQkJCQkJCQkJCSAgIgkJU0VMRUNUIDFcbiIKLQkJCQkJCQkJCSAgIgkJRlJP TSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgotCQkJCQkJCQkJICAiCQlKT0lO IHBnX2NhdGFsb2cucGdfY2xhc3MgcGNcbiIKLQkJCQkJCQkJCSAgIgkJT04gcHIucHJyZWxpZCA9 IHBjLm9pZFxuIgotCQkJCQkJCQkJICAiCQlXSEVSRSBwci5wcnJlbGlkID0gJyVzJyBBTkQgcHIu cHJwdWJpZCA9IHAub2lkKVxuIiwKLQkJCQkJCQkJCSAgb2lkKTsKLQotCQkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZidWYsICJPUkRFUiBCWSAxOyIpOworCQkJCQkJCQkgICJXSEVSRSBwLnB1YmFs bHRhYmxlcyBBTkQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKVxu IgorCQkJCQkJCQkgICIgICAgIEFORCBOT1QgRVhJU1RTIChcbiIKKwkJCQkJCQkJICAiCQlTRUxF Q1QgMVxuIgorCQkJCQkJCQkgICIJCUZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwg cHJcbiIKKwkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgcGNcbiIKKwkJCQkJ CQkJICAiCQlPTiBwci5wcnJlbGlkID0gcGMub2lkXG4iCisJCQkJCQkJCSAgIgkJV0hFUkUgcHIu cHJyZWxpZCA9ICclcycgQU5EIHByLnBycHViaWQgPSBwLm9pZClcbiIKKwkJCQkJCQkJICAiT1JE RVIgQlkgMTsiLAorCQkJCQkJCQkgIG9pZCwgb2lkLCBvaWQsIG9pZCwgb2lkKTsKKwkJCX0KKwkJ CWVsc2UgaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAwKQorCQkJeworCQkJCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsCisJCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCisJCQkJCQkJCSAgIiAg ICAgLCBOVUxMXG4iCisJCQkJCQkJCSAgIiAgICAgLCBOVUxMXG4iCisJCQkJCQkJCSAgIkZST00g cGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCisJCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19j YXRhbG9nLnBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSBwbiBPTiBwLm9pZCA9IHBuLnBucHViaWRc biIKKwkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgcGMgT04gcGMucmVs bmFtZXNwYWNlID0gcG4ucG5uc3BpZFxuIgorCQkJCQkJCQkgICJXSEVSRSBwYy5vaWQgPSclcycg YW5kIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJylcbiIKKwkJCQkJ CQkJICAiVU5JT05cbiIKKwkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKKwkJCQkJCQkJICAi ICAgICAsIHBnX2dldF9leHByKHByLnBycXVhbCwgYy5vaWQpXG4iCisJCQkJCQkJCSAgIiAgICAg LCAoQ0FTRSBXSEVOIHByLnByYXR0cnMgSVMgTk9UIE5VTEwgVEhFTlxuIgorCQkJCQkJCQkgICIg ICAgICAgICAoU0VMRUNUIHN0cmluZ19hZ2coYXR0bmFtZSwgJywgJylcbiIKKwkJCQkJCQkJICAi ICAgICAgICAgICBGUk9NIHBnX2NhdGFsb2cuZ2VuZXJhdGVfc2VyaWVzKDAsIHBnX2NhdGFsb2cu YXJyYXlfdXBwZXIocHIucHJhdHRyczo6cGdfY2F0YWxvZy5pbnQyW10sIDEpKSBzLFxuIgorCQkJ CQkJCQkgICIgICAgICAgICAgICAgICAgcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGVcbiIKKwkJCQkJ CQkJICAiICAgICAgICAgIFdIRVJFIGF0dHJlbGlkID0gcHIucHJyZWxpZCBBTkQgYXR0bnVtID0g cHJhdHRyc1tzXSlcbiIKKwkJCQkJCQkJICAiICAgICAgICBFTFNFIE5VTEwgRU5EKSAiCisJCQkJ CQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCisJCQkJCQkJCSAgIiAg ICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBy cHViaWRcbiIKKwkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBPTiBj Lm9pZCA9IHByLnBycmVsaWRcbiIKKwkJCQkJCQkJICAiV0hFUkUgcHIucHJyZWxpZCA9ICclcydc biIKKwkJCQkJCQkJICAiVU5JT05cbiIKKwkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKKwkJ CQkJCQkJICAiICAgICAsIE5VTExcbiIKKwkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKKwkJCQkJ CQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJCQkJCQkJICAiV0hF UkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFi bGUoJyVzJylcbiIKKwkJCQkJCQkJICAiT1JERVIgQlkgMTsiLAorCQkJCQkJCQkgIG9pZCwgb2lk LCBvaWQsIG9pZCk7CiAJCQl9CiAJCQllbHNlCiAJCQl7CkBAIC0zMTIxLDM0ICszMjQ5LDggQEAg ZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCQkJCQkJ ICBvaWQsIG9pZCk7CiAJCQl9CiAKLQkJCXJlc3VsdCA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKLQkJ CWlmICghcmVzdWx0KQorCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uT3JUYWJsZURlc2Mo JmJ1ZiwgJmNvbnQsIF8oIlB1YmxpY2F0aW9uczoiKSwgZmFsc2UsIGZhbHNlKSkKIAkJCQlnb3Rv IGVycm9yX3JldHVybjsKLQkJCWVsc2UKLQkJCQl0dXBsZXMgPSBQUW50dXBsZXMocmVzdWx0KTsK LQotCQkJaWYgKHR1cGxlcyA+IDApCi0JCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgXygi UHVibGljYXRpb25zOiIpKTsKLQotCQkJLyogTWlnaHQgYmUgYW4gZW1wdHkgc2V0IC0gdGhhdCdz IG9rICovCi0JCQlmb3IgKGkgPSAwOyBpIDwgdHVwbGVzOyBpKyspCi0JCQl7Ci0JCQkJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwgIiAgICBcIiVzXCIiLAotCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVz dWx0LCBpLCAwKSk7Ci0KLQkJCQkvKiBjb2x1bW4gbGlzdCAoaWYgYW55KSAqLwotCQkJCWlmICgh UFFnZXRpc251bGwocmVzdWx0LCBpLCAyKSkKLQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1Ziwg IiAoJXMpIiwKLQkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDIpKTsKLQotCQkJCS8q IHJvdyBmaWx0ZXIgKGlmIGFueSkgKi8KLQkJCQlpZiAoIVBRZ2V0aXNudWxsKHJlc3VsdCwgaSwg MSkpCi0JCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICIgV0hFUkUgJXMiLAotCQkJCQkJCQkJ ICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMSkpOwotCi0JCQkJcHJpbnRUYWJsZUFkZEZvb3Rlcigm Y29udCwgYnVmLmRhdGEpOwotCQkJfQotCQkJUFFjbGVhcihyZXN1bHQpOwogCQl9CiAKIAkJLyoK QEAgLTY1MzIsNDkgKzY2MzQsNiBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRl cm4pCiAJcmV0dXJuIHRydWU7CiB9CiAKLS8qCi0gKiBBZGQgZm9vdGVyIHRvIHB1YmxpY2F0aW9u IGRlc2NyaXB0aW9uLgotICovCi1zdGF0aWMgYm9vbAotYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRl c2MoUFFFeHBCdWZmZXIgYnVmLCBjb25zdCBjaGFyICpmb290ZXJtc2csCi0JCQkJCQkgICBib29s IGFzX3NjaGVtYSwgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnN0IGNvbnQpCi17Ci0JUEdyZXN1bHQg ICAqcmVzOwotCWludAkJCWNvdW50ID0gMDsKLQlpbnQJCQlpID0gMDsKLQotCXJlcyA9IFBTUUxl eGVjKGJ1Zi0+ZGF0YSk7Ci0JaWYgKCFyZXMpCi0JCXJldHVybiBmYWxzZTsKLQllbHNlCi0JCWNv dW50ID0gUFFudHVwbGVzKHJlcyk7Ci0KLQlpZiAoY291bnQgPiAwKQotCQlwcmludFRhYmxlQWRk Rm9vdGVyKGNvbnQsIGZvb3Rlcm1zZyk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykK LQl7Ci0JCWlmIChhc19zY2hlbWEpCi0JCQlwcmludGZQUUV4cEJ1ZmZlcihidWYsICIgICAgXCIl c1wiIiwgUFFnZXR2YWx1ZShyZXMsIGksIDApKTsKLQkJZWxzZQotCQl7Ci0JCQlwcmludGZQUUV4 cEJ1ZmZlcihidWYsICIgICAgXCIlcy4lc1wiIiwgUFFnZXR2YWx1ZShyZXMsIGksIDApLAotCQkJ CQkJCSAgUFFnZXR2YWx1ZShyZXMsIGksIDEpKTsKLQotCQkJaWYgKCFQUWdldGlzbnVsbChyZXMs IGksIDMpKQotCQkJCWFwcGVuZFBRRXhwQnVmZmVyKGJ1ZiwgIiAoJXMpIiwgUFFnZXR2YWx1ZShy ZXMsIGksIDMpKTsKLQotCQkJaWYgKCFQUWdldGlzbnVsbChyZXMsIGksIDIpKQotCQkJCWFwcGVu ZFBRRXhwQnVmZmVyKGJ1ZiwgIiBXSEVSRSAlcyIsIFBRZ2V0dmFsdWUocmVzLCBpLCAyKSk7Ci0J CX0KLQotCQlwcmludFRhYmxlQWRkRm9vdGVyKGNvbnQsIGJ1Zi0+ZGF0YSk7Ci0JfQotCi0JUFFj bGVhcihyZXMpOwotCXJldHVybiB0cnVlOwotfQotCiAvKgogICogXGRScCsKICAqIERlc2NyaWJl cyBwdWJsaWNhdGlvbnMgaW5jbHVkaW5nIHRoZSBjb250ZW50cy4KQEAgLTY3NjQsNiArNjgyMywx MiBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJZWxzZQog CQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCiAJCQkJCQkJCQkgIiwgTlVMTCwgTlVMTCIp OworCisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCQkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIoJmJ1ZiwgIiwgcHJleGNlcHQiKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cigmYnVmLCAiLCBOVUxMIik7CisKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJ CQkJICAiXG5GUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyxcbiIKIAkJCQkJCQkgICIgICAgIHBn X2NhdGFsb2cucGdfbmFtZXNwYWNlIG4sXG4iCkBAIC02NzcyLDExICs2ODM3LDggQEAgZGVzY3Jp YmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCQkJCQkgICIgIEFORCBjLm9p ZCA9IHByLnBycmVsaWRcbiIKIAkJCQkJCQkgICIgIEFORCBwci5wcnB1YmlkID0gJyVzJ1xuIiwg cHViaWQpOwogCi0JCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCi0JCQkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwgIiAgQU5EIE5PVCBwci5wcmV4Y2VwdFxuIik7Ci0KIAkJCWFwcGVuZFBR RXhwQnVmZmVyKCZidWYsICJPUkRFUiBCWSAxLDIiKTsKLQkJCWlmICghYWRkRm9vdGVyVG9QdWJs aWNhdGlvbkRlc2MoJmJ1ZiwgXygiVGFibGVzOiIpLCBmYWxzZSwgJmNvbnQpKQorCQkJaWYgKCFh ZGRGb290ZXJUb1B1YmxpY2F0aW9uT3JUYWJsZURlc2MoJmJ1ZiwgJmNvbnQsIF8oIlRhYmxlczoi KSwgdHJ1ZSwgZmFsc2UpKQogCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCiAJCQlpZiAocHNldC5z dmVyc2lvbiA+PSAxNTAwMDApCkBAIC02Nzg4LDggKzY4NTAsOCBAQCBkZXNjcmliZVB1YmxpY2F0 aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxv Zy5wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcG4gT04gbi5vaWQgPSBwbi5wbm5zcGlkXG4iCiAJ CQkJCQkJCSAgIldIRVJFIHBuLnBucHViaWQgPSAnJXMnXG4iCiAJCQkJCQkJCSAgIk9SREVSIEJZ IDEiLCBwdWJpZCk7Ci0JCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBf KCJUYWJsZXMgZnJvbSBzY2hlbWFzOiIpLAotCQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQorCQkJ CWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbk9yVGFibGVEZXNjKCZidWYsICZjb250LAorCQkJ CQkJCQkJCQkJCSAgIF8oIlRhYmxlcyBmcm9tIHNjaGVtYXM6IiksIHRydWUsIHRydWUpKQogCQkJ CQlnb3RvIGVycm9yX3JldHVybjsKIAkJCX0KIAkJfQpAQCAtNjc5OSwxNCArNjg2MSwxNCBAQCBk ZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJewogCQkJCS8qIEdl dCB0aGUgZXhjbHVkZWQgdGFibGVzIGZvciB0aGUgc3BlY2lmaWVkIHB1YmxpY2F0aW9uICovCiAJ CQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKLQkJCQkJCQkJICAiU0VMRUNUIGNvbmNhdChjLnJl bG5hbWVzcGFjZTo6cmVnbmFtZXNwYWNlLCAnLicsIGMucmVsbmFtZSlcbiIKKwkJCQkJCQkJICAi U0VMRUNUIGMucmVsbmFtZXNwYWNlOjpyZWduYW1lc3BhY2UsIGMucmVsbmFtZSwgTlVMTCwgTlVM TFxuIgogCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgY1xuIgogCQkJCQkJCQkg ICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gYy5vaWQgPSBw ci5wcnJlbGlkXG4iCiAJCQkJCQkJCSAgIldIRVJFIHByLnBycHViaWQgPSAnJXMnXG4iCiAJCQkJ CQkJCSAgIiAgQU5EIHByLnByZXhjZXB0XG4iCiAJCQkJCQkJCSAgIk9SREVSIEJZIDEiLCBwdWJp ZCk7Ci0JCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJFeGNlcHQg dGFibGVzOiIpLAotCQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQorCQkJCWlmICghYWRkRm9vdGVy VG9QdWJsaWNhdGlvbk9yVGFibGVEZXNjKCZidWYsICZjb250LAorCQkJCQkJCQkJCQkJCSAgIF8o IkV4Y2VwdCB0YWJsZXM6IiksIHRydWUsIGZhbHNlKSkKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47 CiAJCQl9CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBi L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCBiMzc2YzQwMGM2OS4uM2NlNGJk NTE3Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9z cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTIyOTUsNiArMjI5NSwxMCBAQCBtYXRj aF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExFVEVfV0lUSCgiQUxMIFRB QkxFUyIsICJUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygi QUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJBTEwiLCAiVEFCTEVTIikp CiAJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCBUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFM VEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlRBQkxFIiwgTWF0Y2hB bnkpICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBU ICgiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCBNYXRjaEFueU4sICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCIpOwogCWVsc2UgaWYg KE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlRB QkxFIikpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3Rh Ymxlcyk7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkFERCIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIpKQpAQCAtMjMxNSwx MCArMjMxOSwxMyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09N UExFVEVfV0lUSCgiKCIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9O IiwgTWF0Y2hBbnksIE1hdGNoQW55TiwgIldIRVJFIiwgIigiKSkKIAkJQ09NUExFVEVfV0lUSF9B VFRSKHByZXYzX3dkKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCBNYXRjaEFueU4sICJFWENFUFQiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIX0FU VFIocHJldjNfd2QpOwogCWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElP TiIsIE1hdGNoQW55LCAiQUREfFNFVCIsICJUQUJMRSIpICYmCi0JCQkgIVRhaWxNYXRjaGVzKCJX SEVSRSIsICIoKikiKSkKKwkJCSAhVGFpbE1hdGNoZXMoIldIRVJFIiwgIigqKSIpICYmICFUYWls TWF0Y2hlcygiRVhDRVBUIiwgIigiKSkKIAkJQ09NUExFVEVfV0lUSCgiLCIsICJXSEVSRSAoIik7 Ci0JZWxzZSBpZiAoSGVhZE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJBRER8U0VUIiwgIlRBQkxFIikpCisJZWxzZSBpZiAoSGVhZE1hdGNoZXMoIkFMVEVSIiwgIlBV QkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlRBQkxFIikgJiYKKwkJCSAhZW5kc193 aXRoKHByZXZfd2QsICcoJykpCiAJCUNPTVBMRVRFX1dJVEgoIiwiKTsKIAkvKiBBTFRFUiBQVUJM SUNBVElPTiA8bmFtZT4gRFJPUCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJEUk9QIikpCkBAIC0zNjM2LDcgKzM2NDMsNyBAQCBtYXRjaF9w cmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiKSkKIAkJQ09NUExFVEVf V0lUSCgiSU4gU0NIRU1BIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEUiLCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0aChw cmV2X3dkLCAnLCcpKQotCQlDT01QTEVURV9XSVRIKCJXSEVSRSAoIiwgIldJVEggKCIpOworCQlD T01QTEVURV9XSVRIKCJFWENFUFQgKCIsICJXSEVSRSAoIiwgIldJVEggKCIpOwogCS8qIENvbXBs ZXRlICJDUkVBVEUgUFVCTElDQVRJT04gPG5hbWU+IEZPUiBUQUJMRSIgd2l0aCAiPHRhYmxlPiwg Li4uIiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNo QW55LCAiRk9SIiwgIlRBQkxFIikpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5 X2Zvcl9saXN0X29mX3RhYmxlcyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5k ZXggMGQzOWNiNjc3NzkuLjU5NGEyZTE0Njc2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5oCkBAIC0xOTgsNyArMTk4LDggQEAgZXh0ZXJuIE9pZAlHZXRUb3BNb3N0QW5jZXN0b3JJ blB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywKIGV4dGVybiBib29sIGlz X3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gYm9vbCBpc19zY2hl bWFfcHVibGljYXRpb24oT2lkIHB1YmlkKTsKIGV4dGVybiBib29sIGNoZWNrX2FuZF9mZXRjaF9j b2x1bW5fbGlzdChQdWJsaWNhdGlvbiAqcHViLCBPaWQgcmVsaWQsCi0JCQkJCQkJCQkJTWVtb3J5 Q29udGV4dCBtY3h0LCBCaXRtYXBzZXQgKipjb2xzKTsKKwkJCQkJCQkJCQlNZW1vcnlDb250ZXh0 IG1jeHQsIEJpdG1hcHNldCAqKmNvbHMsCisJCQkJCQkJCQkJYm9vbCAqZXhjZXB0X2NvbHVtbnMp OwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJp ZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQkJCQkJCSAgYm9vbCBpZl9ub3RfZXhp c3RzKTsKIGV4dGVybiBCaXRtYXBzZXQgKnB1Yl9jb2xsaXN0X3ZhbGlkYXRlKFJlbGF0aW9uIHRh cmdldHJlbCwgTGlzdCAqY29sdW1ucyk7CkBAIC0yMDgsNiArMjA5LDcgQEAgZXh0ZXJuIE9iamVj dEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwK IGV4dGVybiBCaXRtYXBzZXQgKnB1Yl9jb2xsaXN0X3RvX2JpdG1hcHNldChCaXRtYXBzZXQgKmNv bHVtbnMsIERhdHVtIHB1YmNvbHMsCiAJCQkJCQkJCQkJICAgTWVtb3J5Q29udGV4dCBtY3h0KTsK IGV4dGVybiBCaXRtYXBzZXQgKnB1Yl9mb3JtX2NvbHNfbWFwKFJlbGF0aW9uIHJlbGF0aW9uLAot CQkJCQkJCQkJUHVibGlzaEdlbmNvbHNUeXBlIGluY2x1ZGVfZ2VuY29sc190eXBlKTsKKwkJCQkJ CQkJCVB1Ymxpc2hHZW5jb2xzVHlwZSBpbmNsdWRlX2dlbmNvbHNfdHlwZSwKKwkJCQkJCQkJCUJp dG1hcHNldCAqZXhjZXB0X2NvbHMpOwogCiAjZW5kaWYJCQkJCQkJLyogUEdfUFVCTElDQVRJT05f SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgKaW5kZXggZTdkN2Yz YmE4NWMuLjZhMjE2OGZjMzJjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uX3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25f cmVsLmgKQEAgLTMxLDExICszMSwxMiBAQCBDQVRBTE9HKHBnX3B1YmxpY2F0aW9uX3JlbCw2MTA2 LFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCkKIAlPaWQJCQlvaWQ7CQkJLyogb2lkICovCiAJT2lk CQkJcHJwdWJpZCBCS0lfTE9PS1VQKHBnX3B1YmxpY2F0aW9uKTsgLyogT2lkIG9mIHRoZSBwdWJs aWNhdGlvbiAqLwogCU9pZAkJCXBycmVsaWQgQktJX0xPT0tVUChwZ19jbGFzcyk7CS8qIE9pZCBv ZiB0aGUgcmVsYXRpb24gKi8KLQlib29sCQlwcmV4Y2VwdCBCS0lfREVGQVVMVChmKTsJLyogZXhj bHVkZSB0aGUgcmVsYXRpb24gKi8KKwlib29sCQlwcmV4Y2VwdCBCS0lfREVGQVVMVChmKTsJLyog ZXhjbHVkZSB0aGUgcmVsYXRpb24gb3IgY29sdW1ucyAqLwogCiAjaWZkZWYJQ0FUQUxPR19WQVJM RU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAlwZ19ub2RlX3Ry ZWUgcHJxdWFsOwkJLyogcXVhbGlmaWNhdGlvbnMgKi8KLQlpbnQydmVjdG9yCXByYXR0cnM7CQkv KiBjb2x1bW5zIHRvIHJlcGxpY2F0ZSAqLworCWludDJ2ZWN0b3IJcHJhdHRyczsJCS8qIGNvbHVt bnMgdG8gcmVwbGljYXRlIG9yIGV4Y2x1ZGUgdG8KKwkJCQkJCQkJICogcmVwbGljYXRlICovCiAj ZW5kaWYKIH0gRm9ybURhdGFfcGdfcHVibGljYXRpb25fcmVsOwogCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDU1Y2M3ZDVlZTcxLi5kMzhiMDkzOWMxNiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTIyMTQsNiAr MjIxNCw5NCBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwogRFJPUCBQ VUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0OwogRFJPUCBUQUJMRSBwdWJfc2NoMS50YmwxOwogRFJP UCBUQUJMRSBwdWJfc2NoMS50YmwyOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IEVYQ0VQVCBjb2x1bW5zIGZvciBDUkVB VEUgUFVCTElDQVRJT04KK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFU RSBUQUJMRSBwdWJfdGVzdF9leGNlcHQxIChhIGludCBOT1QgTlVMTCwgYiBpbnQsIGMgaW50IE5P VCBOVUxMLCBkIGludCk7CitDUkVBVEUgVEFCTEUgcHViX3NjaDEucHViX3Rlc3RfZXhjZXB0MiAo YSBpbnQsIGIgaW50LCBjIGludCwgZCBpbnQpOworLS0gVmVyaWZ5IHRoYXQgcHVibGljYXRpb24g aXMgY3JlYXRlZCB3aXRoIEVYQ0VQVAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0 IEZPUiBUQUJMRSBwdWJfdGVzdF9leGNlcHQxLCBwdWJfc2NoMS5wdWJfdGVzdF9leGNlcHQyIEVY Q0VQVCAoYiwgYyk7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlcyBXSEVSRSBw dWJuYW1lID0gJ3Rlc3RwdWJfZXhjZXB0JzsKKyAgICBwdWJuYW1lICAgICB8IHNjaGVtYW5hbWUg fCAgICB0YWJsZW5hbWUgICAgIHwgYXR0bmFtZXMgIHwgcm93ZmlsdGVyIAorLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgdGVzdHB1Yl9leGNlcHQgfCBwdWJsaWMgICAgIHwgcHViX3Rlc3RfZXhjZXB0MSB8IHth LGIsYyxkfSB8IAorIHRlc3RwdWJfZXhjZXB0IHwgcHViX3NjaDEgICB8IHB1Yl90ZXN0X2V4Y2Vw dDIgfCB7YSxkfSAgICAgfCAKKygyIHJvd3MpCisKKy0tIENhbm5vdCB1c2UgRVhDRVBUIGNvbC1s aXN0cyBjb21iaW5lZCB3aXRoIFRBQkxFUyBJTiBTQ0hFTUEKK0NSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX2V4Y2VwdDIgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3NjaDEsIFRBQkxFIHB1Yl90 ZXN0X2V4Y2VwdDEgRVhDRVBUIChiLCBjKTsKK0VSUk9SOiAgY2Fubm90IHVzZSBjb2x1bW4gbGlz dCBmb3IgcmVsYXRpb24gInB1YmxpYy5wdWJfdGVzdF9leGNlcHQxIiBpbiBwdWJsaWNhdGlvbiAi dGVzdHB1Yl9leGNlcHQyIgorREVUQUlMOiAgQ29sdW1uIGxpc3RzIGNhbm5vdCBiZSBzcGVjaWZp ZWQgaW4gcHVibGljYXRpb25zIGNvbnRhaW5pbmcgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgZWxlbWVu dHMuCistLSBTeW50YXggZXJyb3IgRVhDRVBUIHdpdGhvdXQgYSBjb2wtbGlzdAorQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0MiBGT1IgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSBFWENF UFQ7CitFUlJPUjogIHRhYmxlIHdpdGhvdXQgY29sdW1uIGxpc3QgY2Fubm90IHVzZSBFWENFUFQg Y2xhdXNlCitMSU5FIDE6IENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdDIgRk9SIFRB QkxFIHB1Yl90ZXN0X2V4Y2VwdC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBWZXJpZnkgb2sgLSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gU0VU IC4uLiBFWENFUFQgKGNvbC1saXN0KQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHQg U0VUIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEgRVhDRVBUIChhLCBiKSwgcHViX3NjaDEucHViX3Rl c3RfZXhjZXB0MjsKK1xkUnArIHRlc3RwdWJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2V4Y2VwdAor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVt bnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK1RhYmxlczoKKyAgICAicHVi X3NjaDEucHViX3Rlc3RfZXhjZXB0MiIKKyAgICAicHVibGljLnB1Yl90ZXN0X2V4Y2VwdDEiIEVY Q0VQVCAoYSwgYikKKworLS0gVmVyaWZ5IGZhaWxzIC0gQUxURVIgUFVCTElDQVRJT04gLi4uIERS T1AgLi4uIEVYQ0VQVCAoY29sLWxpc3QpCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2Vw dCBEUk9QIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEgRVhDRVBUIChhLCBiKTsKK0VSUk9SOiAgY29s dW1uIGxpc3QgbXVzdCBub3QgYmUgc3BlY2lmaWVkIGluIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBE Uk9QCistLSBWZXJpZnkgb2sgLSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gRFJPUAorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9leGNlcHQgRFJPUCBUQUJMRSBwdWJfdGVzdF9leGNlcHQxOworLS0g VmVyaWZ5IG9rIC0gQUxURVIgUFVCTElDQVRJT04gLi4uIEFERCAuLi4gRVhDRVBUIChjb2wtbGlz dCkKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0IEFERCBUQUJMRSBwdWJfdGVzdF9l eGNlcHQxIEVYQ0VQVCAoYywgZCk7CitcZFJwKyB0ZXN0cHViX2V4Y2VwdAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNl cXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVy YXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitUYWJsZXM6 CisgICAgInB1Yl9zY2gxLnB1Yl90ZXN0X2V4Y2VwdDIiCisgICAgInB1YmxpYy5wdWJfdGVzdF9l eGNlcHQxIiBFWENFUFQgKGMsIGQpCisKKy0tIFZlcmlmeSBmYWlscyAtIEVYQ0VQVCBjb2wtbGlz dCBjYW5ub3QgY29udGFpbiBSSSBjb2xzICh3aGVuIHVzaW5nIFJJIEZVTEwpCitBTFRFUiBUQUJM RSBwdWJfdGVzdF9leGNlcHQxIFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKK1VQREFURSBwdWJfdGVz dF9leGNlcHQxIFNFVCBhID0gMyBXSEVSRSBhID0gMTsKK0VSUk9SOiAgY2Fubm90IHVwZGF0ZSB0 YWJsZSAicHViX3Rlc3RfZXhjZXB0MSIKK0RFVEFJTDogIENvbHVtbiBsaXN0IHVzZWQgYnkgdGhl IHB1YmxpY2F0aW9uIGRvZXMgbm90IGNvdmVyIHRoZSByZXBsaWNhIGlkZW50aXR5LgorLS0gVmVy aWZ5IGZhaWxzIC0gRVhDRVBUIGNvbC1saXN0IGNhbm5vdCBjb250YWluIFJJIGNvbHMgKHdoZW4g dXNpbmcgSU5ERVgpCitDUkVBVEUgVU5JUVVFIElOREVYIHB1Yl90ZXN0X2V4Y2VwdDFfYWNfaWR4 IE9OIHB1Yl90ZXN0X2V4Y2VwdDEgKGEsIGMpOworQUxURVIgVEFCTEUgcHViX3Rlc3RfZXhjZXB0 MSBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHB1Yl90ZXN0X2V4Y2VwdDFfYWNfaWR4Owor VVBEQVRFIHB1Yl90ZXN0X2V4Y2VwdDEgU0VUIGEgPSAzIFdIRVJFIGEgPSAxOworRVJST1I6ICBj YW5ub3QgdXBkYXRlIHRhYmxlICJwdWJfdGVzdF9leGNlcHQxIgorREVUQUlMOiAgQ29sdW1uIGxp c3QgdXNlZCBieSB0aGUgcHVibGljYXRpb24gZG9lcyBub3QgY292ZXIgdGhlIHJlcGxpY2EgaWRl bnRpdHkuCitEUk9QIElOREVYIHB1Yl90ZXN0X2V4Y2VwdDFfYWNfaWR4OworLS0gVmVyaWZ5IG9r IC0gbm8gY2xhc2ggYmV0d2VlbiBSSSBjb2xzIGFuZCB0aGUgRVhDRVBUIGNvbC1saXN0CitDUkVB VEUgVU5JUVVFIElOREVYIHB1Yl90ZXN0X2V4Y2VwdDFfYV9pZHggT04gcHViX3Rlc3RfZXhjZXB0 MSAoYSk7CitBTFRFUiBUQUJMRSBwdWJfdGVzdF9leGNlcHQxIFJFUExJQ0EgSURFTlRJVFkgVVNJ TkcgSU5ERVggcHViX3Rlc3RfZXhjZXB0MV9hX2lkeDsKK1VQREFURSBwdWJfdGVzdF9leGNlcHQx IFNFVCBhID0gMyBXSEVSRSBhID0gMTsKKy0tIFZlcmlmeSBkZXNjcmlwdGlvbiBvZiBhIHRhYmxl IHdpdGggcHVibGljYXRpb24gd2l0aCBFWENFUFQgY29sLWxpc3QKK1xkKyBwdWJfdGVzdF9leGNl cHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMucHViX3Rlc3Rf ZXhjZXB0MSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZh dWx0IHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5v dCBudWxsIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAg ICAgICAgICB8IAorIGMgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAg ICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgZCAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAK K0luZGV4ZXM6CisgICAgInB1Yl90ZXN0X2V4Y2VwdDFfYV9pZHgiIFVOSVFVRSwgYnRyZWUgKGEp IFJFUExJQ0EgSURFTlRJVFkKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9leGNlcHQiIEVY Q0VQVCAoYywgZCkKK05vdC1udWxsIGNvbnN0cmFpbnRzOgorICAgICJwdWJfdGVzdF9leGNlcHQx X2Ffbm90X251bGwiIE5PVCBOVUxMICJhIgorICAgICJwdWJfdGVzdF9leGNlcHQxX2Nfbm90X251 bGwiIE5PVCBOVUxMICJjIgorCistLSBjbGVhbnVwCitEUk9QIElOREVYIHB1Yl90ZXN0X2V4Y2Vw dDFfYV9pZHg7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0OworRFJPUCBUQUJMRSBw dWJfdGVzdF9leGNlcHQxOworRFJPUCBUQUJMRSBwdWJfc2NoMS5wdWJfdGVzdF9leGNlcHQyOwog RFJPUCBTQ0hFTUEgcHViX3NjaDE7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogLS0gVGVz dCB0aGF0IHRoZSBJTlNFUlQgT04gQ09ORkxJQ1QgY29tbWFuZCBjb3JyZWN0bHkgY2hlY2tzIFJF UExJQ0EgSURFTlRJVFkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0 aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCBkM2Mw M2Y1NDI3OC4uYzkxN2JiMDAwYWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1 YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwK QEAgLTEzNTksNiArMTM1OSw2MSBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJF U0VUOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0OwogRFJPUCBUQUJMRSBwdWJfc2No MS50YmwxOwogRFJPUCBUQUJMRSBwdWJfc2NoMS50YmwyOworCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgRVhDRVBUIGNv bHVtbnMgZm9yIENSRUFURSBQVUJMSUNBVElPTgorCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9 ICdFUlJPUic7CitDUkVBVEUgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSAoYSBpbnQgTk9UIE5VTEws IGIgaW50LCBjIGludCBOT1QgTlVMTCwgZCBpbnQpOworQ1JFQVRFIFRBQkxFIHB1Yl9zY2gxLnB1 Yl90ZXN0X2V4Y2VwdDIgKGEgaW50LCBiIGludCwgYyBpbnQsIGQgaW50KTsKKworLS0gVmVyaWZ5 IHRoYXQgcHVibGljYXRpb24gaXMgY3JlYXRlZCB3aXRoIEVYQ0VQVAorQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZXhjZXB0IEZPUiBUQUJMRSBwdWJfdGVzdF9leGNlcHQxLCBwdWJfc2NoMS5w dWJfdGVzdF9leGNlcHQyIEVYQ0VQVCAoYiwgYyk7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0 aW9uX3RhYmxlcyBXSEVSRSBwdWJuYW1lID0gJ3Rlc3RwdWJfZXhjZXB0JzsKKworLS0gQ2Fubm90 IHVzZSBFWENFUFQgY29sLWxpc3RzIGNvbWJpbmVkIHdpdGggVEFCTEVTIElOIFNDSEVNQQorQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0MiBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJf c2NoMSwgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSBFWENFUFQgKGIsIGMpOworCistLSBTeW50YXgg ZXJyb3IgRVhDRVBUIHdpdGhvdXQgYSBjb2wtbGlzdAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZXhjZXB0MiBGT1IgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSBFWENFUFQ7CisKKy0tIFZlcmlm eSBvayAtIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBTRVQgLi4uIEVYQ0VQVCAoY29sLWxpc3QpCitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdCBTRVQgVEFCTEUgcHViX3Rlc3RfZXhjZXB0 MSBFWENFUFQgKGEsIGIpLCBwdWJfc2NoMS5wdWJfdGVzdF9leGNlcHQyOworXGRScCsgdGVzdHB1 Yl9leGNlcHQKKworLS0gVmVyaWZ5IGZhaWxzIC0gQUxURVIgUFVCTElDQVRJT04gLi4uIERST1Ag Li4uIEVYQ0VQVCAoY29sLWxpc3QpCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdCBE Uk9QIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEgRVhDRVBUIChhLCBiKTsKKworLS0gVmVyaWZ5IG9r IC0gQUxURVIgUFVCTElDQVRJT04gLi4uIERST1AKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf ZXhjZXB0IERST1AgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MTsKKworLS0gVmVyaWZ5IG9rIC0gQUxU RVIgUFVCTElDQVRJT04gLi4uIEFERCAuLi4gRVhDRVBUIChjb2wtbGlzdCkKK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZXhjZXB0IEFERCBUQUJMRSBwdWJfdGVzdF9leGNlcHQxIEVYQ0VQVCAo YywgZCk7CitcZFJwKyB0ZXN0cHViX2V4Y2VwdAorCistLSBWZXJpZnkgZmFpbHMgLSBFWENFUFQg Y29sLWxpc3QgY2Fubm90IGNvbnRhaW4gUkkgY29scyAod2hlbiB1c2luZyBSSSBGVUxMKQorQUxU RVIgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSBSRVBMSUNBIElERU5USVRZIEZVTEw7CitVUERBVEUg cHViX3Rlc3RfZXhjZXB0MSBTRVQgYSA9IDMgV0hFUkUgYSA9IDE7CisKKy0tIFZlcmlmeSBmYWls cyAtIEVYQ0VQVCBjb2wtbGlzdCBjYW5ub3QgY29udGFpbiBSSSBjb2xzICh3aGVuIHVzaW5nIElO REVYKQorQ1JFQVRFIFVOSVFVRSBJTkRFWCBwdWJfdGVzdF9leGNlcHQxX2FjX2lkeCBPTiBwdWJf dGVzdF9leGNlcHQxIChhLCBjKTsKK0FMVEVSIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEgUkVQTElD QSBJREVOVElUWSBVU0lORyBJTkRFWCBwdWJfdGVzdF9leGNlcHQxX2FjX2lkeDsKK1VQREFURSBw dWJfdGVzdF9leGNlcHQxIFNFVCBhID0gMyBXSEVSRSBhID0gMTsKK0RST1AgSU5ERVggcHViX3Rl c3RfZXhjZXB0MV9hY19pZHg7CisKKy0tIFZlcmlmeSBvayAtIG5vIGNsYXNoIGJldHdlZW4gUkkg Y29scyBhbmQgdGhlIEVYQ0VQVCBjb2wtbGlzdAorQ1JFQVRFIFVOSVFVRSBJTkRFWCBwdWJfdGVz dF9leGNlcHQxX2FfaWR4IE9OIHB1Yl90ZXN0X2V4Y2VwdDEgKGEpOworQUxURVIgVEFCTEUgcHVi X3Rlc3RfZXhjZXB0MSBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHB1Yl90ZXN0X2V4Y2Vw dDFfYV9pZHg7CitVUERBVEUgcHViX3Rlc3RfZXhjZXB0MSBTRVQgYSA9IDMgV0hFUkUgYSA9IDE7 CisKKy0tIFZlcmlmeSBkZXNjcmlwdGlvbiBvZiBhIHRhYmxlIHdpdGggcHVibGljYXRpb24gd2l0 aCBFWENFUFQgY29sLWxpc3QKK1xkKyBwdWJfdGVzdF9leGNlcHQxCisKKy0tIGNsZWFudXAKK0RS T1AgSU5ERVggcHViX3Rlc3RfZXhjZXB0MV9hX2lkeDsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1 Yl9leGNlcHQ7CitEUk9QIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDE7CitEUk9QIFRBQkxFIHB1Yl9z Y2gxLnB1Yl90ZXN0X2V4Y2VwdDI7CiBEUk9QIFNDSEVNQSBwdWJfc2NoMTsKIAogUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNv bi5idWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCBiOGU1YzU0 YzMxNC4uZThlNjlmNzQ0M2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNv bi5idWlsZAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTQ3LDYg KzQ3LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDM1X2NvbmZsaWN0cy5wbCcsCiAgICAgICAn dC8wMzZfc2VxdWVuY2VzLnBsJywKICAgICAgICd0LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFi bGUucGwnLAorICAgICAgJ3QvMDM4X3JlcF9jaGFuZ2VzX2V4Y2VwdF9jb2xsaXN0LnBsJywKICAg ICAgICd0LzEwMF9idWdzLnBsJywKICAgICBdLAogICB9LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDM4X3JlcF9jaGFuZ2VzX2V4Y2VwdF9jb2xsaXN0LnBsIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDM4X3JlcF9jaGFuZ2VzX2V4Y2VwdF9jb2xsaXN0LnBsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zZGZkMjY2YmMzZAotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOF9yZXBfY2hhbmdlc19leGNlcHRf Y29sbGlzdC5wbApAQCAtMCwwICsxLDE5MyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNSwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dpY2FsIHJlcGxpY2F0 aW9uIHRlc3RzIGZvciBFWENFUFQgKGNvbHVtbi1saXN0KSBwdWJsaWNhdGlvbnMKK3VzZSBzdHJp Y3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIEluaXRpYWxpemUg cHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0 cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVh dGUgc3Vic2NyaWJlciBub2RlCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0KGFs bG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0Owor CisjIEluaXRpYWwgc2V0dXAKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxICgKKwlDUkVBVEUgU0NIRU1BIHNjaDE7CisJQ1JFQVRFIFRBQkxFIHRhYjEgKGEgaW50 LCBiIGludCBOT1QgTlVMTCwgYyBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnRhYjEgKGEgaW50 LCBiIGludCwgYyBpbnQpOworCUNSRUFURSBUQUJMRSB0YWIyIChhIGludCwgYiBpbnQsIGMgaW50 KTsKKwlDUkVBVEUgVEFCTEUgdGFiMyAoYSBpbnQsIGJnZW4gaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGEgKiAyKSBTVE9SRUQsIGNnZW4gaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAzKSBT VE9SRUQpOworCUNSRUFURSBUQUJMRSB0YWI0IChhIGludCwgYmdlbiBpbnQgR0VORVJBVEVEIEFM V0FZUyBBUyAoYSAqIDIpIFNUT1JFRCwgY2dlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAq IDMpIFNUT1JFRCk7CisJQ1JFQVRFIFRBQkxFIHRhYjUgKGEgaW50LCBiIGludCwgYyBpbnQpOwor CUlOU0VSVCBJTlRPIHRhYjEgVkFMVUVTICgxLCAyLCAzKTsKKwlJTlNFUlQgSU5UTyBzY2gxLnRh YjEgVkFMVUVTICgxLCAyLCAzKTsKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9jb2wgRk9S IFRBQkxFIHRhYjEgRVhDRVBUIChhKSwgc2NoMS50YWIxIEVYQ0VQVCAoYiwgYyk7CispKTsKKwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxICgKKwlDUkVBVEUg U0NIRU1BIHNjaDE7CisJQ1JFQVRFIFRBQkxFIHRhYjEgKGEgaW50LCBiIGludCBOT1QgTlVMTCwg YyBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnRhYjEgKGEgaW50LCBiIGludCwgYyBpbnQpOwor CUNSRUFURSBUQUJMRSB0YWIyIChhIGludCwgYiBpbnQsIGMgaW50KTsKKwlDUkVBVEUgVEFCTEUg dGFiMyAoYSBpbnQsIGJnZW4gaW50LCBjZ2VuIGludCk7CisJQ1JFQVRFIFRBQkxFIHRhYjQgKGEg aW50LCBiZ2VuIGludCwgY2dlbiBpbnQpOworCUNSRUFURSBUQUJMRSB0YWI1IChhIGludCwgYiBp bnQsIGMgaW50LCBkIGludCk7CispKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitt eSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFt ZT1wb3N0Z3Jlcyc7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX2NvbCBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nv bm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfY29sIgorKTsKKyRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWJfY29sJyk7 CisKKyMgVGVzdCBpbml0aWFsIHN5bmMKK215ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gdGFiMSIpOworaXMoJHJlc3VsdCwg cXEofDJ8MyksCisJJ1ZlcmlmeSBpbml0aWFsIHN5bmMgb2YgdGFiMSBpbiBhIHB1YmxpY2F0aW9u IHVzaW5nIEVYQ0VQVCAoY29sdW1uLWxpc3QpJworKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS50YWIxIik7Citp cygkcmVzdWx0LCBxcSgxfHwpLAorCSdWZXJpZnkgaW5pdGlhbCBzeW5jIG9mIHNjaDEudGFiMSBp biBhIHB1YmxpY2F0aW9uIHVzaW5nIEVYQ0VQVCAoY29sdW1uLWxpc3QpJworKTsKKworIyBUZXN0 IGluY3JlbWVudGFsIGNoYW5nZXMKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxICgKKwlJTlNFUlQgSU5UTyB0YWIxIFZBTFVFUyAoNCwgNSwgNik7CisJSU5TRVJU IElOVE8gc2NoMS50YWIxIFZBTFVFUyAoNCwgNSwgNik7CispKTsKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9jb2wnKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gdGFiMSBPUkRFUiBC WSBhIik7CitpcyggJHJlc3VsdCwgcXEofDJ8MworfDV8NiksCisJJ1ZlcmlmeSBpbmNyZW1lbnRh bCBpbnNlcnRzIG9uIHRhYjEgaW4gYSBwdWJsaWNhdGlvbiB1c2luZyBFWENFUFQgKGNvbHVtbi1s aXN0KScKKyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCAqIEZST00gc2NoMS50YWIxIE9SREVSIEJZIGEiKTsKK2lzKCAkcmVzdWx0 LCBxcSgxfHwKKzR8fCksCisJJ1ZlcmlmeSBpbmNyZW1lbnRhbCBpbnNlcnRzIG9uIHNjaDEudGFi MSBpbiBhIHB1YmxpY2F0aW9uIHVzaW5nIEVYQ0VQVCAoY29sdW1uLWxpc3QpJworKTsKKworIyBU ZXN0IGZvciB1cGRhdGUKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcSgKKwlDUkVBVEUgVU5JUVVFIElOREVYIGJfaWR4IE9OIHRhYjEgKGIpOworCUFMVEVSIFRB QkxFIHRhYjEgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCBiX2lkeDsKKykpOworJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFVOSVFVRSBJ TkRFWCBiX2lkeCBPTiB0YWIxIChiKTsKKwlBTFRFUiBUQUJMRSB0YWIxIFJFUExJQ0EgSURFTlRJ VFkgVVNJTkcgSU5ERVggYl9pZHg7CisJVVBEQVRFIHRhYjEgU0VUIGEgPSA5OTEsIGIgPSA5OTIs IGMgPSA5OTMgV0hFUkUgYSA9IDE7CispKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgndGFwX3N1Yl9jb2wnKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gdGFiMSAgT1JERVIgQlkgYSIpOworaXMo ICRyZXN1bHQsIHFxKHw1fDYKK3w5OTJ8OTkzKSwKKwknY2hlY2sgdXBkYXRlIGZvciBFWENFUFQg KGNvbHVtbi1saXN0KSBwdWJsaWNhdGlvbicpOworCisjIFRlc3QgQUxURVIgUFVCTElDQVRJT04g Zm9yIEVYQ0VQVCAoY29sdW1uLWxpc3QpCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiB0YXBfcHViX2NvbCBBREQgVEFCTEUgdGFiMiBF WENFUFQoYikiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJB TFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9jb2wgUkVGUkVTSCBQVUJMSUNBVElPTiIpOworJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVy LCAndGFwX3N1Yl9jb2wnKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIklOU0VSVCBJTlRPIHRhYjIgVkFMVUVTICgxLCAyLCAzKSIpOworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX2NvbCcpOworJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSB0YWIyIik7Citpcygk cmVzdWx0LCBxcSgxfHwzKSwgJ2NoZWNrIGFsdGVyIHB1YmxpY2F0aW9uIHdpdGggRVhDRVBUIChj b2x1bW4tbGlzdCknKTsKKworIyBUZXN0IGZvciBwdWJsaWNhdGlvbiBjcmVhdGVkIHdpdGggJ3B1 Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMnIGFzICdzdG9yZWQnIG9uCisjIHRhYmxlICd0YWIzJyBh bmQgd2l0aCBjb2x1bW4gJ2JnZW4nIGluIGNvbHVtbiBsaXN0IHdpdGggRVhDRVBUIGNsYXVzZS4K KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKElOU0VSVCBJTlRP IHRhYjMgVkFMVUVTICgxKTsKKwlBTFRFUiBQVUJMSUNBVElPTiB0YXBfcHViX2NvbCBTRVQgKHB1 Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMgPSBzdG9yZWQpOworCUFMVEVSIFBVQkxJQ0FUSU9OIHRh cF9wdWJfY29sIFNFVCBUQUJMRSB0YWIzIEVYQ0VQVChiZ2VuKTsKKykpOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3Vi X2NvbCBSRUZSRVNIIFBVQkxJQ0FUSU9OIik7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9z dWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX2NvbCcpOworCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGFiMyBWQUxV RVMgKDIpIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfY29s Jyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgKiBGUk9NIHRhYjMgT1JERVIgQlkgYSIpOworCisjIGNvbHVtbiAnYmdlbicgaXMg c3BlY2lmaWVkIGluIEVYQ0VQVCAoY29sdW1tLWxpc3QpLiBTbyBkYXRhIGNvcnJlc3BvbmRpbmcg dG8KKyMgJ2JnZW4nIGlzIG5vdCByZXBsaWNhdGVkLiBQYXJhbWV0ZXIgJ3B1Ymxpc2hfZ2VuZXJh dGVkX2NvbHVtbnMnIGlzIHNldCBhcworIyAnc3RvcmVkJywgc28gZGF0YSBjb3JyZXNwb25kaW5n IHRvIGNvbHVtbiAnY2dlbicgaXMgcmVwbGljYXRlZC4KK2lzKCAkcmVzdWx0LCBxcSgxfHwzCisy fHw2KSwKKwknY2hlY2sgcHVibGljYXRpb24ocHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucyBhcyBz dG9yZWQpIHdpdGggZ2VuZXJhdGVkIGNvbHVtbnMgYW5kIEVYQ0VQVCAoY29sdW1uLWxpc3QpJwor KTsKKworIyBUZXN0IGZvciBwdWJsaWNhdGlvbiBjcmVhdGVkIHdpdGggJ3B1Ymxpc2hfZ2VuZXJh dGVkX2NvbHVtbnMnIGFzICdub25lJyBvbgorIyB0YWJsZSB3aXRoIGdlbmVyYXRlZCBjb2x1bW5z IGFuZCBjb2x1bW4gbGlzdCBzcGVjaWZpZWQgd2l0aCBFWENFUFQgY2xhdXNlLgorJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJSU5TRVJUIElOVE8gdGFiNCBW QUxVRVMgKDEpOworCUFMVEVSIFBVQkxJQ0FUSU9OIHRhcF9wdWJfY29sIFNFVCAocHVibGlzaF9n ZW5lcmF0ZWRfY29sdW1ucyA9IG5vbmUpOworCUFMVEVSIFBVQkxJQ0FUSU9OIHRhcF9wdWJfY29s IFNFVCBUQUJMRSB0YWI0IEVYQ0VQVChiZ2VuKTsKKykpOworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX2NvbCBSRUZS RVNIIFBVQkxJQ0FUSU9OIik7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRp b25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX2NvbCcpOworCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGFiNCBWQUxVRVMgKDIpIik7 Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfY29sJyk7CiskcmVz dWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg KiBGUk9NIHRhYjQgT1JERVIgQlkgYSIpOworCisjIGNvbHVtbiAnYmdlbicgaXMgc3BlY2lmaWVk IGluIEVYQ0VQVCAoY29sdW1tLWxpc3QpLiBTbyBkYXRhIGNvcnJlc3BvbmRpbmcgdG8KKyMgJ2Jn ZW4nIGlzIG5vdCByZXBsaWNhdGVkLiBQYXJhbWV0ZXIgJ3B1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVt bnMnIGlzIHNldCBhcworIyAnbm9uZScsIHNvIGRhdGEgY29ycmVzcG9uZGluZyB0byBjb2x1bW4g J2NnZW4nIGlzIG5vdCByZXBsaWNhdGVkLgoraXMoICRyZXN1bHQsIHFxKDF8fAorMnx8KSwKKwkn Y2hlY2sgcHVibGljYXRpb24ocHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucyBhcyBub25lKSB3aXRo IGdlbmVyYXRlZCBjb2x1bW5zIGFuZCBFWENFUFQgKGNvbHVtbi1saXN0KScKKyk7CisKKyMgQWxs IGNvbHVtbnMgYXJlIHByZXNlbnQgaW4gRVhDRVBUIChjb2x1bW4tbGlzdCkKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUFMVEVSIFBVQkxJQ0FUSU9OIHRh cF9wdWJfY29sIFNFVCBUQUJMRSB0YWI1IEVYQ0VQVChhLCBiLCBjKTsKKwlJTlNFUlQgSU5UTyB0 YWI1IFZBTFVFUyAoMSwgMiwgMyk7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9jb2wgUkVGUkVTSCBQVUJM SUNBVElPTiIpOworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMo JG5vZGVfcHVibGlzaGVyLCAndGFwX3N1Yl9jb2wnKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRhYjUgVkFMVUVTICg0LCA1LCA2KSIpOwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX2NvbCcpOworJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJP TSB0YWI1Iik7CitpcygkcmVzdWx0LCBxcSgpLCAnYWxsIGNvbHVtbnMgYXJlIHNwZWNpZmllZCBp biBFWENFUFQgKGNvbHVtbi1saXN0KScpOworCisjIEFkZCBhIG5ldyBjb2x1bW4gYW5kIGNoZWNr IHRoYXQgaXQgaXMgcmVwbGljYXRlZAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywgcXEoCisJQUxURVIgVEFCTEUgdGFiNSBBREQgQ09MVU1OIGQgaW50OworKSk7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWI1 IFZBTFVFUyAoNywgOCwgOSwgMTApIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJ3RhcF9zdWJfY29sJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gdGFiNSIpOworaXMoJHJlc3VsdCwgcXEofHx8 MTApLCAnbmV3bHkgYWRkZWQgY29sdW1uIGlzIHJlcGxpY2F0ZWQnKTsKKworJG5vZGVfc3Vic2Ny aWJlci0+c3RvcCgnZmFzdCcpOworJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7CisKK2Rv bmVfdGVzdGluZygpOwotLSAKMi4zNC4xCgo= --000000000000bf9590064373b5ae Content-Type: application/octet-stream; name="v27-0002-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v27-0002-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhx11mfa1 RnJvbSA0NDdjMTU5MTJjMTZlOThmYjNiNjdkMDg4YWZiYmM2ZmYwNTg0OGY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgMTMgTm92IDIwMjUgMTA6NTY6MjAgKzA1MzAKU3ViamVjdDogW1BBVENIIHYy NyAyLzNdIFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFC TEUuCgpBIG5ldyAiRVhDRVBUIFRBQkxFIiBjbGF1c2UgZm9yIENSRUFURS9BTFRFUiBQVUJMSUNB VElPTiBhbGxvd3Mgb25lIG9yCm1vcmUgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkLiBUaGUgcHVibGlz aGVyIHdpbGwgbm90IHNlbmQgdGhlIGRhdGEgb2YKZXhjbHVkZWQgdGFibGVzIHRvIHRoZSBzdWJz Y3JpYmVyLgoKVGhlIG5ldyBzeW50YXggYWxsb3dzIHNwZWNpZnlpbmcgZXhjbHVkZWQgcmVsYXRp b25zIHdoZW4gY3JlYXRpbmcgb3IgYWx0ZXJpbmcKYSBwdWJsaWNhdGlvbi4gRm9yIGV4YW1wbGU6 CkNSRUFURSBQVUJMSUNBVElPTiBwdWIxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodDEs dDIpOwpvcgpBTFRFUiBQVUJMSUNBVElPTiBwdWIxIEFERCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJM RSAodDEsdDIpOwoKQSBuZXcgY29sdW1uICJwcmV4Y2VwdCIgaXMgYWRkZWQgdG8gdGFibGUgInBn X3B1YmxpY2F0aW9uX3JlbCIsIHRvIGZsYWcKdGhlIHJlbGF0aW9ucyB0aGF0IHRoZSB1c2VyIHdh bnRzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgcHVibGljYXRpb25zLgoKcGdfZHVtcCBpcyB1cGRhdGVk IHRvIGlkZW50aWZ5IGFuZCBkdW1wIHRoZSBleGNsdWRlZCB0YWJsZXMgb2YgdGhlIHB1YmxpY2F0 aW9ucy4KClRoZSBwc3FsIFxkIGZhbWlseSBvZiBjb21tYW5kcyBjYW4gbm93IGRpc3BsYXkgZXhj bHVkZWQgdGFibGVzLiBlLmcuIHBzcWwKXGRScCsgdmFyaWFudCB3aWxsIG5vdyBkaXNwbGF5IGFz c29jaWF0ZWQgImV4Y2VwdCB0YWJsZXMiIGlmIGFueS4KCkJ1bXAgY2F0YWxvZyB2ZXJzaW9uLgot LS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgOSAr CiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAgMTAgKy0K IGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCAgICAgICB8ICAyMiArLQog ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCAgICAgIHwgIDQ3ICsrKy0K IGRvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCAgICAgICAgICAgICAgICB8ICAgNSArLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgICAgIHwgIDk5ICsrKysr LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgICB8IDI0NyAr KysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAg ICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAg ICAgICAgIHwgIDQyICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYyAgIHwgIDI1ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAg ICAgICAgfCAgMTcgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAg ICAgICB8ICA1NiArKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAgICAg ICAgIHwgIDE4ICsrCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAg ICAgfCAgMjIgKy0KIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICA1OCArKystCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICAg ICAgfCAgMTUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgICAg ICB8ICAxMCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCAgICAg IHwgICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oICAgICAgICB8 ICAgNSArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwg ICA0ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgICB8ICA5 OSArKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgICAg fCAgNTIgKysrLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAg IHwgICAxICsKIC4uLi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwgICAgICAgICB8 IDE4NiArKysrKysrKysrKysrCiAyNSBmaWxlcyBjaGFuZ2VkLCA5MTAgaW5zZXJ0aW9ucygrKSwg MTQ1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDJm YzYzNDQyOTgwLi5hNGQzMmRlNThlYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTY1ODEsNiArNjU4MSwx NSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0Ozwv cmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgaWYgdGhlcmUgaXMgbm8gcHVibGlj YXRpb24gcXVhbGlmeWluZyBjb25kaXRpb24uPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93Pgog CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgPHN0cnVjdGZpZWxkPnByZXhjZXB0 PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIFRydWUgaWYgdGhlIHJlbGF0aW9uIG11c3QgYmUgZXhjbHVkZWQKKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KICAgICAgICA8c3RydWN0ZmllbGQ+cHJhdHRyczwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDJ2 ZWN0b3I8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlv bi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA3OWVj ZDA5NjE0Zi4uYzI3ZDc0NjJlZmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bApAQCAtMjU0NywxMCArMjU0NywxMiBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0 YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogICA8L3Bh cmE+CiAKICAgPHBhcmE+Ci0gICBUbyBhZGQgdGFibGVzIHRvIGEgcHVibGljYXRpb24sIHRoZSB1 c2VyIG11c3QgaGF2ZSBvd25lcnNoaXAgcmlnaHRzIG9uIHRoZQotICAgdGFibGUuIFRvIGFkZCBh bGwgdGFibGVzIGluIHNjaGVtYSB0byBhIHB1YmxpY2F0aW9uLCB0aGUgdXNlciBtdXN0IGJlIGEK LSAgIHN1cGVydXNlci4gVG8gY3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxs IHRhYmxlcywgYWxsIHRhYmxlcyBpbgotICAgc2NoZW1hLCBvciBhbGwgc2VxdWVuY2VzIGF1dG9t YXRpY2FsbHksIHRoZSB1c2VyIG11c3QgYmUgYSBzdXBlcnVzZXIuCisgICBUbyBjcmVhdGUgYSBw dWJsaWNhdGlvbiB1c2luZyA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4sCisgICA8 bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUyBvciA8bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVN QTwvbGl0ZXJhbD4sIHRoZQorICAgdXNlciBtdXN0IGJlIGEgc3VwZXJ1c2VyLiBUbyBhZGQgPGxp dGVyYWw+QUxMIFRBQkxFUzwvbGl0ZXJhbD4gb3IKKyAgIDxsaXRlcmFsPlRBQkxFUyBJTiBTQ0hF TUE8L2xpdGVyYWw+IHRvIGEgcHVibGljYXRpb24sIHRoZSB1c2VyIG11c3QgYmUgYQorICAgc3Vw ZXJ1c2VyLiBUbyBhZGQgdGFibGVzIHRvIGEgcHVibGljYXRpb24sIHRoZSB1c2VyIG11c3QgaGF2 ZSBvd25lcnNoaXAKKyAgIHJpZ2h0cyBvbiB0aGUgdGFibGUuCiAgIDwvcGFyYT4KIAogICA8cGFy YT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAppbmRleCBkOGMyNGVmZDc4 Ny4uOGMzZDIxOWI5ZWEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGlj YXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwK QEAgLTIyLDYgKzIyLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgPHJlZnN5bm9wc2lz ZGl2PgogPHN5bm9wc2lzPgogQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBBREQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLl0KK0FMVEVSIFBV QkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJs ZT4gQUREIEFMTCBUQUJMRVMgWyBFWENFUFQgWyBUQUJMRSBdICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX2V4Y2VwdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4g XSApIF0KIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u YW1lPC9yZXBsYWNlYWJsZT4gU0VUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJs aWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCiBBTFRFUiBQVUJMSUNBVElPTiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IERST1AgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX2Ryb3Bfb2JqZWN0PC9yZXBs YWNlYWJsZT4gWywgLi4uXQogQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBTRVQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICkKQEAg LTM4LDYgKzM5LDExIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVTRVQKIAogICAgIFRBQkxFIFsgT05MWSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAq IF0gWywgLi4uIF0KICAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFss IC4uLiBdCisKKzxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX2V4Y2VwdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworICAgIFsg T05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNl YWJsZT4gWyAqIF0KKwogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC05Myw4 ICs5OSw5IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uYW1lPC9yZXBsYWNlYWJsZT4gUkVTRVQKIAogICA8cGFyYT4KICAgIFlvdSBtdXN0IG93biB0 aGUgcHVibGljYXRpb24gdG8gdXNlIDxjb21tYW5kPkFMVEVSIFBVQkxJQ0FUSU9OPC9jb21tYW5k Pi4KLSAgIEFkZGluZyBhIHRhYmxlIHRvIGEgcHVibGljYXRpb24gYWRkaXRpb25hbGx5IHJlcXVp cmVzIG93bmluZyB0aGF0IHRhYmxlLgotICAgVGhlIDxsaXRlcmFsPkFERCBUQUJMRVMgSU4gU0NI RU1BPC9saXRlcmFsPiwKKyAgIEFkZGluZyBvciBleGNsdWRpbmcgYSB0YWJsZSBmcm9tIGEgcHVi bGljYXRpb24gcmVxdWlyZXMgb3duZXJzaGlwIG9mIHRoYXQKKyAgIHRhYmxlLiBUaGUgPGxpdGVy YWw+QUREIEFMTCBUQUJMRVM8L2xpdGVyYWw+LAorICAgPGxpdGVyYWw+QUREIFRBQkxFUyBJTiBT Q0hFTUE8L2xpdGVyYWw+LAogICAgPGxpdGVyYWw+U0VUIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVy YWw+IHRvIGEgcHVibGljYXRpb24gYW5kCiAgICA8bGl0ZXJhbD5SRVNFVDwvbGl0ZXJhbD4gb2Yg cHVibGljYXRpb24gcmVxdWlyZXMgdGhlIGludm9raW5nIHVzZXIgdG8gYmUgYQogICAgc3VwZXJ1 c2VyLiBUbyBhbHRlciB0aGUgb3duZXIsIHlvdSBtdXN0IGJlIGFibGUgdG8KQEAgLTEzNSw3ICsx NDIsOCBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bmFtZTwvcmVwbGFjZWFibGU+IFJFU0VUCiAgICAgICB0YWJsZSBuYW1lLCBvbmx5IHRoYXQgdGFi bGUgaXMgYWZmZWN0ZWQuICBJZiA8bGl0ZXJhbD5PTkxZPC9saXRlcmFsPiBpcyBub3QKICAgICAg IHNwZWNpZmllZCwgdGhlIHRhYmxlIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnQgdGFibGVzIChpZiBh bnkpIGFyZQogICAgICAgYWZmZWN0ZWQuICBPcHRpb25hbGx5LCA8bGl0ZXJhbD4qPC9saXRlcmFs PiBjYW4gYmUgc3BlY2lmaWVkIGFmdGVyIHRoZSB0YWJsZQotICAgICAgbmFtZSB0byBleHBsaWNp dGx5IGluZGljYXRlIHRoYXQgZGVzY2VuZGFudCB0YWJsZXMgYXJlIGluY2x1ZGVkLgorICAgICAg bmFtZSB0byBleHBsaWNpdGx5IGluZGljYXRlIHRoYXQgZGVzY2VuZGFudCB0YWJsZXMgYXJlIGFm ZmVjdGVkLiBGb3IKKyAgICAgIHBhcnRpdGlvbmVkIHRhYmxlcywgPGxpdGVyYWw+T05MWTwvbGl0 ZXJhbD4gZG9lcyBub3QgaGF2ZSBhbnkgZWZmZWN0LgogICAgICA8L3BhcmE+CiAKICAgICAgPHBh cmE+CkBAIC0yNDQsNiArMjUyLDE0IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0 aW9uIEFERCBUQUJMRVMgSU4gU0NIRU1BIG1hcmtldGluZywgc2FsZXM7CiA8L3Byb2dyYW1saXN0 aW5nPgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBBbHRlciBwdWJsaWNhdGlvbiA8c3RydWN0 bmFtZT5wcm9kdWN0aW9uX3B1YmxpY2F0aW9uPC9zdHJ1Y3RuYW1lPiB0byBwdWJsaXNoCisgICBh bGwgdGFibGVzIGV4Y2VwdCA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kCisgICA8 c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitB TFRFUiBQVUJMSUNBVElPTiBwcm9kdWN0aW9uX3B1YmxpY2F0aW9uIEFERCBBTEwgVEFCTEVTIEVY Q0VQVCAodXNlcnMsIGRlcGFydG1lbnRzKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCiAg IDxwYXJhPgogICAgQWRkIHRhYmxlcyA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4sCiAg ICA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT4gYW5kIHNjaGVtYQpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggNjZhNzBlNWM1YjUuLjhiNjE2 NjUxMjcyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMy LDggKzMyLDEyIEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmFsbF9wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBv bmUgb2Y6PC9waHJhc2U+CiAKLSAgICBBTEwgVEFCTEVTCisgICAgQUxMIFRBQkxFUyBbIEVYQ0VQ VCBbIFRBQkxFIF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfZXhjZXB0 aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQogICAgIEFMTCBTRVFVRU5DRVMK KworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfZXhj ZXB0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCisgICAgWyBPTkxZIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBb ICogXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC0xNjAsNyArMTY0LDkg QEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4KICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgogICAgICAgTWFya3Mg dGhlIHB1YmxpY2F0aW9uIGFzIG9uZSB0aGF0IHJlcGxpY2F0ZXMgY2hhbmdlcyBmb3IgYWxsIHRh YmxlcyBpbgotICAgICAgdGhlIGRhdGFiYXNlLCBpbmNsdWRpbmcgdGFibGVzIGNyZWF0ZWQgaW4g dGhlIGZ1dHVyZS4KKyAgICAgIHRoZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxlcyBjcmVhdGVk IGluIHRoZSBmdXR1cmUuIElmCisgICAgICA8bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+ IGlzIHNwZWNpZmllZCwgdGhlbiBleGNsdWRlIHJlcGxpY2F0aW5nCisgICAgICB0aGUgY2hhbmdl cyBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZXMuCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVt PgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xODAsNiArMTg2LDM1IEBAIENSRUFURSBQVUJMSUNB VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAg ICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlk PSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPgorICAgIDx0 ZXJtPjxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVt PgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgY2xhdXNlIHNwZWNpZmllcyBhIGxpc3Qgb2YgdGFi bGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhlCisgICAgICBwdWJsaWNhdGlvbi4gSXQgY2FuIG9u bHkgYmUgdXNlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPi4KKyAgICAg IElmIDxsaXRlcmFsPk9OTFk8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCBiZWZvcmUgdGhlIHRhYmxl IG5hbWUsIG9ubHkKKyAgICAgIHRoYXQgdGFibGUgaXMgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGlj YXRpb24uIElmIDxsaXRlcmFsPk9OTFk8L2xpdGVyYWw+IGlzCisgICAgICBub3Qgc3BlY2lmaWVk LCB0aGUgdGFibGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFudCB0YWJsZXMgKGlmIGFueSkgYXJlCisg ICAgICBleGNsdWRlZC4gT3B0aW9uYWxseSwgPGxpdGVyYWw+KjwvbGl0ZXJhbD4gY2FuIGJlIHNw ZWNpZmllZCBhZnRlciB0aGUKKyAgICAgIHRhYmxlIG5hbWUgdG8gZXhwbGljaXRseSBpbmRpY2F0 ZSB0aGF0IGRlc2NlbmRhbnQgdGFibGVzIGFyZSBleGNsdWRlZC4KKyAgICAgPC9wYXJhPgorICAg ICA8cGFyYT4KKyAgICAgIFRoZSBwYXJ0aXRpb25lZCB0YWJsZSBvciBpdHMgcGFydGl0aW9ucyBh cmUgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24KKyAgICAgIGJhc2VkIG9uIHRoZSBwYXJh bWV0ZXIgPGxpdGVyYWw+cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q8L2xpdGVyYWw+LgorICAg ICAgV2hlbiA8bGl0ZXJhbD5wdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdDwvbGl0ZXJhbD4gaXMg c2V0IHRvCisgICAgICA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPiwgc3BlY2lmeWluZyBhIHJvb3Qg cGFydGl0aW9uZWQgdGFibGUgaW4KKyAgICAgIDxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJh bD4gZXhjbHVkZXMgaXQgYW5kIGFsbCBpdHMgcGFydGl0aW9ucyBmcm9tCisgICAgICByZXBsaWNh dGlvbi4gU3BlY2lmeWluZyBhIGxlYWYgcGFydGl0aW9uIGhhcyBubyBlZmZlY3QsIGFzIGl0cyBj aGFuZ2VzIGFyZQorICAgICAgc3RpbGwgcmVwbGljYXRlZCB2aWEgdGhlIHJvb3QgcGFydGl0aW9u ZWQgdGFibGUuIFdoZW4KKyAgICAgIDxsaXRlcmFsPnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 PC9saXRlcmFsPiBpcyBzZXQgdG8KKyAgICAgIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiwgc3Bl Y2lmeWluZyBhIHBhcnRpdGlvbmVkIHRhYmxlIG9yIG5vbi1sZWFmCisgICAgICBwYXJ0aXRpb24g aGFzIG5vIGVmZmVjdCwgYXMgY2hhbmdlcyBhcmUgcmVwbGljYXRlZCB2aWEgdGhlIGxlYWYKKyAg ICAgIHBhcnRpdGlvbnMuIFNwZWNpZnlpbmcgYSBsZWFmIHBhcnRpdGlvbiBleGNsdWRlcyBvbmx5 IHRoYXQgcGFydGl0aW9uIGZyb20KKyAgICAgIHJlcGxpY2F0aW9uLgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlk PSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLXdpdGgiPgogICAgIDx0ZXJtPjxsaXRlcmFs PldJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1l dGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVl PC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICk8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRl bT4KQEAgLTQ2Myw2ICs0OTgsMTQgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHByb2R1Y3Rpb25fcHVi bGljYXRpb24gRk9SIFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50cywgVEFCTEVTIEkKIENSRUFURSBQ VUJMSUNBVElPTiBzYWxlc19wdWJsaWNhdGlvbiBGT1IgVEFCTEVTIElOIFNDSEVNQSBtYXJrZXRp bmcsIHNhbGVzOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBDcmVh dGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgY2hhbmdlcyBpbiBhbGwgdGhlIHRh YmxlcyBleGNlcHQKKyAgIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVj dG5hbWU+ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRF IFBVQkxJQ0FUSU9OIG15cHVibGljYXRpb24gRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh1c2Vycywg ZGVwYXJ0bWVudHMpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgog ICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIGNoYW5nZXMgZm9yIHRh YmxlIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiwKICAgIGJ1dCByZXBsaWNhdGVzIG9u bHkgY29sdW1ucyA8c3RydWN0bmFtZT51c2VyX2lkPC9zdHJ1Y3RuYW1lPiBhbmQKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcHNx bC1yZWYuc2dtbAppbmRleCBmNTZjNzAyNjNlMC4uZjFiM2NlMzgwYjYgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwt cmVmLnNnbWwKQEAgLTIxMDMsOCArMjEwMyw5IEBAIFNFTEVDVCAkMSBccGFyc2Ugc3RtdDEKICAg ICAgICAgbGlzdGVkLgogICAgICAgICBJZiA8bGl0ZXJhbD54PC9saXRlcmFsPiBpcyBhcHBlbmRl ZCB0byB0aGUgY29tbWFuZCBuYW1lLCB0aGUgcmVzdWx0cwogICAgICAgICBhcmUgZGlzcGxheWVk IGluIGV4cGFuZGVkIG1vZGUuCi0gICAgICAgIElmIDxsaXRlcmFsPis8L2xpdGVyYWw+IGlzIGFw cGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSB0YWJsZXMgYW5kCi0gICAgICAgIHNjaGVt YXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcHVibGljYXRpb24gYXJlIHNob3duIGFzIHdlbGwuCisg ICAgICAgIElmIDxsaXRlcmFsPis8L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5k IG5hbWUsIHRoZSB0YWJsZXMsCisgICAgICAgIGV4Y2x1ZGVkIHRhYmxlcywgYW5kIHNjaGVtYXMg YXNzb2NpYXRlZCB3aXRoIGVhY2ggcHVibGljYXRpb24gYXJlIHNob3duCisgICAgICAgIGFzIHdl bGwuCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlz dGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5j IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IGFjMmY0ZWUzNTYx Li5iZWMzYTM0ZTQ4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtMzU0 LDcgKzM1NCw4IEBAIEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQs IFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKICAqIGFuY2VzdG9yIGlzIGF0IHRoZSBl bmQgb2YgdGhlIGxpc3QuCiAgKi8KIE9pZAotR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlv bihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2ZWwpCitHZXRU b3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywK KwkJCQkJCQkJaW50ICphbmNlc3Rvcl9sZXZlbCwgYm9vbCBwdWJhbGx0YWJsZXMpCiB7CiAJTGlz dENlbGwgICAqbGM7CiAJT2lkCQkJdG9wbW9zdF9yZWxpZCA9IEludmFsaWRPaWQ7CkBAIC0zNjYs MzIgKzM2Nyw0NCBAQCBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQs IExpc3QgKmFuY2VzdG9ycywgaW50ICphbmNlc3Rvcl9sZXZlbAogCWZvcmVhY2gobGMsIGFuY2Vz dG9ycykKIAl7CiAJCU9pZAkJCWFuY2VzdG9yID0gbGZpcnN0X29pZChsYyk7Ci0JCUxpc3QJICAg KmFwdWJpZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3Rvcik7Ci0JCUxpc3QJICAg KmFzY2hlbWFQdWJpZHMgPSBOSUw7CisJCUxpc3QJICAgKmFwdWJpZHMgPSBHZXRSZWxhdGlvblB1 YmxpY2F0aW9ucyhhbmNlc3RvciwgZmFsc2UpOworCQlMaXN0CSAgICphc2NoZW1hcHViaWRzID0g TklMOworCQlMaXN0CSAgICphZXhjZXB0cHViaWRzID0gTklMOworCQlib29sCQlzZXRfdG9wID0g ZmFsc2U7CiAKIAkJbGV2ZWwrKzsKIAotCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFwdWJpZHMsIHB1 Ym9pZCkpCisJCS8qIGNoZWNrIGlmIG1lbWJlciBvZiB0YWJsZSBwdWJsaWNhdGlvbnMgKi8KKwkJ c2V0X3RvcCA9IGxpc3RfbWVtYmVyX29pZChhcHViaWRzLCBwdWJvaWQpOworCQlpZiAoIXNldF90 b3ApCiAJCXsKLQkJCXRvcG1vc3RfcmVsaWQgPSBhbmNlc3RvcjsKKwkJCWFzY2hlbWFwdWJpZHMg PSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpKTsKIAot CQkJaWYgKGFuY2VzdG9yX2xldmVsKQotCQkJCSphbmNlc3Rvcl9sZXZlbCA9IGxldmVsOworCQkJ LyogY2hlY2sgaWYgbWVtYmVyIG9mIHNjaGVtYSBwdWJsaWNhdGlvbnMgKi8KKwkJCXNldF90b3Ag PSBsaXN0X21lbWJlcl9vaWQoYXNjaGVtYXB1YmlkcywgcHVib2lkKTsKKworCQkJLyoKKwkJCSAq IElmIHRoZSBwdWJsaWNhdGlvbiBpcyBhbGwgdGFibGVzIHB1YmxpY2F0aW9uIGFuZCB0aGUgdGFi bGUgaXMKKwkJCSAqIG5vdCBwYXJ0IG9mIGV4Y2VwdGlvbiB0YWJsZXMuCisJCQkgKi8KKwkJCWlm ICghc2V0X3RvcCAmJiBwdWJhbGx0YWJsZXMpCisJCQl7CisJCQkJYWV4Y2VwdHB1YmlkcyA9IEdl dFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yLCB0cnVlKTsKKwkJCQlzZXRfdG9wID0gIWxp c3RfbWVtYmVyX29pZChhZXhjZXB0cHViaWRzLCBwdWJvaWQpOworCQkJfQogCQl9Ci0JCWVsc2UK KworCQlpZiAoc2V0X3RvcCkKIAkJewotCQkJYXNjaGVtYVB1YmlkcyA9IEdldFNjaGVtYVB1Ymxp Y2F0aW9ucyhnZXRfcmVsX25hbWVzcGFjZShhbmNlc3RvcikpOwotCQkJaWYgKGxpc3RfbWVtYmVy X29pZChhc2NoZW1hUHViaWRzLCBwdWJvaWQpKQotCQkJewotCQkJCXRvcG1vc3RfcmVsaWQgPSBh bmNlc3RvcjsKKwkJCXRvcG1vc3RfcmVsaWQgPSBhbmNlc3RvcjsKIAotCQkJCWlmIChhbmNlc3Rv cl9sZXZlbCkKLQkJCQkJKmFuY2VzdG9yX2xldmVsID0gbGV2ZWw7Ci0JCQl9CisJCQlpZiAoYW5j ZXN0b3JfbGV2ZWwpCisJCQkJKmFuY2VzdG9yX2xldmVsID0gbGV2ZWw7CiAJCX0KIAogCQlsaXN0 X2ZyZWUoYXB1Ymlkcyk7Ci0JCWxpc3RfZnJlZShhc2NoZW1hUHViaWRzKTsKKwkJbGlzdF9mcmVl KGFzY2hlbWFwdWJpZHMpOworCQlsaXN0X2ZyZWUoYWV4Y2VwdHB1Ymlkcyk7CiAJfQogCiAJcmV0 dXJuIHRvcG1vc3RfcmVsaWQ7CkBAIC00NjYsNiArNDc5LDE3IEBAIHB1YmxpY2F0aW9uX2FkZF9y ZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSwgcHViLT5uYW1lKSkpOwogCX0KIAorCS8qCisJ ICogQ2hlY2sgZm9yIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgdGFibGUgd2hpY2ggYXJlIHNw ZWNpZmllZCB3aXRoCisJICogRVhDRVBUIGNsYXVzZSBhbmQgcGFydGl0aW9uZWQgdGFibGUgaXMg cHVibGlzaGVkIHdpdGgKKwkgKiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUuCisJ ICovCisJaWYgKHB1Yi0+YWxsdGFibGVzICYmIHByaS0+ZXhjZXB0ICYmIHRhcmdldHJlbC0+cmRf cmVsLT5yZWxpc3BhcnRpdGlvbiAmJgorCQlwdWItPnB1YnZpYXJvb3QpCisJCWVyZXBvcnQoV0FS TklORywKKwkJCQkoZXJybXNnKCJwYXJ0aXRpb24gXCIlc1wiIHdpbGwgYmUgcmVwbGljYXRlZCBh cyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBpcyBcIiVzXCIiLAorCQkJCQkJUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSwgInRydWUiKSkpOworCiAJY2hlY2tfcHVibGljYXRp b25fYWRkX3JlbGF0aW9uKHRhcmdldHJlbCk7CiAKIAkvKiBWYWxpZGF0ZSBhbmQgdHJhbnNsYXRl IGNvbHVtbiBuYW1lcyBpbnRvIGEgQml0bWFwc2V0IG9mIGF0dG51bXMuICovCkBAIC00ODIsNiAr NTA2LDggQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25S ZWxJbmZvICpwcmksCiAJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpOwogCXZhbHVlc1tBbnVtX3Bn X3B1YmxpY2F0aW9uX3JlbF9wcnJlbGlkIC0gMV0gPQogCQlPYmplY3RJZEdldERhdHVtKHJlbGlk KTsKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJleGNlcHQgLSAxXSA9CisJCUJv b2xHZXREYXR1bShwcmktPmV4Y2VwdCk7CiAKIAkvKiBBZGQgcXVhbGlmaWNhdGlvbnMsIGlmIGF2 YWlsYWJsZSAqLwogCWlmIChwcmktPndoZXJlQ2xhdXNlICE9IE5VTEwpCkBAIC03NDksOSArNzc1 LDkgQEAgcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwgYm9v bCBpZl9ub3RfZXhpc3RzKQogCXJldHVybiBteXNlbGY7CiB9CiAKLS8qIEdldHMgbGlzdCBvZiBw dWJsaWNhdGlvbiBvaWRzIGZvciBhIHJlbGF0aW9uICovCisvKiBHZXRzIGxpc3Qgb2YgcHVibGlj YXRpb24gb2lkcyBmb3IgYSByZWxhdGlvbiB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdF9mbGFnICov CiBMaXN0ICoKLUdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCkKK0dldFJlbGF0aW9u UHVibGljYXRpb25zKE9pZCByZWxpZCwgYm9vbCBleGNlcHRfZmxhZykKIHsKIAlMaXN0CSAgICpy ZXN1bHQgPSBOSUw7CiAJQ2F0Q0xpc3QgICAqcHVicmVsbGlzdDsKQEAgLTc2NSw3ICs3OTEsOCBA QCBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCiAJCUhlYXBUdXBsZQl0dXAgPSAm cHVicmVsbGlzdC0+bWVtYmVyc1tpXS0+dHVwbGU7CiAJCU9pZAkJCXB1YmlkID0gKChGb3JtX3Bn X3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCkpLT5wcnB1YmlkOwogCi0JCXJlc3VsdCA9 IGxhcHBlbmRfb2lkKHJlc3VsdCwgcHViaWQpOworCQlpZiAoZXhjZXB0X2ZsYWcgPT0gKChGb3Jt X3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCkpLT5wcmV4Y2VwdCkKKwkJCXJlc3Vs dCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcHViaWQpOwogCX0KIAogCVJlbGVhc2VTeXNDYWNoZUxp c3QocHVicmVsbGlzdCk7CkBAIC03NzQsMTMgKzgwMSwxNCBAQCBHZXRSZWxhdGlvblB1YmxpY2F0 aW9ucyhPaWQgcmVsaWQpCiB9CiAKIC8qCi0gKiBHZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyBm b3IgYSBwdWJsaWNhdGlvbi4KKyAqIEdldHMgbGlzdCBvZiByZWxhdGlvbiBvaWRzIGZvciBhIHB1 YmxpY2F0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0X2ZsYWcuCiAgKgogICogVGhpcyBzaG91 bGQgb25seSBiZSB1c2VkIEZPUiBUQUJMRSBwdWJsaWNhdGlvbnMsIHRoZSBGT1IgQUxMIFRBQkxF Uy9TRVFVRU5DRVMKICAqIHNob3VsZCB1c2UgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoKS4K ICAqLwogTGlzdCAqCi1HZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0 aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKK0dldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJp ZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAorCQkJCQkJYm9vbCBleGNlcHRfZmxh ZykKIHsKIAlMaXN0CSAgICpyZXN1bHQ7CiAJUmVsYXRpb24JcHVicmVsc3JlbDsKQEAgLTgwNSw4 ICs4MzMsMTEgQEAgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlv blBhcnRPcHQgcHViX3BhcnRvcHQpCiAJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbDsK IAogCQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOwot CQlyZXN1bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVzdWx0LCBwdWJfcGFy dG9wdCwKLQkJCQkJCQkJCQkJCXB1YnJlbC0+cHJyZWxpZCk7CisKKwkJaWYgKGV4Y2VwdF9mbGFn ID09IHB1YnJlbC0+cHJleGNlcHQpCisJCQlyZXN1bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25S ZWxhdGlvbnMocmVzdWx0LCBwdWJfcGFydG9wdCwKKwkJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVs aWQpOworCiAJfQogCiAJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKQEAgLTg2NiwxMyArODk3LDE5 IEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKQogICogcHVibGljYXRpb24uCiAgKi8K IExpc3QgKgotR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoY2hhciByZWxraW5kLCBib29sIHB1 YnZpYXJvb3QpCitHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcmVs a2luZCwgYm9vbCBwdWJ2aWFyb290KQogewogCVJlbGF0aW9uCWNsYXNzUmVsOwogCVNjYW5LZXlE YXRhIGtleVsxXTsKIAlUYWJsZVNjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cGxlOwogCUxp c3QJICAgKnJlc3VsdCA9IE5JTDsKKwlMaXN0CSAgICpleGNlcHRsaXN0OworCisJZXhjZXB0bGlz dCA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLCBwdWJ2aWFyb290ID8KKwkJCQkJCQkJ CQkgUFVCTElDQVRJT05fUEFSVF9BTEwgOgorCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JP T1QsCisJCQkJCQkJCQkJIHRydWUpOwogCiAJQXNzZXJ0KCEocmVsa2luZCA9PSBSRUxLSU5EX1NF UVVFTkNFICYmIHB1YnZpYXJvb3QpKTsKIApAQCAtODkxLDcgKzkyOCw4IEBAIEdldEFsbFB1Ymxp Y2F0aW9uUmVsYXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCQlPaWQJCQly ZWxpZCA9IHJlbEZvcm0tPm9pZDsKIAogCQlpZiAoaXNfcHVibGlzaGFibGVfY2xhc3MocmVsaWQs IHJlbEZvcm0pICYmCi0JCQkhKHJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmIHB1YnZpYXJvb3Qp KQorCQkJIShyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAmJiBwdWJ2aWFyb290KSAmJgorCQkJIWxp c3RfbWVtYmVyX29pZChleGNlcHRsaXN0LCByZWxpZCkpCiAJCQlyZXN1bHQgPSBsYXBwZW5kX29p ZChyZXN1bHQsIHJlbGlkKTsKIAl9CiAKQEAgLTkxMiw3ICs5NTAsOCBAQCBHZXRBbGxQdWJsaWNh dGlvblJlbGF0aW9ucyhjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKIAkJCU9pZAkJCXJl bGlkID0gcmVsRm9ybS0+b2lkOwogCiAJCQlpZiAoaXNfcHVibGlzaGFibGVfY2xhc3MocmVsaWQs IHJlbEZvcm0pICYmCi0JCQkJIXJlbEZvcm0tPnJlbGlzcGFydGl0aW9uKQorCQkJCSFyZWxGb3Jt LT5yZWxpc3BhcnRpdGlvbiAmJgorCQkJCSFsaXN0X21lbWJlcl9vaWQoZXhjZXB0bGlzdCwgcmVs aWQpKQogCQkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcmVsaWQpOwogCQl9CiAKQEAg LTExNjgsNyArMTIwNyw4IEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05f QVJHUykKIAkJCSAqIHRob3NlLiBPdGhlcndpc2UsIGdldCB0aGUgcGFydGl0aW9uZWQgdGFibGUg aXRzZWxmLgogCQkJICovCiAJCQlpZiAocHViX2VsZW0tPmFsbHRhYmxlcykKLQkJCQlwdWJfZWxl bV90YWJsZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhSRUxLSU5EX1JFTEFUSU9OLAor CQkJCXB1Yl9lbGVtX3RhYmxlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVt LT5vaWQsCisJCQkJCQkJCQkJCQkJCQkgUkVMS0lORF9SRUxBVElPTiwKIAkJCQkJCQkJCQkJCQkJ CSBwdWJfZWxlbS0+cHVidmlhcm9vdCk7CiAJCQllbHNlCiAJCQl7CkBAIC0xMTc4LDcgKzEyMTgs OCBAQCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJcmVs aWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViX2VsZW0tPm9pZCwKIAkJCQkJCQkJCQkJ CSBwdWJfZWxlbS0+cHVidmlhcm9vdCA/CiAJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9S T09UIDoKLQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOworCQkJCQkJCQkJCQkJ IFBVQkxJQ0FUSU9OX1BBUlRfTEVBRiwKKwkJCQkJCQkJCQkJCSBmYWxzZSk7CiAJCQkJc2NoZW1h cmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMocHViX2VsZW0tPm9pZCwK IAkJCQkJCQkJCQkJCQkJCQlwdWJfZWxlbS0+cHVidmlhcm9vdCA/CiAJCQkJCQkJCQkJCQkJCQkJ UFVCTElDQVRJT05fUEFSVF9ST09UIDoKQEAgLTEzNjcsNyArMTQwOCw3IEBAIHBnX2dldF9wdWJs aWNhdGlvbl9zZXF1ZW5jZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJcHVibGljYXRpb24gPSBHZXRQ dWJsaWNhdGlvbkJ5TmFtZShwdWJuYW1lLCBmYWxzZSk7CiAKIAkJaWYgKHB1YmxpY2F0aW9uLT5h bGxzZXF1ZW5jZXMpCi0JCQlzZXF1ZW5jZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhS RUxLSU5EX1NFUVVFTkNFLCBmYWxzZSk7CisJCQlzZXF1ZW5jZXMgPSBHZXRBbGxQdWJsaWNhdGlv blJlbGF0aW9ucyhwdWJsaWNhdGlvbi0+b2lkLCBSRUxLSU5EX1NFUVVFTkNFLCBmYWxzZSk7CiAK IAkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gKHZvaWQgKikgc2VxdWVuY2VzOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IDUwMjM5NTEzZTNmLi42ZmI2OWUzZjNiYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTE3MCw2ICsxNzAsMzkg QEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJfQogfQog CisvKgorICogQ29udmVydCB0aGUgUHVibGljYXRpb25PYmpTcGVjIGxpc3Qgd2hpY2ggaXMgcGFy dCBvZgorICogUHVibGljYXRpb25BbGxPYmpTcGVjVHlwZSBsaXN0IGludG8gUHVibGljYXRpb25U YWJsZSBsaXN0LgorICovCitzdGF0aWMgdm9pZAorT2JqZWN0c0luQWxsUHVibGljYXRpb25Ub09p ZHMoTGlzdCAqcHViYWxsb2Jqc3BlY19saXN0LAorCQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRl LCBMaXN0ICoqcmVscykKK3sKKwlpZiAoIXB1YmFsbG9ianNwZWNfbGlzdCkKKwkJcmV0dXJuOwor CisJZm9yZWFjaF9wdHIoUHVibGljYXRpb25BbGxPYmpTcGVjLCBwdWJhbGxvYmosIHB1YmFsbG9i anNwZWNfbGlzdCkKKwl7CisJCXN3aXRjaCAocHViYWxsb2JqLT5wdWJvYmp0eXBlKQorCQl7CisJ CQljYXNlIFBVQkxJQ0FUSU9OX0FMTF9TRVFVRU5DRVM6CisJCQkJYnJlYWs7CisJCQljYXNlIFBV QkxJQ0FUSU9OX0FMTF9UQUJMRVM6CisJCQkJZm9yZWFjaF9wdHIoUHVibGljYXRpb25PYmpTcGVj LCBwdWJvYmosIHB1YmFsbG9iai0+ZXhjZXB0X29iamVjdHMpCisJCQkJeworCQkJCQlwdWJvYmot PnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOworCQkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1 Ym9iai0+cHVidGFibGUpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJLyog c2hvdWxkbid0IGhhcHBlbiAqLworCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIHB1YmxpY2F0aW9u IG9iamVjdCB0eXBlICVkIiwKKwkJCQkJIHB1YmFsbG9iai0+cHVib2JqdHlwZSk7CisJCQkJYnJl YWs7CisJCX0KKwl9Cit9CisKIC8qCiAgKiBDb252ZXJ0IHRoZSBQdWJsaWNhdGlvbk9ialNwZWNU eXBlIGxpc3QgaW50byBzY2hlbWEgb2lkIGxpc3QgYW5kCiAgKiBQdWJsaWNhdGlvblRhYmxlIGxp c3QuCkBAIC0xOTQsNiArMjI3LDExIEBAIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3Qg KnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQlzd2l0Y2ggKHB1Ym9iai0+ cHVib2JqdHlwZSkKIAkJewogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRToKKwkJCQlwdWJv YmotPnB1YnRhYmxlLT5leGNlcHQgPSBmYWxzZTsKKwkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMs IHB1Ym9iai0+cHVidGFibGUpOworCQkJCWJyZWFrOworCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9F WENFUFRfVEFCTEU6CisJCQkJcHVib2JqLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gdHJ1ZTsKIAkJCQkq cmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1Ym9iai0+cHVidGFibGUpOwogCQkJCWJyZWFrOwogCQkJ Y2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BOgpAQCAtMjY4LDcgKzMwNiw3IEBA IGNvbnRhaW5faW52YWxpZF9yZmNvbHVtbl93YWxrZXIoTm9kZSAqbm9kZSwgcmZfY29udGV4dCAq Y29udGV4dCkKICAqLwogYm9vbAogcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBw dWJpZCwgUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmFuY2VzdG9ycywKLQkJCQkJCQkgICBib29s IHB1YnZpYXJvb3QpCisJCQkJCQkJICAgYm9vbCBwdWJ2aWFyb290LCBib29sIHB1YmFsbHRhYmxl cykKIHsKIAlIZWFwVHVwbGUJcmZ0dXBsZTsKIAlPaWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVs aWQocmVsYXRpb24pOwpAQCAtMjk1LDcgKzMzMyw4IEBAIHB1Yl9yZl9jb250YWluc19pbnZhbGlk X2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICphbmNlc3RvcnMsCiAJ aWYgKHB1YnZpYXJvb3QgJiYgcmVsYXRpb24tPnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCiAJewog CQlwdWJsaXNoX2FzX3JlbGlkCi0JCQk9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24o cHViaWQsIGFuY2VzdG9ycywgTlVMTCk7CisJCQk9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGlj YXRpb24ocHViaWQsIGFuY2VzdG9ycywgTlVMTCwKKwkJCQkJCQkJCQkJICBwdWJhbGx0YWJsZXMp OwogCiAJCWlmICghT2lkSXNWYWxpZChwdWJsaXNoX2FzX3JlbGlkKSkKIAkJCXB1Ymxpc2hfYXNf cmVsaWQgPSByZWxpZDsKQEAgLTM1NSw3ICszOTQsNyBAQCBwdWJfcmZfY29udGFpbnNfaW52YWxp ZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3JzLAog Ym9vbAogcHViX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVs YXRpb24sIExpc3QgKmFuY2VzdG9ycywKIAkJCQkJCQlib29sIHB1YnZpYXJvb3QsIGNoYXIgcHVi Z2VuY29sc190eXBlLAotCQkJCQkJCWJvb2wgKmludmFsaWRfY29sdW1uX2xpc3QsCisJCQkJCQkJ Ym9vbCBwdWJhbGx0YWJsZXMsIGJvb2wgKmludmFsaWRfY29sdW1uX2xpc3QsCiAJCQkJCQkJYm9v bCAqaW52YWxpZF9nZW5fY29sKQogewogCU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChy ZWxhdGlvbik7CkBAIC0zNzksNyArNDE4LDggQEAgcHViX2NvbnRhaW5zX2ludmFsaWRfY29sdW1u KE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmFuY2VzdG9ycywKIAkgKi8KIAlp ZiAocHVidmlhcm9vdCAmJiByZWxhdGlvbi0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKIAl7Ci0J CXB1Ymxpc2hfYXNfcmVsaWQgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1Ymlk LCBhbmNlc3RvcnMsIE5VTEwpOworCQlwdWJsaXNoX2FzX3JlbGlkID0gR2V0VG9wTW9zdEFuY2Vz dG9ySW5QdWJsaWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLAorCQkJCQkJCQkJCQkJCQkgICBOVUxM LCBwdWJhbGx0YWJsZXMpOwogCiAJCWlmICghT2lkSXNWYWxpZChwdWJsaXNoX2FzX3JlbGlkKSkK IAkJCXB1Ymxpc2hfYXNfcmVsaWQgPSByZWxpZDsKQEAgLTUxNSw3ICs1NTUsNyBAQCBJbnZhbGlk YXRlUHViUmVsU3luY0NhY2hlKE9pZCBwdWJpZCwgYm9vbCBwdWJhbGx0YWJsZXMpCiAJCSAqIGl0 cyBsZWF2ZXMuCiAJCSAqLwogCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJp ZCwKLQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOworCQkJCQkJCQkJCSBQVUJMSUNB VElPTl9QQVJUX0FMTCwgZmFsc2UpOwogCQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJs aWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKIAkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9B TEwpOwogCkBAIC05MjMsNTYgKzk2Myw1NCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRl ICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkvKiBNYWtlIHRoZSBjaGFu Z2VzIHZpc2libGUuICovCiAJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIAotCS8qIEFzc29j aWF0ZSBvYmplY3RzIHdpdGggdGhlIHB1YmxpY2F0aW9uLiAqLwogCWlmIChzdG10LT5mb3JfYWxs X3RhYmxlcykKLQl7Ci0JCS8qCi0JCSAqIEludmFsaWRhdGUgcmVsY2FjaGUgc28gdGhhdCBwdWJs aWNhdGlvbiBpbmZvIGlzIHJlYnVpbHQuIFNlcXVlbmNlcwotCQkgKiBwdWJsaWNhdGlvbiBkb2Vz bid0IHJlcXVpcmUgaW52YWxpZGF0aW9uLCBhcyByZXBsaWNhIGlkZW50aXR5Ci0JCSAqIGNoZWNr cyBkb24ndCBhcHBseSB0byB0aGVtLgotCQkgKi8KLQkJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVB bGwoKTsKLQl9CisJCU9iamVjdHNJbkFsbFB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVj dHMsIHBzdGF0ZSwgJnJlbGF0aW9ucyk7CisKIAllbHNlIGlmICghc3RtdC0+Zm9yX2FsbF9zZXF1 ZW5jZXMpCi0JewogCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3Rz LCBwc3RhdGUsICZyZWxhdGlvbnMsCiAJCQkJCQkJCSAgICZzY2hlbWFpZGxpc3QpOwogCi0JCS8q IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHJlcXVpcmVzIHN1cGVydXNlciAqLwotCQlpZiAoc2NoZW1h aWRsaXN0ICE9IE5JTCAmJiAhc3VwZXJ1c2VyKCkpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQll cnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCi0JCQkJCWVycm1zZygibXVz dCBiZSBzdXBlcnVzZXIgdG8gY3JlYXRlIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9u IikpOworCS8qIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHJlcXVpcmVzIHN1cGVydXNlciAqLworCWlm IChzY2hlbWFpZGxpc3QgIT0gTklMICYmICFzdXBlcnVzZXIoKSkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQllcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJZXJybXNn KCJtdXN0IGJlIHN1cGVydXNlciB0byBjcmVhdGUgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGlj YXRpb24iKSk7CiAKLQkJaWYgKHJlbGF0aW9ucyAhPSBOSUwpCi0JCXsKLQkJCUxpc3QJICAgKnJl bHM7CisJaWYgKHJlbGF0aW9ucyAhPSBOSUwpCisJeworCQlMaXN0CSAgICpyZWxzOwogCi0JCQly ZWxzID0gT3BlblRhYmxlTGlzdChyZWxhdGlvbnMpOwotCQkJVHJhbnNmb3JtUHViV2hlcmVDbGF1 c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAotCQkJCQkJCQkJIHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290KTsKKwkJcmVscyA9IE9wZW5UYWJsZUxpc3QocmVsYXRpb25zKTsKKwkJVHJh bnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQkJCQkJ CQkgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCi0JCQlDaGVja1B1YlJlbGF0aW9uQ29s dW1uTGlzdChzdG10LT5wdWJuYW1lLCByZWxzLAotCQkJCQkJCQkJICAgc2NoZW1haWRsaXN0ICE9 IE5JTCwKLQkJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwkJQ2hlY2tQ dWJSZWxhdGlvbkNvbHVtbkxpc3Qoc3RtdC0+cHVibmFtZSwgcmVscywKKwkJCQkJCQkJICAgc2No ZW1haWRsaXN0ICE9IE5JTCwKKwkJCQkJCQkJICAgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qp OwogCi0JCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwpOwot CQkJQ2xvc2VUYWJsZUxpc3QocmVscyk7Ci0JCX0KKwkJUHVibGljYXRpb25BZGRUYWJsZXMocHVi b2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKKwkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CisJfQogCi0J CWlmIChzY2hlbWFpZGxpc3QgIT0gTklMKQotCQl7Ci0JCQkvKgotCQkJICogU2NoZW1hIGxvY2sg aXMgaGVsZCB1bnRpbCB0aGUgcHVibGljYXRpb24gaXMgY3JlYXRlZCB0byBwcmV2ZW50Ci0JCQkg KiBjb25jdXJyZW50IHNjaGVtYSBkZWxldGlvbi4KLQkJCSAqLwotCQkJTG9ja1NjaGVtYUxpc3Qo c2NoZW1haWRsaXN0KTsKLQkJCVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhwdWJvaWQsIHNjaGVtYWlk bGlzdCwgdHJ1ZSwgTlVMTCk7Ci0JCX0KKwlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCkKKwl7CisJ CS8qCisJCSAqIFNjaGVtYSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNy ZWF0ZWQgdG8gcHJldmVudAorCQkgKiBjb25jdXJyZW50IHNjaGVtYSBkZWxldGlvbi4KKwkJICov CisJCUxvY2tTY2hlbWFMaXN0KHNjaGVtYWlkbGlzdCk7CisJCVB1YmxpY2F0aW9uQWRkU2NoZW1h cyhwdWJvaWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwgTlVMTCk7CiAJfQogCiAJdGFibGVfY2xvc2Uo cmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAorCS8qIEFzc29jaWF0ZSBvYmplY3RzIHdpdGggdGhl IHB1YmxpY2F0aW9uLiAqLworCWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcykKKwl7CisJCS8qIElu dmFsaWRhdGUgcmVsY2FjaGUgc28gdGhhdCBwdWJsaWNhdGlvbiBpbmZvIGlzIHJlYnVpbHQuICov CisJCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hlQWxsKCk7CisJfQorCiAJSW52b2tlT2JqZWN0UG9z dENyZWF0ZUhvb2soUHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJvaWQsIDApOwogCiAJaWYgKHdh bF9sZXZlbCAhPSBXQUxfTEVWRUxfTE9HSUNBTCkKQEAgLTEwNDEsNyArMTA3OSw3IEBAIEFsdGVy UHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0 bXQgKnN0bXQsCiAJCQkJCQkgICBBY2Nlc3NTaGFyZUxvY2spOwogCiAJCXJvb3RfcmVsaWRzID0g R2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAotCQkJCQkJCQkJCQkgIFBVQkxJ Q0FUSU9OX1BBUlRfUk9PVCk7CisJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09ULCBm YWxzZSk7CiAKIAkJZm9yZWFjaChsYywgcm9vdF9yZWxpZHMpCiAJCXsKQEAgLTExNjEsNyArMTE5 OSw3IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQ dWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCSAqLwogCQlpZiAocm9vdF9yZWxpZHMgPT0gTklMKQog CQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAotCQkJCQkJ CQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOworCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFS VF9BTEwsIGZhbHNlKTsKIAkJZWxzZQogCQl7CiAJCQkvKgpAQCAtMTI2Myw2ICsxMzAxLDI3IEBA IEFsdGVyUHVibGljYXRpb25SZXNldChQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LAogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmFsbHNlcXVlbmNl cyAtIDFdID0gQm9vbEdldERhdHVtKFBVQl9ERUZBVUxUX0FMTF9TRVFVRU5DRVMpOwogCXJlcGxh Y2VzW0FudW1fcGdfcHVibGljYXRpb25fcHViYWxsc2VxdWVuY2VzIC0gMV0gPSB0cnVlOwogCisJ LyoKKwkgKiBMb2NrIHRoZSBwdWJsaWNhdGlvbiBzbyBub2JvZHkgZWxzZSBjYW4gZG8gYW55dGhp bmcgd2l0aCBpdC4gVGhpcworCSAqIHByZXZlbnRzIGNvbmN1cnJlbnQgcHVibGljYXRpb24gcGFy YW1ldGVyIGNoYW5nZXMsIGFkZC9kcm9wIHRhYmxlcyhzKQorCSAqIHRvIHRoZSBwdWJsaWNhdGlv biBhbmQgYWRkL2Ryb3Agc2NoZW1hKHMpIHRvIHRoZSBwdWJsaWNhdGlvbi4KKwkgKi8KKwlMb2Nr RGF0YWJhc2VPYmplY3QoUHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJpZCwgMCwKKwkJCQkJICAg QWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkvKgorCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgYnkg dGhlIHRpbWUgd2UgYWNxdWlyZSB0aGUgbG9jayBvbiBwdWJsaWNhdGlvbiwKKwkgKiBjb25jdXJy ZW50IERETCBoYXMgcmVtb3ZlZCBpdC4gV2UgY2FuIHRlc3QgdGhpcyBieSBjaGVja2luZyB0aGUK KwkgKiBleGlzdGVuY2Ugb2YgcHVibGljYXRpb24uIFdlIGdldCB0aGUgdHVwbGUgYWdhaW4gdG8g YXZvaWQgdGhlIHJpc2sgb2YKKwkgKiBhbnkgcHVibGljYXRpb24gb3B0aW9uIGdldHRpbmcgY2hh bmdlZC4KKwkgKi8KKwl0dXAgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFBVQkxJQ0FUSU9OT0lELCBP YmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAor CQkJCWVycm1zZygicHVibGljYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJICAg c3RtdC0+cHVibmFtZSkpOworCiAJaWYgKHB1YmZvcm0tPnB1YmFsbHRhYmxlcykKIAkJQ2FjaGVJ bnZhbGlkYXRlUmVsY2FjaGVBbGwoKTsKIApAQCAtMTI4NSw3ICsxMzQ0LDEwIEBAIEFsdGVyUHVi bGljYXRpb25SZXNldChQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpz dG10LAogCVB1YmxpY2F0aW9uRHJvcFNjaGVtYXMocHViaWQsIHNjaGVtYWlkcywgdHJ1ZSk7CiAK IAkvKiBHZXQgYWxsIHJlbGF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9uICov Ci0JcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsIFBVQkxJQ0FUSU9OX1BB UlRfUk9PVCk7CisJaWYgKHB1YmZvcm0tPnB1YmFsbHRhYmxlcykKKwkJcmVsaWRzID0gR2V0UHVi bGljYXRpb25SZWxhdGlvbnMocHViaWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCwgdHJ1ZSk7CisJ ZWxzZQorCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwgUFVCTElDQVRJ T05fUEFSVF9ST09ULCBmYWxzZSk7CiAKIAlmb3JlYWNoX29pZChyZWxpZCwgcmVsaWRzKQogCXsK QEAgLTEzMDMsNiArMTM2NSw4MCBAQCBBbHRlclB1YmxpY2F0aW9uUmVzZXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAlDbG9zZVRhYmxlTGlzdChyZWxz KTsKIH0KIAorLyoKKyAqIENoZWNrIGlmIHRoZSBwdWJsaWNhdGlvbiBoYXMgZGVmYXVsdCB2YWx1 ZXMuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBwdWJsaWNhdGlvbiBzYXRpc2ZpZXMgYWxs IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqIGEpIFB1YmxpY2F0aW9uIGlzIG5vdCBzZXQg d2l0aCAiRk9SIEFMTCBUQUJMRVMiCisgKiBiKSBQdWJsaWNhdGlvbiBpcyBoYXZpbmcgZGVmYXVs dCBwdWJsaWNhdGlvbiBwYXJhbWV0ZXIgdmFsdWVzCisgKiBjKSBQdWJsaWNhdGlvbiBpcyBub3Qg YXNzb2NpYXRlZCB3aXRoIHNjaGVtYXMKKyAqIGQpIFB1YmxpY2F0aW9uIGlzIG5vdCBhc3NvY2lh dGVkIHdpdGggcmVsYXRpb25zCisgKi8KK3N0YXRpYyBib29sCitDaGVja1B1YmxpY2F0aW9uRGVm VmFsdWVzKEhlYXBUdXBsZSB0dXApCit7CisJRm9ybV9wZ19wdWJsaWNhdGlvbiBwdWJmb3JtID0g KEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOworCU9pZAkJCXB1YmlkID0gcHVi Zm9ybS0+b2lkOworCUxpc3QJICAgKnB1Ym9ianMgPSBOSUw7CisKKwlpZiAocHViZm9ybS0+cHVi YWxsdGFibGVzICE9IFBVQl9ERUZBVUxUX0FMTF9UQUJMRVMgfHwKKwkJcHViZm9ybS0+cHViYWxs c2VxdWVuY2VzICE9IFBVQl9ERUZBVUxUX0FMTF9TRVFVRU5DRVMpCisJCXJldHVybiBmYWxzZTsK KworCWlmIChwdWJmb3JtLT5wdWJpbnNlcnQgIT0gUFVCX0RFRkFVTFRfQUNUSU9OX0lOU0VSVCB8 fAorCQlwdWJmb3JtLT5wdWJ1cGRhdGUgIT0gUFVCX0RFRkFVTFRfQUNUSU9OX1VQREFURSB8fAor CQlwdWJmb3JtLT5wdWJkZWxldGUgIT0gUFVCX0RFRkFVTFRfQUNUSU9OX0RFTEVURSB8fAorCQlw dWJmb3JtLT5wdWJ0cnVuY2F0ZSAhPSBQVUJfREVGQVVMVF9BQ1RJT05fVFJVTkNBVEUgfHwKKwkJ cHViZm9ybS0+cHVidmlhcm9vdCAhPSBQVUJfREVGQVVMVF9WSUFfUk9PVCkKKwkJcmV0dXJuIGZh bHNlOworCisJcHVib2JqcyA9IEdldFB1YmxpY2F0aW9uU2NoZW1hcyhwdWJpZCk7CisJaWYgKGxp c3RfbGVuZ3RoKHB1Ym9ianMpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlwdWJvYmpzID0gR2V0UHVi bGljYXRpb25SZWxhdGlvbnMocHViaWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCwgZmFsc2UpOwor CWlmIChsaXN0X2xlbmd0aChwdWJvYmpzKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRy dWU7Cit9CisKKy8qCisgKiBTZXQgcHVibGljYXRpb24gdG8gcHVibGlzaCBhbGwgdGFibGVzLgor ICovCitzdGF0aWMgdm9pZAorQWx0ZXJQdWJsaWNhdGlvblNldEFsbFRhYmxlcyhSZWxhdGlvbiBy ZWwsIEhlYXBUdXBsZSB0dXApCit7CisJRm9ybV9wZ19wdWJsaWNhdGlvbiBwdWJmb3JtIFBHX1VT RURfRk9SX0FTU0VSVFNfT05MWSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVw KTsKKwlib29sCQludWxsc1tOYXR0c19wZ19wdWJsaWNhdGlvbl07CisJYm9vbAkJcmVwbGFjZXNb TmF0dHNfcGdfcHVibGljYXRpb25dOworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRp b25dOworCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCUFzc2VydCghcHViZm9ybS0+cHVi YWxsdGFibGVzKTsKKyNlbmRpZgorCisJLyogQWRkIEFMTCBUQUJMRVMgdG8gdGhlIHB1YmxpY2F0 aW9uIHJlcXVpcmVzIHN1cGVydXNlciAqLworCWlmICghc3VwZXJ1c2VyKCkpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJ CWVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gQUREIEFMTCBUQUJMRVMgdG8gdGhlIHB1Ymxp Y2F0aW9uIikpOworCisJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCW1lbXNl dChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOworCW1lbXNldChyZXBsYWNlcywgZmFsc2Us IHNpemVvZihyZXBsYWNlcykpOworCisJLyogU2V0IEFMTCBUQUJMRVMgZmxhZyAqLworCXZhbHVl c1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmFsbHRhYmxlcyAtIDFdID0gQm9vbEdldERhdHVtKHRy dWUpOworCXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHViYWxsdGFibGVzIC0gMV0gPSB0 cnVlOworCisJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdldERlc2NyKHJl bCksIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBkYXRlIHRoZSBj YXRhbG9nLiAqLworCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2VsZiwgdHVwKTsK K30KKwogLyoKICAqIEFkZCBvciByZW1vdmUgdGFibGUgdG8vZnJvbSBwdWJsaWNhdGlvbi4KICAq LwpAQCAtMTM0MSw3ICsxNDc3LDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAllbHNlCQkJCQkJLyogQVBfU2V0T2Jq ZWN0cyAqLwogCXsKIAkJTGlzdAkgICAqb2xkcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlv bnMocHViaWQsCi0JCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCQkJCQkJ CQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCwKKwkJCQkJCQkJCQkJCQkJZmFsc2UpOwogCQlM aXN0CSAgICpkZWxyZWxzID0gTklMOwogCQlMaXN0Q2VsbCAgICpvbGRsYzsKIApAQCAtMTQ0Miw2 ICsxNTc5LDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAq c3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJCQlvbGRyZWwgPSBwYWxsb2Moc2l6ZW9mKFB1YmxpY2F0 aW9uUmVsSW5mbykpOwogCQkJCW9sZHJlbC0+d2hlcmVDbGF1c2UgPSBOVUxMOwogCQkJCW9sZHJl bC0+Y29sdW1ucyA9IE5JTDsKKwkJCQlvbGRyZWwtPmV4Y2VwdCA9IGZhbHNlOwogCQkJCW9sZHJl bC0+cmVsYXRpb24gPSB0YWJsZV9vcGVuKG9sZHJlbGlkLAogCQkJCQkJCQkJCQkgIFNoYXJlVXBk YXRlRXhjbHVzaXZlTG9jayk7CiAJCQkJZGVscmVscyA9IGxhcHBlbmQoZGVscmVscywgb2xkcmVs KTsKQEAgLTE0OTIsNyArMTYzMCw4IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVi bGljYXRpb25TdG10ICpzdG10LAogCQlMaXN0Q2VsbCAgICpsYzsKIAkJTGlzdAkgICAqcmVsb2lk czsKIAotCQlyZWxvaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLCBQ VUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQlyZWxvaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlv bnMocHViZm9ybS0+b2lkLCBQVUJMSUNBVElPTl9QQVJUX1JPT1QsCisJCQkJCQkJCQkJICBmYWxz ZSk7CiAKIAkJZm9yZWFjaChsYywgcmVsb2lkcykKIAkJewpAQCAtMTY0NSw2ICsxNzg0LDIwIEBA IEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3Rt dCAqc3RtdCkKIAkJYWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBPQkpFQ1RfUFVC TElDQVRJT04sCiAJCQkJCSAgIHN0bXQtPnB1Ym5hbWUpOwogCisJaWYgKHN0bXQtPmZvcl9hbGxf dGFibGVzKQorCXsKKwkJYm9vbAkJaXNkZWZhdWx0ID0gQ2hlY2tQdWJsaWNhdGlvbkRlZlZhbHVl cyh0dXApOworCisJCWlmICghaXNkZWZhdWx0KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQllcnJtc2coImFk ZGluZyBBTEwgVEFCTEVTIHJlcXVpcmVzIHRoZSBwdWJsaWNhdGlvbiB0byBoYXZlIGRlZmF1bHQg cHVibGljYXRpb24gcGFyYW1ldGVyIHZhbHVlcyIpLAorCQkJCQllcnJkZXRhaWwoIkFMTCBUQUJM RVMgZmxhZyBzaG91bGQgbm90IGJlIHNldCBhbmQgbm8gdGFibGVzL3NjaGVtYXMgc2hvdWxkIGJl IGFzc29jaWF0ZWQuIiksCisJCQkJCWVycmhpbnQoIlVzZSBBTFRFUiBQVUJMSUNBVElPTiAuLi4g UkVTRVQgdG8gcmVzZXQgdGhlIHB1YmxpY2F0aW9uIikpOworCisJCUFsdGVyUHVibGljYXRpb25T ZXRBbGxUYWJsZXMocmVsLCB0dXApOworCX0KKwogCWlmIChzdG10LT5vcHRpb25zKQogCQlBbHRl clB1YmxpY2F0aW9uT3B0aW9ucyhwc3RhdGUsIHN0bXQsIHJlbCwgdHVwKTsKIAllbHNlIGlmIChz dG10LT5hY3Rpb24gPT0gQVBfUmVzZXQpCkBAIC0xODU3LDYgKzIwMTAsNyBAQCBPcGVuVGFibGVM aXN0KExpc3QgKnRhYmxlcykKIAkJcHViX3JlbC0+cmVsYXRpb24gPSByZWw7CiAJCXB1Yl9yZWwt PndoZXJlQ2xhdXNlID0gdC0+d2hlcmVDbGF1c2U7CiAJCXB1Yl9yZWwtPmNvbHVtbnMgPSB0LT5j b2x1bW5zOworCQlwdWJfcmVsLT5leGNlcHQgPSB0LT5leGNlcHQ7CiAJCXJlbHMgPSBsYXBwZW5k KHJlbHMsIHB1Yl9yZWwpOwogCQlyZWxpZHMgPSBsYXBwZW5kX29pZChyZWxpZHMsIG15cmVsaWQp OwogCkBAIC0xOTI5LDYgKzIwODMsNyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAog CQkJCS8qIGNoaWxkIGluaGVyaXRzIGNvbHVtbiBsaXN0IGZyb20gcGFyZW50ICovCiAJCQkJcHVi X3JlbC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7CisJCQkJcHViX3JlbC0+ZXhjZXB0ID0gdC0+ZXhj ZXB0OwogCQkJCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwpOwogCQkJCXJlbGlkcyA9IGxh cHBlbmRfb2lkKHJlbGlkcywgY2hpbGRyZWxpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK aW5kZXggMjNlYmFhM2YyMzAuLjU1NzczY2MyZWNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwpAQCAtODY1MSw3ICs4NjUxLDcgQEAgQVRFeGVjU2V0RXhwcmVzc2lvbihBbHRlcmVkVGFibGVJ bmZvICp0YWIsIFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkgKiBleHByZXNz aW9ucy4KIAkgKi8KIAlpZiAoYXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklS VFVBTCAmJgotCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCkp ICE9IE5JTCkKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwp LCBmYWxzZSkgIT0gTklMKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJBTFRFUiBUQUJMRSAvIFNFVCBF WFBSRVNTSU9OIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMg aW4gdGFibGVzIHRoYXQgYXJlIHBhcnQgb2YgYSBwdWJsaWNhdGlvbiIpLApAQCAtMTg4NDYsNyAr MTg4NDYsNyBAQCBBVFByZXBDaGFuZ2VQZXJzaXN0ZW5jZShBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwgYm9vbCB0b0xvZ2dlZCkKIAkgKiBVTkxPR0dFRCwgYXMgVU5MT0dHRUQg dGFibGVzIGNhbid0IGJlIHB1Ymxpc2hlZC4KIAkgKi8KIAlpZiAoIXRvTG9nZ2VkICYmCi0JCUdl dFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkgIT0gTklMKQorCQls aXN0X2xlbmd0aChHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCks IGZhbHNlKSkgPiAwKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coImNhbm5vdCBjaGFu Z2UgdGFibGUgXCIlc1wiIHRvIHVubG9nZ2VkIGJlY2F1c2UgaXQgaXMgcGFydCBvZiBhIHB1Ymxp Y2F0aW9uIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGE4YjlhZTYxODJkLi5mMjk3MGNjM2ZkZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CkBAIC00NTQsNiArNDU0LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQlU cmlnZ2VyVHJhbnNpdGlvbnMgVHJpZ2dlclJlZmVyZW5jaW5nCiAJCQkJdmFjdXVtX3JlbGF0aW9u X2xpc3Qgb3B0X3ZhY3V1bV9yZWxhdGlvbl9saXN0CiAJCQkJZHJvcF9vcHRpb25fbGlzdCBwdWJf b2JqX2xpc3QgcHViX2FsbF9vYmpfdHlwZV9saXN0CisJCQkJZXhjZXB0X3B1Yl9vYmpfbGlzdCBv cHRfZXhjZXB0X2NsYXVzZQogCiAldHlwZSA8cmV0Y2xhdXNlPiByZXR1cm5pbmdfY2xhdXNlCiAl dHlwZSA8bm9kZT4JcmV0dXJuaW5nX29wdGlvbgpAQCAtNTkxLDYgKzU5Miw3IEBAIHN0YXRpYyBO b2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2Vz LCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JdmFyX3ZhbHVlIHpvbmVfdmFsdWUKICV0eXBl IDxyb2xlc3BlYz4gYXV0aF9pZGVudCBSb2xlU3BlYyBvcHRfZ3JhbnRlZF9ieQogJXR5cGUgPHB1 YmxpY2F0aW9ub2JqZWN0c3BlYz4gUHVibGljYXRpb25PYmpTcGVjCisldHlwZSA8cHVibGljYXRp b25vYmplY3RzcGVjPiBFeGNlcHRQdWJsaWNhdGlvbk9ialNwZWMKICV0eXBlIDxwdWJsaWNhdGlv bmFsbG9iamVjdHNwZWM+IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogCiAldHlwZSA8a2V5d29yZD4g dW5yZXNlcnZlZF9rZXl3b3JkIHR5cGVfZnVuY19uYW1lX2tleXdvcmQKQEAgLTEwNzYxLDYgKzEw NzYzLDcgQEAgQ3JlYXRlUHVibGljYXRpb25TdG10OgogCQkJCQlDcmVhdGVQdWJsaWNhdGlvblN0 bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVQdWJsaWNhdGlvblN0bXQpOwogCiAJCQkJCW4tPnB1Ym5h bWUgPSAkMzsKKwkJCQkJbi0+cHVib2JqZWN0cyA9ICQ1OwogCQkJCQlwcmVwcm9jZXNzX3B1Yl9h bGxfb2JqdHlwZV9saXN0KCQ1LCAmbi0+Zm9yX2FsbF90YWJsZXMsCiAJCQkJCQkJCQkJCQkJJm4t PmZvcl9hbGxfc2VxdWVuY2VzLAogCQkJCQkJCQkJCQkJCXl5c2Nhbm5lcik7CkBAIC0xMDgwMSw2 ICsxMDgwNCw3IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1YnRhYmxlLT5yZWxh dGlvbiA9ICQyOwogCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAkMzsKIAkJCQkJJCQtPnB1 YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ0OworCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQl9 CiAJCQl8IFRBQkxFUyBJTl9QIFNDSEVNQSBDb2xJZAogCQkJCXsKQEAgLTEwODc3LDEwICsxMDg4 MSwxMyBAQCBwdWJfb2JqX2xpc3Q6CVB1YmxpY2F0aW9uT2JqU3BlYwogCTsKIAogUHVibGljYXRp b25BbGxPYmpTcGVjOgotCQkJCUFMTCBUQUJMRVMKKwkJCQlBTEwgVEFCTEVTIG9wdF9leGNlcHRf Y2xhdXNlCiAJCQkJCXsKIAkJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25BbGxPYmpTcGVj KTsKIAkJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05fQUxMX1RBQkxFUzsKKwkJCQkJ CSQkLT5leGNlcHRfb2JqZWN0cyA9IChMaXN0ICopICQzOworCQkJCQkJaWYoJCQtPmV4Y2VwdF9v YmplY3RzICE9IE5VTEwpCisJCQkJCQkJcHJlcHJvY2Vzc19wdWJvYmpfbGlzdCgkJC0+ZXhjZXB0 X29iamVjdHMsIHl5c2Nhbm5lcik7CiAJCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQkJfQog CQkJCXwgQUxMIFNFUVVFTkNFUwpAQCAtMTA4OTcsNiArMTA5MDQsMjggQEAgcHViX2FsbF9vYmpf dHlwZV9saXN0OglQdWJsaWNhdGlvbkFsbE9ialNwZWMKIAkJCQkJeyAkJCA9IGxhcHBlbmQoJDEs ICQzKTsgfQogCTsKIAorb3B0X2V4Y2VwdF9jbGF1c2U6CisJCQlFWENFUFQgb3B0X3RhYmxlICco JyBleGNlcHRfcHViX29ial9saXN0ICcpJwl7ICQkID0gJDQ7IH0KKwkJCXwgLypFTVBUWSovCQkJ CQkJCQkJCXsgJCQgPSBOSUw7IH0KKwkJOworCitFeGNlcHRQdWJsaWNhdGlvbk9ialNwZWM6CisJ CQkgcmVsYXRpb25fZXhwcgorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9i alNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJM RTsKKwkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CisJCQkJ CSQkLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlv biA9ICQxOworCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKKwkJCQl9CisJOworCitleGNlcHRfcHVi X29ial9saXN0OiBFeGNlcHRQdWJsaWNhdGlvbk9ialNwZWMKKwkJCQkJeyAkJCA9IGxpc3RfbWFr ZTEoJDEpOyB9CisJCQl8IGV4Y2VwdF9wdWJfb2JqX2xpc3QgJywnIEV4Y2VwdFB1YmxpY2F0aW9u T2JqU3BlYworCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJOwogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKICAqCkBAIC0xMDkxMyw2ICsxMDk0Miw4IEBAIHB1Yl9hbGxfb2JqX3R5cGVf bGlzdDoJUHVibGljYXRpb25BbGxPYmpTcGVjCiAgKgkJVEFCTEUgdGFibGVfbmFtZSBbLCAuLi5d CiAgKgkJVEFCTEVTIElOIFNDSEVNQSBzY2hlbWFfbmFtZSBbLCAuLi5dCiAgKgorICogQUxURVIg UFVCTElDQVRJT04gbmFtZSBBREQgQUxMIFRBQkxFUyBFWENFUFQgW1RBQkxFXSAodGFibGVfbmFt ZSBbLCAuLi5dKQorICoKICAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgUkVTRVQKICAqCiAgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCkBAIC0xMDk1Niw2ICsxMDk4NywxNSBAQCBBbHRlclB1YmxpY2F0 aW9uU3RtdDoKIAkJCQkJbi0+YWN0aW9uID0gQVBfRHJvcE9iamVjdHM7CiAJCQkJCSQkID0gKE5v ZGUgKikgbjsKIAkJCQl9CisJCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgQUREX1AgQUxMIFRB QkxFUyBvcHRfZXhjZXB0X2NsYXVzZQorCQkJCXsKKwkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQg Km4gPSBtYWtlTm9kZShBbHRlclB1YmxpY2F0aW9uU3RtdCk7CisJCQkJCW4tPnB1Ym5hbWUgPSAk MzsKKwkJCQkJbi0+cHVib2JqZWN0cyA9IChMaXN0ICopICQ3OworCQkJCQluLT5mb3JfYWxsX3Rh YmxlcyA9IHRydWU7CisJCQkJCW4tPmFjdGlvbiA9IEFQX0FkZE9iamVjdHM7CisJCQkJCSQkID0g KE5vZGUgKiluOworCQkJCX0KIAkJCXwgQUxURVIgUFVCTElDQVRJT04gbmFtZSBSRVNFVAogCQkJ CXsKIAkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShBbHRlclB1YmxpY2F0 aW9uU3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpp bmRleCA5NDJlMWFiZGI1OC4uYTk1OTNjNWQ5ZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMjA4NCw3ICsyMDg0LDggQEAgZ2V0X3JlbF9zeW5j X2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJaWYgKCFlbnRy eS0+cmVwbGljYXRlX3ZhbGlkKQogCXsKIAkJT2lkCQkJc2NoZW1hSWQgPSBnZXRfcmVsX25hbWVz cGFjZShyZWxpZCk7Ci0JCUxpc3QJICAgKnB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25z KHJlbGlkKTsKKwkJTGlzdAkgICAqcHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVs aWQsIGZhbHNlKTsKKwkJTGlzdAkgICAqZXhjZXB0VGFibGVQdWJpZHMgPSBHZXRSZWxhdGlvblB1 YmxpY2F0aW9ucyhyZWxpZCwgdHJ1ZSk7CiAKIAkJLyoKIAkJICogV2UgZG9uJ3QgYWNxdWlyZSBh IGxvY2sgb24gdGhlIG5hbWVzcGFjZSBzeXN0ZW0gdGFibGUgYXMgd2UgYnVpbGQKQEAgLTIxOTUs MjIgKzIxOTYsNiBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxh dGlvbiByZWxhdGlvbikKIAkJCU9pZAkJCXB1Yl9yZWxpZCA9IHJlbGlkOwogCQkJaW50CQkJYW5j ZXN0b3JfbGV2ZWwgPSAwOwogCi0JCQkvKgotCQkJICogSWYgdGhpcyBpcyBhIEZPUiBBTEwgVEFC TEVTIHB1YmxpY2F0aW9uLCBwaWNrIHRoZSBwYXJ0aXRpb24KLQkJCSAqIHJvb3QgYW5kIHNldCB0 aGUgYW5jZXN0b3IgbGV2ZWwgYWNjb3JkaW5nbHkuCi0JCQkgKi8KLQkJCWlmIChwdWItPmFsbHRh YmxlcykKLQkJCXsKLQkJCQlwdWJsaXNoID0gdHJ1ZTsKLQkJCQlpZiAocHViLT5wdWJ2aWFyb290 ICYmIGFtX3BhcnRpdGlvbikKLQkJCQl7Ci0JCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9w YXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKLQotCQkJCQlwdWJfcmVsaWQgPSBsbGFzdF9vaWQo YW5jZXN0b3JzKTsKLQkJCQkJYW5jZXN0b3JfbGV2ZWwgPSBsaXN0X2xlbmd0aChhbmNlc3RvcnMp OwotCQkJCX0KLQkJCX0KLQogCQkJaWYgKCFwdWJsaXNoKQogCQkJewogCQkJCWJvb2wJCWFuY2Vz dG9yX3B1Ymxpc2hlZCA9IGZhbHNlOwpAQCAtMjIyOSw3ICsyMjE0LDggQEAgZ2V0X3JlbF9zeW5j X2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAKIAkJCQkJYW5j ZXN0b3IgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1Yi0+b2lkLAogCQkJCQkJ CQkJCQkJCQkJICAgYW5jZXN0b3JzLAotCQkJCQkJCQkJCQkJCQkJICAgJmxldmVsKTsKKwkJCQkJ CQkJCQkJCQkJCSAgICZsZXZlbCwKKwkJCQkJCQkJCQkJCQkJCSAgIHB1Yi0+YWxsdGFibGVzKTsK IAogCQkJCQlpZiAoYW5jZXN0b3IgIT0gSW52YWxpZE9pZCkKIAkJCQkJewpAQCAtMjI0NCw2ICsy MjMwLDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24g cmVsYXRpb24pCiAKIAkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKHB1YmlkcywgcHViLT5vaWQpIHx8 CiAJCQkJCWxpc3RfbWVtYmVyX29pZChzY2hlbWFQdWJpZHMsIHB1Yi0+b2lkKSB8fAorCQkJCQko cHViLT5hbGx0YWJsZXMgJiYKKwkJCQkJICFsaXN0X21lbWJlcl9vaWQoZXhjZXB0VGFibGVQdWJp ZHMsIHB1Yi0+b2lkKSkgfHwKIAkJCQkJYW5jZXN0b3JfcHVibGlzaGVkKQogCQkJCQlwdWJsaXNo ID0gdHJ1ZTsKIAkJCX0KQEAgLTIzMjIsNiArMjMxMCw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQ R091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCiAJCWxpc3RfZnJlZShwdWJp ZHMpOwogCQlsaXN0X2ZyZWUoc2NoZW1hUHViaWRzKTsKKwkJbGlzdF9mcmVlKGV4Y2VwdFRhYmxl UHViaWRzKTsKIAkJbGlzdF9mcmVlKHJlbF9wdWJsaWNhdGlvbnMpOwogCiAJCWVudHJ5LT5yZXBs aWNhdGVfdmFsaWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggOTE1 ZDBiYzkwODQuLjk2ZGQwY2NmNDFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAg LTU3OTQsNiArNTc5NCw4IEBAIHZvaWQKIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVs YXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIHsKIAlMaXN0CSAgICpw dWJvaWRzOworCUxpc3QJICAgKmFsbHRhYmxlc3B1Ym9pZHM7CisJTGlzdAkgICAqZXhjZXB0cHVi b2lkcyA9IE5JTDsKIAlMaXN0Q2VsbCAgICpsYzsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlP aWQJCQlzY2hlbWFpZDsKQEAgLTU4MzEsOSArNTgzMywxMCBAQCBSZWxhdGlvbkJ1aWxkUHVibGlj YXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJ cHViZGVzYy0+Z2VuY29sc192YWxpZF9mb3JfZGVsZXRlID0gdHJ1ZTsKIAogCS8qIEZldGNoIHRo ZSBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICovCi0JcHVib2lkcyA9IEdldFJlbGF0aW9u UHVibGljYXRpb25zKHJlbGlkKTsKKwlwdWJvaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMo cmVsaWQsIGZhbHNlKTsKIAlzY2hlbWFpZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9u KTsKIAlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRTY2hlbWFQ dWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKKwlleGNlcHRwdWJvaWRzID0gR2V0UmVsYXRpb25QdWJs aWNhdGlvbnMocmVsaWQsIHRydWUpOwogCiAJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzcGFy dGl0aW9uKQogCXsKQEAgLTU4NDUsMTQgKzU4NDgsMTkgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0 aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCQkJ T2lkCQkJYW5jZXN0b3IgPSBsZmlyc3Rfb2lkKGxjKTsKIAogCQkJcHVib2lkcyA9IGxpc3RfY29u Y2F0X3VuaXF1ZV9vaWQocHVib2lkcywKLQkJCQkJCQkJCQkJIEdldFJlbGF0aW9uUHVibGljYXRp b25zKGFuY2VzdG9yKSk7CisJCQkJCQkJCQkJCSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNl c3RvciwgZmFsc2UpKTsKIAkJCXNjaGVtYWlkID0gZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3Ip OwogCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKIAkJCQkJCQkJ CQkJIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOworCQkJZXhjZXB0cHVib2lkcyA9 IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQoZXhjZXB0cHVib2lkcywKKwkJCQkJCQkJCQkJCSAgIEdl dFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yLCB0cnVlKSk7CiAJCX0KIAl9Ci0JcHVib2lk cyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywgR2V0QWxsVGFibGVzUHVibGljYXRp b25zKCkpOwogCisJYWxsdGFibGVzcHVib2lkcyA9IEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygp OworCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCisJCQkJCQkJCQkg bGlzdF9kaWZmZXJlbmNlX29pZChhbGx0YWJsZXNwdWJvaWRzLAorCQkJCQkJCQkJCQkJCQkgZXhj ZXB0cHVib2lkcykpOwogCWZvcmVhY2gobGMsIHB1Ym9pZHMpCiAJewogCQlPaWQJCQlwdWJpZCA9 IGxmaXJzdF9vaWQobGMpOwpAQCAtNTg4Myw3ICs1ODkxLDcgQEAgUmVsYXRpb25CdWlsZFB1Ymxp Y2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQog CQlpZiAoIXB1YmZvcm0tPnB1YmFsbHRhYmxlcyAmJgogCQkJKHB1YmZvcm0tPnB1YnVwZGF0ZSB8 fCBwdWJmb3JtLT5wdWJkZWxldGUpICYmCiAJCQlwdWJfcmZfY29udGFpbnNfaW52YWxpZF9jb2x1 bW4ocHViaWQsIHJlbGF0aW9uLCBhbmNlc3RvcnMsCi0JCQkJCQkJCQkJICAgcHViZm9ybS0+cHVi dmlhcm9vdCkpCisJCQkJCQkJCQkJICAgcHViZm9ybS0+cHVidmlhcm9vdCwgcHViZm9ybS0+cHVi YWxsdGFibGVzKSkKIAkJewogCQkJaWYgKHB1YmZvcm0tPnB1YnVwZGF0ZSkKIAkJCQlwdWJkZXNj LT5yZl92YWxpZF9mb3JfdXBkYXRlID0gZmFsc2U7CkBAIC01OTAxLDYgKzU5MDksNyBAQCBSZWxh dGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRl c2MgKnB1YmRlc2MpCiAJCQlwdWJfY29udGFpbnNfaW52YWxpZF9jb2x1bW4ocHViaWQsIHJlbGF0 aW9uLCBhbmNlc3RvcnMsCiAJCQkJCQkJCQkJcHViZm9ybS0+cHVidmlhcm9vdCwKIAkJCQkJCQkJ CQlwdWJmb3JtLT5wdWJnZW5jb2xzLAorCQkJCQkJCQkJCXB1YmZvcm0tPnB1YmFsbHRhYmxlcywK IAkJCQkJCQkJCQkmaW52YWxpZF9jb2x1bW5fbGlzdCwKIAkJCQkJCQkJCQkmaW52YWxpZF9nZW5f Y29sKSkKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggYTAwOTE4YmFjYjQuLmUzNGFhYmE3OTM3IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKQEAgLTE4Niw2ICsxODYsOCBAQCBzdGF0aWMgU2ltcGxlT2lkTGlzdCBleHRlbnNp b25faW5jbHVkZV9vaWRzID0ge05VTEwsIE5VTEx9Owogc3RhdGljIFNpbXBsZVN0cmluZ0xpc3Qg ZXh0ZW5zaW9uX2V4Y2x1ZGVfcGF0dGVybnMgPSB7TlVMTCwgTlVMTH07CiBzdGF0aWMgU2ltcGxl T2lkTGlzdCBleHRlbnNpb25fZXhjbHVkZV9vaWRzID0ge05VTEwsIE5VTEx9OwogCitzdGF0aWMg U2ltcGxlUHRyTGlzdCBleGNlcHRpbmZvID0ge05VTEwsIE5VTEx9OworCiBzdGF0aWMgY29uc3Qg Q2F0YWxvZ0lkIG5pbENhdGFsb2dJZCA9IHswLCAwfTsKIAogLyogb3ZlcnJpZGUgZm9yIHN0YW5k YXJkIGV4dHJhX2Zsb2F0X2RpZ2l0cyBzZXR0aW5nICovCkBAIC00NjYyLDcgKzQ2NjQsMzQgQEAg ZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAqcHVi aW5mbykKIAlpZiAocHViaW5mby0+cHViYWxsdGFibGVzICYmIHB1YmluZm8tPnB1YmFsbHNlcXVl bmNlcykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFMTCBUQUJMRVMsIEFM TCBTRVFVRU5DRVMiKTsKIAllbHNlIGlmIChwdWJpbmZvLT5wdWJhbGx0YWJsZXMpCisJeworCQlT aW1wbGVQdHJMaXN0Q2VsbCAqY2VsbDsKKwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwg IiBGT1IgQUxMIFRBQkxFUyIpOworCisJCS8qIEluY2x1ZGUgZXhjZXB0aW9uIHRhYmxlcyBpZiB0 aGUgcHVibGljYXRpb24gaGFzIGV4Y2VwdCB0YWJsZXMgKi8KKwkJZm9yIChjZWxsID0gZXhjZXB0 aW5mby5oZWFkOyBjZWxsOyBjZWxsID0gY2VsbC0+bmV4dCkKKwkJeworCQkJUHVibGljYXRpb25S ZWxJbmZvICpwdWJyaW5mbyA9IChQdWJsaWNhdGlvblJlbEluZm8gKikgY2VsbC0+cHRyOworCQkJ VGFibGVJbmZvICAqdGJpbmZvOworCisJCQlpZiAocHViaW5mbyA9PSBwdWJyaW5mby0+cHVibGlj YXRpb24pCisJCQl7CisJCQkJdGJpbmZvID0gcHVicmluZm8tPnB1YnRhYmxlOworCisJCQkJaWYg KGZpcnN0KQorCQkJCXsKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRVhDRVBU IFRBQkxFICgiKTsKKwkJCQkJZmlyc3QgPSBmYWxzZTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgIik7CisJCQkJYXBwZW5kUFFFeHBCdWZmZXIo cXVlcnksICJPTkxZICVzIiwgZm10UXVhbGlmaWVkRHVtcGFibGUodGJpbmZvKSk7CisJCQl9CisJ CX0KKwkJaWYgKCFmaXJzdCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiKSIpOwor CX0KIAllbHNlIGlmIChwdWJpbmZvLT5wdWJhbGxzZXF1ZW5jZXMpCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgU0VRVUVOQ0VTIik7CiAKQEAgLTQ4MzEsNiArNDg2MCw3 IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZv W10sIGludCBudW1UYWJsZXMpCiAJaW50CQkJaV9wcnJlbGlkOwogCWludAkJCWlfcHJyZWxxdWFs OwogCWludAkJCWlfcHJhdHRyczsKKwlpbnQJCQlpX3ByZXhjZXB0OwogCWludAkJCWksCiAJCQkJ aiwKIAkJCQludHVwczsKQEAgLTQ4NDIsOCArNDg3MiwxNiBAQCBnZXRQdWJsaWNhdGlvblRhYmxl cyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCiAJ LyogQ29sbGVjdCBhbGwgcHVibGljYXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwogCWlmIChmb3V0 LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LAorCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQsXG4i KTsKKworCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxOTAwMDApCisJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiBwcmV4Y2VwdCxcbiIpOworCQllbHNlCisJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiBmYWxzZSBBUyBwcmV4Y2VwdCxcbiIpOworCiAJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHVi aWQsIHBycmVsaWQsICIKIAkJCQkJCQkgInBnX2NhdGFsb2cucGdfZ2V0X2V4cHIocHJxdWFsLCBw cnJlbGlkKSBBUyBwcnJlbHF1YWwsICIKIAkJCQkJCQkgIihDQVNFXG4iCiAJCQkJCQkJICIgIFdI RU4gcHIucHJhdHRycyBJUyBOT1QgTlVMTCBUSEVOXG4iCkBAIC00ODU0LDYgKzQ4OTIsNyBAQCBn ZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBp bnQgbnVtVGFibGVzKQogCQkJCQkJCSAiICAgICAgV0hFUkUgYXR0cmVsaWQgPSBwci5wcnJlbGlk IEFORCBhdHRudW0gPSBwcmF0dHJzW3NdKVxuIgogCQkJCQkJCSAiICBFTFNFIE5VTEwgRU5EKSBw cmF0dHJzICIKIAkJCQkJCQkgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIi KTsKKwl9CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNF TEVDVCB0YWJsZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAiCkBAIC00ODY5LDYgKzQ5MDgs NyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5m b1tdLCBpbnQgbnVtVGFibGVzKQogCWlfcHJyZWxpZCA9IFBRZm51bWJlcihyZXMsICJwcnJlbGlk Iik7CiAJaV9wcnJlbHF1YWwgPSBQUWZudW1iZXIocmVzLCAicHJyZWxxdWFsIik7CiAJaV9wcmF0 dHJzID0gUFFmbnVtYmVyKHJlcywgInByYXR0cnMiKTsKKwlpX3ByZXhjZXB0ID0gUFFmbnVtYmVy KHJlcywgInByZXhjZXB0Iik7CiAKIAkvKiB0aGlzIGFsbG9jYXRpb24gbWF5IGJlIG1vcmUgdGhh biB3ZSBuZWVkICovCiAJcHVicmluZm8gPSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoUHVibGlj YXRpb25SZWxJbmZvKSk7CkBAIC00ODgwLDYgKzQ5MjAsNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxl cyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQlP aWQJCQlwcnJlbGlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3BycmVsaWQpKTsKIAkJ UHVibGljYXRpb25JbmZvICpwdWJpbmZvOwogCQlUYWJsZUluZm8gICp0YmluZm87CisJCWNoYXIJ ICAgKnByZXhjZXB0ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ByZXhjZXB0KSk7 CiAKIAkJLyoKIAkJICogSWdub3JlIGFueSBlbnRyaWVzIGZvciB3aGljaCB3ZSBhcmVuJ3QgaW50 ZXJlc3RlZCBpbiBlaXRoZXIgdGhlCkBAIC00ODkzLDcgKzQ5MzQsMTEgQEAgZ2V0UHVibGljYXRp b25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxl cykKIAkJCWNvbnRpbnVlOwogCiAJCS8qIE9LLCBtYWtlIGEgRHVtcGFibGVPYmplY3QgZm9yIHRo aXMgcmVsYXRpb25zaGlwICovCi0JCXB1YnJpbmZvW2pdLmRvYmoub2JqVHlwZSA9IERPX1BVQkxJ Q0FUSU9OX1JFTDsKKwkJaWYgKHN0cmNtcChwcmV4Y2VwdCwgImYiKSA9PSAwKQorCQkJcHVicmlu Zm9bal0uZG9iai5vYmpUeXBlID0gRE9fUFVCTElDQVRJT05fUkVMOworCQllbHNlCisJCQlwdWJy aW5mb1tqXS5kb2JqLm9ialR5cGUgPSBET19QVUJMSUNBVElPTl9FWENFUFRfUkVMOworCiAJCXB1 YnJpbmZvW2pdLmRvYmouY2F0SWQudGFibGVvaWQgPQogCQkJYXRvb2lkKFBRZ2V0dmFsdWUocmVz LCBpLCBpX3RhYmxlb2lkKSk7CiAJCXB1YnJpbmZvW2pdLmRvYmouY2F0SWQub2lkID0gYXRvb2lk KFBRZ2V0dmFsdWUocmVzLCBpLCBpX29pZCkpOwpAQCAtNDkzNCw2ICs0OTc5LDkgQEAgZ2V0UHVi bGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51 bVRhYmxlcykKIAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNl bGVjdER1bXBhYmxlUHVibGljYXRpb25PYmplY3QoJihwdWJyaW5mb1tqXS5kb2JqKSwgZm91dCk7 CiAKKwkJaWYgKHN0cmNtcChwcmV4Y2VwdCwgInQiKSA9PSAwKQorCQkJc2ltcGxlX3B0cl9saXN0 X2FwcGVuZCgmZXhjZXB0aW5mbywgJnB1YnJpbmZvW2pdKTsKKwogCQlqKys7CiAJfQogCkBAIC0x MTgxMiw2ICsxMTg2MCw5IEBAIGR1bXBEdW1wYWJsZU9iamVjdChBcmNoaXZlICpmb3V0LCBEdW1w YWJsZU9iamVjdCAqZG9iaikKIAkJY2FzZSBET19QVUJMSUNBVElPTjoKIAkJCWR1bXBQdWJsaWNh dGlvbihmb3V0LCAoY29uc3QgUHVibGljYXRpb25JbmZvICopIGRvYmopOwogCQkJYnJlYWs7CisJ CWNhc2UgRE9fUFVCTElDQVRJT05fRVhDRVBUX1JFTDoKKwkJCS8qIHdpbGwgYmUgZHVtcGVkIGlu IGR1bXBQdWJsaWNhdGlvbiAqLworCQkJYnJlYWs7CiAJCWNhc2UgRE9fUFVCTElDQVRJT05fUkVM OgogCQkJZHVtcFB1YmxpY2F0aW9uVGFibGUoZm91dCwgKGNvbnN0IFB1YmxpY2F0aW9uUmVsSW5m byAqKSBkb2JqKTsKIAkJCWJyZWFrOwpAQCAtMjAxODIsNiArMjAyMzMsNyBAQCBhZGRCb3VuZGFy eURlcGVuZGVuY2llcyhEdW1wYWJsZU9iamVjdCAqKmRvYmpzLCBpbnQgbnVtT2JqcywKIAkJCWNh c2UgRE9fREVGQVVMVF9BQ0w6CiAJCQljYXNlIERPX1BPTElDWToKIAkJCWNhc2UgRE9fUFVCTElD QVRJT046CisJCQljYXNlIERPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUw6CiAJCQljYXNlIERPX1BV QkxJQ0FUSU9OX1JFTDoKIAkJCWNhc2UgRE9fUFVCTElDQVRJT05fVEFCTEVfSU5fU0NIRU1BOgog CQkJY2FzZSBET19TVUJTQ1JJUFRJT046CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA3MmEwMGUxYmMyMC4uNzIz YjU1NzVjNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtODEsNiArODEsNyBAQCB0eXBlZGVmIGVudW0KIAlE T19SRUZSRVNIX01BVFZJRVcsCiAJRE9fUE9MSUNZLAogCURPX1BVQkxJQ0FUSU9OLAorCURPX1BV QkxJQ0FUSU9OX0VYQ0VQVF9SRUwsCiAJRE9fUFVCTElDQVRJT05fUkVMLAogCURPX1BVQkxJQ0FU SU9OX1RBQkxFX0lOX1NDSEVNQSwKIAlET19SRUxfU1RBVFMsCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMK aW5kZXggMTY0Yzc2ZTA4NjQuLmYzYzMwZjNiZTM3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcF9zb3J0LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBA IC05Miw2ICs5Miw3IEBAIGVudW0gZGJPYmplY3RUeXBlUHJpb3JpdGllcwogCVBSSU9fRktfQ09O U1RSQUlOVCwKIAlQUklPX1BPTElDWSwKIAlQUklPX1BVQkxJQ0FUSU9OLAorCVBSSU9fUFVCTElD QVRJT05fRVhDRVBUX1JFTCwKIAlQUklPX1BVQkxJQ0FUSU9OX1JFTCwKIAlQUklPX1BVQkxJQ0FU SU9OX1RBQkxFX0lOX1NDSEVNQSwKIAlQUklPX1NVQlNDUklQVElPTiwKQEAgLTE0Nyw2ICsxNDgs NyBAQCBzdGF0aWMgY29uc3QgaW50IGRiT2JqZWN0VHlwZVByaW9yaXR5W10gPQogCVtET19SRUZS RVNIX01BVFZJRVddID0gUFJJT19SRUZSRVNIX01BVFZJRVcsCiAJW0RPX1BPTElDWV0gPSBQUklP X1BPTElDWSwKIAlbRE9fUFVCTElDQVRJT05dID0gUFJJT19QVUJMSUNBVElPTiwKKwlbRE9fUFVC TElDQVRJT05fRVhDRVBUX1JFTF0gPSBQUklPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUwsCiAJW0RP X1BVQkxJQ0FUSU9OX1JFTF0gPSBQUklPX1BVQkxJQ0FUSU9OX1JFTCwKIAlbRE9fUFVCTElDQVRJ T05fVEFCTEVfSU5fU0NIRU1BXSA9IFBSSU9fUFVCTElDQVRJT05fVEFCTEVfSU5fU0NIRU1BLAog CVtET19SRUxfU1RBVFNdID0gUFJJT19TVEFUSVNUSUNTX0RBVEFfREFUQSwKQEAgLTQ0Myw2ICs0 NDUsMTcgQEAgRE9UeXBlTmFtZUNvbXBhcmUoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAy KQogCQlpZiAoY21wdmFsICE9IDApCiAJCQlyZXR1cm4gY21wdmFsOwogCX0KKwllbHNlIGlmIChv YmoxLT5vYmpUeXBlID09IERPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUwpCisJeworCQlQdWJsaWNh dGlvblJlbEluZm8gKnByb2JqMSA9ICooUHVibGljYXRpb25SZWxJbmZvICpjb25zdCAqKSBwMTsK KwkJUHVibGljYXRpb25SZWxJbmZvICpwcm9iajIgPSAqKFB1YmxpY2F0aW9uUmVsSW5mbyAqY29u c3QgKikgcDI7CisKKwkJLyogU29ydCBieSBwdWJsaWNhdGlvbiBuYW1lLCBzaW5jZSAobmFtZXNw YWNlLCBuYW1lKSBtYXRjaCB0aGUgcmVsICovCisJCWNtcHZhbCA9IHN0cmNtcChwcm9iajEtPnB1 YmxpY2F0aW9uLT5kb2JqLm5hbWUsCisJCQkJCQlwcm9iajItPnB1YmxpY2F0aW9uLT5kb2JqLm5h bWUpOworCQlpZiAoY21wdmFsICE9IDApCisJCQlyZXR1cm4gY21wdmFsOworCX0KIAllbHNlIGlm IChvYmoxLT5vYmpUeXBlID09IERPX1BVQkxJQ0FUSU9OX1RBQkxFX0lOX1NDSEVNQSkKIAl7CiAJ CVB1YmxpY2F0aW9uU2NoZW1hSW5mbyAqcHNvYmoxID0gKihQdWJsaWNhdGlvblNjaGVtYUluZm8g KmNvbnN0ICopIHAxOwpAQCAtMTcxNSw2ICsxNzI4LDExIEBAIGRlc2NyaWJlRHVtcGFibGVPYmpl Y3QoRHVtcGFibGVPYmplY3QgKm9iaiwgY2hhciAqYnVmLCBpbnQgYnVmc2l6ZSkKIAkJCQkJICJQ VUJMSUNBVElPTiAoSUQgJWQgT0lEICV1KSIsCiAJCQkJCSBvYmotPmR1bXBJZCwgb2JqLT5jYXRJ ZC5vaWQpOwogCQkJcmV0dXJuOworCQljYXNlIERPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUw6CisJ CQlzbnByaW50ZihidWYsIGJ1ZnNpemUsCisJCQkJCSAiUFVCTElDQVRJT04gRVhDRVBUIFRBQkxF IChJRCAlZCBPSUQgJXUpIiwKKwkJCQkJIG9iai0+ZHVtcElkLCBvYmotPmNhdElkLm9pZCk7CisJ CQlyZXR1cm47CiAJCWNhc2UgRE9fUFVCTElDQVRJT05fUkVMOgogCQkJc25wcmludGYoYnVmLCBi dWZzaXplLAogCQkJCQkgIlBVQkxJQ0FUSU9OIFRBQkxFIChJRCAlZCBPSUQgJXUpIiwKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1w L3QvMDAyX3BnX2R1bXAucGwKaW5kZXggNDQ1YTU0MWFiZjYuLjE1NjMxOWI4MDM4IDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1 bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMzE3MCw2ICszMTcwLDI2IEBAIG15ICV0ZXN0cyA9ICgK IAkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCiAJfSwK IAorCSdDUkVBVEUgUFVCTElDQVRJT04gcHViOCcgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTAs CisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjggRk9SIEFMTCBU QUJMRVMgRVhDRVBUIChkdW1wX3Rlc3QudGVzdF90YWJsZSk7JywKKwkJcmVnZXhwID0+IHFyL14K KwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjggRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxF IChPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlKSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBk YXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1 bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKworCSdDUkVBVEUgUFVCTElDQVRJ T04gcHViOScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTAsCisJCWNyZWF0ZV9zcWwgPT4KKwkJ ICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChk dW1wX3Rlc3QudGVzdF90YWJsZSwgZHVtcF90ZXN0LnRlc3Rfc2Vjb25kX3RhYmxlKTsnLAorCQly ZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViOSBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUgKE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGUsIE9OTFkgZHVtcF90ZXN0 LnRlc3Rfc2Vjb25kX3RhYmxlKSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxl dGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rp b25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKwogCSdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEn ID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgU1VC U0NSSVBUSU9OIHN1YjEKQEAgLTUxNTcsNyArNTE3Nyw3IEBAIGZvcmVhY2ggbXkgJHJ1biAoc29y dCBrZXlzICVwZ2R1bXBfcnVucykKIAkJIwogCQkjIEVpdGhlciAiYWxsX3J1bnMiIHNob3VsZCBi ZSBzZXQgb3IgdGhlcmUgc2hvdWxkIGJlIGEgImxpa2UiIGxpc3QsCiAJCSMgZXZlbiBpZiBpdCBp cyBlbXB0eS4gIChUaGlzIG1ha2VzIHRoZSB0ZXN0IG1vcmUgc2VsZi1kb2N1bWVudGluZy4pCi0J CWlmICghZGVmaW5lZCgkdGVzdHN7JHRlc3R9LT57YWxsX3J1bnN9KQorCQlpZiAoICAgIWRlZmlu ZWQoJHRlc3RzeyR0ZXN0fS0+e2FsbF9ydW5zfSkKIAkJCSYmICFkZWZpbmVkKCR0ZXN0c3skdGVz dH0tPntsaWtlfSkpCiAJCXsKIAkJCWRpZSAibWlzc2luZyBcImxpa2VcIiBpbiB0ZXN0IFwiJHRl c3RcIiI7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCmluZGV4IDM2ZjI0NTAyODQyLi41MGIxZDQzNTM1OSAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAg LTMwNzMsMTcgKzMwNzMsMzQgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAq c2NoZW1hbmFtZSwKIAkJCQkJCQkJICAiICAgICAgICAgIFdIRVJFIGF0dHJlbGlkID0gcHIucHJy ZWxpZCBBTkQgYXR0bnVtID0gcHJhdHRyc1tzXSlcbiIKIAkJCQkJCQkJICAiICAgICAgICBFTFNF IE5VTEwgRU5EKSAiCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBw XG4iCi0JCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBw ciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIKLQkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFs b2cucGdfY2xhc3MgYyBPTiBjLm9pZCA9IHByLnBycmVsaWRcbiIKLQkJCQkJCQkJICAiV0hFUkUg cHIucHJyZWxpZCA9ICclcydcbiIKKwkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfcHVi bGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgorCQkJCQkJCQkgICIJCUpP SU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgorCQkJCQkJ CQkgICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIiwKKwkJCQkJCQkJICBvaWQsIG9pZCwgb2lk KTsKKworCQkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmJ1ZiwgIiBBTkQgTk9UIHByLnByZXhjZXB0XG4iKTsKKworCQkJCWFwcGVuZFBR RXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJCSAgIlVOSU9OXG4iCiAJCQkJCQkJCSAgIlNFTEVDVCBw dWJuYW1lXG4iCi0JCQkJCQkJCSAgIiAgICAgLCBOVUxMXG4iCi0JCQkJCQkJCSAgIiAgICAgLCBO VUxMXG4iCisJCQkJCQkJCSAgIgkJLCBOVUxMXG4iCisJCQkJCQkJCSAgIgkJLCBOVUxMXG4iCiAJ CQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCi0JCQkJCQkJCSAg IldIRVJFIHAucHViYWxsdGFibGVzIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxp c2hhYmxlKCclcycpXG4iCi0JCQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKLQkJCQkJCQkJICBvaWQs IG9pZCwgb2lkLCBvaWQpOworCQkJCQkJCQkgICJXSEVSRSBwLnB1YmFsbHRhYmxlcyBBTkQgcGdf Y2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKVxuIiwKKwkJCQkJCQkJICBv aWQpOworCisJCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJCQlhcHBlbmRQUUV4 cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkJICAiICAgICBBTkQgTk9UIEVYSVNUUyAoXG4iCisJCQkJ CQkJCQkgICIJCVNFTEVDVCAxXG4iCisJCQkJCQkJCQkgICIJCUZST00gcGdfY2F0YWxvZy5wZ19w dWJsaWNhdGlvbl9yZWwgcHJcbiIKKwkJCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX2Ns YXNzIHBjXG4iCisJCQkJCQkJCQkgICIJCU9OIHByLnBycmVsaWQgPSBwYy5vaWRcbiIKKwkJCQkJ CQkJCSAgIgkJV0hFUkUgcHIucHJyZWxpZCA9ICclcycgQU5EIHByLnBycHViaWQgPSBwLm9pZClc biIsCisJCQkJCQkJCQkgIG9pZCk7CisKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAi T1JERVIgQlkgMTsiKTsKIAkJCX0KIAkJCWVsc2UKIAkJCXsKQEAgLTY3NTMsOCArNjc3MCwxMiBA QCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQkJCSAgIiAg ICAgcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHJcbiIKIAkJCQkJCQkgICJXSEVSRSBj LnJlbG5hbWVzcGFjZSA9IG4ub2lkXG4iCiAJCQkJCQkJICAiICBBTkQgYy5vaWQgPSBwci5wcnJl bGlkXG4iCi0JCQkJCQkJICAiICBBTkQgcHIucHJwdWJpZCA9ICclcydcbiIKLQkJCQkJCQkgICJP UkRFUiBCWSAxLDIiLCBwdWJpZCk7CisJCQkJCQkJICAiICBBTkQgcHIucHJwdWJpZCA9ICclcydc biIsIHB1YmlkKTsKKworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJCWFwcGVu ZFBRRXhwQnVmZmVyKCZidWYsICIgIEFORCBOT1QgcHIucHJleGNlcHRcbiIpOworCisJCQlhcHBl bmRQUUV4cEJ1ZmZlcigmYnVmLCAiT1JERVIgQlkgMSwyIik7CiAJCQlpZiAoIWFkZEZvb3RlclRv UHVibGljYXRpb25EZXNjKCZidWYsIF8oIlRhYmxlczoiKSwgZmFsc2UsICZjb250KSkKIAkJCQln b3RvIGVycm9yX3JldHVybjsKIApAQCAtNjc3Miw2ICs2NzkzLDIzIEBAIGRlc2NyaWJlUHVibGlj YXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJ fQogCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJ eworCQkJCS8qIEdldCB0aGUgZXhjbHVkZWQgdGFibGVzIGZvciB0aGUgc3BlY2lmaWVkIHB1Ymxp Y2F0aW9uICovCisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiU0VMRUNU IGNvbmNhdChjLnJlbG5hbWVzcGFjZTo6cmVnbmFtZXNwYWNlLCAnLicsIGMucmVsbmFtZSlcbiIK KwkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiIKKwkJCQkJCQkJICAiICAg ICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIGMub2lkID0gcHIucHJy ZWxpZFxuIgorCQkJCQkJCQkgICJXSEVSRSBwci5wcnB1YmlkID0gJyVzJ1xuIgorCQkJCQkJCQkg ICIgIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCQkgICJPUkRFUiBCWSAxIiwgcHViaWQpOwor CQkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1ZiwgXygiRXhjZXB0IHRhYmxl czoiKSwKKwkJCQkJCQkJCQkJCXRydWUsICZjb250KSkKKwkJCQkJZ290byBlcnJvcl9yZXR1cm47 CisJCQl9CisJCX0KIAogCQlwcmludFRhYmxlKCZjb250LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2Us IHBzZXQubG9nZmlsZSk7CiAJCXByaW50VGFibGVDbGVhbnVwKCZjb250KTsKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYwppbmRleCA1ZDkxOGFiYWE4Ny4uYjM3NmM0MDBjNjkgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKQEAgLTIyOTIsMTEgKzIyOTIsMTYgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBh dHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEgoIkFERCIsICJEUk9QIiwgIk9XTkVSIFRPIiwgIlJF TkFNRSBUTyIsICJSRVNFVCIsICJTRVQiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4g QUREICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkFERCIpKQotCQlDT01QTEVURV9XSVRIKCJUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7 CisJCUNPTVBMRVRFX1dJVEgoIkFMTCBUQUJMRVMiLCAiVEFCTEVTIElOIFNDSEVNQSIsICJUQUJM RSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJBREQiLCAiQUxMIiwgIlRBQkxFUyIpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQgVEFCTEUi KTsKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAi QUREfFNFVCIsICJUQUJMRSIpKQogCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9m b3JfbGlzdF9vZl90YWJsZXMpOwotCWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJBTFRFUiIsICJQVUJM SUNBVElPTiIsIE1hdGNoQW55LCAiQUREfFNFVCIsICJUQUJMRSIpICYmCi0JCQkgZW5kc193aXRo KHByZXZfd2QsICcsJykpCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkFERCIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIpKQor CQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOwor CWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAi QUREfFNFVCIsICJUQUJMRSIpICYmIGVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVU RV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOworCWVsc2UgaWYg KEhlYWRNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIiwgIkFM TCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIikgJiYgZW5kc193aXRoKHByZXZfd2QsICcs JykpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxl cyk7CiAKIAkvKgpAQCAtMzYyMyw2ICszNjI4LDEwIEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGlu dCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCAiRk9SIiwgIkFMTCIpKQogCQlDT01QTEVURV9XSVRIKCJUQUJMRVMiLCAiU0VR VUVOQ0VTIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0 Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQg VEFCTEUiLCAiV0lUSCAoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiKSkKKwkJQ09N UExFVEVfV0lUSCgiVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElD QVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJM RSIsIE1hdGNoQW55KSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCiAJCUNPTVBMRVRFX1dJ VEgoIldJVEggKCIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIpKQogCQlDT01QTEVURV9XSVRIKCJJTiBTQ0hFTUEi KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCA3N2IwYTJmOWViOC4uMGQz OWNiNjc3NzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24u aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE0NiwxMSAr MTQ2LDEyIEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uUmVsSW5mbwogCVJlbGF0aW9uCXJl bGF0aW9uOwogCU5vZGUJICAgKndoZXJlQ2xhdXNlOwogCUxpc3QJICAgKmNvbHVtbnM7CisJYm9v bAkJZXhjZXB0OwogfSBQdWJsaWNhdGlvblJlbEluZm87CiAKIGV4dGVybiBQdWJsaWNhdGlvbiAq R2V0UHVibGljYXRpb24oT2lkIHB1YmlkKTsKIGV4dGVybiBQdWJsaWNhdGlvbiAqR2V0UHVibGlj YXRpb25CeU5hbWUoY29uc3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKLWV4dGVy biBMaXN0ICpHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpOworZXh0ZXJuIExpc3Qg KkdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCwgYm9vbCBleGNlcHRfZmxhZyk7CiAK IC8qIGRlZmF1bHQgdmFsdWVzIGZvciBmbGFncyBhbmQgcHVibGljYXRpb24gcGFyYW1ldGVycyAq LwogI2RlZmluZSBQVUJfREVGQVVMVF9BQ1RJT05fSU5TRVJUIHRydWUKQEAgLTE3OCw5ICsxNzks MTAgQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uUGFydE9wdAogCVBVQkxJQ0FUSU9OX1BBUlRf QUxMLAogfSBQdWJsaWNhdGlvblBhcnRPcHQ7CiAKLWV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlv blJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7Citl eHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlv blBhcnRPcHQgcHViX3BhcnRvcHQsCisJCQkJCQkJCQkgYm9vbCBleGNlcHRfZmxhZyk7CiBleHRl cm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpOwotZXh0ZXJuIExpc3QgKkdl dEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KTsK K2V4dGVybiBMaXN0ICpHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIg cmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KTsKIGV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblNj aGVtYXMoT2lkIHB1YmlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lk IHNjaGVtYWlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhP aWQgc2NoZW1haWQsCkBAIC0xOTEsNyArMTkzLDcgQEAgZXh0ZXJuIExpc3QgKkdldFB1YlBhcnRp dGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQsCiAJCQkJCQkJCQkJCVB1YmxpY2F0aW9u UGFydE9wdCBwdWJfcGFydG9wdCwKIAkJCQkJCQkJCQkJT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJ R2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3Rv cnMsCi0JCQkJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwpOworCQkJCQkJCQkJCQlpbnQgKmFu Y2VzdG9yX2xldmVsLCBib29sIHB1YmFsbHRhYmxlcyk7CiAKIGV4dGVybiBib29sIGlzX3B1Ymxp c2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gYm9vbCBpc19zY2hlbWFfcHVi bGljYXRpb24oT2lkIHB1YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHVibGljYXRpb25fcmVsLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3Jl bC5oCmluZGV4IDkyY2MzNmRmZGY2Li5lN2Q3ZjNiYTg1YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uX3JlbC5oCkBAIC0zMSw2ICszMSw3IEBAIENBVEFMT0cocGdfcHVibGlj YXRpb25fcmVsLDYxMDYsUHVibGljYXRpb25SZWxSZWxhdGlvbklkKQogCU9pZAkJCW9pZDsJCQkv KiBvaWQgKi8KIAlPaWQJCQlwcnB1YmlkIEJLSV9MT09LVVAocGdfcHVibGljYXRpb24pOyAvKiBP aWQgb2YgdGhlIHB1YmxpY2F0aW9uICovCiAJT2lkCQkJcHJyZWxpZCBCS0lfTE9PS1VQKHBnX2Ns YXNzKTsJLyogT2lkIG9mIHRoZSByZWxhdGlvbiAqLworCWJvb2wJCXByZXhjZXB0IEJLSV9ERUZB VUxUKGYpOwkvKiBleGNsdWRlIHRoZSByZWxhdGlvbiAqLwogCiAjaWZkZWYJQ0FUQUxPR19WQVJM RU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAlwZ19ub2RlX3Ry ZWUgcHJxdWFsOwkJLyogcXVhbGlmaWNhdGlvbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGlj YXRpb25jbWRzLmgKaW5kZXggZjkwY2YxZWY4OTYuLjBhZDVkMjg3NTRkIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaApAQCAtMzIsMTAgKzMyLDExIEBAIGV4dGVybiBPYmpl Y3RBZGRyZXNzIEFsdGVyUHVibGljYXRpb25Pd25lcihjb25zdCBjaGFyICpuYW1lLCBPaWQgbmV3 T3duZXJJZCk7CiBleHRlcm4gdm9pZCBBbHRlclB1YmxpY2F0aW9uT3duZXJfb2lkKE9pZCBwdWJp ZCwgT2lkIG5ld093bmVySWQpOwogZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZVB1YmxpY2F0aW9uUmVs cyhMaXN0ICpyZWxpZHMpOwogZXh0ZXJuIGJvb2wgcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29s dW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sCi0JCQkJCQkJCQkJICAgTGlzdCAqYW5j ZXN0b3JzLCBib29sIHB1YnZpYXJvb3QpOworCQkJCQkJCQkJCSAgIExpc3QgKmFuY2VzdG9ycywg Ym9vbCBwdWJ2aWFyb290LAorCQkJCQkJCQkJCSAgIGJvb2wgcHViYWxsdGFibGVzKTsKIGV4dGVy biBib29sIHB1Yl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJl bGF0aW9uLAogCQkJCQkJCQkJCUxpc3QgKmFuY2VzdG9ycywgYm9vbCBwdWJ2aWFyb290LAotCQkJ CQkJCQkJCWNoYXIgcHViZ2VuY29sc190eXBlLAorCQkJCQkJCQkJCWNoYXIgcHViZ2VuY29sc190 eXBlLCBib29sIHB1YmFsbHRhYmxlcywKIAkJCQkJCQkJCQlib29sICppbnZhbGlkX2NvbHVtbl9s aXN0LAogCQkJCQkJCQkJCWJvb2wgKmludmFsaWRfZ2VuX2NvbCk7CiBleHRlcm4gdm9pZCBJbnZh bGlkYXRlUHViUmVsU3luY0NhY2hlKE9pZCBwdWJpZCwgYm9vbCBwdWJhbGx0YWJsZXMpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDhjZjc1NzI0YTdiLi5hMTRlY2VkYjI3ZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaApAQCAtNDI3MSw2ICs0MjcxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGlj YXRpb25UYWJsZQogCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gYmUgcHVi bGlzaGVkICovCiAJTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCiAJ TGlzdAkgICAqY29sdW1uczsJCS8qIExpc3Qgb2YgY29sdW1ucyBpbiBhIHB1YmxpY2F0aW9uIHRh YmxlICovCisJYm9vbAkJZXhjZXB0OwkJCS8qIGV4Y2x1ZGUgdGhlIHJlbGF0aW9uICovCiB9IFB1 YmxpY2F0aW9uVGFibGU7CiAKIC8qCkBAIC00Mjc5LDYgKzQyODAsNyBAQCB0eXBlZGVmIHN0cnVj dCBQdWJsaWNhdGlvblRhYmxlCiB0eXBlZGVmIGVudW0gUHVibGljYXRpb25PYmpTcGVjVHlwZQog ewogCVBVQkxJQ0FUSU9OT0JKX1RBQkxFLAkJLyogQSB0YWJsZSAqLworCVBVQkxJQ0FUSU9OT0JK X0VYQ0VQVF9UQUJMRSwJLyogQSB0YWJsZSB0byBiZSBleGNsdWRlZCAqLwogCVBVQkxJQ0FUSU9O T0JKX1RBQkxFU19JTl9TQ0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gc2NoZW1hICovCiAJUFVCTElD QVRJT05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gZmlyc3QgZWxl bWVudCBvZgogCQkJCQkJCQkJCQkgKiBzZWFyY2hfcGF0aCAqLwpAQCAtNDMwNyw2ICs0MzA5LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25BbGxPYmpTcGVjCiB7CiAJTm9kZVRhZwkJdHlw ZTsKIAlQdWJsaWNhdGlvbkFsbE9ialR5cGUgcHVib2JqdHlwZTsJLyogdHlwZSBvZiB0aGlzIHB1 YmxpY2F0aW9uIG9iamVjdCAqLworCUxpc3QJICAgKmV4Y2VwdF9vYmplY3RzOyAvKiBMaXN0IG9m IHB1YmxpY2F0aW9uIG9iamVjdCB0byBiZSBleGNsdWRlZCAqLwogCVBhcnNlTG9jCWxvY2F0aW9u OwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gUHVibGljYXRpb25B bGxPYmpTcGVjOwogCkBAIC00MzQyLDYgKzQzNDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclB1 YmxpY2F0aW9uU3RtdAogCSAqIG9iamVjdHMuCiAJICovCiAJTGlzdAkgICAqcHVib2JqZWN0czsJ CS8qIE9wdGlvbmFsIGxpc3Qgb2YgcHVibGljYXRpb24gb2JqZWN0cyAqLworCWJvb2wJCWZvcl9h bGxfdGFibGVzOyAvKiBTcGVjaWFsIHB1YmxpY2F0aW9uIGZvciBhbGwgdGFibGVzIGluIGRiICov CiAJQWx0ZXJQdWJsaWNhdGlvbkFjdGlvbiBhY3Rpb247CS8qIFdoYXQgYWN0aW9uIHRvIHBlcmZv cm0gd2l0aCB0aGUgZ2l2ZW4KIAkJCQkJCQkJCSAqIG9iamVjdHMgKi8KIH0gQWx0ZXJQdWJsaWNh dGlvblN0bXQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0 aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4 IGUzYmUyOWUzNzhkLi41NWNjN2Q1ZWU3MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w dWJsaWNhdGlvbi5vdXQKQEAgLTIxMywxMyArMjEzLDM3IEBAIE5vdC1udWxsIGNvbnN0cmFpbnRz OgogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgbm9uZSAgICAgICAg ICAgICAgfCBmCiAoMSByb3cpCiAKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBGT1Ig QUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyKTsKKy0t IHNwZWNpZnkgRVhDRVBUIHdpdGhvdXQgVEFCTEUKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0cHVi X3RibDEpOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK1xkUnArIHRlc3RwdWJfZm9yYWxs dGFibGVzX2V4Y2VwdHRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1 YmxpYy50ZXN0cHViX3RibDEiCisgICAgInB1YmxpYy50ZXN0cHViX3RibDIiCisKK1xkUnArIHRl c3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0 YWJsZTEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVl bmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRl ZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFi bGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgorCiBEUk9QIFRBQkxFIHRlc3RwdWJfdGJs MjsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFi bGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hOworRFJPUCBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9m b3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4 Y2VwdHRhYmxlLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTE7CiBDUkVBVEUgVEFC TEUgdGVzdHB1Yl90YmwzIChhIGludCk7CiBDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzYSAoYiB0 ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0g J0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90 YmwzOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJf dGJsMzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxFUyBFWENFUFQg VEFCTEUgKHRlc3RwdWJfdGJsMyk7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIEFM TCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIHRlc3RwdWJfdGJsMyk7CiBSRVNFVCBjbGllbnRf bWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjMKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCkBAIC0yMzgs OCArMjYyLDI1IEBAIFRhYmxlczoKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMyIK IAorXGRScCsgdGVzdHB1YjUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5v bmUgICAgICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJf dGJsMyIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsM2EiCisKK1xkUnArIHRlc3RwdWI2CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViNgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBB bGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg R2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4 Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDMiCisKIERST1AgVEFCTEUgdGVz dHB1Yl90YmwzLCB0ZXN0cHViX3RibDNhOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVz dHB1YjQ7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNCwgdGVzdHB1YjUsIHRl c3RwdWI2OwogLS0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKIENSRUFU RSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwogQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnJl Z3Jlc3NfcHViX3NlcTE7CkBAIC0yMDEyLDYgKzIwNTMsNyBAQCBEUk9QIFRBQkxFIGdlbmNvbHM7 CiAtLSBUZXN0cyBmb3IgQUxURVIgUFVCTElDQVRJT04gLi4uIFJFU0VUCiBDUkVBVEUgU0NIRU1B IHB1Yl9zY2gxOwogQ1JFQVRFIFRBQkxFIHB1Yl9zY2gxLnRibDEgKGEgaW50KTsKK0NSRUFURSBU QUJMRSBwdWJfc2NoMS50YmwyIChhIGludCk7CiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdF UlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBGT1IgQUxMIFRBQkxFUzsK IFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CkBAIC0yMDIwLDggKzIwNjIsMTggQEAgQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBPV05FUiBUTyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIyOwogU0VUIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKIEFMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7IC0tIGZhaWwgLSBtdXN0IGJlIHN1cGVydXNlcgogRVJS T1I6ICBtdXN0IGJlIHN1cGVydXNlciB0byBSRVNFVCBwdWJsaWNhdGlvbgorLS0gVmVyaWZ5IHRo YXQgb25seSBzdXBlcnVzZXIgY2FuIEFERCBBTEwgVEFCTEVTCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX3Jlc2V0IEFERCBBTEwgVEFCTEVTOworRVJST1I6ICBhZGRpbmcgQUxMIFRBQkxFUyBy ZXF1aXJlcyB0aGUgcHVibGljYXRpb24gdG8gaGF2ZSBkZWZhdWx0IHB1YmxpY2F0aW9uIHBhcmFt ZXRlciB2YWx1ZXMKK0RFVEFJTDogIEFMTCBUQUJMRVMgZmxhZyBzaG91bGQgbm90IGJlIHNldCBh bmQgbm8gdGFibGVzL3NjaGVtYXMgc2hvdWxkIGJlIGFzc29jaWF0ZWQuCitISU5UOiAgVXNlIEFM VEVSIFBVQkxJQ0FUSU9OIC4uLiBSRVNFVCB0byByZXNldCB0aGUgcHVibGljYXRpb24KIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgT1dORVIgVE8gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyOwogU0VUIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyOworLS0gQ2FuJ3QgYWRkIEVY Q0VQVCBUQUJMRSB0byAnRk9SIEFMTCBUQUJMRVMnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX3Jlc2V0IEFERCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAocHViX3NjaDEu dGJsMSk7CitFUlJPUjogIGFkZGluZyBBTEwgVEFCTEVTIHJlcXVpcmVzIHRoZSBwdWJsaWNhdGlv biB0byBoYXZlIGRlZmF1bHQgcHVibGljYXRpb24gcGFyYW1ldGVyIHZhbHVlcworREVUQUlMOiAg QUxMIFRBQkxFUyBmbGFnIHNob3VsZCBub3QgYmUgc2V0IGFuZCBubyB0YWJsZXMvc2NoZW1hcyBz aG91bGQgYmUgYXNzb2NpYXRlZC4KK0hJTlQ6ICBVc2UgQUxURVIgUFVCTElDQVRJT04gLi4uIFJF U0VUIHRvIHJlc2V0IHRoZSBwdWJsaWNhdGlvbgogLS0gVmVyaWZ5IHRoYXQgJ0FMTCBUQUJMRVMn IGZsYWcgaXMgcmVzZXQKIFxkUnArIHRlc3RwdWJfcmVzZXQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQK QEAgLTIwMzgsOCArMjA5MCwyNSBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJF U0VUOwogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAg ICAgICAgICAgfCBmCiAoMSByb3cpCiAKLS0tIFZlcmlmeSB0aGF0IGFzc29jaWF0ZWQgdGFibGVz IGFyZSByZW1vdmVkIGZyb20gdGhlIHB1YmxpY2F0aW9uIGFmdGVyIFJFU0VUCistLSBTaG91bGQg d29yayBub3cgYWZ0ZXIgcmVzZXR0aW5nIHRoZSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHB1Yl9zY2gxLnRi bDEsIHB1Yl9zY2gxLnRibDIpOworXGRScCsgdGVzdHB1Yl9yZXNldAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9y ZXNldAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVu Y2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVk IGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJs ZXM6CisgICAgInB1Yl9zY2gxLnRibDEiCisgICAgInB1Yl9zY2gxLnRibDIiCisKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CistLSBDYW4ndCBhZGQgRVhDRVBUIFRBQkxF IHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jl c2V0IEFERCBUQUJMRSBwdWJfc2NoMS50YmwxOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9y ZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHB1Yl9zY2gxLnRibDEpOworRVJST1I6 ICBhZGRpbmcgQUxMIFRBQkxFUyByZXF1aXJlcyB0aGUgcHVibGljYXRpb24gdG8gaGF2ZSBkZWZh dWx0IHB1YmxpY2F0aW9uIHBhcmFtZXRlciB2YWx1ZXMKK0RFVEFJTDogIEFMTCBUQUJMRVMgZmxh ZyBzaG91bGQgbm90IGJlIHNldCBhbmQgbm8gdGFibGVzL3NjaGVtYXMgc2hvdWxkIGJlIGFzc29j aWF0ZWQuCitISU5UOiAgVXNlIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBSRVNFVCB0byByZXNldCB0 aGUgcHVibGljYXRpb24KKy0tIFZlcmlmeSB0aGF0IGFzc29jaWF0ZWQgdGFibGVzIGFyZSByZW1v dmVkIGZyb20gdGhlIHB1YmxpY2F0aW9uIGFmdGVyIFJFU0VUCiBcZFJwKyB0ZXN0cHViX3Jlc2V0 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViX3Jlc2V0CiAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IApAQCAtMjA1Niw4ICsyMTI1LDEz IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CiAgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKICgxIHJv dykKIAotLS0gVmVyaWZ5IHRoYXQgYXNzb2NpYXRlZCBzY2hlbWFzIGFyZSByZW1vdmVkIGZyb20g dGhlIHB1YmxpY2F0aW9uIGFmdGVyIFJFU0VUCistLSBDYW4ndCBhZGQgRVhDRVBUIFRBQkxFIHRv ICdGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX3Jlc2V0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYzsKK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChwdWJfc2No MS50YmwxKTsKK0VSUk9SOiAgYWRkaW5nIEFMTCBUQUJMRVMgcmVxdWlyZXMgdGhlIHB1YmxpY2F0 aW9uIHRvIGhhdmUgZGVmYXVsdCBwdWJsaWNhdGlvbiBwYXJhbWV0ZXIgdmFsdWVzCitERVRBSUw6 ICBBTEwgVEFCTEVTIGZsYWcgc2hvdWxkIG5vdCBiZSBzZXQgYW5kIG5vIHRhYmxlcy9zY2hlbWFz IHNob3VsZCBiZSBhc3NvY2lhdGVkLgorSElOVDogIFVzZSBBTFRFUiBQVUJMSUNBVElPTiAuLi4g UkVTRVQgdG8gcmVzZXQgdGhlIHB1YmxpY2F0aW9uCistLSBWZXJpZnkgdGhhdCBhc3NvY2lhdGVk IHNjaGVtYXMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgcHVibGljYXRpb24gYWZ0ZXIgUkVTRVQKIFxk UnArIHRlc3RwdWJfcmVzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQKICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCkBA IC0yMDc0LDggKzIxNDgsMTQgQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNF VDsKICByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAg ICAgICAgIHwgZgogKDEgcm93KQogCi0tLSBWZXJpZnkgdGhhdCAnUFVCTElTSCcgcGFyYW1ldGVy IGlzIHJlc2V0CistLSBDYW4ndCBhZGQgRVhDRVBUIFRBQkxFIHdoZW4gdGhlICdQVUJMSVNIJyBw YXJhbWV0ZXIgZG9lcyBub3QgaGF2ZSBkZWZhdWx0CistLSB2YWx1ZQogQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9yZXNldCBTRVQgKFBVQkxJU0ggPSAnJyk7CitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX3Jlc2V0IEFERCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAocHViX3NjaDEudGJsMSk7 CitFUlJPUjogIGFkZGluZyBBTEwgVEFCTEVTIHJlcXVpcmVzIHRoZSBwdWJsaWNhdGlvbiB0byBo YXZlIGRlZmF1bHQgcHVibGljYXRpb24gcGFyYW1ldGVyIHZhbHVlcworREVUQUlMOiAgQUxMIFRB QkxFUyBmbGFnIHNob3VsZCBub3QgYmUgc2V0IGFuZCBubyB0YWJsZXMvc2NoZW1hcyBzaG91bGQg YmUgYXNzb2NpYXRlZC4KK0hJTlQ6ICBVc2UgQUxURVIgUFVCTElDQVRJT04gLi4uIFJFU0VUIHRv IHJlc2V0IHRoZSBwdWJsaWNhdGlvbgorLS0gVmVyaWZ5IHRoYXQgJ1BVQkxJU0gnIHBhcmFtZXRl ciBpcyByZXNldAogXGRScCsgdGVzdHB1Yl9yZXNldAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAogICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMg fCBWaWEgcm9vdCAKQEAgLTIwOTEsOCArMjE3MSwxNCBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX3Jlc2V0IFJFU0VUOwogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgbm9uZSAgICAgICAgICAgICAgfCBmCiAoMSByb3cpCiAKLS0tIFZlcmlmeSB0aGF0ICdQVUJM SVNIX1ZJQV9QQVJUSVRJT05fUk9PVCcgcGFyYW1ldGVyIGlzIHJlc2V0CistLSBDYW4ndCBhZGQg RVhDRVBUIFRBQkxFIHdoZW4gJ1BVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UJyBwYXJhbWV0ZXIg ZG9lcyBub3QKKy0tIGhhdmUgZGVmYXVsdCB2YWx1ZQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9yZXNldCBTRVQgKFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UID0gJ3RydWUnKTsKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChw dWJfc2NoMS50YmwxKTsKK0VSUk9SOiAgYWRkaW5nIEFMTCBUQUJMRVMgcmVxdWlyZXMgdGhlIHB1 YmxpY2F0aW9uIHRvIGhhdmUgZGVmYXVsdCBwdWJsaWNhdGlvbiBwYXJhbWV0ZXIgdmFsdWVzCitE RVRBSUw6ICBBTEwgVEFCTEVTIGZsYWcgc2hvdWxkIG5vdCBiZSBzZXQgYW5kIG5vIHRhYmxlcy9z Y2hlbWFzIHNob3VsZCBiZSBhc3NvY2lhdGVkLgorSElOVDogIFVzZSBBTFRFUiBQVUJMSUNBVElP TiAuLi4gUkVTRVQgdG8gcmVzZXQgdGhlIHB1YmxpY2F0aW9uCistLSBWZXJpZnkgdGhhdCAnUFVC TElTSF9WSUFfUEFSVElUSU9OX1JPT1QnIHBhcmFtZXRlciBpcyByZXNldAogXGRScCsgdGVzdHB1 Yl9yZXNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAogICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKQEAgLTIxMjcsNiAr MjIxMyw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CiAKIERST1Ag UFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldDsKIERST1AgVEFCTEUgcHViX3NjaDEudGJsMTsKK0RS T1AgVEFCTEUgcHViX3NjaDEudGJsMjsKIERST1AgU0NIRU1BIHB1Yl9zY2gxOwogUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKIC0tIFRlc3QgdGhhdCB0aGUgSU5TRVJUIE9OIENPTkZMSUNUIGNv bW1hbmQgY29ycmVjdGx5IGNoZWNrcyBSRVBMSUNBIElERU5USVRZCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwKaW5kZXggODRkZWFhZjVhMWYuLmQzYzAzZjU0Mjc4IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0xMDUsMjAgKzEwNSwzMyBAQCBTRUxFQ1QgcHVi bmFtZSwgcHViYWxsdGFibGVzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICd0 ZXN0cHViX2ZvcmFsbAogXGQrIHRlc3RwdWJfdGJsMgogXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJs ZXMKIAorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIEZPUiBBTEwgVEFCTEVTIEVYQ0VQ VCBUQUJMRSAodGVzdHB1Yl90YmwxLCB0ZXN0cHViX3RibDIpOworLS0gc3BlY2lmeSBFWENFUFQg d2l0aG91dCBUQUJMRQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4 Y2VwdHRhYmxlMSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHRlc3RwdWJfdGJsMSk7CitSRVNFVCBj bGllbnRfbWluX21lc3NhZ2VzOworCitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0 YWJsZQorXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisKIERST1AgVEFC TEUgdGVzdHB1Yl90YmwyOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywg dGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hl bWE7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRh YmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYSwgdGVzdHB1Yl9m b3JhbGx0YWJsZXNfZXhjZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxl MTsKIAogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsMyAoYSBpbnQpOwogQ1JFQVRFIFRBQkxFIHRl c3RwdWJfdGJsM2EgKGIgdGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsMyk7CiBTRVQgY2xpZW50 X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjMgRk9S IFRBQkxFIHRlc3RwdWJfdGJsMzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFC TEUgT05MWSB0ZXN0cHViX3RibDM7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIEFM TCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDMpOworQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWI2IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05MWSB0ZXN0cHViX3RibDMp OwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWIzCiBcZFJwKyB0ZXN0 cHViNAorXGRScCsgdGVzdHB1YjUKK1xkUnArIHRlc3RwdWI2CiAKIERST1AgVEFCTEUgdGVzdHB1 Yl90YmwzLCB0ZXN0cHViX3RibDNhOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1 YjQ7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNCwgdGVzdHB1YjUsIHRlc3Rw dWI2OwogCiAtLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUwogQ1JFQVRF IFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTA7CkBAIC0xMjcxLDYgKzEyODQsNyBAQCBEUk9QIFRB QkxFIGdlbmNvbHM7CiAtLSBUZXN0cyBmb3IgQUxURVIgUFVCTElDQVRJT04gLi4uIFJFU0VUCiBD UkVBVEUgU0NIRU1BIHB1Yl9zY2gxOwogQ1JFQVRFIFRBQkxFIHB1Yl9zY2gxLnRibDEgKGEgaW50 KTsKK0NSRUFURSBUQUJMRSBwdWJfc2NoMS50YmwyIChhIGludCk7CiBTRVQgY2xpZW50X21pbl9t ZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBGT1Ig QUxMIFRBQkxFUzsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CkBAIC0xMjc5LDM0ICsxMjkz LDU5IEBAIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX3Jlc2V0IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CiBTRVQgUk9MRSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNl dCBSRVNFVDsgLS0gZmFpbCAtIG11c3QgYmUgc3VwZXJ1c2VyCisKKy0tIFZlcmlmeSB0aGF0IG9u bHkgc3VwZXJ1c2VyIGNhbiBBREQgQUxMIFRBQkxFUworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9yZXNldCBBREQgQUxMIFRBQkxFUzsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQg T1dORVIgVE8gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyOwogU0VUIFJPTEUgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyOwogCistLSBDYW4ndCBhZGQgRVhDRVBUIFRBQkxFIHRvICdGT1IgQUxMIFRB QkxFUycgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFM TCBUQUJMRVMgRVhDRVBUIFRBQkxFIChwdWJfc2NoMS50YmwxKTsKKwogLS0gVmVyaWZ5IHRoYXQg J0FMTCBUQUJMRVMnIGZsYWcgaXMgcmVzZXQKIFxkUnArIHRlc3RwdWJfcmVzZXQKIEFMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CiBcZFJwKyB0ZXN0cHViX3Jlc2V0CiAKLS0t IFZlcmlmeSB0aGF0IGFzc29jaWF0ZWQgdGFibGVzIGFyZSByZW1vdmVkIGZyb20gdGhlIHB1Ymxp Y2F0aW9uIGFmdGVyIFJFU0VUCistLSBTaG91bGQgd29yayBub3cgYWZ0ZXIgcmVzZXR0aW5nIHRo ZSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRB QkxFUyBFWENFUFQgVEFCTEUgKHB1Yl9zY2gxLnRibDEsIHB1Yl9zY2gxLnRibDIpOworXGRScCsg dGVzdHB1Yl9yZXNldAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKKwor LS0gQ2FuJ3QgYWRkIEVYQ0VQVCBUQUJMRSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgVEFCTEUgcHViX3NjaDEudGJsMTsKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxF IChwdWJfc2NoMS50YmwxKTsKKworLS0gVmVyaWZ5IHRoYXQgYXNzb2NpYXRlZCB0YWJsZXMgYXJl IHJlbW92ZWQgZnJvbSB0aGUgcHVibGljYXRpb24gYWZ0ZXIgUkVTRVQKIFxkUnArIHRlc3RwdWJf cmVzZXQKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CiBcZFJwKyB0ZXN0 cHViX3Jlc2V0CiAKLS0tIFZlcmlmeSB0aGF0IGFzc29jaWF0ZWQgc2NoZW1hcyBhcmUgcmVtb3Zl ZCBmcm9tIHRoZSBwdWJsaWNhdGlvbiBhZnRlciBSRVNFVAorLS0gQ2FuJ3QgYWRkIEVYQ0VQVCBU QUJMRSB0byAnRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BJyBwdWJsaWNhdGlvbgogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWM7CitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAo cHViX3NjaDEudGJsMSk7CisKKy0tIFZlcmlmeSB0aGF0IGFzc29jaWF0ZWQgc2NoZW1hcyBhcmUg cmVtb3ZlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbiBhZnRlciBSRVNFVAogXGRScCsgdGVzdHB1Yl9y ZXNldAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKIFxkUnArIHRlc3Rw dWJfcmVzZXQKIAotLS0gVmVyaWZ5IHRoYXQgJ1BVQkxJU0gnIHBhcmFtZXRlciBpcyByZXNldAor LS0gQ2FuJ3QgYWRkIEVYQ0VQVCBUQUJMRSB3aGVuIHRoZSAnUFVCTElTSCcgcGFyYW1ldGVyIGRv ZXMgbm90IGhhdmUgZGVmYXVsdAorLS0gdmFsdWUKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf cmVzZXQgU0VUIChQVUJMSVNIID0gJycpOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNl dCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHB1Yl9zY2gxLnRibDEpOworCistLSBWZXJp ZnkgdGhhdCAnUFVCTElTSCcgcGFyYW1ldGVyIGlzIHJlc2V0CiBcZFJwKyB0ZXN0cHViX3Jlc2V0 CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwogXGRScCsgdGVzdHB1Yl9y ZXNldAogCi0tLSBWZXJpZnkgdGhhdCAnUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1QnIHBhcmFt ZXRlciBpcyByZXNldAorLS0gQ2FuJ3QgYWRkIEVYQ0VQVCBUQUJMRSB3aGVuICdQVUJMSVNIX1ZJ QV9QQVJUSVRJT05fUk9PVCcgcGFyYW1ldGVyIGRvZXMgbm90CistLSBoYXZlIGRlZmF1bHQgdmFs dWUKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgU0VUIChQVUJMSVNIX1ZJQV9QQVJU SVRJT05fUk9PVCA9ICd0cnVlJyk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFE RCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAocHViX3NjaDEudGJsMSk7CisKKy0tIFZlcmlmeSB0 aGF0ICdQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVCcgcGFyYW1ldGVyIGlzIHJlc2V0CiBcZFJw KyB0ZXN0cHViX3Jlc2V0CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwog XGRScCsgdGVzdHB1Yl9yZXNldApAQCAtMTMxOSw2ICsxMzU4LDcgQEAgQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKIAogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0 OwogRFJPUCBUQUJMRSBwdWJfc2NoMS50YmwxOworRFJPUCBUQUJMRSBwdWJfc2NoMS50YmwyOwog RFJPUCBTQ0hFTUEgcHViX3NjaDE7CiAKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vbWVzb24uYnVpbGQKaW5kZXggODVkMTBhODk5OTQuLmI4ZTVjNTRjMzE0IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC00Niw2ICs0Niw3IEBAIHRlc3RzICs9IHsKICAg ICAgICd0LzAzNF90ZW1wb3JhbC5wbCcsCiAgICAgICAndC8wMzVfY29uZmxpY3RzLnBsJywKICAg ICAgICd0LzAzNl9zZXF1ZW5jZXMucGwnLAorICAgICAgJ3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2Vw dF90YWJsZS5wbCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAgXSwKICAgfSwKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFi bGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3Rh YmxlLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wOTZlMDYwNjM2 NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hh bmdlc19leGNlcHRfdGFibGUucGwKQEAgLTAsMCArMSwxODYgQEAKKworIyBDb3B5cmlnaHQgKGMp IDIwMjEtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dp Y2FsIHJlcGxpY2F0aW9uIHRlc3RzIGZvciBleGNlcHQgdGFibGUgcHVibGljYXRpb25zCit1c2Ug c3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFs aXplIHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93 c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMg Q3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFy dDsKKworIyBUZXN0IHJlcGxpY2F0aW9uIHdpdGggcHVibGljYXRpb25zIGNyZWF0ZWQgdXNpbmcg Rk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFCisjIGNsYXVzZS4KKyMgQ3JlYXRlIHNjaGVtYXMg YW5kIHRhYmxlcyBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50 YWIxIEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgQVMgYTsKKwlDUkVBVEUgVEFCTEUg cHVibGljLnRhYjEoYSBpbnQpOworKSk7CisKKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBv biBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXEoCisJQ1JFQVRFIFNDSEVNQSBzY2gxOworCUNSRUFURSBUQUJMRSBzY2gxLnRhYjEgKGEgaW50 KTsKKwlDUkVBVEUgVEFCTEUgcHVibGljLnRhYjEgKGEgaW50KTsKKykpOworCisjIFNldHVwIGxv Z2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hl ci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSBGT1Ig QUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEudGFiMSkiCispOworCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3Vi X3NjaGVtYSBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9w dWJfc2NoZW1hIgorKTsKKworIyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNo Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJs aXNoZXIsCisJJ3RhcF9zdWJfc2NoZW1hJyk7CisKKyMgQ2hlY2sgdGhlIHRhYmxlIGRhdGEgZG9l cyBub3Qgc3luYyBmb3IgZXhjbHVkZWQgdGFibGUKK215ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopLCBtaW4oYSksIG1h eChhKSBGUk9NIHNjaDEudGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMHx8KSwKKwknY2hlY2sgdGhl cmUgaXMgbm8gaW5pdGlhbCBkYXRhIGNvcGllZCBmb3IgdGhlIGV4Y2x1ZGVkIHRhYmxlJyk7CisK KyMgSW5zZXJ0IHNvbWUgZGF0YSBhbmQgdmVyaWZ5IHRoYXQgaW5zZXJ0ZWQgZGF0YSBpcyBub3Qg cmVwbGljYXRlZAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5T RVJUIElOVE8gc2NoMS50YWIxIFZBTFVFUyhnZW5lcmF0ZV9zZXJpZXMoMTEsMjApKSIpOworCisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfc2NoZW1hJyk7CisKKyRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IGNvdW50KCopLCBtaW4oYSksIG1heChhKSBGUk9NIHNjaDEudGFiMSIpOworaXMoJHJlc3VsdCwg cXEoMHx8KSwgJ2NoZWNrIHJlcGxpY2F0ZWQgaW5zZXJ0cyBvbiBzdWJzY3JpYmVyJyk7CisKKyMg QWx0ZXIgcHVibGljYXRpb24gdG8gZXhjbHVkZSBkYXRhIGNoYW5nZXMgaW4gcHVibGljLnRhYjEg YW5kIHZlcmlmeSB0aGF0CisjIHN1YnNjcmliZXIgZG9lcyBub3QgZ2V0IHRoZSBjaGFuZ2VkIGRh dGEgZm9yIHRoaXMgdGFibGUuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcSgKKwlBTFRFUiBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSBSRVNFVDsKKwlBTFRF UiBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUg KHNjaDEudGFiMSwgcHVibGljLnRhYjEpOworCUlOU0VSVCBJTlRPIHB1YmxpYy50YWIxIFZBTFVF UyhnZW5lcmF0ZV9zZXJpZXMoMSwxMCkpOworKSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJ3RhcF9zdWJfc2NoZW1hJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopLCBtaW4oYSksIG1heChh KSBGUk9NIHB1YmxpYy50YWIxIik7CitpcygkcmVzdWx0LCBxcSgwfHwpLCAnY2hlY2sgcm93cyBv biBzdWJzY3JpYmVyIGNhdGNodXAnKTsKKworIyBjbGVhbnVwCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSIpOwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFNVQlNDUklQVElP TiB0YXBfc3ViX3NjaGVtYSIpOworCisKKyMgQ2hlY2sgYmVoYXZpb3VyIG9mIHB1Ymxpc2hfdmlh X3BhcnRpdGlvbl9yb290IGFuZCBFWENFUFQgY2xhdXNlIHdpdGgKKyMgcGFydGl0aW9uZWQgdGFi bGUgb3IgcGFydGlpdGlvbnMgb2YgcGFydGl0aW9uZWQgdGFibGUuCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgc2NoMS50MShhIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQxIFBBUlRJ VElPTiBPRiBzY2gxLnQxIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpOworCUlOU0VSVCBJTlRP IHNjaDEudDEgVkFMVUVTICgxKTsKKykpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHNjaDEudDEoYSBpbnQpOworCUNSRUFU RSBUQUJMRSBzY2gxLnBhcnQxKGEgaW50KTsKKykpOworCisjIHB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290ID0gZmFsc2UgYW5kIEVYQ0VQVCBzY2gxLnBhcnQxCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IEZP UiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS5wYXJ0MSkiKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJf cGFydCBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJf cGFydCIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygk bm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX3BhcnQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMikiKTsKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CisKKyRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00g c2NoMS50MSIpOworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gcGFydGl0aW9uZWQg dGFibGUnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQxIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hl Y2sgcm93cyBvbiBwYXJ0aXRpb25zJyk7CisKKyMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qg PSBmYWxzZSBhbmQgRVhDRVBUIHNjaDEudDEKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAor CSdwb3N0Z3JlcycsIHFxKAorCUFMVEVSIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBSRVNFVDsK KwlBTFRFUiBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgQUREIEFMTCBUQUJMRVMgRVhDRVBUIChz Y2gxLnQxKTsKKykpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQgUkVGUkVTSCBQVUJMSUNBVElPTiIpOwor JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlz aGVyLCAndGFwX3N1Yl9wYXJ0Jyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDMpIik7Ciskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEudDEiKTsK K2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHBhcnRpdGlvbmVkIHRhYmxlJyk7CisK KyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCAqIEZST00gc2NoMS5wYXJ0MSIpOworaXMoICRyZXN1bHQsIHFxKDEKKzIKKzMpLCAnY2hlY2sg cm93cyBvbiBwYXJ0aXRpb25zJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiVFJVTkNBVEUgc2NoMS50MSIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCd0YXBfc3ViX3BhcnQnKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0Iik7Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7 CisKKyMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlIGFuZCBFWENFUFQgc2NoMS50 MQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRF IFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNj aDEudDEpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwlJTlNFUlQgSU5UTyBz Y2gxLnQxIFZBTFVFUyAoMSkKKykpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9wYXJ0IENPTk5FQ1RJT04gJyRw dWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IgorKTsKKyRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3Rh cF9zdWJfcGFydCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklO U0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgyKSIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnQxIik7CitpcygkcmVz dWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBwYXJ0aXRpb25lZCB0YWJsZScpOworCiskcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9N IHNjaDEucGFydDEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHBhcnRpdGlv bnMnKTsKKworIyBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUgYW5kIEVYQ0VQVCBz Y2gxLnBhcnQxCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgK KwlBTFRFUiBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgUkVTRVQ7CisJQUxURVIgUFVCTElDQVRJ T04gdGFwX3B1Yl9wYXJ0IEFERCBBTEwgVEFCTEVTIEVYQ0VQVCAoc2NoMS5wYXJ0MSk7CisJQUxU RVIgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IFNFVCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3QpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCBSRUZSRVNIIFBVQkxJQ0FUSU9OIik7Ciskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIs ICd0YXBfc3ViX3BhcnQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAoMykiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS50MSIpOworaXMo ICRyZXN1bHQsIHFxKDEKKzIKKzMpLCAnY2hlY2sgcm93cyBvbiBwYXJ0aXRpb25lZCB0YWJsZScp OworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgKiBGUk9NIHNjaDEucGFydDEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dz IG9uIHBhcnRpdGlvbnMnKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnZmFzdCcpOworJG5v ZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4zNC4x Cgo= --000000000000bf9590064373b5ae--