Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tpci7-0099tj-GT for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Mar 2025 00:34:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tpci6-00CzWg-82 for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Mar 2025 00:34:06 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tpci5-00CzWV-8D for pgsql-hackers@lists.postgresql.org; Wed, 05 Mar 2025 00:34:05 +0000 Received: from fhigh-b5-smtp.messagingengine.com ([202.12.124.156]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tpci1-0010Lk-2e for pgsql-hackers@lists.postgresql.org; Wed, 05 Mar 2025 00:34:04 +0000 Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45]) by mailfhigh.stl.internal (Postfix) with ESMTP id 489F9254018F; Tue, 4 Mar 2025 19:34:01 -0500 (EST) Received: from phl-imap-09 ([10.202.2.99]) by phl-compute-05.internal (MEProxy); Tue, 04 Mar 2025 19:34:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eulerto.com; h= cc:cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1741134841; x=1741221241; bh=dwcMXB71kQ grJ5swqQg8CvW+wEfQXfSYTvrZnyN3w2M=; b=Clf9QGF9n/+joeDcPYKgr8L5Dg 0xEL1MHWU4G5KWQz6EZxOxtmTJBA3iQ7G5e70BqxW1pK6ghBOEVLs0RduzyDry2i FVffU6zP0ERukSSsxGiDspAr9VsfGwHYWOPTsKTYtG5Y1dEzO725KnIXqxeRKu/6 vVNRZMemf7X/qydcKc+lsOzzKlGou4sFresyVItfK19cZ+5p5JAfExYczaNXnV6q Tmj/qwyOb+CjqUwaQqb/0xU+wrV6o3fq5IePDfJVJUl06957QzCRO5wFBnnPulGM Dee8rkmmVjp/WYpH2zEpcnvF7DgfEUGU9cijlS/WqCf4K+1RNWOPzswxPQ5w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1741134841; x=1741221241; bh=dwcMXB71kQgrJ5swqQg8CvW+wEfQXfSYTvr ZnyN3w2M=; b=K9L0g+Qwb6uA9h8ejjna42k46sfQPHN4Lqqn3HLNvoAFSYma3ll qCC3KYWBIq/F5jH1EzofUvbaWWkiaLPvUcBt6FVD/LDNts7MmPXEe1Wd6pT+iUf2 FHY7VAhVHY5Qk8dKAF7a0aLkYdaFW5nMaeoVjBAPJjG9zwLgW/aGKDfICYDzfk5C Hu570jP+25k33djsZ5YU+cU7qRaHaV96vH5j4jS6OU3/MbuSlcWqLBvx6Q5KwzC0 pc6w9NX6VEBUgZdr9brabbzbniyeaQNxz+pEHlX8JnQKeA6IBXvTRRbFatimFFPw XMS8FMw9Fql5DZJ610M586Jd+VXRMKC5dxg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddutdefgeduucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhepofggfffhvfevkfgjfhfutgesmhdtreerredt jeenucfhrhhomhepfdfguhhlvghrucfvrghvvghirhgrfdcuoegvuhhlvghrsegvuhhlvg hrthhordgtohhmqeenucggtffrrghtthgvrhhnpeekfedtjeduvdekueevheehiedvuddt vdfgffektdegvdduudevveevgefgleeiheenucffohhmrghinhepvghnthgvrhhprhhish gvuggsrdgtohhmnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhf rhhomhepvghulhgvrhesvghulhgvrhhtohdrtghomhdpnhgspghrtghpthhtohepvddpmh houggvpehsmhhtphhouhhtpdhrtghpthhtoheprghlvhhhvghrrhgvsegrlhhvhhdrnhho qdhiphdrohhrghdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehlihhsthhsrd hpohhsthhgrhgvshhqlhdrohhrgh X-ME-Proxy: Feedback-ID: i0c21471d:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 9F9CE780068; Tue, 4 Mar 2025 19:34:00 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 Date: Tue, 04 Mar 2025 21:33:39 -0300 From: "Euler Taveira" To: "Alvaro Herrera" Cc: pgsql-hackers@lists.postgresql.org Message-Id: <313aa202-b5fa-4e3f-95d0-83425575c66d@app.fastmail.com> In-Reply-To: <202502051851.2nvzh3a6ukzc@alvherre.pgsql> References: <202502051851.2nvzh3a6ukzc@alvherre.pgsql> Subject: Re: log_min_messages per backend type Content-Type: multipart/mixed; boundary=cb578754105b4606bc9315ce0a8e2090 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --cb578754105b4606bc9315ce0a8e2090 Content-Type: multipart/alternative; boundary=0143497c2c3842b29384e8cadb14e9da --0143497c2c3842b29384e8cadb14e9da Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Wed, Feb 5, 2025, at 3:51 PM, =C3=81lvaro Herrera wrote: > On 2024-Dec-17, Euler Taveira wrote: >=20 > > Sometimes you need to inspect some debug messages from autovacuum wo= rker but > > you cannot apply the same setting for backends (that could rapidly f= ill the log > > file). This proposal aims to change log_min_messages to have differe= nt log > > levels depending on which backend type the message comes from. > >=20 > > The syntax was changed from enum to string and it accepts a list of = elements. > >=20 > > Instead of enum, it now accepts a comma-separated list of elements (= string). > > Each element is LOGLEVEL:BACKENDTYPE. >=20 > This format seems unintuitive. I would have thought you do it the oth= er > way around, "backendtype:loglevel" ... that seems more natural because > it's like assigning the 'loglevel' value to the 'backendtype' element. > SET log_min_messages TO 'checkpointer:debug2, autovacuum:debug1'; Alvaro, thanks for your feedback. Your suggestion makes sense to me. > I dislike the array of names in variable.c. We already have an array = in > launch_backend.c (child_process_kinds), plus GetBackendTypeDesc in > miscinit.c. Maybe not for this patch to clean up though. I thought about using child_process_kinds but two details made me give up on the idea: (a) multiple names per backend type (for example,=20 B_BACKEND, B_DEAD_END_BACKEND, B_STANDALONE_BACKEND) and (b) spaces into names. Maybe we should have a group into child_process_kinds but as you said it seems material for another patch. > I think it should be acceptable to configure one global setting with > exceptions for particular backend types: >=20 > log_min_messages =3D WARNING, autovacuum:DEBUG1 >=20 > Right now I think the code only accepts the unadorned log level if the= re > are no other items in the list. I think the proposal downthread is to > use the keyword ALL for this, >=20 > log_min_messages =3D all:WARNING, autovacuum:DEBUG1 # I don't like= this >=20 > but I think it's inferior, because then "all" is not really "all", and= I > think it would be different if I had said >=20 > log_min_messages =3D autovacuum:DEBUG1, all:WARNING # I don't like= this >=20 > because it looks like the "all" entry should override the one I set for > autovacuum before, which frankly would not make sense to me. Good point. After reflection, I agree that "all" is not a good keyword. This patch turns backend type as optional so WARNING means apply this log level as a final step to the backend types that are not specified in the list. > So I think these two lines, >=20 > log_min_messages =3D WARNING, autovacuum:DEBUG1 > log_min_messages =3D autovacuum:DEBUG1, WARNING >=20 > should behave identically and mean "set the level for autovacuum to > DEBUG1, and to any other backend type to WARNING. Done. > Also, I think it'd be better to reject duplicates in the list. Right > now it looks like the last entry for one backend type overrides prior > ones. I mean >=20 > log_min_messages =3D autovacuum:DEBUG1, autovacuum:ERROR >=20 > would set autovacuum to error, but that might be mistake prone if your > string is long. So implementation-wise I suggest to initialize the > whole newlogminmsgs array to -1, then scan the list of entries (saving > an entry without backend type as the one to use later and) setting eve= ry > backend type to the number specified; if we see trying to set a value > that's already different from -1, throw error. After scanning the who= le > log_min_messages array, we scan the newlogminmsgs and set any entries > that are still -1 to the value that we saved before. >=20 >=20 > The new code in variable.c should be before the /* DATESTYLE */ comment > rather than at the end of the file. It was added into the MISCELLANEOUS section. >=20 > You still have many XXX comments. Also, postgresql.conf should list t= he > valid values for backendtype, as well as show an example of a valid > setting. Please don't use ALLCAPS backend types in the docs, this loo= ks > ugly: >=20 > > + Valid BACKENDTYPE values are AR= CHIVER, > > + AUTOVACUUM, BACKEND, > > + BGWORKER, BGWRITER, > > + CHECKPOINTER, LOGGER, > > + SLOTSYNCWORKER, WALRECEIVER, > > + WALSENDER, WALSUMMARIZER, and > > + WALWRITER. Done. Just to recap what was changed: - patch was rebased - backend type is optional and means all unspecified backend types - generic log level (without backend type) is mandatory and the order it=20 ppears is not important (it is applied for the remaining backend types) - fix Windows build - new tests to cover the changes -- Euler Taveira EDB https://www.enterprisedb.com/ --0143497c2c3842b29384e8cadb14e9da Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
On Wed, Feb 5, = 2025, at 3:51 PM, =C3=81lvaro Herrera wrote:
On 2024-Dec-17, Euler Taveira wrote:

