<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>233113</bug_id>
          
          <creation_ts>2021-11-14 16:14:29 -0800</creation_ts>
          <short_desc>Implement JPEG XL image decoder using libjxl</short_desc>
          <delta_ts>2021-11-18 16:40:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>208235</blocked>
    
    <blocked>233325</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</reporter>
          <assigned_to name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1814921</commentid>
    <comment_count>0</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-11-14 16:14:29 -0800</bug_when>
    <thetext>As an experimental feature, I&apos;d like to implement this for wincairo (and maybe for PlayStation?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815283</commentid>
    <comment_count>1</comment_count>
      <attachid>444319</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-11-15 16:55:24 -0800</bug_when>
    <thetext>Created attachment 444319
Patch for preliminary review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815588</commentid>
    <comment_count>2</comment_count>
      <attachid>444319</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-11-16 11:43:07 -0800</bug_when>
    <thetext>Comment on attachment 444319
Patch for preliminary review.

View in context: https://bugs.webkit.org/attachment.cgi?id=444319&amp;action=review

I see Chrome and Firefox both have this supported, but guarded behind an experimental feature flag. So we&apos;re the last major engine to add JXL to our source tree, and I suppose that answers the question of whether we should accept it or not.

As far as enabling it, WinCairo is a pretty low-risk port to start with. I think I&apos;d hesitate to enable in WPE/GTK until Firefox or Chrome goes first, since they are better at evaluating such things than we are.

Nice to see it built as a system dependency and not bundled. Also nice to see it has a modern API.

&gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:40
&gt; +    clear();

This clear() isn&apos;t needed, but it doesn&apos;t hurt either, good hygiene I suppose, so OK.

&gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:46
&gt; +ScalableImageDecoderFrame* JPEGXLImageDecoder::frameBufferAtIndex(size_t index)
&gt; +{
&gt; +    if (index)
&gt; +        return nullptr;

Hm, this doesn&apos;t seem good? Are you missing a FIXME here? It&apos;s only implemented for index=0?

&gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:69
&gt; +void JPEGXLImageDecoder::decode(bool onlySize, bool allDataReceived)

This function is only called from one place, so you don&apos;t need either parameter. onlySize is always false, and the allDataReceived parameter can be replaced with a call to isAllDataReceived() within this function.

&gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:125
&gt; +        if (status == JXL_DEC_ERROR) {
&gt; +            return status;
&gt; +        }
&gt; +        if (status == JXL_DEC_SUCCESS) {
&gt; +            return status;
&gt; +        }
&gt; +        if (status == JXL_DEC_NEED_MORE_INPUT) {
&gt; +            return status;
&gt; +        }

I would probably write it all in one conditional. Regardless of what you prefer, be sure to placate the style checker EWS. It&apos;s not going to like braces around single-line conditionals.

&gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:180
&gt; +        // FIXME:

What needs fixed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815755</commentid>
    <comment_count>3</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-11-16 17:56:51 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #2)&gt; 
&gt; &gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:46
&gt; &gt; +ScalableImageDecoderFrame* JPEGXLImageDecoder::frameBufferAtIndex(size_t index)
&gt; &gt; +{
&gt; &gt; +    if (index)
&gt; &gt; +        return nullptr;
&gt; 
&gt; Hm, this doesn&apos;t seem good? Are you missing a FIXME here? It&apos;s only
&gt; implemented for index=0?

Ah, yes, I should have added a TODO beccause talking with Don I started implementation without animations.


&gt; &gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:69
&gt; &gt; +void JPEGXLImageDecoder::decode(bool onlySize, bool allDataReceived)
&gt; 
&gt; This function is only called from one place, so you don&apos;t need either
&gt; parameter. onlySize is always false, and the allDataReceived parameter can
&gt; be replaced with a call to isAllDataReceived() within this function.

This function is also called within tryDecodeSize() (defined in the header)so both seems to be needed.

&gt; &gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:125
&gt; &gt; +        if (status == JXL_DEC_ERROR) {
&gt; &gt; +            return status;
&gt; &gt; +        }
&gt; &gt; +        if (status == JXL_DEC_SUCCESS) {
&gt; &gt; +            return status;
&gt; &gt; +        }
&gt; &gt; +        if (status == JXL_DEC_NEED_MORE_INPUT) {
&gt; &gt; +            return status;
&gt; &gt; +        }
&gt; 
&gt; I would probably write it all in one conditional. Regardless of what you
&gt; prefer, be sure to placate the style checker EWS. It&apos;s not going to like
&gt; braces around single-line conditionals.

I see. I&apos;ll fix that.
 
&gt; &gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:180
&gt; &gt; +        // FIXME:
&gt; 
&gt; What needs fixed?

I wonder if there&apos;s a RGBA/BGRA conversion utility. I think I saw something long time ago...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816172</commentid>
    <comment_count>4</comment_count>
      <attachid>444592</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-11-17 16:01:19 -0800</bug_when>
    <thetext>Created attachment 444592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816180</commentid>
    <comment_count>5</comment_count>
      <attachid>444594</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-11-17 16:11:51 -0800</bug_when>
    <thetext>Created attachment 444594
Patch (with --binary)

 - Tests added.

 - Check JPEG XL signature by using JxlSignatureCheck().

&gt; &gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:46
&gt; &gt; +ScalableImageDecoderFrame* JPEGXLImageDecoder::frameBufferAtIndex(size_t index)
&gt; &gt; +{
&gt; &gt; +    if (index)
&gt; &gt; +        return nullptr;
&gt; 
&gt; Hm, this doesn&apos;t seem good? Are you missing a FIXME here? It&apos;s only
&gt; implemented for index=0?

 - A TODO comment Added.

&gt; &gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:125
&gt; &gt; +        if (status == JXL_DEC_ERROR) {
&gt; &gt; +            return status;
&gt; &gt; +        }
&gt; &gt; +        if (status == JXL_DEC_SUCCESS) {
&gt; &gt; +            return status;
&gt; &gt; +        }
&gt; &gt; +        if (status == JXL_DEC_NEED_MORE_INPUT) {
&gt; &gt; +            return status;
&gt; &gt; +        }
&gt; 
&gt; I would probably write it all in one conditional. Regardless of what you
&gt; prefer, be sure to placate the style checker EWS. It&apos;s not going to like
&gt; braces around single-line conditionals.

 - Merged into one conditional.
 
&gt; &gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:180
&gt; &gt; +        // FIXME:
&gt; 
&gt; What needs fixed?

 - Set pixel with setPixel() function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816183</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-11-17 16:15:12 -0800</bug_when>
    <thetext>Would be good to try to get at least one more reviewer to look this over before landing, but it LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816281</commentid>
    <comment_count>7</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-11-17 19:38:58 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #6)
&gt; Would be good to try to get at least one more reviewer to look this over
&gt; before landing, but it LGTM.

Thank you for the review! Will try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816398</commentid>
    <comment_count>8</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-11-18 06:00:14 -0800</bug_when>
    <thetext>Patch LGTM for a first pass at this, thanks for working on it!

Probably we want to add an “USE_JPEGXL“ CMake option at some point,
instead of building the support if libjxl is found, to make the build
process more deterministic. That would be the same as we currently do
with other optional dependencies like USE_WOFF2 or USE_OPENJPEG. It
would be nice to try to enable the code for other ports as well; my
expectation is that it won&apos;t be much more than adding the relevant
CMake bits to the Options${PORT}.cmake files — but I think we could
land this one as-is and continue improving things in follo-up patches =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816435</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-11-18 08:08:55 -0800</bug_when>
    <thetext>What Adrian suggests would certainly be required for WPE/GTK. WinCairo does things automagically, though. I understand this is less of a problem there because the dependencies are more tightly controlled.

&gt; It would be nice to try to enable the code for other ports as well; my expectation is that it won&apos;t be much more than adding the relevant CMake bits to the Options${PORT}.cmake files

Could be easily done in this patch, or in a follow-up patch. Either way seems fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816495</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-18 10:05:13 -0800</bug_when>
    <thetext>Committed r286011 (244404@main): &lt;https://commits.webkit.org/244404@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444594.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816496</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-18 10:06:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/85556384&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816521</commentid>
    <comment_count>12</comment_count>
      <attachid>444594</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-18 11:12:14 -0800</bug_when>
    <thetext>Comment on attachment 444594
Patch (with --binary)

View in context: https://bugs.webkit.org/attachment.cgi?id=444594&amp;action=review

&gt; ChangeLog:11
&gt; +        Chrome, FireFox, and Edge.

The other browsers added the support to JPEG XL as an experimental feature. I checked Chrome and it looks like they have the sources of libjxl built in their build system. So I am not sure why WebKit GTK port took a different approach by having the image format enabled by default. More importantly, neither the sources nor the binaries is included in your build system. You just search the environment and if they are found you enable USE_JPEGXL. For Apple ports, either the system has to support the image format or we have to sources built in our build system (like what other browsers do).

I would also urge you to send an email to webkit-dev about these kinds of changes. I think it is important to keep WebKit has the same kind of behavior as much as we can on all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816530</commentid>
    <comment_count>13</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-11-18 11:41:05 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #12)
&gt; Comment on attachment 444594 [details]
&gt; Patch (with --binary)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=444594&amp;action=review
&gt; 
&gt; &gt; ChangeLog:11
&gt; &gt; +        Chrome, FireFox, and Edge.
&gt; 
&gt; The other browsers added the support to JPEG XL as an experimental feature.
&gt; I checked Chrome and it looks like they have the sources of libjxl built in
&gt; their build system. So I am not sure why WebKit GTK port took a different
&gt; approach by having the image format enabled by default. More importantly,
&gt; neither the sources nor the binaries is included in your build system. You
&gt; just search the environment and if they are found you enable USE_JPEGXL. For
&gt; Apple ports, either the system has to support the image format or we have to
&gt; sources built in our build system (like what other browsers do).
&gt; 
&gt; I would also urge you to send an email to webkit-dev about these kinds of
&gt; changes. I think it is important to keep WebKit has the same kind of
&gt; behavior as much as we can on all platforms.

Apologies as I didn&apos;t assume this change would be at all contentious. There was a discussion on the mailing list from the libjxl developers asking if WebKit wanted to integrate with their library but the conversation stopped when they learned that support would most likely come from a system level library on Apple platforms. Igalia also added an AVIF image decoder on their own.

Our interest is only for WinCairo and PlayStation where we have very specific requirements libraries that we build and provide so we didn&apos;t do any guarding and assume if its there and detected then we want to enable it. I&apos;d assume Igalia would add an actual option for it like they do other image decoders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816553</commentid>
    <comment_count>14</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-11-18 12:07:14 -0800</bug_when>
    <thetext>(In reply to Don Olmstead from comment #13)
&gt; (In reply to Said Abou-Hallawa from comment #12)
&gt; &gt; Comment on attachment 444594 [details]
&gt; &gt; Patch (with --binary)
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=444594&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; ChangeLog:11
&gt; &gt; &gt; +        Chrome, FireFox, and Edge.
&gt; &gt; 
&gt; &gt; The other browsers added the support to JPEG XL as an experimental feature.
&gt; &gt; I checked Chrome and it looks like they have the sources of libjxl built in
&gt; &gt; their build system. So I am not sure why WebKit GTK port took a different
&gt; &gt; approach by having the image format enabled by default. More importantly,
&gt; &gt; neither the sources nor the binaries is included in your build system. You
&gt; &gt; just search the environment and if they are found you enable USE_JPEGXL. For
&gt; &gt; Apple ports, either the system has to support the image format or we have to
&gt; &gt; sources built in our build system (like what other browsers do).
&gt; &gt; 
&gt; &gt; I would also urge you to send an email to webkit-dev about these kinds of
&gt; &gt; changes. I think it is important to keep WebKit has the same kind of
&gt; &gt; behavior as much as we can on all platforms.
&gt; 
&gt; Apologies as I didn&apos;t assume this change would be at all contentious. There
&gt; was a discussion on the mailing list from the libjxl developers asking if
&gt; WebKit wanted to integrate with their library but the conversation stopped
&gt; when they learned that support would most likely come from a system level
&gt; library on Apple platforms. Igalia also added an AVIF image decoder on their
&gt; own.
&gt; 
&gt; Our interest is only for WinCairo and PlayStation where we have very
&gt; specific requirements libraries that we build and provide so we didn&apos;t do
&gt; any guarding and assume if its there and detected then we want to enable it.
&gt; I&apos;d assume Igalia would add an actual option for it like they do other image
&gt; decoders.

We do not jxl support enabled (yet) at all in the GTK and WPE ports. If/when
we do, we will *not* bundle a copy of libjxl and provide a build-time option
(as Don suspected). Initially the default value for the build option for us
would be ${ENABLE_EXPERIMENTAL_FEATURES}: disabled in release builds (as
done from source tarballs) and enabled for testing in developer builds.

A few Linux distributions (for example Fedora or Arch) are already shipping
libjxl and packages that depend on it—same for libavif—which is the reason
why we don&apos;t need vendoring a copy under Source/ThirdParty/.

I was also under the impression that this would be non-controversial, sorry!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816604</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-11-18 13:30:23 -0800</bug_when>
    <thetext>&gt; Our interest is only for WinCairo and PlayStation where we have very specific requirements libraries that we build and provide so we didn&apos;t do any guarding and assume if its there and detected then we want to enable it. I&apos;d assume Igalia would add an actual option for it like they do other image decoders.

Right, the way WinCairo handles dependencies is an anti-pattern on Linux. Detecting whether the system dependency exists and enabling if found is an &quot;automagic&quot; dependency and while it&apos;s very common on Linux, it has serious problems, most notably that it frequently leads to features being disabled by mistake. I noticed that during review, but I didn&apos;t say anything because all the surrounding dependencies in OptionsWinCairo.cmake were handled the same way. Adrian noticed it as well (comment #8). I guess it doesn&apos;t matter nearly as much for WinCairo, but we would certainly require a more explicit choice to enable or disable the library when building for Linux. We would pick a default, either enabled or disabled, and require that you explicitly pass a flag to choose one way or another.

(In reply to Said Abou-Hallawa from comment #12)
&gt; I would also urge you to send an email to webkit-dev about these kinds of
&gt; changes. I think it is important to keep WebKit has the same kind of
&gt; behavior as much as we can on all platforms.

FWIW we discussed this about on webkit-dev here:

https://lists.webkit.org/pipermail/webkit-dev/2021-May/031844.html

and nobody really objected. I was skeptical about a new image format, but the fact that Firefox and Chrome both implemented it as an experimental feature seems reason enough for WebKit to do the same. At least it seems clearly more popular than JPEG 2000.

It is currently enabled by default for WinCairo. No strong opinion on that. Other ports currently have no way to enable it.

&gt;  More importantly, neither the sources nor the binaries is included in your build system. You just search the environment and if they are found you enable USE_JPEGXL. For Apple ports, either the system has to support the image format or we have to sources built in our build system (like what other browsers do).

WebKitGTK does not bundle libraries except for two specific problematic dependencies: ANGLE and xdgmime. These dependencies are problems to be fixed, not success stories. The other bundled stuff under Source/ThirdParty is either for tests only (gtest), or else is not distributed in our tarballs. So libjxl is not needed under Source/ThirdParty unless Apple needs it there. Even then, we would not distribute that in our releases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816607</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-11-18 13:31:28 -0800</bug_when>
    <thetext>&gt; We would pick a default, either enabled or disabled, and require that you explicitly pass a flag to choose one way or another.

Sorry, I meant: we would require that you explicitly pass a flag to choose to deviate from the default we pick.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816612</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-11-18 13:40:39 -0800</bug_when>
    <thetext>(In reply to Adrian Perez from comment #14)
&gt; We do not jxl support enabled (yet) at all in the GTK and WPE ports. If/when
&gt; we do, we will *not* bundle a copy of libjxl and provide a build-time option
&gt; (as Don suspected). Initially the default value for the build option for us
&gt; would be ${ENABLE_EXPERIMENTAL_FEATURES}: disabled in release builds (as
&gt; done from source tarballs) and enabled for testing in developer builds.

I just found you proposed bug #233325 to do exactly that. Anyway, I agree it&apos;s the right approach. Will be very easy to walk back in the future if browsers wind up deciding not to ship this after all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816691</commentid>
    <comment_count>18</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-11-18 16:40:49 -0800</bug_when>
    <thetext>Sorry for not discussing this on the mailing list.I&apos;ll do so next time for changes like this.

(In reply to Michael Catanzaro from comment #17)
&gt; (In reply to Adrian Perez from comment #14)
&gt; &gt; We do not jxl support enabled (yet) at all in the GTK and WPE ports. If/when
&gt; &gt; we do, we will *not* bundle a copy of libjxl and provide a build-time option
&gt; &gt; (as Don suspected). Initially the default value for the build option for us
&gt; &gt; would be ${ENABLE_EXPERIMENTAL_FEATURES}: disabled in release builds (as
&gt; &gt; done from source tarballs) and enabled for testing in developer builds.
&gt; 
&gt; I just found you proposed bug #233325 to do exactly that. Anyway, I agree
&gt; it&apos;s the right approach. Will be very easy to walk back in the future if
&gt; browsers wind up deciding not to ship this after all.

I also prefer this approach. Let&apos;s revisit this matter. &gt; Don</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444319</attachid>
            <date>2021-11-15 16:55:24 -0800</date>
            <delta_ts>2021-11-17 16:01:19 -0800</delta_ts>
            <desc>Patch for preliminary review.</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>17411</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ltYWdlRGVjb2RlcnMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9JbWFnZURlY29kZXJzLmNtYWtlCmluZGV4IGI2ODQ4
Mzg3ZjExMC4uNDQxNGI5ZjkwYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9JbWFnZURlY29kZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ltYWdl
RGVjb2RlcnMuY21ha2UKQEAgLTYsNiArNiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFU
RV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljbyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
ZzIwMDAiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4
bCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nIgogICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwIgogKQpAQCAtMjks
NiArMzAsOCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAogCisgICAgcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdlRGVjb2Rlci5jcHAKKwogICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCiAKICAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC01MCw2
ICs1MywxMCBAQCBpZiAoV2ViUF9GT1VORCkKICAgICApCiBlbmRpZiAoKQogCitpZiAoSlBFR1hM
X0ZPVU5EKQorICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTIEpQRUdYTDo6anhsKQor
ZW5kaWYgKCkKKwogaWYgKFVTRV9DQUlSTykKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKICAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3Rv
cmVDYWlyby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5j
cHAKaW5kZXggNmY3YWYxMjdjZmNlLi43MDhlMDYwN2I2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0xMTEsNiArMTExLDkgQEAgY29uc3Rl
eHByIENvbXBhcmFibGVDYXNlRm9sZGluZ0FTQ0lJTGl0ZXJhbCBzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlQXJyYXlbXSA9IHsKICNpZiAhVVNFKENHKSAmJiBVU0UoT1BFTkpQRUcpCiAgICAgImltYWdl
L2pwZWcyMDAwIiwKICNlbmRpZgorI2lmIFVTRShKUEVHWEwpCisgICAgImltYWdlL2p4bCIsCisj
ZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICJpbWFnZS9tcy1ibXAiLAogICAg
ICJpbWFnZS9waXBlZyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggZTgxMTU0
MmYzNGYwLi5lYTEzNDA4Zjg1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAg
LTM5LDYgKzM5LDkgQEAKICNpZiBVU0UoV0VCUCkKICNpbmNsdWRlICJXRUJQSW1hZ2VEZWNvZGVy
LmgiCiAjZW5kaWYKKyNpZiBVU0UoSlBFR1hMKQorI2luY2x1ZGUgIkpQRUdYTEltYWdlRGVjb2Rl
ci5oIgorI2VuZGlmCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+CkBA
IC0xMDcsNiArMTEwLDEzIEBAIGJvb2wgbWF0Y2hlc1dlYlBTaWduYXR1cmUoY2hhciogY29udGVu
dHMpCiB9CiAjZW5kaWYKIAorI2lmIFVTRShKUEVHWEwpCitib29sIG1hdGNoZXNKUEVHWExTaWdu
YXR1cmUoY2hhciogY29udGVudHMpCit7CisgICAgcmV0dXJuICFtZW1jbXAoY29udGVudHMsICJc
eEZGXHgwQSIsIDIpOworfQorI2VuZGlmCisKIGJvb2wgbWF0Y2hlc0JNUFNpZ25hdHVyZShjaGFy
KiBjb250ZW50cykKIHsKICAgICByZXR1cm4gIW1lbWNtcChjb250ZW50cywgIkJNIiwgMik7CkBA
IC0xNjIsNiArMTcyLDExIEBAIFJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJ
bWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFsCiAgICAgICAgIHJldHVy
biBXRUJQSW1hZ2VEZWNvZGVyOjpjcmVhdGUoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKICNlbmRpZgogCisjaWYgVVNFKEpQRUdYTCkKKyAgICBpZiAobWF0Y2hlc0pQ
RUdYTFNpZ25hdHVyZShjb250ZW50cykpCisgICAgICAgIHJldHVybiBKUEVHWExJbWFnZURlY29k
ZXI6OmNyZWF0ZShhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworI2Vu
ZGlmCisKICAgICBpZiAobWF0Y2hlc0JNUFNpZ25hdHVyZShjb250ZW50cykpCiAgICAgICAgIHJl
dHVybiBCTVBJbWFnZURlY29kZXI6OmNyZWF0ZShhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTc3OGY1Y2E4MWI3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Z3hsL0pQRUdYTEltYWdlRGVjb2Rlci5jcHAKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlBFR1hMSW1hZ2VEZWNvZGVyLmgiCisK
KyNpZiBVU0UoSlBFR1hMKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pQRUdYTEltYWdlRGVj
b2Rlcjo6SlBFR1hMSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICA6IFNj
YWxhYmxlSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKK3sKK30KKworSlBFR1hMSW1hZ2VEZWNvZGVyOjp+SlBFR1hMSW1hZ2VEZWNvZGVyKCkKK3sK
KyAgICBjbGVhcigpOworfQorCitTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBKUEVHWExJbWFn
ZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCit7CisgICAgaWYgKGlu
ZGV4KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2Fj
aGUuaXNFbXB0eSgpKQorICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUuZ3JvdygxKTsKKworICAg
IGF1dG8mIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOworICAgIGlmICghZnJhbWUuaXND
b21wbGV0ZSgpKQorICAgICAgICBkZWNvZGUoZmFsc2UsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwor
ICAgIHJldHVybiAmZnJhbWU7Cit9CisKK3ZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVyOjpjbGVhcigp
Cit7CisgICAgbV9kZWNvZGVyLnJlc2V0KCk7CisgICAgbV9yZWFkT2Zmc2V0ID0gMDsKK30KKwor
Ym9vbCBKUEVHWExJbWFnZURlY29kZXI6OnNldEZhaWxlZCgpCit7CisgICAgY2xlYXIoKTsKKyAg
ICByZXR1cm4gU2NhbGFibGVJbWFnZURlY29kZXI6OnNldEZhaWxlZCgpOworfQorCit2b2lkIEpQ
RUdYTEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQoreworICAgIGlmIChmYWlsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFt
X2RlY29kZXIpIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgbV9kZWNvZGVyID0gSnhsRGVj
b2Rlck1ha2UobnVsbHB0cik7CisgICAgICAgIGlmICghbV9kZWNvZGVyKSB7CisgICAgICAgICAg
ICBzZXRGYWlsZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChKeGxEZWNvZGVyU3Vic2NyaWJlRXZlbnRzKG1fZGVjb2Rlci5nZXQoKSwgSlhMX0RFQ19C
QVNJQ19JTkZPIHwgSlhMX0RFQ19GUkFNRSB8IEpYTF9ERUNfRlVMTF9JTUFHRSkgIT0gSlhMX0RF
Q19TVUNDRVNTKSB7CisgICAgICAgICAgICBzZXRGYWlsZWQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fZGF0YS0+ZGF0YSgpOworICAgIHNpemVfdCBk
YXRhU2l6ZSA9IG1fZGF0YS0+c2l6ZSgpOworICAgIGlmIChKeGxEZWNvZGVyU2V0SW5wdXQobV9k
ZWNvZGVyLmdldCgpLCBtX2RhdGEtPmRhdGEoKSArIG1fcmVhZE9mZnNldCwgZGF0YVNpemUgLSBt
X3JlYWRPZmZzZXQpICE9IEpYTF9ERUNfU1VDQ0VTUykgeworICAgICAgICBzZXRGYWlsZWQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEp4bERlY29kZXJTdGF0dXMgc3RhdHVzID0g
cHJvY2Vzc0lucHV0KG9ubHlTaXplKTsKKyAgICAvLyBXZSBzZXQgdGhlIHN0YXR1cyBhcyBmYWls
ZWQgaWYgdGhlIGRlY29kZXIgcmVwb3J0cyBhbiBlcnJvciBvciByZXF1aXJlcyBtb3JlIGRhdGEg
d2hpbGUgYWxsIGRhdGEgaGFzIGJlZW4gcmVjZWl2ZWQuCisgICAgaWYgKHN0YXR1cyA9PSBKWExf
REVDX0VSUk9SIHx8IChhbGxEYXRhUmVjZWl2ZWQgJiYgc3RhdHVzID09IEpYTF9ERUNfTkVFRF9N
T1JFX0lOUFVUKSkgeworICAgICAgICBzZXRGYWlsZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIFdlIHJlbGVhc2UgdGhlIGRlY29kZXIgd2hlbiB3ZSBmaW5pc2ggdGhlIGRl
Y29kaW5nLgorICAgIGlmIChzdGF0dXMgPT0gSlhMX0RFQ19TVUNDRVNTKSB7CisgICAgICAgIGNs
ZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBPdGhlcndpc2Ugd2UgZ2V0
IHRoZSBkZWNvZGVyIHJlYWR5IGZvciBzdWJzZXF1ZW50IGRhdGEuCisgICAgc2l6ZV90IHJlbWFp
bmluZ0RhdGFTaXplID0gSnhsRGVjb2RlclJlbGVhc2VJbnB1dChtX2RlY29kZXIuZ2V0KCkpOwor
ICAgIG1fcmVhZE9mZnNldCA9IGRhdGFTaXplIC0gcmVtYWluaW5nRGF0YVNpemU7Cit9CisKK0p4
bERlY29kZXJTdGF0dXMgSlBFR1hMSW1hZ2VEZWNvZGVyOjpwcm9jZXNzSW5wdXQoYm9vbCBvbmx5
U2l6ZSkKK3sKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBhdXRvIHN0YXR1cyA9IEp4bERl
Y29kZXJQcm9jZXNzSW5wdXQobV9kZWNvZGVyLmdldCgpKTsKKyAgICAgICAgaWYgKHN0YXR1cyA9
PSBKWExfREVDX0VSUk9SKSB7CisgICAgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICAgICB9
CisgICAgICAgIGlmIChzdGF0dXMgPT0gSlhMX0RFQ19TVUNDRVNTKSB7CisgICAgICAgICAgICBy
ZXR1cm4gc3RhdHVzOworICAgICAgICB9CisgICAgICAgIGlmIChzdGF0dXMgPT0gSlhMX0RFQ19O
RUVEX01PUkVfSU5QVVQpIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoc3RhdHVzID09IEpYTF9ERUNfQkFTSUNfSU5GTykgeworICAgICAgICAg
ICAgSnhsQmFzaWNJbmZvIGJhc2ljSW5mbzsKKyAgICAgICAgICAgIGlmIChKeGxEZWNvZGVyR2V0
QmFzaWNJbmZvKG1fZGVjb2Rlci5nZXQoKSwgJmJhc2ljSW5mbykgIT0gSlhMX0RFQ19TVUNDRVNT
KQorICAgICAgICAgICAgICAgIHJldHVybiBKWExfREVDX0VSUk9SOworCisgICAgICAgICAgICBz
ZXRTaXplKEludFNpemUoYmFzaWNJbmZvLnhzaXplLCBiYXNpY0luZm8ueXNpemUpKTsKKyAgICAg
ICAgICAgIGlmIChvbmx5U2l6ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdHVzID09IEpY
TF9ERUNfRlJBTUUpIHsKKyAgICAgICAgICAgIEp4bFBpeGVsRm9ybWF0IGZvcm1hdHsgNCwgSlhM
X1RZUEVfVUlOVDgsIEpYTF9OQVRJVkVfRU5ESUFOLCAwIH07CisgICAgICAgICAgICBpZiAoSnhs
RGVjb2RlclNldEltYWdlT3V0Q2FsbGJhY2sobV9kZWNvZGVyLmdldCgpLCAmZm9ybWF0LCBpbWFn
ZU91dENhbGxiYWNrLCB0aGlzKSAhPSBKWExfREVDX1NVQ0NFU1MpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEpYTF9ERUNfRVJST1I7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChzdGF0dXMgPT0gSlhMX0RFQ19GVUxMX0lNQUdFKSB7CisgICAgICAgICAg
ICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gbV9mcmFtZUJ1
ZmZlckNhY2hlWzBdOworICAgICAgICAgICAgaWYgKCFidWZmZXIuaXNJbnZhbGlkKCkpIHsKKyAg
ICAgICAgICAgICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNv
bXBsZXRlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFRPRE86IFRvIHN1cHBvcnQg
YW5pbWF0ZWQgSlBFRyBYTCBpbiB0aGUgZnV0dXJlIHdlIG5lZWQgdG8gaGFuZGxlIHN1YnNlcXVl
bnQgZGF0YS4KKyAgICAgICAgICAgIHJldHVybiBKWExfREVDX1NVQ0NFU1M7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVyOjppbWFnZU91dENhbGxiYWNrKHZv
aWQqIHRoYXQsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IG51bVBpeGVscywgY29uc3Qgdm9p
ZCogcGl4ZWxzKQoreworICAgIHN0YXRpY19jYXN0PEpQRUdYTEltYWdlRGVjb2Rlcio+KHRoYXQp
LT5pbWFnZU91dCh4LCB5LCBudW1QaXhlbHMsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQzMl90Kj4o
cGl4ZWxzKSk7Cit9CisKK3ZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVyOjppbWFnZU91dChzaXplX3Qg
eCwgc2l6ZV90IHksIHNpemVfdCBudW1QaXhlbHMsIGNvbnN0IHVpbnQzMl90KiBwaXhlbHMpCit7
CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8mIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKKyAgICBpZiAoYnVm
ZmVyLmlzSW52YWxpZCgpKSB7CisgICAgICAgIGlmICghYnVmZmVyLmluaXRpYWxpemUoc2l6ZSgp
LCBtX3ByZW11bHRpcGx5QWxwaGEpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgYnVmZmVyLnNldERlY29kaW5nU3RhdHVzKERlY29kaW5nU3RhdHVzOjpQYXJ0aWFs
KTsKKyAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKGZhbHNlKTsKKyAgICB9CisKKyAgICB1aW50
MzJfdCogcm93ID0gYnVmZmVyLmJhY2tpbmdTdG9yZSgpLT5waXhlbEF0KHgsIHkpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUGl4ZWxzOyBpKyspIHsKKyAgICAgICAgLy8gRklYTUU6
CisgICAgICAgIHVpbnQzMl90IGNvbG9yID0gKnBpeGVscysrOworICAgICAgICB1aW50MzJfdCBu
ZXdDb2xvciA9IGNvbG9yICYgMHhGRjAwRkYwMDsKKyAgICAgICAgbmV3Q29sb3IgfD0gKGNvbG9y
ICYgMHhGRjAwMDApID4+IDE2OworICAgICAgICBuZXdDb2xvciB8PSAoY29sb3IgJiAweEZGKSA8
PCAxNjsKKyAgICAgICAgKnJvdysrID0gbmV3Q29sb3I7CisgICAgfQorfQorCit9CisjZW5kaWYg
Ly8gVVNFKEpQRUdYTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRlMjY4YjllN2MzZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9K
UEVHWExJbWFnZURlY29kZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJTY2FsYWJsZUltYWdlRGVjb2Rlci5oIgorCisjaWYgVVNFKEpQ
RUdYTCkKKworI2luY2x1ZGUgPGp4bC9kZWNvZGVfY3h4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhlIEpQRUcgWEwgaW1hZ2UgZm9ybWF0Lgor
ICAgIGNsYXNzIEpQRUdYTEltYWdlRGVjb2RlciBmaW5hbCA6IHB1YmxpYyBTY2FsYWJsZUltYWdl
RGVjb2RlciB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUmVmPFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKUEVHWExJbWFnZURlY29kZXIoYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0
dWFsIH5KUEVHWExJbWFnZURlY29kZXIoKTsKKworICAgICAgICAvLyBTY2FsYWJsZUltYWdlRGVj
b2RlcgorICAgICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAianhsIl9zOyB9CisgICAgICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZy
YW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRlOworCisgICAgICAgIGJvb2wg
c2V0RmFpbGVkKCkgb3ZlcnJpZGU7CisKKyAgICBwcml2YXRlOgorICAgICAgICBKUEVHWExJbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICAg
ICAgdm9pZCB0cnlEZWNvZGVTaXplKGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZSB7IGRl
Y29kZSh0cnVlLCBhbGxEYXRhUmVjZWl2ZWQpOyB9CisKKyAgICAgICAgdm9pZCBkZWNvZGUoYm9v
bCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworCisgICAgICAgIHZvaWQgY2xlYXIo
KTsKKworICAgICAgICBKeGxEZWNvZGVyU3RhdHVzIHByb2Nlc3NJbnB1dChib29sIG9ubHlTaXpl
KTsKKworICAgICAgICBzdGF0aWMgdm9pZCBpbWFnZU91dENhbGxiYWNrKHZvaWQqIHRoYXQsIHNp
emVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IG51bVBpeGVscywgY29uc3Qgdm9pZCogcGl4ZWxzKTsK
KyAgICAgICAgdm9pZCBpbWFnZU91dChzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCBudW1QaXhl
bHMsIGNvbnN0IHVpbnQzMl90KiBwaXhlbHMpOworCisgICAgICAgIEp4bERlY29kZXJQdHIgbV9k
ZWNvZGVyOworICAgICAgICBzaXplX3QgbV9yZWFkT2Zmc2V0ID0gMDsKKyAgICB9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoSlBFR1hMKQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9N
SU1FVHlwZVJlZ2lzdHJ5V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1F
VHlwZVJlZ2lzdHJ5V2luLmNwcAppbmRleCBkMzYzZTMzMGNiMjQuLjg1MmExZTRmY2ZjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2lu
LmNwcApAQCAtOTksNiArOTksOSBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVG
b3JFeHRlbnNpb24oY29uc3QgU3RyaW5nICZleHQpCiAgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
d21sIiwgInRleHQvdm5kLndhcC53bWwiKTsKICAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWxj
IiwgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIpOwogICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
Im00YSIsICJhdWRpby94LW00YSIpOworI2lmIFVTRShKUEVHWEwpCisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgianhsIiwgImltYWdlL2p4bCIpOworI2VuZGlmCiAgICAgfQogICAgIFN0cmluZyBy
ZXN1bHQgPSBtaW1ldHlwZU1hcC5nZXQoZXh0KTsKICAgICBpZiAocmVzdWx0LmlzRW1wdHkoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRKUEVHWEwuY21ha2UgYi9Tb3VyY2UvY21h
a2UvRmluZEpQRUdYTC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmU0OWE1ZDZlODYxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9jbWFrZS9GaW5kSlBF
R1hMLmNtYWtlCkBAIC0wLDAgKzEsOTMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuDQorIw0KKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMNCisjIGFyZSBtZXQ6DQorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQN
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUNCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorIw0KKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
Jw0KKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sDQorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMN
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1INCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElODQorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRg0KKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKw0KKyNbPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1bLnJz
dDoNCitGaW5kSlBFR1hMDQorLS0tLS0tLS0tDQorDQorRmluZCBKUEVHWEwgaGVhZGVycyBhbmQg
bGlicmFyaWVzLg0KKw0KK0ltcG9ydGVkIFRhcmdldHMNCiteXl5eXl5eXl5eXl5eXl5eDQorDQor
YGBKUEVHWEw6Omp4bGBgDQorICBUaGUgSlBFR1hMIGxpYnJhcnksIGlmIGZvdW5kLg0KKw0KK1Jl
c3VsdCBWYXJpYWJsZXMNCiteXl5eXl5eXl5eXl5eXl5eDQorDQorVGhpcyB3aWxsIGRlZmluZSB0
aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBpbiB5b3VyIHByb2plY3Q6DQorDQorYGBKUEVHWExfRk9V
TkRgYA0KKyAgdHJ1ZSBpZiAodGhlIHJlcXVlc3RlZCB2ZXJzaW9uIG9mKSBKUEVHWEwgaXMgYXZh
aWxhYmxlLg0KK2BgSlBFR1hMX1ZFUlNJT05gYA0KKyAgdGhlIHZlcnNpb24gb2YgSlBFR1hMLg0K
K2BgSlBFR1hMX0xJQlJBUklFU2BgDQorICB0aGUgbGlicmFyaWVzIHRvIGxpbmsgYWdhaW5zdCB0
byB1c2UgSlBFR1hMLg0KK2BgSlBFR1hMX0lOQ0xVREVfRElSU2BgDQorICB3aGVyZSB0byBmaW5k
IHRoZSBKUEVHWEwgaGVhZGVycy4NCitgYEpQRUdYTF9DT01QSUxFX09QVElPTlNgYA0KKyAgdGhp
cyBzaG91bGQgYmUgcGFzc2VkIHRvIHRhcmdldF9jb21waWxlX29wdGlvbnMoKSwgaWYgdGhlDQor
ICB0YXJnZXQgaXMgbm90IHVzZWQgZm9yIGxpbmtpbmcNCisNCisjXT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XQ0K
Kw0KK2ZpbmRfcGFja2FnZShQa2dDb25maWcgUVVJRVQpDQoraWYgKFBrZ0NvbmZpZ19GT1VORCkN
CisgICAgcGtnX2NoZWNrX21vZHVsZXMoUENfSlBFR1hMIFFVSUVUIGp4bCkNCisgICAgc2V0KEpQ
RUdYTF9DT01QSUxFX09QVElPTlMgJHtQQ19KUEVHWExfQ0ZMQUdTX09USEVSfSkNCisgICAgc2V0
KEpQRUdYTF9WRVJTSU9OICR7UENfSlBFR1hMX1ZFUlNJT059KQ0KK2VuZGlmICgpDQorDQorZmlu
ZF9wYXRoKEpQRUdYTF9JTkNMVURFX0RJUg0KKyAgICBOQU1FUyBqeGwvZGVjb2RlLmgNCisgICAg
SElOVFMgJHtQQ19KUEVHWExfSU5DTFVERURJUn0gJHtQQ19KUEVHWExfSU5DTFVERV9ESVJTfSAk
e0pQRUdYTF9JTkNMVURFX0RJUn0NCispDQorDQorZmluZF9saWJyYXJ5KEpQRUdYTF9MSUJSQVJZ
DQorICAgIE5BTUVTICR7SlBFR1hMX05BTUVTfSBqeGwNCisgICAgSElOVFMgJHtQQ19KUEVHWExf
TElCRElSfSAke1BDX0pQRUdYTF9MSUJSQVJZX0RJUlN9DQorKQ0KKw0KK2luY2x1ZGUoRmluZFBh
Y2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3MpDQorZmluZF9wYWNrYWdlX2hhbmRsZV9zdGFuZGFyZF9h
cmdzKEpQRUdYTA0KKyAgICBGT1VORF9WQVIgSlBFR1hMX0ZPVU5EDQorICAgIFJFUVVJUkVEX1ZB
UlMgSlBFR1hMX0xJQlJBUlkgSlBFR1hMX0lOQ0xVREVfRElSDQorICAgIFZFUlNJT05fVkFSIEpQ
RUdYTF9WRVJTSU9ODQorKQ0KKw0KK2lmIChKUEVHWExfTElCUkFSWSBBTkQgTk9UIFRBUkdFVCBK
UEVHWEw6Omp4bCkNCisgICAgYWRkX2xpYnJhcnkoSlBFR1hMOjpqeGwgVU5LTk9XTiBJTVBPUlRF
RCBHTE9CQUwpDQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhKUEVHWEw6Omp4bCBQUk9QRVJU
SUVTDQorICAgICAgICBJTVBPUlRFRF9MT0NBVElPTiAiJHtKUEVHWExfTElCUkFSWX0iDQorICAg
ICAgICBJTlRFUkZBQ0VfQ09NUElMRV9PUFRJT05TICIke0pQRUdYTF9DT01QSUxFX09QVElPTlN9
Ig0KKyAgICAgICAgSU5URVJGQUNFX0lOQ0xVREVfRElSRUNUT1JJRVMgIiR7SlBFR1hMX0lOQ0xV
REVfRElSfSINCisgICAgKQ0KK2VuZGlmICgpDQorDQorbWFya19hc19hZHZhbmNlZChKUEVHWExf
SU5DTFVERV9ESVIgSlBFR1hMX0xJQlJBUlkpDQorDQoraWYgKEpQRUdYTF9GT1VORCkNCisgICAg
c2V0KEpQRUdYTF9MSUJSQVJJRVMgJHtKUEVHWExfTElCUkFSWX0pDQorICAgIHNldChKUEVHWExf
SU5DTFVERV9ESVJTICR7SlBFR1hMX0lOQ0xVREVfRElSfSkNCitlbmRpZiAoKQ0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dpbkNhaXJvLmNtYWtlCmluZGV4IDE5ZjUxMjdlNjcxNy4uNTRkYzA5NWQ5Zjk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKQEAgLTI2LDYgKzI2LDExIEBAIGlmIChMQ01TMl9G
T1VORCkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTENNUyBPTikKIGVuZGlmICgp
CiAKK2ZpbmRfcGFja2FnZShKUEVHWEwpCitpZiAoSlBFR1hMX0ZPVU5EKQorICAgIFNFVF9BTkRf
RVhQT1NFX1RPX0JVSUxEKFVTRV9KUEVHWEwgT04pCitlbmRpZiAoKQorCiBmaW5kX3BhY2thZ2Uo
T3BlbkpQRUcgMi4zLjEpCiBpZiAoT3BlbkpQRUdfRk9VTkQpCiAgICAgU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoVVNFX09QRU5KUEVHIE9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444592</attachid>
            <date>2021-11-17 16:01:19 -0800</date>
            <delta_ts>2021-11-17 16:11:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>25044</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBhZDE4ZGNhNDMxOWYuLjI5
NTIyOTcxZGY5NyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIyIEBACisyMDIxLTExLTE3ICBZb3NoaWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRz
dWthd2FAc29ueS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEpQRUcgWEwgaW1hZ2UgZGVjb2Rl
ciB1c2luZyBsaWJqeGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzExMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgaW5pdGlhbCB2ZXJzaW9uIG9mIEpQRUcg
WEwgaW1hZ2UgZGVjb2Rlci4KKyAgICAgICAgSlBFRyBYTCBpcyBhIHJveWFsdHktZnJlZSByYXN0
ZXItZ3JhcGhpY3MgZmlsZSBmb3JtYXQgdGhhdCBzdXBwb3J0cworICAgICAgICBib3RoIGxvc3N5
IGFuZCBsb3NzbGVzcyBjb21wcmVzc2lvbiBhbmQgaXMgZXhwZXJpbWVudGFsbHkgc3VwcG9ydGVk
IGJ5CisgICAgICAgIENocm9tZSwgRmlyZUZveCwgYW5kIEVkZ2UuCisgICAgICAgIFRoZSBpbWFn
ZSBkZWNvZGVyIGltcGxlbWVudGVkIGJ5IHRoaXMgcGF0Y2ggdXNlcyBsaWJqeGwsIGEgcmVmZXJl
bmNlCisgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIEpQRUcgWEwgZGVjb2RlciAoYW5kIGVuY29k
ZXIpLiBKUEVHIFhMIGFuaW1hdGlvbnMKKyAgICAgICAgd2lsbCBiZSBzdXBwb3J0ZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmluZEpQRUdYTC5jbWFrZTogQWRkZWQuCisgICAg
ICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZTogRW5hYmxlIEpQRUcgWEwg
c3VwcG9ydCBpZgorICAgICAgICBsaWJqeGwgaXMgYXZhaWxhYmxlLgorCiAyMDIxLTExLTEyICBE
b24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJv
XSBBZGQgTGl0dGxlLUNNUyBzdXBwb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjkwNDk4ZDNiYzg0Li5mYzI3ZmY3NjYx
NmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0xMS0xNyAgWW9zaGlha2kgSml0c3VrYXdh
ICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgorCisgICAgICAgIEltcGxlbWVudCBKUEVH
IFhMIGltYWdlIGRlY29kZXIgdXNpbmcgbGlianhsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMxMTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIGluaXRpYWwg
dmVyc2lvbiBvZiBKUEVHIFhMIGltYWdlIGRlY29kZXIuCisgICAgICAgIEpQRUcgWEwgaXMgYSBy
b3lhbHR5LWZyZWUgcmFzdGVyLWdyYXBoaWNzIGZpbGUgZm9ybWF0IHRoYXQgc3VwcG9ydHMKKyAg
ICAgICAgYm90aCBsb3NzeSBhbmQgbG9zc2xlc3MgY29tcHJlc3Npb24gYW5kIGlzIGV4cGVyaW1l
bnRhbGx5IHN1cHBvcnRlZCBieQorICAgICAgICBDaHJvbWUsIEZpcmVGb3gsIGFuZCBFZGdlLgor
ICAgICAgICBUaGUgaW1hZ2UgZGVjb2RlciBpbXBsZW1lbnRlZCBieSB0aGlzIHBhdGNoIHVzZXMg
bGlianhsLCBhIHJlZmVyZW5jZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBKUEVHIFhMIGRl
Y29kZXIgKGFuZCBlbmNvZGVyKS4gSlBFRyBYTCBhbmltYXRpb25zCisgICAgICAgIHdpbGwgYmUg
c3VwcG9ydGVkIGxhdGVyLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogU2tpcCBKUEVH
IFhMIHRlc3RzIGJ5IGRlZmF1bHQuCisgICAgICAgICogZmFzdC9pbWFnZXMvanBlZ3hsLWFzLWlt
YWdlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2pwZWd4bC1h
cy1pbWFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9qcGVneGwtaW1hZ2Ut
ZGVjb2RpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9qcGVn
eGwtaW1hZ2UtZGVjb2RpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvcmVz
b3VyY2VzL2dyZWVuLTMxM3gzMTMuanhsOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW5j
YWlyby9UZXN0RXhwZWN0YXRpb25zOiBTa2lwIEpQRUcgWEwgdGVzdHMgdW50aWwKKyAgICAgICAg
V2ViS2l0UmVxaXJlbWVudHMgcmVsZWFzZSB3aXRoIGxpYmp4bC4KKwogMjAyMS0xMS0xMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIy
ODU0ODEpOiBJbmZpbml0ZSByZWN1cnNpb24gd2l0aCBjeWNsaWMgZmlsdGVyIHJlZmVyZW5jZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggZjk0Y2FmMjUyZGYzLi5iOGY2ZWYyOTBjNWYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMTMyLDYgKzEzMiwxMCBAQCBmYXN0L2ltYWdlcy9hdmlmLWFzLWltYWdl
Lmh0bWwgWyBTa2lwIF0KIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWF2aWYuaHRtbCBbIFNraXAgXQog
aHR0cC90ZXN0cy9pbWFnZXMvYXZpZi1wYXJ0aWFsLWxvYWQtY3Jhc2guaHRtbCBbIFNraXAgXQog
CisjIFRoZXNlIHRlc3RzIGRvbid0IGhhdmUgdG8gYmUgcGxhdGZvcm0tc3BlY2lmaWMsIGJ1dCB0
aGV5IGFyZSBvbmx5IGltcGxlbWVudGVkIG9uIFdpbkNhaXJvIG5vdy4KK2Zhc3QvaW1hZ2VzL2pw
ZWd4bC1pbWFnZS1kZWNvZGluZy5odG1sIFsgU2tpcCBdCitmYXN0L2ltYWdlcy9qcGVneGwtYXMt
aW1hZ2UuaHRtbCBbIFNraXAgXQorCiAjIE9ubHkgYXBwbGljYWJsZSBvbiBwbGF0Zm9ybXMgd2l0
aCBkYXJrIG1vZGUgc3VwcG9ydAogY3NzLWRhcmstbW9kZSBbIFNraXAgXQogZmFzdC9jc3MvYXBw
bGUtc3lzdGVtLWNvbnRyb2wtY29sb3JzLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL2pwZWd4bC1hcy1pbWFnZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvanBlZ3hsLWFzLWltYWdlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYzNkOWUzMTlmZTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9qcGVneGwtYXMtaW1hZ2UtZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzdHlsZT4KK2RpdiB7Cisg
IHdpZHRoOiAzMTNweDsKKyAgaGVpZ2h0OiAzMTNweDsKKyAgYmFja2dyb3VuZC1jb2xvcjogIzBB
RkYwNTsKK30KKzwvc3R5bGU+Cis8Ym9keT4KKyAgPGRpdj48L2Rpdj4KKzwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2pwZWd4bC1hcy1pbWFnZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvanBlZ3hsLWFzLWltYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xMjE5YjE1NjNjOTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9qcGVneGwtYXMtaW1hZ2UuaHRtbApAQCAtMCwwICsx
LDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+CisgIDxwaWN0dXJlPgorICAgIDxzb3VyY2Ug
c3Jjc2V0PSJyZXNvdXJjZXMvZ3JlZW4tMzEzeDMxMy5qeGwiIHR5cGU9ImltYWdlL2p4bCI+Cisg
ICAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi0zMTN4MzEzLmp4bCI+CisgIDwvcGljdHVyZT4K
KzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2pwZWd4bC1pbWFn
ZS1kZWNvZGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9qcGVneGwt
aW1hZ2UtZGVjb2RpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZDc2NmVmNjA0ODJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvanBlZ3hsLWltYWdlLWRlY29kaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIgQEAKKworMzEzeDMxMwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvanBl
Z3hsLWltYWdlLWRlY29kaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9qcGVneGwt
aW1hZ2UtZGVjb2RpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjI1ZjlhNjRkMTIyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL2pwZWd4bC1pbWFnZS1kZWNvZGluZy5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGJvZHk+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0cycpLmlubmVySFRNTCA9CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpWzBdLndpZHRoICsgJ3gnICsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJylbMF0uaGVpZ2h0OworfQorPC9zY3JpcHQ+
Cis8cGljdHVyZT4KKyAgPHNvdXJjZSBzcmNzZXQ9InJlc291cmNlcy9ncmVlbi0zMTN4MzEzLmp4
bCIgdHlwZT0iaW1hZ2UvanhsIj4KKyAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi0zMTN4MzEz
Lmp4bCI+Cis8L3BpY3R1cmU+Cis8ZGl2IGlkPSJyZXN1bHRzIj48L2Rpdj4KKzwvYm9keT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9ncmVlbi0zMTN4MzEz
Lmp4bCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9ncmVlbi0zMTN4MzEzLmp4
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI0NmM2Y2RiNjZmZQpC
aW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291
cmNlcy9ncmVlbi0zMTN4MzEzLmp4bCBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDhmZDZiOWRiZmM1OS4uMTQxZmI5OTczZGU3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTI3Miw3ICsyNzIsOSBAQCBtZWRpYS9haXJwbGF5LWF1dG9wbGF5Lmh0bWwgWyBTa2lwIF0K
ICMgUExBVEZPUk0oTUFDKSwgaW50ZXJuYWxzLnJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9j
YXRpb24oKQogZmFzdC9sYXllcnMvcHJldmVudC1oaXQtdGVzdC1kdXJpbmctbGF5b3V0Lmh0bWwg
WyBTa2lwIF0KIAotCisjIEpQRUcgWEwgaXMgZGlzYWJsZWQgdW50aWwgV2ViS2l0UmVxdWlyZW1l
bnRzIGlzIHJlbGVhc2VkIHdpdGggbGlianhsCitmYXN0L2ltYWdlcy9qcGVneGwtYXMtaW1hZ2Uu
aHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvanBlZ3hsLWltYWdlLWRlY29kaW5nLmh0bWwgWyBT
a2lwIF0KIAogIyBEYXRhVHJhbnNmZXJJdGVtcyBpcyBub3QgeWV0IGltcGxlbWVudGVkCiBmYXN0
L2V2ZW50cy9jbGlwYm9hcmQtZGF0YVRyYW5zZmVySXRlbUxpc3QuaHRtbCBbIFNraXAgXQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDA1MTRhYzQ5NWRkOS4uODkyYzQ1Njk5ZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMjEtMTEtMTcgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlvc2hpYWtpLmppdHN1
a2F3YUBzb255LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgSlBFRyBYTCBpbWFnZSBkZWNvZGVy
IHVzaW5nIGxpYmp4bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzMTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBpbml0aWFsIHZlcnNpb24gb2YgSlBFRyBY
TCBpbWFnZSBkZWNvZGVyLgorICAgICAgICBKUEVHIFhMIGlzIGEgcm95YWx0eS1mcmVlIHJhc3Rl
ci1ncmFwaGljcyBmaWxlIGZvcm1hdCB0aGF0IHN1cHBvcnRzCisgICAgICAgIGJvdGggbG9zc3kg
YW5kIGxvc3NsZXNzIGNvbXByZXNzaW9uIGFuZCBpcyBleHBlcmltZW50YWxseSBzdXBwb3J0ZWQg
YnkKKyAgICAgICAgQ2hyb21lLCBGaXJlRm94LCBhbmQgRWRnZS4KKyAgICAgICAgVGhlIGltYWdl
IGRlY29kZXIgaW1wbGVtZW50ZWQgYnkgdGhpcyBwYXRjaCB1c2VzIGxpYmp4bCwgYSByZWZlcmVu
Y2UKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgSlBFRyBYTCBkZWNvZGVyIChhbmQgZW5jb2Rl
cikuIEpQRUcgWEwgYW5pbWF0aW9ucworICAgICAgICB3aWxsIGJlIHN1cHBvcnRlZCBsYXRlci4K
KworICAgICAgICBUZXN0czogTGF5b3V0VGVzdHNcZmFzdFxpbWFnZXNcanBlZ3hsLWFzLWltYWdl
Lmh0bWwKKyAgICAgICAgICAgICAgIExheW91dFRlc3RzXGZhc3RcaW1hZ2VzXGpwZWd4bC1pbWFn
ZS1kZWNvZGluZy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9JbWFnZURlY29kZXJzLmNtYWtl
OiBBZGQgSlBFR1hMSW1hZ2VEZWNvZGVyLmNwcCBpZgorICAgICAgICBVU0UoSlBFR1hMKSBpcyB0
dXJuZWQgb24uCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6IEpQRUcg
WEwgbWltZSB0eXBlIGFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDogSlBFRyBYTCBzaWduYXR1cmUKKyAgICAgICAgYWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdlRGVj
b2Rlci5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4
bC9KUEVHWExJbWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2luL01J
TUVUeXBlUmVnaXN0cnlXaW4uY3BwOiBUaGUgLmp4bCBmaWxlIGV4dGVuc2lvbiBhZGRlZC4KKwog
MjAyMS0xMS0xMiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAg
ICAgd2ViVmlldy5faXNCZWluZ0luc3BlY3RlZCBkb2VzIG5vdCB3b3JrIHdpdGggU2VydmljZSBX
b3JrZXIgcGFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ltYWdlRGVj
b2RlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9JbWFnZURlY29kZXJzLmNtYWtl
CmluZGV4IGI2ODQ4Mzg3ZjExMC4uNDQxNGI5ZjkwYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9JbWFnZURlY29kZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ltYWdlRGVjb2RlcnMuY21ha2UKQEAgLTYsNiArNiw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljbyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZzIwMDAiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWd4bCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
IgogKQpAQCAtMjksNiArMzAsOCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNw
cAogCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdlRGVjb2Rl
ci5jcHAKKwogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
Y3BwCiAKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCkBAIC01MCw2ICs1MywxMCBAQCBpZiAoV2ViUF9GT1VORCkKICAgICApCiBlbmRpZiAoKQog
CitpZiAoSlBFR1hMX0ZPVU5EKQorICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTIEpQ
RUdYTDo6anhsKQorZW5kaWYgKCkKKwogaWYgKFVTRV9DQUlSTykKICAgICBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1h
Z2VCYWNraW5nU3RvcmVDYWlyby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5jcHAKaW5kZXggNmY3YWYxMjdjZmNlLi43MDhlMDYwN2I2YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0xMTEsNiArMTEx
LDkgQEAgY29uc3RleHByIENvbXBhcmFibGVDYXNlRm9sZGluZ0FTQ0lJTGl0ZXJhbCBzdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlQXJyYXlbXSA9IHsKICNpZiAhVVNFKENHKSAmJiBVU0UoT1BFTkpQRUcp
CiAgICAgImltYWdlL2pwZWcyMDAwIiwKICNlbmRpZgorI2lmIFVTRShKUEVHWEwpCisgICAgImlt
YWdlL2p4bCIsCisjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICJpbWFnZS9t
cy1ibXAiLAogICAgICJpbWFnZS9waXBlZyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAK
aW5kZXggZTgxMTU0MmYzNGYwLi5kOTU2ZDllNzYyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5jcHAKQEAgLTM5LDYgKzM5LDkgQEAKICNpZiBVU0UoV0VCUCkKICNpbmNsdWRlICJXRUJQ
SW1hZ2VEZWNvZGVyLmgiCiAjZW5kaWYKKyNpZiBVU0UoSlBFR1hMKQorI2luY2x1ZGUgIkpQRUdY
TEltYWdlRGVjb2Rlci5oIgorI2VuZGlmCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVk
ZSA8Y21hdGg+CkBAIC0xMDcsNiArMTEwLDE0IEBAIGJvb2wgbWF0Y2hlc1dlYlBTaWduYXR1cmUo
Y2hhciogY29udGVudHMpCiB9CiAjZW5kaWYKIAorI2lmIFVTRShKUEVHWEwpCitib29sIG1hdGNo
ZXNKUEVHWExTaWduYXR1cmUoY29uc3QgdWludDhfdCogY29udGVudHMsIHNpemVfdCBsZW5ndGgp
Cit7CisgICAgSnhsU2lnbmF0dXJlIHNpZ25hdHVyZSA9IEp4bFNpZ25hdHVyZUNoZWNrKGNvbnRl
bnRzLCBsZW5ndGgpOworICAgIHJldHVybiBzaWduYXR1cmUgIT0gSlhMX1NJR19OT1RfRU5PVUdI
X0JZVEVTICYmIHNpZ25hdHVyZSAhPSBKWExfU0lHX0lOVkFMSUQ7Cit9CisjZW5kaWYKKwogYm9v
bCBtYXRjaGVzQk1QU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogewogICAgIHJldHVybiAhbWVt
Y21wKGNvbnRlbnRzLCAiQk0iLCAyKTsKQEAgLTE2Miw2ICsxNzMsMTEgQEAgUmVmUHRyPFNjYWxh
YmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWwKICAgICAgICAgcmV0dXJuIFdFQlBJbWFnZURlY29kZXI6OmNyZWF0ZShhbHBo
YU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogI2VuZGlmCiAKKyNpZiBVU0Uo
SlBFR1hMKQorICAgIGlmIChtYXRjaGVzSlBFR1hMU2lnbmF0dXJlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGNvbnRlbnRzKSwgbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIEpQRUdY
TEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbik7CisjZW5kaWYKKwogICAgIGlmIChtYXRjaGVzQk1QU2lnbmF0dXJlKGNvbnRlbnRzKSkK
ICAgICAgICAgcmV0dXJuIEJNUEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGFscGhhT3B0aW9uLCBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdlRGVj
b2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41MTI5N2Ex
NzU4YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmNwcApAQCAtMCwwICsxLDE4NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKUEVHWExJbWFnZURl
Y29kZXIuaCIKKworI2lmIFVTRShKUEVHWEwpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlBF
R1hMSW1hZ2VEZWNvZGVyOjpKUEVHWExJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQorICAgIDogU2NhbGFibGVJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQoreworfQorCitKUEVHWExJbWFnZURlY29kZXI6On5KUEVHWExJbWFnZURl
Y29kZXIoKQoreworICAgIGNsZWFyKCk7Cit9CisKK1NjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUq
IEpQRUdYTEltYWdlRGVjb2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkKK3sK
KyAgICAvLyBUT0RPOiBUbyBzdXBwb3J0IGFuaW1hdGVkIEpQRUcgWEwgaW4gdGhlIGZ1dHVyZSB3
ZSBuZWVkIHRvIGhhbmRsZSBzZWNvbmQgYW5kIHN1YnNlcXVlbnQgZnJhbWVzLgorICAgIGlmIChp
bmRleCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNh
Y2hlLmlzRW1wdHkoKSkKKyAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLmdyb3coMSk7CisKKyAg
ICBhdXRvJiBmcmFtZSA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKKyAgICBpZiAoIWZyYW1lLmlz
Q29tcGxldGUoKSkKKyAgICAgICAgZGVjb2RlKGZhbHNlLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsK
KyAgICByZXR1cm4gJmZyYW1lOworfQorCit2b2lkIEpQRUdYTEltYWdlRGVjb2Rlcjo6Y2xlYXIo
KQoreworICAgIG1fZGVjb2Rlci5yZXNldCgpOworICAgIG1fcmVhZE9mZnNldCA9IDA7Cit9CisK
K2Jvb2wgSlBFR1hMSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQoreworICAgIGNsZWFyKCk7Cisg
ICAgcmV0dXJuIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKTsKK30KKwordm9pZCBK
UEVHWExJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKK3sKKyAgICBpZiAoZmFpbGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
bV9kZWNvZGVyKSB7CisgICAgICAgIGNsZWFyKCk7CisgICAgICAgIG1fZGVjb2RlciA9IEp4bERl
Y29kZXJNYWtlKG51bGxwdHIpOworICAgICAgICBpZiAoIW1fZGVjb2RlcikgeworICAgICAgICAg
ICAgc2V0RmFpbGVkKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoSnhsRGVjb2RlclN1YnNjcmliZUV2ZW50cyhtX2RlY29kZXIuZ2V0KCksIEpYTF9ERUNf
QkFTSUNfSU5GTyB8IEpYTF9ERUNfRlJBTUUgfCBKWExfREVDX0ZVTExfSU1BR0UpICE9IEpYTF9E
RUNfU1VDQ0VTUykgeworICAgICAgICAgICAgc2V0RmFpbGVkKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2RhdGEtPmRhdGEoKTsKKyAgICBzaXplX3Qg
ZGF0YVNpemUgPSBtX2RhdGEtPnNpemUoKTsKKyAgICBpZiAoSnhsRGVjb2RlclNldElucHV0KG1f
ZGVjb2Rlci5nZXQoKSwgbV9kYXRhLT5kYXRhKCkgKyBtX3JlYWRPZmZzZXQsIGRhdGFTaXplIC0g
bV9yZWFkT2Zmc2V0KSAhPSBKWExfREVDX1NVQ0NFU1MpIHsKKyAgICAgICAgc2V0RmFpbGVkKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBKeGxEZWNvZGVyU3RhdHVzIHN0YXR1cyA9
IHByb2Nlc3NJbnB1dChvbmx5U2l6ZSk7CisgICAgLy8gV2Ugc2V0IHRoZSBzdGF0dXMgYXMgZmFp
bGVkIGlmIHRoZSBkZWNvZGVyIHJlcG9ydHMgYW4gZXJyb3Igb3IgcmVxdWlyZXMgbW9yZSBkYXRh
IHdoaWxlIGFsbCBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLgorICAgIGlmIChzdGF0dXMgPT0gSlhM
X0RFQ19FUlJPUiB8fCAoYWxsRGF0YVJlY2VpdmVkICYmIHN0YXR1cyA9PSBKWExfREVDX05FRURf
TU9SRV9JTlBVVCkpIHsKKyAgICAgICAgc2V0RmFpbGVkKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvLyBXZSByZWxlYXNlIHRoZSBkZWNvZGVyIHdoZW4gd2UgZmluaXNoIHRoZSBk
ZWNvZGluZy4KKyAgICBpZiAoc3RhdHVzID09IEpYTF9ERUNfU1VDQ0VTUykgeworICAgICAgICBj
bGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gT3RoZXJ3aXNlIHdlIGdl
dCB0aGUgZGVjb2RlciByZWFkeSBmb3Igc3Vic2VxdWVudCBkYXRhLgorICAgIHNpemVfdCByZW1h
aW5pbmdEYXRhU2l6ZSA9IEp4bERlY29kZXJSZWxlYXNlSW5wdXQobV9kZWNvZGVyLmdldCgpKTsK
KyAgICBtX3JlYWRPZmZzZXQgPSBkYXRhU2l6ZSAtIHJlbWFpbmluZ0RhdGFTaXplOworfQorCitK
eGxEZWNvZGVyU3RhdHVzIEpQRUdYTEltYWdlRGVjb2Rlcjo6cHJvY2Vzc0lucHV0KGJvb2wgb25s
eVNpemUpCit7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBKeGxE
ZWNvZGVyUHJvY2Vzc0lucHV0KG1fZGVjb2Rlci5nZXQoKSk7CisKKyAgICAgICAgLy8gSlhMX0RF
Q19FUlJPUiBhbmQgSlhMX0RFQ19TVUNDRVNTIGFyZSB0ZXJtaW5hbCBzdGF0ZXMuIFdlIGFsc28g
ZXhpdCBmcm9tIHRoZSBsb29wIGlmIG1vcmUgZGF0YSBpcyBuZWVkZWQuCisgICAgICAgIGlmIChz
dGF0dXMgPT0gSlhMX0RFQ19FUlJPUiB8fCBzdGF0dXMgPT0gSlhMX0RFQ19TVUNDRVNTIHx8IHN0
YXR1cyA9PSBKWExfREVDX05FRURfTU9SRV9JTlBVVCkKKyAgICAgICAgICAgIHJldHVybiBzdGF0
dXM7CisKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBKWExfREVDX0JBU0lDX0lORk8pIHsKKyAgICAg
ICAgICAgIEp4bEJhc2ljSW5mbyBiYXNpY0luZm87CisgICAgICAgICAgICBpZiAoSnhsRGVjb2Rl
ckdldEJhc2ljSW5mbyhtX2RlY29kZXIuZ2V0KCksICZiYXNpY0luZm8pICE9IEpYTF9ERUNfU1VD
Q0VTUykKKyAgICAgICAgICAgICAgICByZXR1cm4gSlhMX0RFQ19FUlJPUjsKKworICAgICAgICAg
ICAgc2V0U2l6ZShJbnRTaXplKGJhc2ljSW5mby54c2l6ZSwgYmFzaWNJbmZvLnlzaXplKSk7Cisg
ICAgICAgICAgICBpZiAob25seVNpemUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YXR1cyA9
PSBKWExfREVDX0ZSQU1FKSB7CisgICAgICAgICAgICBKeGxQaXhlbEZvcm1hdCBmb3JtYXQgeyA0
LCBKWExfVFlQRV9VSU5UOCwgSlhMX05BVElWRV9FTkRJQU4sIDAgfTsKKyAgICAgICAgICAgIGlm
IChKeGxEZWNvZGVyU2V0SW1hZ2VPdXRDYWxsYmFjayhtX2RlY29kZXIuZ2V0KCksICZmb3JtYXQs
IGltYWdlT3V0Q2FsbGJhY2ssIHRoaXMpICE9IEpYTF9ERUNfU1VDQ0VTUykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gSlhMX0RFQ19FUlJPUjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBKWExfREVDX0ZVTExfSU1BR0UpIHsKKyAgICAg
ICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2Fj
aGVbMF07CisgICAgICAgICAgICBpZiAoIWJ1ZmZlci5pc0ludmFsaWQoKSkKKyAgICAgICAgICAg
ICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsK
KworICAgICAgICAgICAgLy8gVE9ETzogVG8gc3VwcG9ydCBhbmltYXRlZCBKUEVHIFhMIGluIHRo
ZSBmdXR1cmUgd2UgbmVlZCB0byBoYW5kbGUgc3Vic2VxdWVudCBkYXRhLgorICAgICAgICAgICAg
cmV0dXJuIEpYTF9ERUNfU1VDQ0VTUzsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBKUEVH
WExJbWFnZURlY29kZXI6OmltYWdlT3V0Q2FsbGJhY2sodm9pZCogdGhhdCwgc2l6ZV90IHgsIHNp
emVfdCB5LCBzaXplX3QgbnVtUGl4ZWxzLCBjb25zdCB2b2lkKiBwaXhlbHMpCit7CisgICAgc3Rh
dGljX2Nhc3Q8SlBFR1hMSW1hZ2VEZWNvZGVyKj4odGhhdCktPmltYWdlT3V0KHgsIHksIG51bVBp
eGVscywgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscykpOworfQorCit2b2lkIEpQ
RUdYTEltYWdlRGVjb2Rlcjo6aW1hZ2VPdXQoc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3QgbnVt
UGl4ZWxzLCBjb25zdCB1aW50OF90KiBwaXhlbHMpCit7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJD
YWNoZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIGJ1ZmZlciA9IG1f
ZnJhbWVCdWZmZXJDYWNoZVswXTsKKyAgICBpZiAoYnVmZmVyLmlzSW52YWxpZCgpKSB7CisgICAg
ICAgIGlmICghYnVmZmVyLmluaXRpYWxpemUoc2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhE
ZWNvZGluZ1N0YXR1czo6UGFydGlhbCk7CisgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxz
ZSk7CisgICAgfQorCisgICAgdWludDMyX3QqIHJvdyA9IGJ1ZmZlci5iYWNraW5nU3RvcmUoKS0+
cGl4ZWxBdCh4LCB5KTsKKyAgICB1aW50MzJfdCogY3VycmVudEFkZHJlc3MgPSByb3c7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1QaXhlbHM7IGkrKykgeworICAgICAgICB1aW50OF90
IHIgPSAqcGl4ZWxzKys7CisgICAgICAgIHVpbnQ4X3QgZyA9ICpwaXhlbHMrKzsKKyAgICAgICAg
dWludDhfdCBiID0gKnBpeGVscysrOworICAgICAgICB1aW50OF90IGEgPSAqcGl4ZWxzKys7Cisg
ICAgICAgIGJ1ZmZlci5iYWNraW5nU3RvcmUoKS0+c2V0UGl4ZWwoY3VycmVudEFkZHJlc3MrKywg
ciwgZywgYiwgYSk7CisgICAgfQorfQorCit9CisjZW5kaWYgLy8gVVNFKEpQRUdYTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVH
WExJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmEwOWQ1YzlkZGRjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuaApA
QCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3Rp
dmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJT
Y2FsYWJsZUltYWdlRGVjb2Rlci5oIgorCisjaWYgVVNFKEpQRUdYTCkKKworI2luY2x1ZGUgPGp4
bC9kZWNvZGVfY3h4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBjbGFzcyBk
ZWNvZGVzIHRoZSBKUEVHIFhMIGltYWdlIGZvcm1hdC4KK2NsYXNzIEpQRUdYTEltYWdlRGVjb2Rl
ciBmaW5hbCA6IHB1YmxpYyBTY2FsYWJsZUltYWdlRGVjb2RlciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpQRUdYTEltYWdlRGVjb2Rl
cihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5KUEVHWExJbWFnZURlY29kZXIoKTsKKworICAgIC8vIFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyCisgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gImp4bCJfczsgfQorICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVm
ZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRlOworCisgICAgYm9vbCBzZXRGYWlsZWQo
KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBKUEVHWExJbWFnZURlY29kZXIoQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICB2b2lkIHRyeURlY29kZVNpemUo
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUsIGFsbERhdGFSZWNl
aXZlZCk7IH0KKworICAgIHZvaWQgZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKTsKKworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIEp4bERlY29kZXJTdGF0dXMgcHJv
Y2Vzc0lucHV0KGJvb2wgb25seVNpemUpOworCisgICAgc3RhdGljIHZvaWQgaW1hZ2VPdXRDYWxs
YmFjayh2b2lkKiB0aGF0LCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCBudW1QaXhlbHMsIGNv
bnN0IHZvaWQqIHBpeGVscyk7CisgICAgdm9pZCBpbWFnZU91dChzaXplX3QgeCwgc2l6ZV90IHks
IHNpemVfdCBudW1QaXhlbHMsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CisKKyAgICBKeGxEZWNv
ZGVyUHRyIG1fZGVjb2RlcjsKKyAgICBzaXplX3QgbV9yZWFkT2Zmc2V0ID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShKUEVHWEwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKaW5kZXgg
ZDM2M2UzMzBjYjI0Li44NTJhMWU0ZmNmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKQEAgLTk5LDYgKzk5LDkgQEAgU3Ry
aW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyAm
ZXh0KQogICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7
CiAgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndt
bGMiKTsKICAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyNp
ZiBVU0UoSlBFR1hMKQorICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImp4bCIsICJpbWFnZS9qeGwi
KTsKKyNlbmRpZgogICAgIH0KICAgICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4
dCk7CiAgICAgaWYgKHJlc3VsdC5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9GaW5kSlBFR1hMLmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRKUEVHWEwuY21ha2UKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40YTI2ZmUxMmNlM2YKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvY21ha2UvRmluZEpQRUdYTC5jbWFrZQpAQCAtMCwwICsxLDkzIEBA
CisjIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI1s9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PVsucnN0OgorRmluZEpQRUdYTAorLS0tLS0tLS0tCisKK0ZpbmQgSlBFR1hMIGhlYWRlcnMg
YW5kIGxpYnJhcmllcy4KKworSW1wb3J0ZWQgVGFyZ2V0cworXl5eXl5eXl5eXl5eXl5eXgorCitg
YEpQRUdYTDo6anhsYGAKKyAgVGhlIEpQRUdYTCBsaWJyYXJ5LCBpZiBmb3VuZC4KKworUmVzdWx0
IFZhcmlhYmxlcworXl5eXl5eXl5eXl5eXl5eXgorCitUaGlzIHdpbGwgZGVmaW5lIHRoZSBmb2xs
b3dpbmcgdmFyaWFibGVzIGluIHlvdXIgcHJvamVjdDoKKworYGBKUEVHWExfRk9VTkRgYAorICB0
cnVlIGlmICh0aGUgcmVxdWVzdGVkIHZlcnNpb24gb2YpIEpQRUdYTCBpcyBhdmFpbGFibGUuCitg
YEpQRUdYTF9WRVJTSU9OYGAKKyAgdGhlIHZlcnNpb24gb2YgSlBFR1hMLgorYGBKUEVHWExfTElC
UkFSSUVTYGAKKyAgdGhlIGxpYnJhcmllcyB0byBsaW5rIGFnYWluc3QgdG8gdXNlIEpQRUdYTC4K
K2BgSlBFR1hMX0lOQ0xVREVfRElSU2BgCisgIHdoZXJlIHRvIGZpbmQgdGhlIEpQRUdYTCBoZWFk
ZXJzLgorYGBKUEVHWExfQ09NUElMRV9PUFRJT05TYGAKKyAgdGhpcyBzaG91bGQgYmUgcGFzc2Vk
IHRvIHRhcmdldF9jb21waWxlX29wdGlvbnMoKSwgaWYgdGhlCisgIHRhcmdldCBpcyBub3QgdXNl
ZCBmb3IgbGlua2luZworCisjXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XQorCitmaW5kX3BhY2thZ2UoUGtnQ29u
ZmlnIFFVSUVUKQoraWYgKFBrZ0NvbmZpZ19GT1VORCkKKyAgICBwa2dfY2hlY2tfbW9kdWxlcyhQ
Q19KUEVHWEwgUVVJRVQganhsKQorICAgIHNldChKUEVHWExfQ09NUElMRV9PUFRJT05TICR7UENf
SlBFR1hMX0NGTEFHU19PVEhFUn0pCisgICAgc2V0KEpQRUdYTF9WRVJTSU9OICR7UENfSlBFR1hM
X1ZFUlNJT059KQorZW5kaWYgKCkKKworZmluZF9wYXRoKEpQRUdYTF9JTkNMVURFX0RJUgorICAg
IE5BTUVTIGp4bC9kZWNvZGUuaAorICAgIEhJTlRTICR7UENfSlBFR1hMX0lOQ0xVREVESVJ9ICR7
UENfSlBFR1hMX0lOQ0xVREVfRElSU30gJHtKUEVHWExfSU5DTFVERV9ESVJ9CispCisKK2ZpbmRf
bGlicmFyeShKUEVHWExfTElCUkFSWQorICAgIE5BTUVTICR7SlBFR1hMX05BTUVTfSBqeGwKKyAg
ICBISU5UUyAke1BDX0pQRUdYTF9MSUJESVJ9ICR7UENfSlBFR1hMX0xJQlJBUllfRElSU30KKykK
KworaW5jbHVkZShGaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKK2ZpbmRfcGFja2FnZV9o
YW5kbGVfc3RhbmRhcmRfYXJncyhKUEVHWEwKKyAgICBGT1VORF9WQVIgSlBFR1hMX0ZPVU5ECisg
ICAgUkVRVUlSRURfVkFSUyBKUEVHWExfTElCUkFSWSBKUEVHWExfSU5DTFVERV9ESVIKKyAgICBW
RVJTSU9OX1ZBUiBKUEVHWExfVkVSU0lPTgorKQorCitpZiAoSlBFR1hMX0xJQlJBUlkgQU5EIE5P
VCBUQVJHRVQgSlBFR1hMOjpqeGwpCisgICAgYWRkX2xpYnJhcnkoSlBFR1hMOjpqeGwgVU5LTk9X
TiBJTVBPUlRFRCBHTE9CQUwpCisgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEpQRUdYTDo6anhs
IFBST1BFUlRJRVMKKyAgICAgICAgSU1QT1JURURfTE9DQVRJT04gIiR7SlBFR1hMX0xJQlJBUll9
IgorICAgICAgICBJTlRFUkZBQ0VfQ09NUElMRV9PUFRJT05TICIke0pQRUdYTF9DT01QSUxFX09Q
VElPTlN9IgorICAgICAgICBJTlRFUkZBQ0VfSU5DTFVERV9ESVJFQ1RPUklFUyAiJHtKUEVHWExf
SU5DTFVERV9ESVJ9IgorICAgICkKK2VuZGlmICgpCisKK21hcmtfYXNfYWR2YW5jZWQoSlBFR1hM
X0lOQ0xVREVfRElSIEpQRUdYTF9MSUJSQVJZKQorCitpZiAoSlBFR1hMX0ZPVU5EKQorICAgIHNl
dChKUEVHWExfTElCUkFSSUVTICR7SlBFR1hMX0xJQlJBUll9KQorICAgIHNldChKUEVHWExfSU5D
TFVERV9ESVJTICR7SlBFR1hMX0lOQ0xVREVfRElSfSkKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNX
aW5DYWlyby5jbWFrZQppbmRleCAxOWY1MTI3ZTY3MTcuLjU0ZGMwOTVkOWY5OCAxMDA2NDQKLS0t
IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc1dpbkNhaXJvLmNtYWtlCkBAIC0yNiw2ICsyNiwxMSBAQCBpZiAoTENNUzJfRk9VTkQp
CiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0xDTVMgT04pCiBlbmRpZiAoKQogCitm
aW5kX3BhY2thZ2UoSlBFR1hMKQoraWYgKEpQRUdYTF9GT1VORCkKKyAgICBTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfSlBFR1hMIE9OKQorZW5kaWYgKCkKKwogZmluZF9wYWNrYWdlKE9wZW5K
UEVHIDIuMy4xKQogaWYgKE9wZW5KUEVHX0ZPVU5EKQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JV
SUxEKFVTRV9PUEVOSlBFRyBPTikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444594</attachid>
            <date>2021-11-17 16:11:51 -0800</date>
            <delta_ts>2021-11-18 10:05:15 -0800</delta_ts>
            <desc>Patch (with --binary)</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>25143</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBhZDE4ZGNhNDMxOWYuLjI5
NTIyOTcxZGY5NyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIyIEBACisyMDIxLTExLTE3ICBZb3NoaWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRz
dWthd2FAc29ueS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEpQRUcgWEwgaW1hZ2UgZGVjb2Rl
ciB1c2luZyBsaWJqeGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzExMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgaW5pdGlhbCB2ZXJzaW9uIG9mIEpQRUcg
WEwgaW1hZ2UgZGVjb2Rlci4KKyAgICAgICAgSlBFRyBYTCBpcyBhIHJveWFsdHktZnJlZSByYXN0
ZXItZ3JhcGhpY3MgZmlsZSBmb3JtYXQgdGhhdCBzdXBwb3J0cworICAgICAgICBib3RoIGxvc3N5
IGFuZCBsb3NzbGVzcyBjb21wcmVzc2lvbiBhbmQgaXMgZXhwZXJpbWVudGFsbHkgc3VwcG9ydGVk
IGJ5CisgICAgICAgIENocm9tZSwgRmlyZUZveCwgYW5kIEVkZ2UuCisgICAgICAgIFRoZSBpbWFn
ZSBkZWNvZGVyIGltcGxlbWVudGVkIGJ5IHRoaXMgcGF0Y2ggdXNlcyBsaWJqeGwsIGEgcmVmZXJl
bmNlCisgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIEpQRUcgWEwgZGVjb2RlciAoYW5kIGVuY29k
ZXIpLiBKUEVHIFhMIGFuaW1hdGlvbnMKKyAgICAgICAgd2lsbCBiZSBzdXBwb3J0ZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmluZEpQRUdYTC5jbWFrZTogQWRkZWQuCisgICAg
ICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZTogRW5hYmxlIEpQRUcgWEwg
c3VwcG9ydCBpZgorICAgICAgICBsaWJqeGwgaXMgYXZhaWxhYmxlLgorCiAyMDIxLTExLTEyICBE
b24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJv
XSBBZGQgTGl0dGxlLUNNUyBzdXBwb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjkwNDk4ZDNiYzg0Li5mYzI3ZmY3NjYx
NmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0xMS0xNyAgWW9zaGlha2kgSml0c3VrYXdh
ICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgorCisgICAgICAgIEltcGxlbWVudCBKUEVH
IFhMIGltYWdlIGRlY29kZXIgdXNpbmcgbGlianhsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMxMTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIGluaXRpYWwg
dmVyc2lvbiBvZiBKUEVHIFhMIGltYWdlIGRlY29kZXIuCisgICAgICAgIEpQRUcgWEwgaXMgYSBy
b3lhbHR5LWZyZWUgcmFzdGVyLWdyYXBoaWNzIGZpbGUgZm9ybWF0IHRoYXQgc3VwcG9ydHMKKyAg
ICAgICAgYm90aCBsb3NzeSBhbmQgbG9zc2xlc3MgY29tcHJlc3Npb24gYW5kIGlzIGV4cGVyaW1l
bnRhbGx5IHN1cHBvcnRlZCBieQorICAgICAgICBDaHJvbWUsIEZpcmVGb3gsIGFuZCBFZGdlLgor
ICAgICAgICBUaGUgaW1hZ2UgZGVjb2RlciBpbXBsZW1lbnRlZCBieSB0aGlzIHBhdGNoIHVzZXMg
bGlianhsLCBhIHJlZmVyZW5jZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBKUEVHIFhMIGRl
Y29kZXIgKGFuZCBlbmNvZGVyKS4gSlBFRyBYTCBhbmltYXRpb25zCisgICAgICAgIHdpbGwgYmUg
c3VwcG9ydGVkIGxhdGVyLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogU2tpcCBKUEVH
IFhMIHRlc3RzIGJ5IGRlZmF1bHQuCisgICAgICAgICogZmFzdC9pbWFnZXMvanBlZ3hsLWFzLWlt
YWdlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2pwZWd4bC1h
cy1pbWFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9qcGVneGwtaW1hZ2Ut
ZGVjb2RpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9qcGVn
eGwtaW1hZ2UtZGVjb2RpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvcmVz
b3VyY2VzL2dyZWVuLTMxM3gzMTMuanhsOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW5j
YWlyby9UZXN0RXhwZWN0YXRpb25zOiBTa2lwIEpQRUcgWEwgdGVzdHMgdW50aWwKKyAgICAgICAg
V2ViS2l0UmVxaXJlbWVudHMgcmVsZWFzZSB3aXRoIGxpYmp4bC4KKwogMjAyMS0xMS0xMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIy
ODU0ODEpOiBJbmZpbml0ZSByZWN1cnNpb24gd2l0aCBjeWNsaWMgZmlsdGVyIHJlZmVyZW5jZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggZjk0Y2FmMjUyZGYzLi5iOGY2ZWYyOTBjNWYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMTMyLDYgKzEzMiwxMCBAQCBmYXN0L2ltYWdlcy9hdmlmLWFzLWltYWdl
Lmh0bWwgWyBTa2lwIF0KIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWF2aWYuaHRtbCBbIFNraXAgXQog
aHR0cC90ZXN0cy9pbWFnZXMvYXZpZi1wYXJ0aWFsLWxvYWQtY3Jhc2guaHRtbCBbIFNraXAgXQog
CisjIFRoZXNlIHRlc3RzIGRvbid0IGhhdmUgdG8gYmUgcGxhdGZvcm0tc3BlY2lmaWMsIGJ1dCB0
aGV5IGFyZSBvbmx5IGltcGxlbWVudGVkIG9uIFdpbkNhaXJvIG5vdy4KK2Zhc3QvaW1hZ2VzL2pw
ZWd4bC1pbWFnZS1kZWNvZGluZy5odG1sIFsgU2tpcCBdCitmYXN0L2ltYWdlcy9qcGVneGwtYXMt
aW1hZ2UuaHRtbCBbIFNraXAgXQorCiAjIE9ubHkgYXBwbGljYWJsZSBvbiBwbGF0Zm9ybXMgd2l0
aCBkYXJrIG1vZGUgc3VwcG9ydAogY3NzLWRhcmstbW9kZSBbIFNraXAgXQogZmFzdC9jc3MvYXBw
bGUtc3lzdGVtLWNvbnRyb2wtY29sb3JzLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL2pwZWd4bC1hcy1pbWFnZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvanBlZ3hsLWFzLWltYWdlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYzNkOWUzMTlmZTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9qcGVneGwtYXMtaW1hZ2UtZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzdHlsZT4KK2RpdiB7Cisg
IHdpZHRoOiAzMTNweDsKKyAgaGVpZ2h0OiAzMTNweDsKKyAgYmFja2dyb3VuZC1jb2xvcjogIzBB
RkYwNTsKK30KKzwvc3R5bGU+Cis8Ym9keT4KKyAgPGRpdj48L2Rpdj4KKzwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2pwZWd4bC1hcy1pbWFnZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvanBlZ3hsLWFzLWltYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xMjE5YjE1NjNjOTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9qcGVneGwtYXMtaW1hZ2UuaHRtbApAQCAtMCwwICsx
LDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+CisgIDxwaWN0dXJlPgorICAgIDxzb3VyY2Ug
c3Jjc2V0PSJyZXNvdXJjZXMvZ3JlZW4tMzEzeDMxMy5qeGwiIHR5cGU9ImltYWdlL2p4bCI+Cisg
ICAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi0zMTN4MzEzLmp4bCI+CisgIDwvcGljdHVyZT4K
KzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2pwZWd4bC1pbWFn
ZS1kZWNvZGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9qcGVneGwt
aW1hZ2UtZGVjb2RpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZDc2NmVmNjA0ODJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvanBlZ3hsLWltYWdlLWRlY29kaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIgQEAKKworMzEzeDMxMwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvanBl
Z3hsLWltYWdlLWRlY29kaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9qcGVneGwt
aW1hZ2UtZGVjb2RpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjI1ZjlhNjRkMTIyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL2pwZWd4bC1pbWFnZS1kZWNvZGluZy5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGJvZHk+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0cycpLmlubmVySFRNTCA9CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpWzBdLndpZHRoICsgJ3gnICsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJylbMF0uaGVpZ2h0OworfQorPC9zY3JpcHQ+
Cis8cGljdHVyZT4KKyAgPHNvdXJjZSBzcmNzZXQ9InJlc291cmNlcy9ncmVlbi0zMTN4MzEzLmp4
bCIgdHlwZT0iaW1hZ2UvanhsIj4KKyAgPGltZyBzcmM9InJlc291cmNlcy9ncmVlbi0zMTN4MzEz
Lmp4bCI+Cis8L3BpY3R1cmU+Cis8ZGl2IGlkPSJyZXN1bHRzIj48L2Rpdj4KKzwvYm9keT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9ncmVlbi0zMTN4MzEz
Lmp4bCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9ncmVlbi0zMTN4MzEzLmp4
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNDZjNmNkYjY2ZmViY2Y1NmM4YmJiYzhhYTRiZTI1NDY0MWJjZDJkCkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1MQp6Y21leSpid0UtZUFjbGozZ15eKGpnU1VwdEY7XiFp
aEFZeV5KPGBje3hMcF8rRyNhS2pIN3QzeGs/WFVBPWYjUFIKSDlHMm4kalpZQT4KCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJv
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDhmZDZiOWRiZmM1OS4uMTQxZmI5OTczZGU3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI3Miw3ICsyNzIs
OSBAQCBtZWRpYS9haXJwbGF5LWF1dG9wbGF5Lmh0bWwgWyBTa2lwIF0KICMgUExBVEZPUk0oTUFD
KSwgaW50ZXJuYWxzLnJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oKQogZmFzdC9s
YXllcnMvcHJldmVudC1oaXQtdGVzdC1kdXJpbmctbGF5b3V0Lmh0bWwgWyBTa2lwIF0KIAotCisj
IEpQRUcgWEwgaXMgZGlzYWJsZWQgdW50aWwgV2ViS2l0UmVxdWlyZW1lbnRzIGlzIHJlbGVhc2Vk
IHdpdGggbGlianhsCitmYXN0L2ltYWdlcy9qcGVneGwtYXMtaW1hZ2UuaHRtbCBbIFNraXAgXQor
ZmFzdC9pbWFnZXMvanBlZ3hsLWltYWdlLWRlY29kaW5nLmh0bWwgWyBTa2lwIF0KIAogIyBEYXRh
VHJhbnNmZXJJdGVtcyBpcyBub3QgeWV0IGltcGxlbWVudGVkCiBmYXN0L2V2ZW50cy9jbGlwYm9h
cmQtZGF0YVRyYW5zZmVySXRlbUxpc3QuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA1MTRh
YzQ5NWRkOS4uODkyYzQ1Njk5ZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEt
MTEtMTcgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgSlBFRyBYTCBpbWFnZSBkZWNvZGVyIHVzaW5nIGxpYmp4bAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMTEzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBpbnRyb2R1Y2VzIHRoZSBpbml0aWFsIHZlcnNpb24gb2YgSlBFRyBYTCBpbWFnZSBkZWNvZGVy
LgorICAgICAgICBKUEVHIFhMIGlzIGEgcm95YWx0eS1mcmVlIHJhc3Rlci1ncmFwaGljcyBmaWxl
IGZvcm1hdCB0aGF0IHN1cHBvcnRzCisgICAgICAgIGJvdGggbG9zc3kgYW5kIGxvc3NsZXNzIGNv
bXByZXNzaW9uIGFuZCBpcyBleHBlcmltZW50YWxseSBzdXBwb3J0ZWQgYnkKKyAgICAgICAgQ2hy
b21lLCBGaXJlRm94LCBhbmQgRWRnZS4KKyAgICAgICAgVGhlIGltYWdlIGRlY29kZXIgaW1wbGVt
ZW50ZWQgYnkgdGhpcyBwYXRjaCB1c2VzIGxpYmp4bCwgYSByZWZlcmVuY2UKKyAgICAgICAgaW1w
bGVtZW50YXRpb24gb2YgSlBFRyBYTCBkZWNvZGVyIChhbmQgZW5jb2RlcikuIEpQRUcgWEwgYW5p
bWF0aW9ucworICAgICAgICB3aWxsIGJlIHN1cHBvcnRlZCBsYXRlci4KKworICAgICAgICBUZXN0
czogTGF5b3V0VGVzdHNcZmFzdFxpbWFnZXNcanBlZ3hsLWFzLWltYWdlLmh0bWwKKyAgICAgICAg
ICAgICAgIExheW91dFRlc3RzXGZhc3RcaW1hZ2VzXGpwZWd4bC1pbWFnZS1kZWNvZGluZy5odG1s
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9JbWFnZURlY29kZXJzLmNtYWtlOiBBZGQgSlBFR1hMSW1h
Z2VEZWNvZGVyLmNwcCBpZgorICAgICAgICBVU0UoSlBFR1hMKSBpcyB0dXJuZWQgb24uCisgICAg
ICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6IEpQRUcgWEwgbWltZSB0eXBlIGFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmNwcDogSlBFRyBYTCBzaWduYXR1cmUKKyAgICAgICAgYWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdlRGVjb2Rlci5jcHA6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURl
Y29kZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwOiBUaGUgLmp4bCBmaWxlIGV4dGVuc2lvbiBhZGRlZC4KKwogMjAyMS0xMS0xMiAgVGlt
b3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgd2ViVmlldy5faXNC
ZWluZ0luc3BlY3RlZCBkb2VzIG5vdCB3b3JrIHdpdGggU2VydmljZSBXb3JrZXIgcGFnZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ltYWdlRGVjb2RlcnMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9JbWFnZURlY29kZXJzLmNtYWtlCmluZGV4IGI2ODQ4Mzg3
ZjExMC4uNDQxNGI5ZjkwYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9J
bWFnZURlY29kZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ltYWdlRGVj
b2RlcnMuY21ha2UKQEAgLTYsNiArNiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljbyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIw
MDAiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bCIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nIgogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwIgogKQpAQCAtMjksNiAr
MzAsOCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAogCisgICAgcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdlRGVjb2Rlci5jcHAKKwogICAgIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCiAKICAgICBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC01MCw2ICs1
MywxMCBAQCBpZiAoV2ViUF9GT1VORCkKICAgICApCiBlbmRpZiAoKQogCitpZiAoSlBFR1hMX0ZP
VU5EKQorICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTIEpQRUdYTDo6anhsKQorZW5k
aWYgKCkKKwogaWYgKFVTRV9DQUlSTykKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVD
YWlyby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAK
aW5kZXggNmY3YWYxMjdjZmNlLi43MDhlMDYwN2I2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0xMTEsNiArMTExLDkgQEAgY29uc3RleHBy
IENvbXBhcmFibGVDYXNlRm9sZGluZ0FTQ0lJTGl0ZXJhbCBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
QXJyYXlbXSA9IHsKICNpZiAhVVNFKENHKSAmJiBVU0UoT1BFTkpQRUcpCiAgICAgImltYWdlL2pw
ZWcyMDAwIiwKICNlbmRpZgorI2lmIFVTRShKUEVHWEwpCisgICAgImltYWdlL2p4bCIsCisjZW5k
aWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICJpbWFnZS9tcy1ibXAiLAogICAgICJp
bWFnZS9waXBlZyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggZTgxMTU0MmYz
NGYwLi5kOTU2ZDllNzYyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTM5
LDYgKzM5LDkgQEAKICNpZiBVU0UoV0VCUCkKICNpbmNsdWRlICJXRUJQSW1hZ2VEZWNvZGVyLmgi
CiAjZW5kaWYKKyNpZiBVU0UoSlBFR1hMKQorI2luY2x1ZGUgIkpQRUdYTEltYWdlRGVjb2Rlci5o
IgorI2VuZGlmCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+CkBAIC0x
MDcsNiArMTEwLDE0IEBAIGJvb2wgbWF0Y2hlc1dlYlBTaWduYXR1cmUoY2hhciogY29udGVudHMp
CiB9CiAjZW5kaWYKIAorI2lmIFVTRShKUEVHWEwpCitib29sIG1hdGNoZXNKUEVHWExTaWduYXR1
cmUoY29uc3QgdWludDhfdCogY29udGVudHMsIHNpemVfdCBsZW5ndGgpCit7CisgICAgSnhsU2ln
bmF0dXJlIHNpZ25hdHVyZSA9IEp4bFNpZ25hdHVyZUNoZWNrKGNvbnRlbnRzLCBsZW5ndGgpOwor
ICAgIHJldHVybiBzaWduYXR1cmUgIT0gSlhMX1NJR19OT1RfRU5PVUdIX0JZVEVTICYmIHNpZ25h
dHVyZSAhPSBKWExfU0lHX0lOVkFMSUQ7Cit9CisjZW5kaWYKKwogYm9vbCBtYXRjaGVzQk1QU2ln
bmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogewogICAgIHJldHVybiAhbWVtY21wKGNvbnRlbnRzLCAi
Qk0iLCAyKTsKQEAgLTE2Miw2ICsxNzMsMTEgQEAgUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVy
PiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWwKICAg
ICAgICAgcmV0dXJuIFdFQlBJbWFnZURlY29kZXI6OmNyZWF0ZShhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pOwogI2VuZGlmCiAKKyNpZiBVU0UoSlBFR1hMKQorICAgIGlm
IChtYXRjaGVzSlBFR1hMU2lnbmF0dXJlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGNvbnRlbnRzKSwgbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIEpQRUdYTEltYWdlRGVjb2Rlcjo6
Y3JlYXRlKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisjZW5kaWYK
KwogICAgIGlmIChtYXRjaGVzQk1QU2lnbmF0dXJlKGNvbnRlbnRzKSkKICAgICAgICAgcmV0dXJu
IEJNUEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdlRGVjb2Rlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41MTI5N2ExNzU4YzEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVneGwv
SlBFR1hMSW1hZ2VEZWNvZGVyLmNwcApAQCAtMCwwICsxLDE4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKUEVHWExJbWFnZURlY29kZXIuaCIKKworI2lm
IFVTRShKUEVHWEwpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlBFR1hMSW1hZ2VEZWNvZGVy
OjpKUEVHWExJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogU2NhbGFi
bGVJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQor
eworfQorCitKUEVHWExJbWFnZURlY29kZXI6On5KUEVHWExJbWFnZURlY29kZXIoKQoreworICAg
IGNsZWFyKCk7Cit9CisKK1NjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIEpQRUdYTEltYWdlRGVj
b2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkKK3sKKyAgICAvLyBUT0RPOiBU
byBzdXBwb3J0IGFuaW1hdGVkIEpQRUcgWEwgaW4gdGhlIGZ1dHVyZSB3ZSBuZWVkIHRvIGhhbmRs
ZSBzZWNvbmQgYW5kIHN1YnNlcXVlbnQgZnJhbWVzLgorICAgIGlmIChpbmRleCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkK
KyAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLmdyb3coMSk7CisKKyAgICBhdXRvJiBmcmFtZSA9
IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKKyAgICBpZiAoIWZyYW1lLmlzQ29tcGxldGUoKSkKKyAg
ICAgICAgZGVjb2RlKGZhbHNlLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKKyAgICByZXR1cm4gJmZy
YW1lOworfQorCit2b2lkIEpQRUdYTEltYWdlRGVjb2Rlcjo6Y2xlYXIoKQoreworICAgIG1fZGVj
b2Rlci5yZXNldCgpOworICAgIG1fcmVhZE9mZnNldCA9IDA7Cit9CisKK2Jvb2wgSlBFR1hMSW1h
Z2VEZWNvZGVyOjpzZXRGYWlsZWQoKQoreworICAgIGNsZWFyKCk7CisgICAgcmV0dXJuIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKTsKK30KKwordm9pZCBKUEVHWExJbWFnZURlY29k
ZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBp
ZiAoZmFpbGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9kZWNvZGVyKSB7Cisg
ICAgICAgIGNsZWFyKCk7CisgICAgICAgIG1fZGVjb2RlciA9IEp4bERlY29kZXJNYWtlKG51bGxw
dHIpOworICAgICAgICBpZiAoIW1fZGVjb2RlcikgeworICAgICAgICAgICAgc2V0RmFpbGVkKCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoSnhsRGVjb2Rl
clN1YnNjcmliZUV2ZW50cyhtX2RlY29kZXIuZ2V0KCksIEpYTF9ERUNfQkFTSUNfSU5GTyB8IEpY
TF9ERUNfRlJBTUUgfCBKWExfREVDX0ZVTExfSU1BR0UpICE9IEpYTF9ERUNfU1VDQ0VTUykgewor
ICAgICAgICAgICAgc2V0RmFpbGVkKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBtX2RhdGEtPmRhdGEoKTsKKyAgICBzaXplX3QgZGF0YVNpemUgPSBtX2Rh
dGEtPnNpemUoKTsKKyAgICBpZiAoSnhsRGVjb2RlclNldElucHV0KG1fZGVjb2Rlci5nZXQoKSwg
bV9kYXRhLT5kYXRhKCkgKyBtX3JlYWRPZmZzZXQsIGRhdGFTaXplIC0gbV9yZWFkT2Zmc2V0KSAh
PSBKWExfREVDX1NVQ0NFU1MpIHsKKyAgICAgICAgc2V0RmFpbGVkKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBKeGxEZWNvZGVyU3RhdHVzIHN0YXR1cyA9IHByb2Nlc3NJbnB1dChv
bmx5U2l6ZSk7CisgICAgLy8gV2Ugc2V0IHRoZSBzdGF0dXMgYXMgZmFpbGVkIGlmIHRoZSBkZWNv
ZGVyIHJlcG9ydHMgYW4gZXJyb3Igb3IgcmVxdWlyZXMgbW9yZSBkYXRhIHdoaWxlIGFsbCBkYXRh
IGhhcyBiZWVuIHJlY2VpdmVkLgorICAgIGlmIChzdGF0dXMgPT0gSlhMX0RFQ19FUlJPUiB8fCAo
YWxsRGF0YVJlY2VpdmVkICYmIHN0YXR1cyA9PSBKWExfREVDX05FRURfTU9SRV9JTlBVVCkpIHsK
KyAgICAgICAgc2V0RmFpbGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBX
ZSByZWxlYXNlIHRoZSBkZWNvZGVyIHdoZW4gd2UgZmluaXNoIHRoZSBkZWNvZGluZy4KKyAgICBp
ZiAoc3RhdHVzID09IEpYTF9ERUNfU1VDQ0VTUykgeworICAgICAgICBjbGVhcigpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gT3RoZXJ3aXNlIHdlIGdldCB0aGUgZGVjb2RlciBy
ZWFkeSBmb3Igc3Vic2VxdWVudCBkYXRhLgorICAgIHNpemVfdCByZW1haW5pbmdEYXRhU2l6ZSA9
IEp4bERlY29kZXJSZWxlYXNlSW5wdXQobV9kZWNvZGVyLmdldCgpKTsKKyAgICBtX3JlYWRPZmZz
ZXQgPSBkYXRhU2l6ZSAtIHJlbWFpbmluZ0RhdGFTaXplOworfQorCitKeGxEZWNvZGVyU3RhdHVz
IEpQRUdYTEltYWdlRGVjb2Rlcjo6cHJvY2Vzc0lucHV0KGJvb2wgb25seVNpemUpCit7CisgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBKeGxEZWNvZGVyUHJvY2Vzc0lu
cHV0KG1fZGVjb2Rlci5nZXQoKSk7CisKKyAgICAgICAgLy8gSlhMX0RFQ19FUlJPUiBhbmQgSlhM
X0RFQ19TVUNDRVNTIGFyZSB0ZXJtaW5hbCBzdGF0ZXMuIFdlIGFsc28gZXhpdCBmcm9tIHRoZSBs
b29wIGlmIG1vcmUgZGF0YSBpcyBuZWVkZWQuCisgICAgICAgIGlmIChzdGF0dXMgPT0gSlhMX0RF
Q19FUlJPUiB8fCBzdGF0dXMgPT0gSlhMX0RFQ19TVUNDRVNTIHx8IHN0YXR1cyA9PSBKWExfREVD
X05FRURfTU9SRV9JTlBVVCkKKyAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisKKyAgICAgICAg
aWYgKHN0YXR1cyA9PSBKWExfREVDX0JBU0lDX0lORk8pIHsKKyAgICAgICAgICAgIEp4bEJhc2lj
SW5mbyBiYXNpY0luZm87CisgICAgICAgICAgICBpZiAoSnhsRGVjb2RlckdldEJhc2ljSW5mbyht
X2RlY29kZXIuZ2V0KCksICZiYXNpY0luZm8pICE9IEpYTF9ERUNfU1VDQ0VTUykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gSlhMX0RFQ19FUlJPUjsKKworICAgICAgICAgICAgc2V0U2l6ZShJbnRT
aXplKGJhc2ljSW5mby54c2l6ZSwgYmFzaWNJbmZvLnlzaXplKSk7CisgICAgICAgICAgICBpZiAo
b25seVNpemUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBKWExfREVDX0ZSQU1F
KSB7CisgICAgICAgICAgICBKeGxQaXhlbEZvcm1hdCBmb3JtYXQgeyA0LCBKWExfVFlQRV9VSU5U
OCwgSlhMX05BVElWRV9FTkRJQU4sIDAgfTsKKyAgICAgICAgICAgIGlmIChKeGxEZWNvZGVyU2V0
SW1hZ2VPdXRDYWxsYmFjayhtX2RlY29kZXIuZ2V0KCksICZmb3JtYXQsIGltYWdlT3V0Q2FsbGJh
Y2ssIHRoaXMpICE9IEpYTF9ERUNfU1VDQ0VTUykKKyAgICAgICAgICAgICAgICByZXR1cm4gSlhM
X0RFQ19FUlJPUjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHN0YXR1cyA9PSBKWExfREVDX0ZVTExfSU1BR0UpIHsKKyAgICAgICAgICAgIGlmIChtX2Zy
YW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07CisgICAgICAg
ICAgICBpZiAoIWJ1ZmZlci5pc0ludmFsaWQoKSkKKyAgICAgICAgICAgICAgICBidWZmZXIuc2V0
RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsKKworICAgICAgICAgICAg
Ly8gVE9ETzogVG8gc3VwcG9ydCBhbmltYXRlZCBKUEVHIFhMIGluIHRoZSBmdXR1cmUgd2UgbmVl
ZCB0byBoYW5kbGUgc3Vic2VxdWVudCBkYXRhLgorICAgICAgICAgICAgcmV0dXJuIEpYTF9ERUNf
U1VDQ0VTUzsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBKUEVHWExJbWFnZURlY29kZXI6
OmltYWdlT3V0Q2FsbGJhY2sodm9pZCogdGhhdCwgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3Qg
bnVtUGl4ZWxzLCBjb25zdCB2b2lkKiBwaXhlbHMpCit7CisgICAgc3RhdGljX2Nhc3Q8SlBFR1hM
SW1hZ2VEZWNvZGVyKj4odGhhdCktPmltYWdlT3V0KHgsIHksIG51bVBpeGVscywgc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscykpOworfQorCit2b2lkIEpQRUdYTEltYWdlRGVjb2Rl
cjo6aW1hZ2VPdXQoc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3QgbnVtUGl4ZWxzLCBjb25zdCB1
aW50OF90KiBwaXhlbHMpCit7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNo
ZVswXTsKKyAgICBpZiAoYnVmZmVyLmlzSW52YWxpZCgpKSB7CisgICAgICAgIGlmICghYnVmZmVy
LmluaXRpYWxpemUoc2l6ZSgpLCBtX3ByZW11bHRpcGx5QWxwaGEpKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6
UGFydGlhbCk7CisgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxzZSk7CisgICAgfQorCisg
ICAgdWludDMyX3QqIHJvdyA9IGJ1ZmZlci5iYWNraW5nU3RvcmUoKS0+cGl4ZWxBdCh4LCB5KTsK
KyAgICB1aW50MzJfdCogY3VycmVudEFkZHJlc3MgPSByb3c7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1QaXhlbHM7IGkrKykgeworICAgICAgICB1aW50OF90IHIgPSAqcGl4ZWxzKys7
CisgICAgICAgIHVpbnQ4X3QgZyA9ICpwaXhlbHMrKzsKKyAgICAgICAgdWludDhfdCBiID0gKnBp
eGVscysrOworICAgICAgICB1aW50OF90IGEgPSAqcGl4ZWxzKys7CisgICAgICAgIGJ1ZmZlci5i
YWNraW5nU3RvcmUoKS0+c2V0UGl4ZWwoY3VycmVudEFkZHJlc3MrKywgciwgZywgYiwgYSk7Cisg
ICAgfQorfQorCit9CisjZW5kaWYgLy8gVVNFKEpQRUdYTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJ
bWFnZURlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEw
OWQ1YzlkZGRjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuaApAQCAtMCwwICsxLDcxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTY2FsYWJsZUltYWdlRGVj
b2Rlci5oIgorCisjaWYgVVNFKEpQRUdYTCkKKworI2luY2x1ZGUgPGp4bC9kZWNvZGVfY3h4Lmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBjbGFzcyBkZWNvZGVzIHRoZSBKUEVH
IFhMIGltYWdlIGZvcm1hdC4KK2NsYXNzIEpQRUdYTEltYWdlRGVjb2RlciBmaW5hbCA6IHB1Ymxp
YyBTY2FsYWJsZUltYWdlRGVjb2RlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTY2FsYWJs
ZUltYWdlRGVjb2Rlcj4gY3JlYXRlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpQRUdYTEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwg
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5KUEVH
WExJbWFnZURlY29kZXIoKTsKKworICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCisgICAgU3Ry
aW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gImp4bCJfczsg
fQorICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXpl
X3QgaW5kZXgpIG92ZXJyaWRlOworCisgICAgYm9vbCBzZXRGYWlsZWQoKSBvdmVycmlkZTsKKwor
cHJpdmF0ZToKKyAgICBKUEVHWExJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKKyAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUsIGFsbERhdGFSZWNlaXZlZCk7IH0KKworICAg
IHZvaWQgZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKworICAg
IHZvaWQgY2xlYXIoKTsKKworICAgIEp4bERlY29kZXJTdGF0dXMgcHJvY2Vzc0lucHV0KGJvb2wg
b25seVNpemUpOworCisgICAgc3RhdGljIHZvaWQgaW1hZ2VPdXRDYWxsYmFjayh2b2lkKiB0aGF0
LCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCBudW1QaXhlbHMsIGNvbnN0IHZvaWQqIHBpeGVs
cyk7CisgICAgdm9pZCBpbWFnZU91dChzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCBudW1QaXhl
bHMsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CisKKyAgICBKeGxEZWNvZGVyUHRyIG1fZGVjb2Rl
cjsKKyAgICBzaXplX3QgbV9yZWFkT2Zmc2V0ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShKUEVHWEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKaW5kZXggZDM2M2UzMzBjYjI0Li44
NTJhMWU0ZmNmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1F
VHlwZVJlZ2lzdHJ5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlN
RVR5cGVSZWdpc3RyeVdpbi5jcHAKQEAgLTk5LDYgKzk5LDkgQEAgU3RyaW5nIE1JTUVUeXBlUmVn
aXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyAmZXh0KQogICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7CiAgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKICAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyNpZiBVU0UoSlBFR1hMKQor
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImp4bCIsICJpbWFnZS9qeGwiKTsKKyNlbmRpZgogICAg
IH0KICAgICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CiAgICAgaWYgKHJl
c3VsdC5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9GaW5kSlBFR1hMLmNt
YWtlIGIvU291cmNlL2NtYWtlL0ZpbmRKUEVHWEwuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi40YTI2ZmUxMmNlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvY21ha2UvRmluZEpQRUdYTC5jbWFrZQpAQCAtMCwwICsxLDkzIEBACisjIENvcHlyaWdodCAo
QykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI1s9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVsucnN0OgorRmlu
ZEpQRUdYTAorLS0tLS0tLS0tCisKK0ZpbmQgSlBFR1hMIGhlYWRlcnMgYW5kIGxpYnJhcmllcy4K
KworSW1wb3J0ZWQgVGFyZ2V0cworXl5eXl5eXl5eXl5eXl5eXgorCitgYEpQRUdYTDo6anhsYGAK
KyAgVGhlIEpQRUdYTCBsaWJyYXJ5LCBpZiBmb3VuZC4KKworUmVzdWx0IFZhcmlhYmxlcworXl5e
Xl5eXl5eXl5eXl5eXgorCitUaGlzIHdpbGwgZGVmaW5lIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVz
IGluIHlvdXIgcHJvamVjdDoKKworYGBKUEVHWExfRk9VTkRgYAorICB0cnVlIGlmICh0aGUgcmVx
dWVzdGVkIHZlcnNpb24gb2YpIEpQRUdYTCBpcyBhdmFpbGFibGUuCitgYEpQRUdYTF9WRVJTSU9O
YGAKKyAgdGhlIHZlcnNpb24gb2YgSlBFR1hMLgorYGBKUEVHWExfTElCUkFSSUVTYGAKKyAgdGhl
IGxpYnJhcmllcyB0byBsaW5rIGFnYWluc3QgdG8gdXNlIEpQRUdYTC4KK2BgSlBFR1hMX0lOQ0xV
REVfRElSU2BgCisgIHdoZXJlIHRvIGZpbmQgdGhlIEpQRUdYTCBoZWFkZXJzLgorYGBKUEVHWExf
Q09NUElMRV9PUFRJT05TYGAKKyAgdGhpcyBzaG91bGQgYmUgcGFzc2VkIHRvIHRhcmdldF9jb21w
aWxlX29wdGlvbnMoKSwgaWYgdGhlCisgIHRhcmdldCBpcyBub3QgdXNlZCBmb3IgbGlua2luZwor
CisjXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09XQorCitmaW5kX3BhY2thZ2UoUGtnQ29uZmlnIFFVSUVUKQoraWYg
KFBrZ0NvbmZpZ19GT1VORCkKKyAgICBwa2dfY2hlY2tfbW9kdWxlcyhQQ19KUEVHWEwgUVVJRVQg
anhsKQorICAgIHNldChKUEVHWExfQ09NUElMRV9PUFRJT05TICR7UENfSlBFR1hMX0NGTEFHU19P
VEhFUn0pCisgICAgc2V0KEpQRUdYTF9WRVJTSU9OICR7UENfSlBFR1hMX1ZFUlNJT059KQorZW5k
aWYgKCkKKworZmluZF9wYXRoKEpQRUdYTF9JTkNMVURFX0RJUgorICAgIE5BTUVTIGp4bC9kZWNv
ZGUuaAorICAgIEhJTlRTICR7UENfSlBFR1hMX0lOQ0xVREVESVJ9ICR7UENfSlBFR1hMX0lOQ0xV
REVfRElSU30gJHtKUEVHWExfSU5DTFVERV9ESVJ9CispCisKK2ZpbmRfbGlicmFyeShKUEVHWExf
TElCUkFSWQorICAgIE5BTUVTICR7SlBFR1hMX05BTUVTfSBqeGwKKyAgICBISU5UUyAke1BDX0pQ
RUdYTF9MSUJESVJ9ICR7UENfSlBFR1hMX0xJQlJBUllfRElSU30KKykKKworaW5jbHVkZShGaW5k
UGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKK2ZpbmRfcGFja2FnZV9oYW5kbGVfc3RhbmRhcmRf
YXJncyhKUEVHWEwKKyAgICBGT1VORF9WQVIgSlBFR1hMX0ZPVU5ECisgICAgUkVRVUlSRURfVkFS
UyBKUEVHWExfTElCUkFSWSBKUEVHWExfSU5DTFVERV9ESVIKKyAgICBWRVJTSU9OX1ZBUiBKUEVH
WExfVkVSU0lPTgorKQorCitpZiAoSlBFR1hMX0xJQlJBUlkgQU5EIE5PVCBUQVJHRVQgSlBFR1hM
OjpqeGwpCisgICAgYWRkX2xpYnJhcnkoSlBFR1hMOjpqeGwgVU5LTk9XTiBJTVBPUlRFRCBHTE9C
QUwpCisgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEpQRUdYTDo6anhsIFBST1BFUlRJRVMKKyAg
ICAgICAgSU1QT1JURURfTE9DQVRJT04gIiR7SlBFR1hMX0xJQlJBUll9IgorICAgICAgICBJTlRF
UkZBQ0VfQ09NUElMRV9PUFRJT05TICIke0pQRUdYTF9DT01QSUxFX09QVElPTlN9IgorICAgICAg
ICBJTlRFUkZBQ0VfSU5DTFVERV9ESVJFQ1RPUklFUyAiJHtKUEVHWExfSU5DTFVERV9ESVJ9Igor
ICAgICkKK2VuZGlmICgpCisKK21hcmtfYXNfYWR2YW5jZWQoSlBFR1hMX0lOQ0xVREVfRElSIEpQ
RUdYTF9MSUJSQVJZKQorCitpZiAoSlBFR1hMX0ZPVU5EKQorICAgIHNldChKUEVHWExfTElCUkFS
SUVTICR7SlBFR1hMX0xJQlJBUll9KQorICAgIHNldChKUEVHWExfSU5DTFVERV9ESVJTICR7SlBF
R1hMX0lOQ0xVREVfRElSfSkKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dpbkNhaXJvLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQpp
bmRleCAxOWY1MTI3ZTY3MTcuLjU0ZGMwOTVkOWY5OCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L09wdGlvbnNXaW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJv
LmNtYWtlCkBAIC0yNiw2ICsyNiwxMSBAQCBpZiAoTENNUzJfRk9VTkQpCiAgICAgU0VUX0FORF9F
WFBPU0VfVE9fQlVJTEQoVVNFX0xDTVMgT04pCiBlbmRpZiAoKQogCitmaW5kX3BhY2thZ2UoSlBF
R1hMKQoraWYgKEpQRUdYTF9GT1VORCkKKyAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0Vf
SlBFR1hMIE9OKQorZW5kaWYgKCkKKwogZmluZF9wYWNrYWdlKE9wZW5KUEVHIDIuMy4xKQogaWYg
KE9wZW5KUEVHX0ZPVU5EKQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9PUEVOSlBF
RyBPTikK
</data>

          </attachment>
      

    </bug>

</bugzilla>