> Sometimes you need to inspect some debug= messages from autovacuum worker but
> you cannot apply= the same setting for backends (that could rapidly fill the log
> file). This proposal aims to change log_min_messages to have = different log
> levels depending on which backend type = the message comes from.

> The = syntax was changed from enum to string and it accepts a list of elements= .

> Instead of enum, it now ac= cepts a comma-separated list of elements (string).
> Ea= ch element is LOGLEVEL:BACKENDTYPE.

This fo= rmat seems unintuitive.  I would have thought you do it the other
way around, "backendtype:loglevel" ... that seems more natu= ral because
it's like assigning the 'loglevel' value to th= e 'backendtype' element.
  SET log_min_messages TO 'c= heckpointer:debug2, autovacuum:debug1';

<= /div>
Alvaro, thanks for your feedback. Your suggestion makes s= ense to me.

I dislike the array of names in variable.c.  We alr= eady have an array in
launch_backend.c (child_process_kind= s), plus GetBackendTypeDesc in
miscinit.c.  Maybe not= for this patch to clean up though.

I thought about using child_process_kinds but two details made me = give
up on the idea: (a) multiple names per backend type (= for example, 
B= _BACKEND, B_DEAD_END_BACKEND, B_STANDALONE_BACKEND) and (b) spaces into<= br style=3D"max-width:100%;height:auto;">
names. Maybe we shou= ld have a group into child_process_kinds but as you
said it seems material for another patch= .

I think it should be acceptable to configure one global setting wi= th
exceptions for particular backend types:
=
log_min_messages =3D WARNING, autovacuum:DEBUG1
=

Right now I think the code only accepts the unadorne= d log level if there
are no other items in the list. = I think the proposal downthread is to
use the keyword ALL= for this,

  log_min_messages =3D all:= WARNING, autovacuum:DEBUG1   # I don't like this

but I think it's inferior, because then "all" is not rea= lly "all", and I
think it would be different if I had said=

  log_min_messages =3D autovacuum:DEB= UG1, all:WARNING   # I don't like this

because it looks like the "all" entry should override the one I se= t for
autovacuum before, which frankly would not make sens= e to me.

Good point. After ref= lection, I agree that "all" is not a good keyword.
This pa= tch turns backend type as optional so WARNING means apply this
log level as a final step to th= e backend types that are not specified in
the list.

So I think these two lines,

log_min_messa= ges =3D WARNING, autovacuum:DEBUG1
log_min_messages =3D au= tovacuum:DEBUG1, WARNING

should behave iden= tically and mean "set the level for autovacuum to
DEBUG1, = and to any other backend type to WARNING.
Done.

Also, I think it'd be better to reject duplicates in t= he list.  Right
now it looks like the last entry for = one backend type overrides prior
ones.  I mean

log_min_messages =3D autovacuum:DEBUG1, autovacuu= m:ERROR

would set autovacuum to error, but = that might be mistake prone if your
string is long.  = So implementation-wise I suggest to initialize the
whole n= ewlogminmsgs array to -1, then scan the list of entries (saving
an entry without backend type as the one to use later and) setting= every
backend type to the number specified; if we see try= ing to set a value
that's already different from -1, throw= error.  After scanning the whole
log_min_messages ar= ray, we scan the newlogminmsgs and set any entries
that ar= e still -1 to the value that we saved before.


The new code in variable.c should be before the /* DAT= ESTYLE */ comment
rather than at the end of the file.
<= /div>

It was added into the MISCELLANEOU= S section.


You still have many XXX comments.  Al= so, postgresql.conf should list the
valid values for backe= ndtype, as well as show an example of a valid
setting.&nbs= p; Please don't use ALLCAPS backend types in the docs, this looks
ugly:

> +    = ;    Valid <literal>BACKENDTYPE</literal> val= ues are <literal>ARCHIVER</literal>,
> +&nb= sp;       <literal>AUTOVACUUM</li= teral>, <literal>BACKEND</literal>,
> +&= nbsp;       <literal>BGWORKER</li= teral>, <literal>BGWRITER</literal>,
> +=         <literal>CHECKPOINTER&l= t;/literal>, <literal>LOGGER</literal>,
>= ; +        <literal>SLOTSYNCWOR= KER</literal>, <literal>WALRECEIVER</literal>,
> +        <literal>W= ALSENDER</literal>, <literal>WALSUMMARIZER</literal>, = and
> +        <l= iteral>WALWRITER</literal>.

Done.

Just to recap what was changed:

- patch was rebased
- backend type is optional and means all unspecified backend types
- generic log level (wit= hout backend type) is mandatory and the order it
  p= pears is not important (it is applied for the remaining backend types)
- fix Windows build
- new tests to cover = the changes


--
Euler Taveira

--0143497c2c3842b29384e8cadb14e9da-- --cb578754105b4606bc9315ce0a8e2090 Content-Disposition: attachment; filename*0="v2-0001-log_min_messages-per-backend-type.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v2-0001-log=5Fmin=5Fmessages-per-backend-type.patch?=" Content-Transfer-Encoding: base64 RnJvbSAwNjQwZGRiNmU1NTEwZjFiNjAwOTgyMzMxNDkwMTg4ZDIwYmZhN2U5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlckBldWxlcnRvLmNv bT4KRGF0ZTogTW9uLCAxMSBEZWMgMjAyMyAxNzoyNDo1MCAtMDMwMApTdWJqZWN0OiBbUEFU Q0ggdjJdIGxvZ19taW5fbWVzc2FnZXMgcGVyIGJhY2tlbmQgdHlwZQoKQ2hhbmdlIGxvZ19t aW5fbWVzc2FnZXMgZnJvbSBhIHNpbmdsZSBlbGVtZW50IHRvIGEgY29tbWEtc2VwYXJhdGVk IGxpc3QKb2YgZWxlbWVudHMuIEVhY2ggZWxlbWVudCBpcyBiYWNrZW5kdHlwZTpsb2dsZXZl bC4gVGhlIGJhY2tlbmR0eXBlIGFyZQphcmNoaXZlciwgYXV0b3ZhY3V1bSAoaW5jbHVkZXMg bGF1bmNoZXIgYW5kIHdvcmtlcnMpLCBiYWNrZW5kLCBiZ3dvcmtlciwKYmd3cml0ZXIsIGNo ZWNrcG9pbnRlciwgbG9nZ2VyLCBzbG90c3luY3dvcmtlciwgd2FscmVjZWl2ZXIsIHdhbHNl bmRlciwKd2Fsc3VtbWFyaXplciBhbmQgd2Fsd3JpdGVyLiBJdCBzaG91bGQgYmUgcGFydCBv ZiB0aGlzIGxpc3QgYSBzaW5nbGUgbG9nCmxldmVsIHRoYXQgaXMgYXBwbGllZCBhcyBhIGZp bmFsIHN0ZXAgdG8gdGhlIGJhY2tlbmQgdHlwZXMgdGhhdCBhcmUgbm90CmluZm9ybWVkLgoK VGhlIG9sZCBzeW50YXggKGEgc2luZ2xlIGxvZyBsZXZlbCkgaXMgc3RpbGwgYWNjZXB0ZWQg Zm9yIGJhY2t3YXJkCmNvbXBhdGliaWxpdHkuIEluIHRoaXMgY2FzZSwgaXQgbWVhbnMgdGhl IGluZm9ybWVkIGxvZyBsZXZlbCBpcyBhcHBsaWVkCmZvciB0aGUgYmFja2VuZCB0eXBlcyB0 aGF0IGFyZSBub3QgaW5mb3JtZWQuIFRoZSBkZWZhdWx0IGxvZyBsZXZlbCBpcwp0aGUgc2Ft ZSAoV0FSTklORykgZm9yIGFsbCBiYWNrZW5kIHR5cGVzLgotLS0KIGRvYy9zcmMvc2dtbC9j b25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAzMCArKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvdmFyaWFibGUuYyAgICAgICAgICAgICAgIHwgMTg3ICsrKysrKysrKysr KysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jICAgICAgICAgICAgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAg ICAgfCAgODEgKysrKysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5j b25mLnNhbXBsZSB8ICAgMSArCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvdXRpbHMvZ3VjLmggICAgICAgICAg ICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS91dGlscy9ndWNfaG9va3MuaCAg ICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX3RhYmxlcy5o ICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3Vj Lm91dCAgICAgICAgICAgICB8ICA0OCArKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3Vj LnNxbCAgICAgICAgICAgICAgICAgIHwgIDE2ICsrCiAxMiBmaWxlcyBjaGFuZ2VkLCAzNTIg aW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IGQyZmE1 ZjdkMWE5Li4zZThkZjg1NTU2ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNjg2MSw3ICs2ODYxLDcg QEAgbG9jYWwwLiogICAgL3Zhci9sb2cvcG9zdGdyZXNxbAogICAgICA8dmFyaWFibGVsaXN0 PgogCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1sb2ctbWluLW1lc3NhZ2VzIiB4cmVm bGFiZWw9ImxvZ19taW5fbWVzc2FnZXMiPgotICAgICAgPHRlcm0+PHZhcm5hbWU+bG9nX21p bl9tZXNzYWdlczwvdmFybmFtZT4gKDx0eXBlPmVudW08L3R5cGU+KQorICAgICAgPHRlcm0+ PHZhcm5hbWU+bG9nX21pbl9tZXNzYWdlczwvdmFybmFtZT4gKDx0eXBlPnN0cmluZzwvdHlw ZT4pCiAgICAgICA8aW5kZXh0ZXJtPgogICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmxvZ19t aW5fbWVzc2FnZXM8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5 PgogICAgICAgPC9pbmRleHRlcm0+CkBAIC02ODcwLDE0ICs2ODcwLDI2IEBAIGxvY2FsMC4q ICAgIC92YXIvbG9nL3Bvc3RncmVzcWwKICAgICAgICA8cGFyYT4KICAgICAgICAgQ29udHJv bHMgd2hpY2ggPGxpbmsgbGlua2VuZD0icnVudGltZS1jb25maWctc2V2ZXJpdHktbGV2ZWxz Ij5tZXNzYWdlCiAgICAgICAgIGxldmVsczwvbGluaz4gYXJlIHdyaXR0ZW4gdG8gdGhlIHNl cnZlciBsb2cuCi0gICAgICAgIFZhbGlkIHZhbHVlcyBhcmUgPGxpdGVyYWw+REVCVUc1PC9s aXRlcmFsPiwgPGxpdGVyYWw+REVCVUc0PC9saXRlcmFsPiwKLSAgICAgICAgPGxpdGVyYWw+ REVCVUczPC9saXRlcmFsPiwgPGxpdGVyYWw+REVCVUcyPC9saXRlcmFsPiwgPGxpdGVyYWw+ REVCVUcxPC9saXRlcmFsPiwKLSAgICAgICAgPGxpdGVyYWw+SU5GTzwvbGl0ZXJhbD4sIDxs aXRlcmFsPk5PVElDRTwvbGl0ZXJhbD4sIDxsaXRlcmFsPldBUk5JTkc8L2xpdGVyYWw+LAot ICAgICAgICA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkxPRzwvbGl0ZXJh bD4sIDxsaXRlcmFsPkZBVEFMPC9saXRlcmFsPiwgYW5kCi0gICAgICAgIDxsaXRlcmFsPlBB TklDPC9saXRlcmFsPi4gIEVhY2ggbGV2ZWwgaW5jbHVkZXMgYWxsIHRoZSBsZXZlbHMgdGhh dAotICAgICAgICBmb2xsb3cgaXQuICBUaGUgbGF0ZXIgdGhlIGxldmVsLCB0aGUgZmV3ZXIg bWVzc2FnZXMgYXJlIHNlbnQKLSAgICAgICAgdG8gdGhlIGxvZy4gIFRoZSBkZWZhdWx0IGlz IDxsaXRlcmFsPldBUk5JTkc8L2xpdGVyYWw+LiAgTm90ZSB0aGF0Ci0gICAgICAgIDxsaXRl cmFsPkxPRzwvbGl0ZXJhbD4gaGFzIGEgZGlmZmVyZW50IHJhbmsgaGVyZSB0aGFuIGluCisg ICAgICAgIFZhbGlkIHZhbHVlcyBhcmUgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiA8bGl0 ZXJhbD5iYWNrZW5kdHlwZTpsZXZlbDwvbGl0ZXJhbD4KKyAgICAgICAgYW5kIGEgc2luZ2xl IDxsaXRlcmFsPmxldmVsPC9saXRlcmFsPi4gVGhlIGxpc3QgYWxsb3dzIGl0IHRvIHVzZQor ICAgICAgICBkaWZmZXJlbnQgbGV2ZWxzIHBlciBiYWNrZW5kIHR5cGUuCisgICAgICAgIFZh bGlkIDxsaXRlcmFsPmJhY2tlbmR0eXBlPC9saXRlcmFsPiB2YWx1ZXMgYXJlIDxsaXRlcmFs PmFyY2hpdmVyPC9saXRlcmFsPiwKKyAgICAgICAgPGxpdGVyYWw+YXV0b3ZhY3V1bTwvbGl0 ZXJhbD4sIDxsaXRlcmFsPmJhY2tlbmQ8L2xpdGVyYWw+LAorICAgICAgICA8bGl0ZXJhbD5i Z3dvcmtlcjwvbGl0ZXJhbD4sIDxsaXRlcmFsPmJnd3JpdGVyPC9saXRlcmFsPiwKKyAgICAg ICAgPGxpdGVyYWw+Y2hlY2twb2ludGVyPC9saXRlcmFsPiwgPGxpdGVyYWw+bG9nZ2VyPC9s aXRlcmFsPiwKKyAgICAgICAgPGxpdGVyYWw+c2xvdHN5bmN3b3JrZXI8L2xpdGVyYWw+LCA8 bGl0ZXJhbD53YWxyZWNlaXZlcjwvbGl0ZXJhbD4sCisgICAgICAgIDxsaXRlcmFsPndhbHNl bmRlcjwvbGl0ZXJhbD4sIDxsaXRlcmFsPndhbHN1bW1hcml6ZXI8L2xpdGVyYWw+LCBhbmQK KyAgICAgICAgPGxpdGVyYWw+d2Fsd3JpdGVyPC9saXRlcmFsPi4KKyAgICAgICAgVmFsaWQg PGxpdGVyYWw+TEVWRUw8L2xpdGVyYWw+IHZhbHVlcyBhcmUgPGxpdGVyYWw+REVCVUc1PC9s aXRlcmFsPiwKKyAgICAgICAgPGxpdGVyYWw+REVCVUc0PC9saXRlcmFsPiwgPGxpdGVyYWw+ REVCVUczPC9saXRlcmFsPiwgPGxpdGVyYWw+REVCVUcyPC9saXRlcmFsPiwKKyAgICAgICAg PGxpdGVyYWw+REVCVUcxPC9saXRlcmFsPiwgPGxpdGVyYWw+SU5GTzwvbGl0ZXJhbD4sIDxs aXRlcmFsPk5PVElDRTwvbGl0ZXJhbD4sCisgICAgICAgIDxsaXRlcmFsPldBUk5JTkc8L2xp dGVyYWw+LCA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkxPRzwvbGl0ZXJh bD4sCisgICAgICAgIDxsaXRlcmFsPkZBVEFMPC9saXRlcmFsPiwgYW5kIDxsaXRlcmFsPlBB TklDPC9saXRlcmFsPi4gIEVhY2ggbGV2ZWwgaW5jbHVkZXMKKyAgICAgICAgYWxsIHRoZSBs ZXZlbHMgdGhhdCBmb2xsb3cgaXQuICBUaGUgbGF0ZXIgdGhlIGxldmVsLCB0aGUgZmV3ZXIg bWVzc2FnZXMgYXJlIHNlbnQKKyAgICAgICAgdG8gdGhlIGxvZy4gVGhlIHNpbmdsZSA8bGl0 ZXJhbD5MRVZFTDwvbGl0ZXJhbD4gaXMgbWFuZGF0b3J5IGFuZCBpdCBpcworICAgICAgICBh c3NpZ25lZCB0byB0aGUgYmFja2VuZCB0eXBlcyB0aGF0IGFyZSBub3Qgc3BlY2lmaWVkIGlu IHRoZSBsaXN0LiAgVGhlCisgICAgICAgIGRlZmF1bHQgaXMgPGxpdGVyYWw+V0FSTklORzwv bGl0ZXJhbD4gZm9yIGFsbCBiYWNrZW5kIHR5cGVzLgorICAgICAgICBOb3RlIHRoYXQgPGxp dGVyYWw+TE9HPC9saXRlcmFsPiBoYXMgYSBkaWZmZXJlbnQgcmFuayBoZXJlIHRoYW4gaW4K ICAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3VjLWNsaWVudC1taW4tbWVzc2FnZXMiLz4uCiAg ICAgICAgIE9ubHkgc3VwZXJ1c2VycyBhbmQgdXNlcnMgd2l0aCB0aGUgYXBwcm9wcmlhdGUg PGxpdGVyYWw+U0VUPC9saXRlcmFsPgogICAgICAgICBwcml2aWxlZ2UgY2FuIGNoYW5nZSB0 aGlzIHNldHRpbmcuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNp b24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IGQ5YmI0Y2U1 ZjFlLi45MzkyM2MyNmE3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0 ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTEw NTksNyArMTA1OSw3IEBAIGV4ZWN1dGVfZXh0ZW5zaW9uX3NjcmlwdChPaWQgZXh0ZW5zaW9u T2lkLCBFeHRlbnNpb25Db250cm9sRmlsZSAqY29udHJvbCwKIAkJKHZvaWQpIHNldF9jb25m aWdfb3B0aW9uKCJjbGllbnRfbWluX21lc3NhZ2VzIiwgIndhcm5pbmciLAogCQkJCQkJCQkg UEdDX1VTRVJTRVQsIFBHQ19TX1NFU1NJT04sCiAJCQkJCQkJCSBHVUNfQUNUSU9OX1NBVkUs IHRydWUsIDAsIGZhbHNlKTsKLQlpZiAobG9nX21pbl9tZXNzYWdlcyA8IFdBUk5JTkcpCisJ aWYgKGxvZ19taW5fbWVzc2FnZXNbTXlCYWNrZW5kVHlwZV0gPCBXQVJOSU5HKQogCQkodm9p ZCkgc2V0X2NvbmZpZ19vcHRpb25fZXh0KCJsb2dfbWluX21lc3NhZ2VzIiwgIndhcm5pbmci LAogCQkJCQkJCQkJIFBHQ19TVVNFVCwgUEdDX1NfU0VTU0lPTiwKIAkJCQkJCQkJCSBCT09U U1RSQVBfU1VQRVJVU0VSSUQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92 YXJpYWJsZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFyaWFibGUuYwppbmRleCA0YWQ2 ZTIzNmQ2OS4uMGY2NDYyOThiZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ZhcmlhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFyaWFibGUuYwpAQCAt MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdGV0aW1lLmgiCiAjaW5jbHVkZSAi dXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgorI2lu Y2x1ZGUgInV0aWxzL2d1Y190YWJsZXMuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgi CiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3Rh bXAuaCIKQEAgLTEyNzEsMyArMTI3MiwxODkgQEAgY2hlY2tfc3NsKGJvb2wgKm5ld3ZhbCwg dm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291cmNlKQogI2VuZGlmCiAJcmV0dXJuIHRydWU7 CiB9CisKKy8qCisgKiBHVUMgY2hlY2tfaG9vayBmb3IgbG9nX21pbl9tZXNzYWdlcworICoK KyAqIFRoZSBwYXJzaW5nIGNvbnNpc3RzIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Yg QkFDS0VORFRZUEVOQU1FOkxFVkVMCisgKiBlbGVtZW50cy4gQkFDS0VORFRZUEVOQU1FIGlz IGxvZ19taW5fbWVzc2FnZXNfYmFja2VuZF90eXBlcy4gIExFVkVMIGlzCisgKiBzZXJ2ZXJf bWVzc2FnZV9sZXZlbF9vcHRpb25zLiBBIHNpbmdsZSBMRVZFTCBlbGVtZW50IHNob3VsZCBi ZSBwYXJ0IG9mIHRoaXMKKyAqIGxpc3QgYW5kIGl0IGlzIGFwcGxpZWQgYXMgYSBmaW5hbCBz dGVwIHRvIHRoZSBiYWNrZW5kIHR5cGVzIHRoYXQgYXJlIG5vdAorICogc3BlY2lmaWVkLiBG b3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIG9sZCBzeW50YXggaXMgc3RpbGwgYWNj ZXB0ZWQgYW5kCisgKiBpdCBtZWFucyB0byBhcHBseSB0aGlzIGxldmVsIGZvciBhbGwgYmFj a2VuZCB0eXBlcy4KKyAqLworYm9vbAorY2hlY2tfbG9nX21pbl9tZXNzYWdlcyhjaGFyICoq bmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2UpCit7CisJY2hhcgkgICAq cmF3c3RyaW5nOworCUxpc3QJICAgKmVsZW1saXN0OworCUxpc3RDZWxsICAgKmw7CisJaW50 CQkJbmV3bGV2ZWxzW0JBQ0tFTkRfTlVNX1RZUEVTXTsKKwlib29sCQlhc3NpZ25lZFtCQUNL RU5EX05VTV9UWVBFU107CisJaW50CQkJZ2VuZXJpY2xldmVsID0gLTE7CS8qIC0xIG1lYW5z IG5vdCBhc3NpZ25lZCAqLworCisJLyogSW5pdGlhbGl6ZSB0aGUgYXJyYXkuICovCisJbWVt c2V0KG5ld2xldmVscywgV0FSTklORywgQkFDS0VORF9OVU1fVFlQRVMgKiBzaXplb2YoaW50 KSk7CisJbWVtc2V0KGFzc2lnbmVkLCBmYWxzZSwgQkFDS0VORF9OVU1fVFlQRVMgKiBzaXpl b2YoYm9vbCkpOworCisJLyogTmVlZCBhIG1vZGlmaWFibGUgY29weSBvZiBzdHJpbmcuICov CisJcmF3c3RyaW5nID0gcHN0cmR1cCgqbmV3dmFsKTsKKworCS8qIFBhcnNlIHN0cmluZyBp bnRvIGxpc3Qgb2YgaWRlbnRpZmllcnMuICovCisJaWYgKCFTcGxpdEdVQ0xpc3QocmF3c3Ry aW5nLCAnLCcsICZlbGVtbGlzdCkpCisJeworCQkvKiBzeW50YXggZXJyb3IgaW4gbGlzdCAq LworCQlHVUNfY2hlY2tfZXJyZGV0YWlsKCJMaXN0IHN5bnRheCBpcyBpbnZhbGlkLiIpOwor CQlwZnJlZShyYXdzdHJpbmcpOworCQlsaXN0X2ZyZWUoZWxlbWxpc3QpOworCQlyZXR1cm4g ZmFsc2U7CisJfQorCisJLyogVmFsaWRhdGUgYW5kIGFzc2lnbiBsb2cgbGV2ZWwgYW5kIGJh Y2tlbmQgdHlwZS4gKi8KKwlmb3JlYWNoKGwsIGVsZW1saXN0KQorCXsKKwkJY2hhcgkgICAq dG9rID0gKGNoYXIgKikgbGZpcnN0KGwpOworCQljaGFyCSAgICpzZXA7CisJCWNvbnN0IHN0 cnVjdCBjb25maWdfZW51bV9lbnRyeSAqZW50cnk7CisKKwkJLyoKKwkJICogQ2hlY2sgd2hl dGhlciB0aGVyZSBpcyBhIGJhY2tlbmQgdHlwZSBmb2xsb3dpbmcgdGhlIGxvZyBsZXZlbC4g SWYKKwkJICogdGhlcmUgaXMgbm8gc2VwYXJhdG9yLCBpdCBtZWFucyB0aGlzIGxvZyBsZXZl bCBzaG91bGQgYmUgYXBwbGllZAorCQkgKiBmb3IgYWxsIGJhY2tlbmQgdHlwZXMgKGJhY2t3 YXJkIGNvbXBhdGliaWxpdHkpLgorCQkgKi8KKwkJc2VwID0gc3RyY2hyKHRvaywgJzonKTsK KwkJaWYgKHNlcCA9PSBOVUxMKQorCQl7CisJCQlib29sCQlmb3VuZCA9IGZhbHNlOworCisJ CQkvKiBSZWplY3QgZHVwbGljYXRlcyBmb3IgZ2VuZXJpYyBsb2cgbGV2ZWwuICovCisJCQlp ZiAoZ2VuZXJpY2xldmVsICE9IC0xKQorCQkJeworCQkJCUdVQ19jaGVja19lcnJkZXRhaWwo IkdlbmVyaWMgbG9nIGxldmVsIHdhcyBhbHJlYWR5IGFzc2lnbmVkLiIpOworCQkJCXBmcmVl KHJhd3N0cmluZyk7CisJCQkJbGlzdF9mcmVlKGVsZW1saXN0KTsKKwkJCQlyZXR1cm4gZmFs c2U7CisJCQl9CisKKwkJCS8qIElzIHRoZSBsb2cgbGV2ZWwgdmFsaWQ/ICovCisJCQlmb3Ig KGVudHJ5ID0gc2VydmVyX21lc3NhZ2VfbGV2ZWxfb3B0aW9uczsgZW50cnkgJiYgZW50cnkt Pm5hbWU7IGVudHJ5KyspCisJCQl7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoZW50cnktPm5h bWUsIHRvaykgPT0gMCkKKwkJCQl7CisJCQkJCWdlbmVyaWNsZXZlbCA9IGVudHJ5LT52YWw7 CisJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCisJCQlp ZiAoIWZvdW5kKQorCQkJeworCQkJCUdVQ19jaGVja19lcnJkZXRhaWwoIlVucmVjb2duaXpl ZCBsb2cgbGV2ZWw6IFwiJXNcIi4iLCB0b2spOworCQkJCXBmcmVlKHJhd3N0cmluZyk7CisJ CQkJbGlzdF9mcmVlKGVsZW1saXN0KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisJCX0K KwkJZWxzZQorCQl7CisJCQljaGFyCSAgICpsb2dsZXZlbDsKKwkJCWNoYXIJICAgKmJ0eXBl OworCQkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKworCQkJYnR5cGUgPSBwYWxsb2MoKHNlcCAt IHRvaykgKyAxKTsKKwkJCW1lbWNweShidHlwZSwgdG9rLCBzZXAgLSB0b2spOworCQkJYnR5 cGVbc2VwIC0gdG9rXSA9ICdcMCc7CisJCQlsb2dsZXZlbCA9IHBzdHJkdXAoc2VwICsgMSk7 CisKKwkJCS8qIElzIHRoZSBsb2cgbGV2ZWwgdmFsaWQ/ICovCisJCQlmb3IgKGVudHJ5ID0g c2VydmVyX21lc3NhZ2VfbGV2ZWxfb3B0aW9uczsgZW50cnkgJiYgZW50cnktPm5hbWU7IGVu dHJ5KyspCisJCQl7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoZW50cnktPm5hbWUsIGxvZ2xl dmVsKSA9PSAwKQorCQkJCXsKKwkJCQkJZm91bmQgPSB0cnVlOworCQkJCQlicmVhazsKKwkJ CQl9CisJCQl9CisKKwkJCWlmICghZm91bmQpCisJCQl7CisJCQkJR1VDX2NoZWNrX2VycmRl dGFpbCgiVW5yZWNvZ25pemVkIGxvZyBsZXZlbDogXCIlc1wiLiIsIGxvZ2xldmVsKTsKKwkJ CQlwZnJlZShyYXdzdHJpbmcpOworCQkJCWxpc3RfZnJlZShlbGVtbGlzdCk7CisJCQkJcmV0 dXJuIGZhbHNlOworCQkJfQorCisJCQkvKgorCQkJICogSXMgdGhlIGJhY2tlbmQgdHlwZSBu YW1lIHZhbGlkPyBUaGVyZSBtaWdodCBiZSBtdWx0aXBsZSBlbnRyaWVzCisJCQkgKiBwZXIg YmFja2VuZCB0eXBlLCBkb24ndCBiYWlsIG91dCB3aGVuIGZpbmQgZmlyc3Qgb2NjdXJyZW5j ZS4KKwkJCSAqLworCQkJZm91bmQgPSBmYWxzZTsKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwg QkFDS0VORF9OVU1fVFlQRVM7IGkrKykKKwkJCXsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChs b2dfbWluX21lc3NhZ2VzX2JhY2tlbmRfdHlwZXNbaV0sIGJ0eXBlKSA9PSAwKQorCQkJCXsK KwkJCQkJbmV3bGV2ZWxzW2ldID0gZW50cnktPnZhbDsKKwkJCQkJYXNzaWduZWRbaV0gPSB0 cnVlOworCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJfQorCQkJfQorCisJCQlpZiAoIWZvdW5k KQorCQkJeworCQkJCUdVQ19jaGVja19lcnJkZXRhaWwoIlVucmVjb2duaXplZCBiYWNrZW5k IHR5cGU6IFwiJXNcIi4iLCBidHlwZSk7CisJCQkJcGZyZWUocmF3c3RyaW5nKTsKKwkJCQls aXN0X2ZyZWUoZWxlbWxpc3QpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJfQorCX0K KworCS8qCisJICogR2VuZXJpYyBsb2cgbGV2ZWwgbXVzdCBiZSBzcGVjaWZpZWQuIEl0IGlz IGEgZ29vZCBpZGVhIHRvIHNwZWNpZnkgYQorCSAqIGdlbmVyaWMgbG9nIGxldmVsIHRvIG1h a2UgaXQgY2xlYXIgdGhhdCBpdCBpcyB0aGUgZmFsbGJhY2sgdmFsdWUuCisJICogQWx0aG91 Z2gsIHdlIGNhbiBkb2N1bWVudCBpdCwgaXQgbWlnaHQgY29uZnVzZSB1c2VycyB0aGF0IHVz ZWQgdG8KKwkgKiBzcGVjaWZ5IGEgc2luZ2xlIGxvZyBsZXZlbCBpbiBwcmlvciByZWxlYXNl cy4KKwkgKi8KKwlpZiAoZ2VuZXJpY2xldmVsID09IC0xKQorCXsKKwkJR1VDX2NoZWNrX2Vy cmRldGFpbCgiR2VuZXJpYyBsb2cgbGV2ZWwgd2FzIG5vdCBkZWZpbmVkLiIpOworCQlwZnJl ZShyYXdzdHJpbmcpOworCQlsaXN0X2ZyZWUoZWxlbWxpc3QpOworCQlyZXR1cm4gZmFsc2U7 CisJfQorCisJLyoKKwkgKiBBcHBseSB0aGUgZ2VuZXJpYyBsb2cgbGV2ZWwgKHRoZSBvbmUg d2l0aG91dCBhIGJhY2tlbmQgdHlwZSkgYWZ0ZXIgYWxsCisJICogb2YgdGhlIHNwZWNpZmlj IGJhY2tlbmQgdHlwZSBoYXZlIGJlZW4gYXNzaWduZWQuIEhlbmNlLCBpdCBkb2Vzbid0CisJ ICogbWF0dGVyIHRoZSBvcmRlciB5b3Ugc3BlY2lmeSB0aGUgZ2VuZXJpYyBsb2cgbGV2ZWws IHRoZSBmaW5hbCByZXN1bHQKKwkgKiB3aWxsIGJlIHRoZSBzYW1lLgorCSAqLworCWZvciAo aW50IGkgPSAwOyBpIDwgQkFDS0VORF9OVU1fVFlQRVM7IGkrKykKKwl7CisJCWlmICghYXNz aWduZWRbaV0pCisJCQluZXdsZXZlbHNbaV0gPSBnZW5lcmljbGV2ZWw7CisJfQorCisJcGZy ZWUocmF3c3RyaW5nKTsKKwlsaXN0X2ZyZWUoZWxlbWxpc3QpOworCisJLyoKKwkgKiBQYXNz IGJhY2sgZGF0YSBmb3IgYXNzaWduX2xvZ19taW5fbWVzc2FnZXMgdG8gdXNlLgorCSAqLwor CSpleHRyYSA9IGd1Y19tYWxsb2MoTE9HLCBCQUNLRU5EX05VTV9UWVBFUyAqIHNpemVvZihp bnQpKTsKKwlpZiAoISpleHRyYSkKKwkJcmV0dXJuIGZhbHNlOworCW1lbWNweSgqZXh0cmEs IG5ld2xldmVscywgQkFDS0VORF9OVU1fVFlQRVMgKiBzaXplb2YoaW50KSk7CisKKwlyZXR1 cm4gdHJ1ZTsKK30KKworLyoKKyAqIEdVQyBhc3NpZ25faG9vayBmb3IgbG9nX21pbl9tZXNz YWdlcworICovCit2b2lkCithc3NpZ25fbG9nX21pbl9tZXNzYWdlcyhjb25zdCBjaGFyICpu ZXd2YWwsIHZvaWQgKmV4dHJhKQoreworCWZvciAoaW50IGkgPSAwOyBpIDwgQkFDS0VORF9O VU1fVFlQRVM7IGkrKykKKwkJbG9nX21pbl9tZXNzYWdlc1tpXSA9ICgoaW50ICopIGV4dHJh KVtpXTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYwppbmRleCA4NjBiYmQ0MGQ0Mi4uZmM1 YWVkYWIwYzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKQEAgLTIzNCw3ICsyMzQsNyBA QCBpc19sb2dfbGV2ZWxfb3V0cHV0KGludCBlbGV2ZWwsIGludCBsb2dfbWluX2xldmVsKQog c3RhdGljIGlubGluZSBib29sCiBzaG91bGRfb3V0cHV0X3RvX3NlcnZlcihpbnQgZWxldmVs KQogewotCXJldHVybiBpc19sb2dfbGV2ZWxfb3V0cHV0KGVsZXZlbCwgbG9nX21pbl9tZXNz YWdlcyk7CisJcmV0dXJuIGlzX2xvZ19sZXZlbF9vdXRwdXQoZWxldmVsLCBsb2dfbWluX21l c3NhZ2VzW015QmFja2VuZFR5cGVdKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfdGFibGVzLmMKaW5kZXggYWQyNWNiYjM5YzUuLjlkMzg0NzRmYzc5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMTM5LDcgKzEzOSw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgY29uZmlnX2VudW1fZW50cnkgY2xpZW50X21lc3NhZ2VfbGV2ZWxfb3B0 aW9uc1tdID0gewogCXtOVUxMLCAwLCBmYWxzZX0KIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgY29uZmlnX2VudW1fZW50cnkgc2VydmVyX21lc3NhZ2VfbGV2ZWxfb3B0aW9uc1tdID0g eworY29uc3Qgc3RydWN0IGNvbmZpZ19lbnVtX2VudHJ5IHNlcnZlcl9tZXNzYWdlX2xldmVs X29wdGlvbnNbXSA9IHsKIAl7ImRlYnVnNSIsIERFQlVHNSwgZmFsc2V9LAogCXsiZGVidWc0 IiwgREVCVUc0LCBmYWxzZX0sCiAJeyJkZWJ1ZzMiLCBERUJVRzMsIGZhbHNlfSwKQEAgLTUy MSw3ICs1MjEsNiBAQCBzdGF0aWMgYm9vbCBkZWZhdWx0X3dpdGhfb2lkcyA9IGZhbHNlOwog Ym9vbAkJY3VycmVudF9yb2xlX2lzX3N1cGVydXNlcjsKIAogaW50CQkJbG9nX21pbl9lcnJv cl9zdGF0ZW1lbnQgPSBFUlJPUjsKLWludAkJCWxvZ19taW5fbWVzc2FnZXMgPSBXQVJOSU5H OwogaW50CQkJY2xpZW50X21pbl9tZXNzYWdlcyA9IE5PVElDRTsKIGludAkJCWxvZ19taW5f ZHVyYXRpb25fc2FtcGxlID0gLTE7CiBpbnQJCQlsb2dfbWluX2R1cmF0aW9uX3N0YXRlbWVu dCA9IC0xOwpAQCAtNTc5LDYgKzU3OCw3IEBAIHN0YXRpYyBjaGFyICpzZXJ2ZXJfdmVyc2lv bl9zdHJpbmc7CiBzdGF0aWMgaW50CXNlcnZlcl92ZXJzaW9uX251bTsKIHN0YXRpYyBjaGFy ICpkZWJ1Z19pb19kaXJlY3Rfc3RyaW5nOwogc3RhdGljIGNoYXIgKnJlc3RyaWN0X25vbnN5 c3RlbV9yZWxhdGlvbl9raW5kX3N0cmluZzsKK3N0YXRpYyBjaGFyICpsb2dfbWluX21lc3Nh Z2VzX3N0cmluZzsKIAogI2lmZGVmIEhBVkVfU1lTTE9HCiAjZGVmaW5lCURFRkFVTFRfU1lT TE9HX0ZBQ0lMSVRZIExPR19MT0NBTDAKQEAgLTYyMyw2ICs2MjMsNjAgQEAgY2hhcgkgICAq cm9sZV9zdHJpbmc7CiAvKiBzaG91bGQgYmUgc3RhdGljLCBidXQgZ3VjLmMgbmVlZHMgdG8g Z2V0IGF0IHRoaXMgKi8KIGJvb2wJCWluX2hvdF9zdGFuZGJ5X2d1YzsKIAorLyoKKyAqIFRo aXMgbXVzdCBtYXRjaCBlbnVtIEJhY2tlbmRUeXBlISBJdCBzaG91bGQgYmUgc3RhdGljLCBi dXQKKyAqIGNvbW1hbmRzL3ZhcmlhYmxlLmMgbmVlZHMgdG8gZ2V0IGF0IHRoaXMuCisgKi8K K2ludAkJCWxvZ19taW5fbWVzc2FnZXNbXSA9IHsKKwlbQl9JTlZBTElEXSA9IFdBUk5JTkcs CisJW0JfQkFDS0VORF0gPSBXQVJOSU5HLAorCVtCX0RFQURfRU5EX0JBQ0tFTkRdID0gV0FS TklORywKKwlbQl9BVVRPVkFDX0xBVU5DSEVSXSA9IFdBUk5JTkcsCisJW0JfQVVUT1ZBQ19X T1JLRVJdID0gV0FSTklORywKKwlbQl9CR19XT1JLRVJdID0gV0FSTklORywKKwlbQl9XQUxf U0VOREVSXSA9IFdBUk5JTkcsCisJW0JfU0xPVFNZTkNfV09SS0VSXSA9IFdBUk5JTkcsCisJ W0JfU1RBTkRBTE9ORV9CQUNLRU5EXSA9IFdBUk5JTkcsCisJW0JfQVJDSElWRVJdID0gV0FS TklORywKKwlbQl9CR19XUklURVJdID0gV0FSTklORywKKwlbQl9DSEVDS1BPSU5URVJdID0g V0FSTklORywKKwlbQl9TVEFSVFVQXSA9IFdBUk5JTkcsCisJW0JfV0FMX1JFQ0VJVkVSXSA9 IFdBUk5JTkcsCisJW0JfV0FMX1NVTU1BUklaRVJdID0gV0FSTklORywKKwlbQl9XQUxfV1JJ VEVSXSA9IFdBUk5JTkcsCisJW0JfTE9HR0VSXSA9IFdBUk5JTkcsCit9OworCitTdGF0aWNB c3NlcnREZWNsKGxlbmd0aG9mKGxvZ19taW5fbWVzc2FnZXMpID09IEJBQ0tFTkRfTlVNX1RZ UEVTLAorCQkJCSAiYXJyYXkgbGVuZ3RoIG1pc21hdGNoIik7CisKKy8qCisgKiBUaGlzIG11 c3QgbWF0Y2ggZW51bSBCYWNrZW5kVHlwZSEgSXQgbWlnaHQgYmUgaW4gY29tbWFuZHMvdmFy aWFibGUuYyBidXQgZm9yCisgKiBjb252ZW5pZW5jZSBpdCBpcyBuZWFyIGxvZ19taW5fbWVz c2FnZXMuCisgKi8KK2NvbnN0IGNoYXIgKmNvbnN0IGxvZ19taW5fbWVzc2FnZXNfYmFja2Vu ZF90eXBlc1tdID0geworCVtCX0lOVkFMSURdID0gImJhY2tlbmQiLAkvKiBYWFggc2FtZSBh cyBiYWNrZW5kPyAqLworCVtCX0JBQ0tFTkRdID0gImJhY2tlbmQiLAorCVtCX0RFQURfRU5E X0JBQ0tFTkRdID0gImJhY2tlbmQiLAkvKiBYWFggc2FtZSBhcyBiYWNrZW5kPyAqLworCVtC X0FVVE9WQUNfTEFVTkNIRVJdID0gImF1dG92YWN1dW0iLAorCVtCX0FVVE9WQUNfV09SS0VS XSA9ICJhdXRvdmFjdXVtIiwKKwlbQl9CR19XT1JLRVJdID0gImJnd29ya2VyIiwKKwlbQl9X QUxfU0VOREVSXSA9ICJ3YWxzZW5kZXIiLAorCVtCX1NMT1RTWU5DX1dPUktFUl0gPSAic2xv dHN5bmN3b3JrZXIiLAorCVtCX1NUQU5EQUxPTkVfQkFDS0VORF0gPSAiYmFja2VuZCIsIC8q IFhYWCBzYW1lIGFzIGJhY2tlbmQ/ICovCisJW0JfQVJDSElWRVJdID0gImFyY2hpdmVyIiwK KwlbQl9CR19XUklURVJdID0gImJnd3JpdGVyIiwKKwlbQl9DSEVDS1BPSU5URVJdID0gImNo ZWNrcG9pbnRlciIsCisJW0JfU1RBUlRVUF0gPSAiYmFja2VuZCIsCS8qIFhYWCBzYW1lIGFz IGJhY2tlbmQ/ICovCisJW0JfV0FMX1JFQ0VJVkVSXSA9ICJ3YWxyZWNlaXZlciIsCisJW0Jf V0FMX1NVTU1BUklaRVJdID0gIndhbHN1bW1hcml6ZXIiLAorCVtCX1dBTF9XUklURVJdID0g IndhbHdyaXRlciIsCisJW0JfTE9HR0VSXSA9ICJsb2dnZXIiLAorfTsKKworU3RhdGljQXNz ZXJ0RGVjbChsZW5ndGhvZihsb2dfbWluX21lc3NhZ2VzX2JhY2tlbmRfdHlwZXMpID09IEJB Q0tFTkRfTlVNX1RZUEVTLAorCQkJCSAiYXJyYXkgbGVuZ3RoIG1pc21hdGNoIik7CisKIAog LyoKICAqIERpc3BsYXlhYmxlIG5hbWVzIGZvciBjb250ZXh0IHR5cGVzIChlbnVtIEd1Y0Nv bnRleHQpCkBAIC00MjIzLDYgKzQyNzcsMTggQEAgc3RydWN0IGNvbmZpZ19zdHJpbmcgQ29u ZmlndXJlTmFtZXNTdHJpbmdbXSA9CiAJCWNoZWNrX2NsaWVudF9lbmNvZGluZywgYXNzaWdu X2NsaWVudF9lbmNvZGluZywgTlVMTAogCX0sCiAKKwl7CisJCXsibG9nX21pbl9tZXNzYWdl cyIsIFBHQ19TVVNFVCwgTE9HR0lOR19XSEVOLAorCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRo ZSBtZXNzYWdlIGxldmVscyB0aGF0IGFyZSBsb2dnZWQuIiksCisJCQlnZXR0ZXh0X25vb3Ao IkVhY2ggbGV2ZWwgaW5jbHVkZXMgYWxsIHRoZSBsZXZlbHMgdGhhdCBmb2xsb3cgaXQuIFRo ZSBsYXRlciIKKwkJCQkJCSAiIHRoZSBsZXZlbCwgdGhlIGZld2VyIG1lc3NhZ2VzIGFyZSBz ZW50LiIpLAorCQkJR1VDX0xJU1RfSU5QVVQKKwkJfSwKKwkJJmxvZ19taW5fbWVzc2FnZXNf c3RyaW5nLAorCQkiV0FSTklORyIsCisJCWNoZWNrX2xvZ19taW5fbWVzc2FnZXMsIGFzc2ln bl9sb2dfbWluX21lc3NhZ2VzLCBOVUxMCisJfSwKKwogCXsKIAkJeyJsb2dfbGluZV9wcmVm aXgiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dIQVQsCiAJCQlnZXR0ZXh0X25vb3AoIkNvbnRy b2xzIGluZm9ybWF0aW9uIHByZWZpeGVkIHRvIGVhY2ggbG9nIGxpbmUuIiksCkBAIC01MDEx LDE3ICs1MDc3LDYgQEAgc3RydWN0IGNvbmZpZ19lbnVtIENvbmZpZ3VyZU5hbWVzRW51bVtd ID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKLQl7Ci0JCXsibG9nX21pbl9tZXNzYWdl cyIsIFBHQ19TVVNFVCwgTE9HR0lOR19XSEVOLAotCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRo ZSBtZXNzYWdlIGxldmVscyB0aGF0IGFyZSBsb2dnZWQuIiksCi0JCQlnZXR0ZXh0X25vb3Ao IkVhY2ggbGV2ZWwgaW5jbHVkZXMgYWxsIHRoZSBsZXZlbHMgdGhhdCBmb2xsb3cgaXQuIFRo ZSBsYXRlciIKLQkJCQkJCSAiIHRoZSBsZXZlbCwgdGhlIGZld2VyIG1lc3NhZ2VzIGFyZSBz ZW50LiIpCi0JCX0sCi0JCSZsb2dfbWluX21lc3NhZ2VzLAotCQlXQVJOSU5HLCBzZXJ2ZXJf bWVzc2FnZV9sZXZlbF9vcHRpb25zLAotCQlOVUxMLCBOVUxMLCBOVUxMCi0JfSwKLQogCXsK IAkJeyJsb2dfbWluX2Vycm9yX3N0YXRlbWVudCIsIFBHQ19TVVNFVCwgTE9HR0lOR19XSEVO LAogCQkJZ2V0dGV4dF9ub29wKCJDYXVzZXMgYWxsIHN0YXRlbWVudHMgZ2VuZXJhdGluZyBl cnJvciBhdCBvciBhYm92ZSB0aGlzIGxldmVsIHRvIGJlIGxvZ2dlZC4iKSwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCAyZDFk ZTljMzdiZC4uYzk5ZTFmYjkwYWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTUyNiw2ICs1MjYsNyBAQAogCQkJCQkjICAg bG9nCiAJCQkJCSMgICBmYXRhbAogCQkJCQkjICAgcGFuaWMKKwkJCQkJIyAgIG9yIGEgY29t bWEtc2VwYXJhdGVkIGxpc3Qgb2YgYmFja2VuZF90eXBlOmxldmVsCiAKICNsb2dfbWluX2Vy cm9yX3N0YXRlbWVudCA9IGVycm9yCSMgdmFsdWVzIGluIG9yZGVyIG9mIGRlY3JlYXNpbmcg ZGV0YWlsOgogCQkJCQkjICAgZGVidWc1CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNj YWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IGEyYjYzNDk1ZWVjLi4z NmIwYjgyY2YzZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIv c3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTMzMiw2ICszMzIsOCBAQCBleHRlcm4gdm9p ZCBTd2l0Y2hCYWNrVG9Mb2NhbExhdGNoKHZvaWQpOwogICoKICAqIElmIHlvdSBhZGQgZW50 cmllcywgcGxlYXNlIGFsc28gdXBkYXRlIHRoZSBjaGlsZF9wcm9jZXNzX2tpbmRzIGFycmF5 IGluCiAgKiBsYXVuY2hfYmFja2VuZC5jLgorICogWFhYIElmIHlvdSBhZGQgYSBuZXcgYmFj a2VuZCB0eXBlIG9yIGNoYW5nZSB0aGUgb3JkZXIsIHVwZGF0ZQorICogbG9nX21pbl9tZXNz YWdlcyBiZWNhdXNlIGl0IHJlbGllcyBvbiB0aGlzIG9yZGVyIHRvIHdvcmsgY29ycmVjdGx5 LgogICovCiB0eXBlZGVmIGVudW0gQmFja2VuZFR5cGUKIHsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL2d1Yy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjLmgKaW5kZXggMTIz M2UwN2Q3ZGEuLmJiMjNjYTY1NDQ5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9n dWMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9ndWMuaApAQCAtMjcxLDcgKzI3MSw3IEBA IGV4dGVybiBQR0RMTElNUE9SVCBib29sIGxvZ19kdXJhdGlvbjsKIGV4dGVybiBQR0RMTElN UE9SVCBpbnQgbG9nX3BhcmFtZXRlcl9tYXhfbGVuZ3RoOwogZXh0ZXJuIFBHRExMSU1QT1JU IGludCBsb2dfcGFyYW1ldGVyX21heF9sZW5ndGhfb25fZXJyb3I7CiBleHRlcm4gUEdETExJ TVBPUlQgaW50IGxvZ19taW5fZXJyb3Jfc3RhdGVtZW50OwotZXh0ZXJuIFBHRExMSU1QT1JU IGludCBsb2dfbWluX21lc3NhZ2VzOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBsb2dfbWlu X21lc3NhZ2VzW107CiBleHRlcm4gUEdETExJTVBPUlQgaW50IGNsaWVudF9taW5fbWVzc2Fn ZXM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IGxvZ19taW5fZHVyYXRpb25fc2FtcGxlOwog ZXh0ZXJuIFBHRExMSU1QT1JUIGludCBsb2dfbWluX2R1cmF0aW9uX3N0YXRlbWVudDsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvZ3VjX2hvb2tzLmgKaW5kZXggOTUxNDUxYTk3NjUuLmNmMjc5NjBlMjM5IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9ndWNfaG9va3MuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9ndWNfaG9va3MuaApAQCAtMTc2LDUgKzE3Niw3IEBAIGV4dGVybiBib29sIGNo ZWNrX3N5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzKGNoYXIgKipuZXd2YWwsIHZvaWQgKipl eHRyYSwKIGV4dGVybiB2b2lkIGFzc2lnbl9zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyhj b25zdCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4dHJhKTsKIGV4dGVybiBib29sIGNoZWNrX2lk bGVfcmVwbGljYXRpb25fc2xvdF90aW1lb3V0KGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEs CiAJCQkJCQkJCQkJCQlHdWNTb3VyY2Ugc291cmNlKTsKK2V4dGVybiBib29sIGNoZWNrX2xv Z19taW5fbWVzc2FnZXMoY2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ug c291cmNlKTsKK2V4dGVybiB2b2lkIGFzc2lnbl9sb2dfbWluX21lc3NhZ2VzKGNvbnN0IGNo YXIgKm5ld3ZhbCwgdm9pZCAqZXh0cmEpOwogCiAjZW5kaWYJCQkJCQkJLyogR1VDX0hPT0tT X0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y190YWJsZXMuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2d1Y190YWJsZXMuaAppbmRleCBhYjQ3MTQ1ZWMzNi4uOGE2MGVj NTk5N2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y190YWJsZXMuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy9ndWNfdGFibGVzLmgKQEAgLTI5Nyw2ICsyOTcsMTAgQEAg c3RydWN0IGNvbmZpZ19lbnVtCiAJdm9pZAkgICAqcmVzZXRfZXh0cmE7CiB9OwogCisvKiBs b2dfbWluX21lc3NhZ2VzICovCitleHRlcm4gUEdETExJTVBPUlQgY29uc3QgY2hhciAqY29u c3QgbG9nX21pbl9tZXNzYWdlc19iYWNrZW5kX3R5cGVzW107CitleHRlcm4gUEdETExJTVBP UlQgY29uc3Qgc3RydWN0IGNvbmZpZ19lbnVtX2VudHJ5IHNlcnZlcl9tZXNzYWdlX2xldmVs X29wdGlvbnNbXTsKKwogLyogY29uc3RhbnQgdGFibGVzIGNvcnJlc3BvbmRpbmcgdG8gZW51 bXMgYWJvdmUgYW5kIGluIGd1Yy5oICovCiBleHRlcm4gUEdETExJTVBPUlQgY29uc3QgY2hh ciAqY29uc3QgY29uZmlnX2dyb3VwX25hbWVzW107CiBleHRlcm4gUEdETExJTVBPUlQgY29u c3QgY2hhciAqY29uc3QgY29uZmlnX3R5cGVfbmFtZXNbXTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZ3VjLm91dAppbmRleCA3ZjllMjljNzY1Yy4uNzU3MmUwYWRkYmMgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2d1Yy5vdXQKQEAgLTkxMywzICs5MTMsNTEgQEAgU0VMRUNUIG5hbWUg RlJPTSB0YWJfc2V0dGluZ3NfZmxhZ3MKICgwIHJvd3MpCiAKIERST1AgVEFCTEUgdGFiX3Nl dHRpbmdzX2ZsYWdzOworLS0gVGVzdCBsb2dfbWluX21lc3NhZ2VzCitTRVQgbG9nX21pbl9t ZXNzYWdlcyBUTyBmYXRhbDsKK1NIT1cgbG9nX21pbl9tZXNzYWdlczsKKyBsb2dfbWluX21l c3NhZ2VzIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgZmF0YWwKKygxIHJvdykKKworU0VUIGxv Z19taW5fbWVzc2FnZXMgVE8gJ2ZhdGFsJzsKK1NIT1cgbG9nX21pbl9tZXNzYWdlczsKKyBs b2dfbWluX21lc3NhZ2VzIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgZmF0YWwKKygxIHJvdykK KworU0VUIGxvZ19taW5fbWVzc2FnZXMgVE8gJ2NoZWNrcG9pbnRlcjpkZWJ1ZzIsIGF1dG92 YWN1dW06ZGVidWcxJzsgIC0tZmFpbAorRVJST1I6ICBpbnZhbGlkIHZhbHVlIGZvciBwYXJh bWV0ZXIgImxvZ19taW5fbWVzc2FnZXMiOiAiY2hlY2twb2ludGVyOmRlYnVnMiwgYXV0b3Zh Y3V1bTpkZWJ1ZzEiCitERVRBSUw6ICBHZW5lcmljIGxvZyBsZXZlbCB3YXMgbm90IGRlZmlu ZWQuCitTRVQgbG9nX21pbl9tZXNzYWdlcyBUTyAnZGVidWcxLCBiYWNrZW5kOmVycm9yLCBm YXRhbCc7ICAtLSBmYWlsCitFUlJPUjogIGludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciAi bG9nX21pbl9tZXNzYWdlcyI6ICJkZWJ1ZzEsIGJhY2tlbmQ6ZXJyb3IsIGZhdGFsIgorREVU QUlMOiAgR2VuZXJpYyBsb2cgbGV2ZWwgd2FzIGFscmVhZHkgYXNzaWduZWQuCitTRVQgbG9n X21pbl9tZXNzYWdlcyBUTyAnYmFja2VuZDplcnJvciwgZm9vOmZhdGFsLCBhcmNoaXZlcjpk ZWJ1ZzEnOyAgLS0gZmFpbAorRVJST1I6ICBpbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIg ImxvZ19taW5fbWVzc2FnZXMiOiAiYmFja2VuZDplcnJvciwgZm9vOmZhdGFsLCBhcmNoaXZl cjpkZWJ1ZzEiCitERVRBSUw6ICBVbnJlY29nbml6ZWQgYmFja2VuZCB0eXBlOiAiZm9vIi4K K1NFVCBsb2dfbWluX21lc3NhZ2VzIFRPICdiYWNrZW5kOmVycm9yLCBjaGVja3BvaW50ZXI6 YmFyLCBhcmNoaXZlcjpkZWJ1ZzEnOyAgLS0gZmFpbAorRVJST1I6ICBpbnZhbGlkIHZhbHVl IGZvciBwYXJhbWV0ZXIgImxvZ19taW5fbWVzc2FnZXMiOiAiYmFja2VuZDplcnJvciwgY2hl Y2twb2ludGVyOmJhciwgYXJjaGl2ZXI6ZGVidWcxIgorREVUQUlMOiAgVW5yZWNvZ25pemVk IGxvZyBsZXZlbDogImJhciIuCitTRVQgbG9nX21pbl9tZXNzYWdlcyBUTyAnYmFja2VuZDpl cnJvciwgY2hlY2twb2ludGVyOmRlYnVnMywgZmF0YWwsIGFyY2hpdmVyOmRlYnVnMiwgYXV0 b3ZhY3V1bTpkZWJ1ZzEsIHdhbHNlbmRlcjpkZWJ1ZzMnOworU0hPVyBsb2dfbWluX21lc3Nh Z2VzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19taW5f bWVzc2FnZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGJhY2tlbmQ6ZXJy b3IsIGNoZWNrcG9pbnRlcjpkZWJ1ZzMsIGZhdGFsLCBhcmNoaXZlcjpkZWJ1ZzIsIGF1dG92 YWN1dW06ZGVidWcxLCB3YWxzZW5kZXI6ZGVidWczCisoMSByb3cpCisKK1NFVCBsb2dfbWlu X21lc3NhZ2VzIFRPICd3YXJuaW5nLCBhdXRvdmFjdXVtOmRlYnVnMSc7CitTSE9XIGxvZ19t aW5fbWVzc2FnZXM7CisgICAgICBsb2dfbWluX21lc3NhZ2VzICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgd2FybmluZywgYXV0b3ZhY3V1bTpkZWJ1ZzEKKygxIHJv dykKKworU0VUIGxvZ19taW5fbWVzc2FnZXMgVE8gJ2F1dG92YWN1dW06ZGVidWcxLCB3YXJu aW5nJzsKK1NIT1cgbG9nX21pbl9tZXNzYWdlczsKKyAgICAgIGxvZ19taW5fbWVzc2FnZXMg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBhdXRvdmFjdXVtOmRlYnVn MSwgd2FybmluZworKDEgcm93KQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ndWMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3VjLnNxbAppbmRleCBmNjVmODRh MjYzMi4uZTlkZGRiNGU3MmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2d1 Yy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3VjLnNxbApAQCAtMzY4LDMgKzM2 OCwxOSBAQCBTRUxFQ1QgbmFtZSBGUk9NIHRhYl9zZXR0aW5nc19mbGFncwogICBXSEVSRSBu b19yZXNldCBBTkQgTk9UIG5vX3Jlc2V0X2FsbAogICBPUkRFUiBCWSAxOwogRFJPUCBUQUJM RSB0YWJfc2V0dGluZ3NfZmxhZ3M7CisKKy0tIFRlc3QgbG9nX21pbl9tZXNzYWdlcworU0VU IGxvZ19taW5fbWVzc2FnZXMgVE8gZmF0YWw7CitTSE9XIGxvZ19taW5fbWVzc2FnZXM7CitT RVQgbG9nX21pbl9tZXNzYWdlcyBUTyAnZmF0YWwnOworU0hPVyBsb2dfbWluX21lc3NhZ2Vz OworU0VUIGxvZ19taW5fbWVzc2FnZXMgVE8gJ2NoZWNrcG9pbnRlcjpkZWJ1ZzIsIGF1dG92 YWN1dW06ZGVidWcxJzsgIC0tZmFpbAorU0VUIGxvZ19taW5fbWVzc2FnZXMgVE8gJ2RlYnVn MSwgYmFja2VuZDplcnJvciwgZmF0YWwnOyAgLS0gZmFpbAorU0VUIGxvZ19taW5fbWVzc2Fn ZXMgVE8gJ2JhY2tlbmQ6ZXJyb3IsIGZvbzpmYXRhbCwgYXJjaGl2ZXI6ZGVidWcxJzsgIC0t IGZhaWwKK1NFVCBsb2dfbWluX21lc3NhZ2VzIFRPICdiYWNrZW5kOmVycm9yLCBjaGVja3Bv aW50ZXI6YmFyLCBhcmNoaXZlcjpkZWJ1ZzEnOyAgLS0gZmFpbAorU0VUIGxvZ19taW5fbWVz c2FnZXMgVE8gJ2JhY2tlbmQ6ZXJyb3IsIGNoZWNrcG9pbnRlcjpkZWJ1ZzMsIGZhdGFsLCBh cmNoaXZlcjpkZWJ1ZzIsIGF1dG92YWN1dW06ZGVidWcxLCB3YWxzZW5kZXI6ZGVidWczJzsK K1NIT1cgbG9nX21pbl9tZXNzYWdlczsKK1NFVCBsb2dfbWluX21lc3NhZ2VzIFRPICd3YXJu aW5nLCBhdXRvdmFjdXVtOmRlYnVnMSc7CitTSE9XIGxvZ19taW5fbWVzc2FnZXM7CitTRVQg bG9nX21pbl9tZXNzYWdlcyBUTyAnYXV0b3ZhY3V1bTpkZWJ1ZzEsIHdhcm5pbmcnOworU0hP VyBsb2dfbWluX21lc3NhZ2VzOwotLSAKMi4zOS41Cgo= --cb578754105b4606bc9315ce0a8e2090--