<?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>184845</bug_id>
          
          <creation_ts>2018-04-20 15:38:31 -0700</creation_ts>
          <short_desc>[GTK] Disable video autoplay</short_desc>
          <delta_ts>2020-06-16 09:25:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=213190</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>212969</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Charlie Turner">cturner</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cturner</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>nekohayo</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tsaunier</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1416462</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-20 15:38:31 -0700</bug_when>
    <thetext>Ever since we added gstreamer-libav to the GNOME runtime last month, I&apos;ve become increasing frustrated by autoplay videos.

This patch seems to work for cnn.com. Haven&apos;t managed to test youtube due to all the assertion failures.

I&apos;m not sure where the best place to do this is. I&apos;m specifically trying to avoid adding API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416465</commentid>
    <comment_count>1</comment_count>
      <attachid>338472</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-20 15:39:03 -0700</bug_when>
    <thetext>Created attachment 338472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416466</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-20 15:41:24 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424353</commentid>
    <comment_count>3</comment_count>
      <attachid>338472</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-05-16 09:47:31 -0700</bug_when>
    <thetext>Comment on attachment 338472
Patch

I don&apos;t see any suggestions for how to do this better, so r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424621</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-05-16 22:49:49 -0700</bug_when>
    <thetext>Why not adding new API for this (and other policies)? I&apos;m fine with changing the default behavior, but that doesn&apos;t mean it fits for all use cases. An embedded with no input will want for sure auto play videos. Apple ports even have autoplay quirks, so I&apos;m afraid this is not so easy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424723</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-05-17 08:22:22 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #4)
&gt; Why not adding new API for this (and other policies)?

I just don&apos;t have time to investigate new API right now, sorry.

We&apos;ll want to do something general that allows us to expose other members of WebsitePoliciesData in the future. WebkitWebsitePolicies, perhaps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425064</commentid>
    <comment_count>6</comment_count>
      <attachid>338472</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-05-17 23:43:13 -0700</bug_when>
    <thetext>Comment on attachment 338472
Patch

r- then, this is changing the behavior without a way for the user to opt in/out, it might break embedded systems where there isn&apos;t input to start video with a user gesture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537060</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-05-17 00:47:58 -0700</bug_when>
    <thetext>An API wrapping WebsitePoliciesData sounds like the way to go?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649155</commentid>
    <comment_count>8</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-05 05:01:20 -0700</bug_when>
    <thetext>*** Bug 181650 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649156</commentid>
    <comment_count>9</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-05 05:02:06 -0700</bug_when>
    <thetext>I mean&apos;t to mark the duplicate in the opposite direction, oh well, no harm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651689</commentid>
    <comment_count>10</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-12 04:49:06 -0700</bug_when>
    <thetext>As of 2020, the original patch won&apos;t always work, since performing an
IPC send in `webkitWebViewCreatePage&apos; often no-ops due to the
WebProcess not being alive yet so videos still autoplay
regardless. The IPC wrappers for `updateWebsitePolicies&apos; could be
modified to ensure the process has started before doing an IPC send,
but there&apos;s lots of APIs with this race and it&apos;s not clear what&apos;s
important enough to block and spin up the process and what isn&apos;t. I&apos;d
figure that no messages should be silently dropped, but they are. As a
WebKitGTK client, you&apos;ve got be careful and issue these calls after
`WEBKIT_LOAD_STARTED&apos; where you&apos;re sure the WebProcess is up. Anyway,
I digress...

Once that is fixed, autoplay policies were still not respected
because they are stored in `DocumentLoader&apos;&apos;s, which can be replaced
by the time media elements perform a variety of inconsistent checks to
determine the UI client&apos;s autoplay preferences.

As a summary of the state of (auto)play,

- `HTMLMediaElement&apos; manages &quot;user interference&quot; and orchestration of
  the element session, relevant web settings, relevant queries to
  various `Document&apos;&apos;s regarding autoplay policy, movement of the
  element between documents, interactions with the readyState
  algorithms and of course handling of the `autoplay&apos; attribute
  itself.
- `MediaElementSession&apos;, which got carved out of `HTMLMediaElement&apos;,
  controls all sorts of behavioural properties of the video, including
  bits of the autoplay story. It adds things like autoplaying to
  &quot;external devices&quot; and &quot;invisible autoplay&quot; which is not
  configurable in the UIProcess side. It also controls *preloading*,
  which seems a strange distinction from autoplaying. Also contains
  hit testing logic to determine if a video is &quot;main content enough&quot;
  for autoplay eligibility.
- `WebsitePoliciesData&apos; has autoplay logic, which translates UI/API
  enumerations into Core versions and sets them on the loader. This
  lets the UIProcess control certain aspects of autoplay.
- `DocumentLoader&apos;&apos;s have autoplay policies stuck on them, there is no
  class logic for this extra data. Loader&apos;s come and go, and it&apos;s easy
  for the loader the media element queries to be different to the
  loader the `WebsitePoliciesData&apos; hangs the policies off at the time
  its called from the UIProcess. It does feel like the
  `DocumentLoader&apos; is the wrong place for autoplay policies, but it&apos;s
  so ingrained in WebKit/WebCore that refactoring is basically
  impossible for me, due to the undocumented Mac-specific autoplay
  behaviours that I&apos;d almost certainly impact without knowing.
- `Document&apos;&apos;s query their loader and contain logic about what
  combinations of policies imply requiring user gestures. I do not
  think this is the right place for such logic, instead it should be
  in its own AutoplayPolicy class. The users of this loader API for
  getting the policies are
  `Document::audioPlaybackRequiresUserGesture&apos;,
  `Document::videoPlaybackRequiresUserGesture&apos;,
  `Document::mediaDataLoadsAutomatically&apos;, which in turn are used by
  MediaElement and WebAudio.
- `Page&apos;&apos;s have `allowsMediaDocumentInlinePlayback&apos; and associated
  setters. They further have logic for allowing certain playback
  controls relating to autoplay.  Also data for whether playback is
  suspended.
- `WebSetting&apos; s such as `RequiresUserGestureForMediaPlayback&apos;, used
  by `webkit_settings_set_media_playback_requires_user_gesture&apos; is
  like AutoPlay::Deny, but not. `RequiresUserGestureForMediaPlayback&apos;
  =&gt; {Video,Audio}PlaybackRequiresUserGesture, and these two more
  specific settings are also settable in the web preferences.
- There&apos;s also &quot;quirks&quot; for documents and loaders, that influence the
  decisions to autoplay in myriad ways, and can be site-specific..

Then, there are inconsistencies as to where to query for the current
capabilities,

- A static in `MediaElementSession&apos;,
  `pageExplicitlyAllowsElementToAutoplayInline&apos; which is true iff
  `document.isMediaDocument() &amp;&amp; !document.ownerElement() &amp;&amp; page &amp;&amp;
  page-&gt;allowsMediaDocumentInlinePlayback();&apos; where `page&apos; is
  `mediaElement.document().page()&apos;.
- `MediaElementSession::playbackPermitted()&apos; which checks
  `Document&apos;&apos;s, &quot;top documents&quot; (with FIXMEs asking why specifically
  &quot;top documents&quot;) and `Document&apos; quirks.
- `WebPage::updateWebsitePolicies&apos; sets autoplay policies on loaders
  retrieved like so,
,----
| auto* documentLoader = m_page-&gt;mainFrame().loader().documentLoader();
`----
- `HTMLMediaElement&apos; requests autoplay policies in in a different way
  to how they are set, leading to lost information,
,----
| auto&amp; document = this-&gt;document();
| auto* page = document.page();
| 
| if (document.ownerElement() || !document.isMediaDocument()) {
|    const auto&amp; topDocument = document.topDocument();
|    const bool shouldAudioPlaybackRequireUserGesture = topDocument.audioPlaybackRequiresUserGesture() &amp;&amp; !isProcessingUserGesture;
`----

Where `topDocument&apos; follows the parent chain to the top and
`audioPlaybackRequiresUserGesture()&apos; gets the loader by
`this-&gt;loader()&apos;.

There&apos;s also a special path in `updateWebsitePolicies&apos; to call
`m_page-&gt;updateMediaElementRateChangeRestrictions();&apos;, which loops
over each media element in the current page and asks it to query *its*
top document playback restrictions.

So, with all that as background and an inability to refactor this into
a more understandable and consolidated state owing to Mac-specific
behaviour I can&apos;t feasibly test and a lack of understanding of
WebKit loaders and why they are the place to store autoplay policies,
I decided to do a bit of a hack specifically for GTK/WPE.

We already have a way to influence global autoplay settings via the
`media-playback-requires-user-gesture&apos; property. If you set this to
`TRUE&apos;, nothing will autoplay. A large hammer, but to be honest
behaviour I&apos;d be happy with in my browser. However, it sounds like API
users want to control this setting at a finer granularity, at least
per page, and for Apple per document (although, I don&apos;t understand
this motivation, iframes maybe?) So, I added some extra plumbing to
add the autoplay policies to pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651690</commentid>
    <comment_count>11</comment_count>
      <attachid>399119</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-12 04:50:02 -0700</bug_when>
    <thetext>Created attachment 399119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653535</commentid>
    <comment_count>12</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-18 02:42:46 -0700</bug_when>
    <thetext>Ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653539</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-18 02:51:23 -0700</bug_when>
    <thetext>WPE EWS is red :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653542</commentid>
    <comment_count>14</comment_count>
      <attachid>399119</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-18 03:01:40 -0700</bug_when>
    <thetext>Comment on attachment 399119
Patch

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

&gt; Source/WebCore/dom/Document.cpp:5437
&gt; +#if PLATFORM(GTK) || PLATFORM(WPE)
&gt; +    if (auto *page = this-&gt;page()) {
&gt; +        AutoplayPolicy policy = page-&gt;autoplayPolicy();
&gt; +        if (policy != AutoplayPolicy::Default)
&gt; +            return policy == AutoplayPolicy::AllowWithoutSound || policy == AutoplayPolicy::Deny;
&gt; +    }
&gt; +#endif

Why is this specific to GTK and WPE?

&gt; Source/WebCore/dom/Document.cpp:5457
&gt; +#if PLATFORM(GTK) || PLATFORM(WPE)
&gt; +    if (auto *page = this-&gt;page()) {
&gt; +        AutoplayPolicy policy = page-&gt;autoplayPolicy();
&gt; +        if (policy != AutoplayPolicy::Default)
&gt; +            return policy == AutoplayPolicy::Deny;
&gt; +    }
&gt; +#endif

Ditto.

&gt; Source/WebCore/dom/Document.cpp:5476
&gt; +#if PLATFORM(GTK) || PLATFORM(WPE)
&gt; +    if (auto *page = this-&gt;page()) {
&gt; +        AutoplayPolicy policy = page-&gt;autoplayPolicy();
&gt; +        if (policy != AutoplayPolicy::Default)
&gt; +            return policy == AutoplayPolicy::Deny;
&gt; +    }
&gt; +#endif

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653575</commentid>
    <comment_count>15</comment_count>
      <attachid>399119</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-18 06:35:09 -0700</bug_when>
    <thetext>Comment on attachment 399119
Patch

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

:)

Charlie, you&apos;ll be proud of me, I finally bought news shoes! You were right, my old shoes were old.

&gt; Source/WebCore/ChangeLog:11
&gt; +        I have only performed manually testing so far, since this is my
&gt; +        first foray in the API side of WebKit, I&apos;m not sure how best to
&gt; +        test these things without resorting to a trivial check that
&gt; +        setters / getters work (which seems fruitless).

Such a trivial check might not seem terribly useful... but I&apos;m pretty sure it actually *has* caught a bug before. I don&apos;t remember what, but probably I really messed up a getter or setter somehow. :P Anyway, it&apos;s better than nothing, and meets our minimum requirements to have an API test. Some APIs are just hard to test.

&gt;&gt; Source/WebCore/dom/Document.cpp:5437
&gt;&gt; +#endif
&gt; 
&gt; Why is this specific to GTK and WPE?

So the logic is:

 * Use autoplay policy from the DocumentLoader, if set
 * Otherwise, use autoplay policy from the WebCore::Page, but only in WPE/GTK
 * Otherwise, check the global setting

And the reason for the difference is explained in the FIXME that Charlie added to WebKitWebPage.cpp. Storing autoplay policy in the WebPage is a workaround for bugs where the DocumentLoader&apos;s autoplay policy state gets messed up.

On the one hand, I like practical solutions to implement this important feature and get it out to users. I&apos;m really tired of autoplay crap that no other browsers allow nowadays. On the other hand, we&apos;re adding a lot of GTK/WPE-specific conditions in a lot of different places, intended only as a workaround for this problem, and without FIXME comments to remove them in the future. That&apos;s not great... certainly it might benefit from further investigation.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebView.h:219
&gt; +typedef enum {
&gt; +    WEBKIT_AUTOPLAY_ALLOW,
&gt; +    WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND,
&gt; +    WEBKIT_AUTOPLAY_DENY
&gt; +} WebKitAutoplayPolicy;

It&apos;s failing WPE EWS because you forgot to add this to WPE&apos;s WebKitWebView.h.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6350
&gt; +    // FIXME: Apply the autoplay policy to the &quot;global&quot; Page as well
&gt; +    // as the loader, it seems there is a semantic error storing them
&gt; +    // in the document loader, which can change in lots of different
&gt; +    // ways by the time the media element wants to know what the UI
&gt; +    // client&apos;s autoplay preferences are. A lot of autoplay logic
&gt; +    // could be sensibly refactored and consolidated, but there&apos;s so
&gt; +    // much undocumented Mac-specific behaviour that it&apos;s simply
&gt; +    // infeasible to do such a refactoring as a GTK/WPE developer
&gt; +    // without fear of breaking something on other ports.
&gt; +    setAutoplayPolicyForPage(websitePolicies.autoplayPolicy);

It should be possible to figure out why the state is getting messed up in the particular case you&apos;re testing though, right? We certainly don&apos;t want to break Mac, but we *should* be willing to make a change that fixes our ports and see what happens on Mac, if the change appears to be correct. Worst case, our commit gets reverted and we&apos;re no worse off than we started.

We seem to have other insane state tracking issues in the media code, like bug #186971 where it plays media while thinking it&apos;s not doing so. Who knows, could be related!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653619</commentid>
    <comment_count>16</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-18 08:23:16 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #15)
&gt; Comment on attachment 399119 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=399119&amp;action=review
&gt; 
&gt; :)
&gt; 
&gt; Charlie, you&apos;ll be proud of me, I finally bought news shoes! You were right,
&gt; my old shoes were old.

 :)

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        I have only performed manually testing so far, since this is my
&gt; &gt; +        first foray in the API side of WebKit, I&apos;m not sure how best to
&gt; &gt; +        test these things without resorting to a trivial check that
&gt; &gt; +        setters / getters work (which seems fruitless).
&gt; 
&gt; Such a trivial check might not seem terribly useful... but I&apos;m pretty sure
&gt; it actually *has* caught a bug before. I don&apos;t remember what, but probably I
&gt; really messed up a getter or setter somehow. :P Anyway, it&apos;s better than
&gt; nothing, and meets our minimum requirements to have an API test. Some APIs
&gt; are just hard to test.

OK, I will craft a sanity check.

&gt; 
&gt; &gt;&gt; Source/WebCore/dom/Document.cpp:5437
&gt; &gt;&gt; +#endif
&gt; &gt; 
&gt; &gt; Why is this specific to GTK and WPE?
&gt; 
&gt; So the logic is:
&gt; 
&gt;  * Use autoplay policy from the DocumentLoader, if set
&gt;  * Otherwise, use autoplay policy from the WebCore::Page, but only in WPE/GTK
&gt;  * Otherwise, check the global setting
&gt; 
&gt; And the reason for the difference is explained in the FIXME that Charlie
&gt; added to WebKitWebPage.cpp.

You summed it up better than me, this is a practical fix. I hope the commentary I added is clear enough about why I made this GTK/WPE specific. Indeed, the page lookup seems like it would be harmless for Mac, but I documented why I don&apos;t want to modify Mac behaviour at all since I can&apos;t feasibly test it.
 
&gt; &gt; Source/WebKit/UIProcess/API/gtk/WebKitWebView.h:219
&gt; &gt; +typedef enum {
&gt; &gt; +    WEBKIT_AUTOPLAY_ALLOW,
&gt; &gt; +    WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND,
&gt; &gt; +    WEBKIT_AUTOPLAY_DENY
&gt; &gt; +} WebKitAutoplayPolicy;
&gt; 
&gt; It&apos;s failing WPE EWS because you forgot to add this to WPE&apos;s WebKitWebView.h.

Will fix.

&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6350
&gt; &gt; +    // FIXME: Apply the autoplay policy to the &quot;global&quot; Page as well
&gt; &gt; +    // as the loader, it seems there is a semantic error storing them
&gt; &gt; +    // in the document loader, which can change in lots of different
&gt; &gt; +    // ways by the time the media element wants to know what the UI
&gt; &gt; +    // client&apos;s autoplay preferences are. A lot of autoplay logic
&gt; &gt; +    // could be sensibly refactored and consolidated, but there&apos;s so
&gt; &gt; +    // much undocumented Mac-specific behaviour that it&apos;s simply
&gt; &gt; +    // infeasible to do such a refactoring as a GTK/WPE developer
&gt; &gt; +    // without fear of breaking something on other ports.
&gt; &gt; +    setAutoplayPolicyForPage(websitePolicies.autoplayPolicy);
&gt; 
&gt; It should be possible to figure out why the state is getting messed up in
&gt; the particular case you&apos;re testing though, right?

It&apos;s not so clear anything is getting messed up per se. On our ports, the document loader queried from the media element is different to the one used by the policy setter UI-side. I&apos;m not sure if this is a bug in the loader or if our port API codepaths make loader-specific policies for autoplay not feasible.

It made more sense to me to have per-page policies rather than per-loader policies. I studied the git history to try and find out, but I still don&apos;t understand the reasons for storing such policies in the loader. It would be awesome if a loader-expert could chime in here, developing a deep understanding of the meta in this subsystem with no documentation would take me a long time from scratch, but like everyone I am disappointed I haven&apos;t found a clean implementation for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653626</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-18 09:05:20 -0700</bug_when>
    <thetext>(In reply to Charlie Turner from comment #16)
&gt; It&apos;s not so clear anything is getting messed up per se. On our ports, the
&gt; document loader queried from the media element is different to the one used
&gt; by the policy setter UI-side. I&apos;m not sure if this is a bug in the loader or
&gt; if our port API codepaths make loader-specific policies for autoplay not
&gt; feasible.

Hm, that&apos;s odd... maybe Phil/Calvaris/Alicia would have an opinion on this.

&gt; It made more sense to me to have per-page policies rather than per-loader
&gt; policies.

Yeah, Page does seem like a good place....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653970</commentid>
    <comment_count>18</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-19 04:21:36 -0700</bug_when>
    <thetext>I&apos;ve learned enough Obj-C to be able to read the WebsitePolicies.mm&apos;s autoplay tests. The mac API has a notion of &quot;web view delegates&quot; which would avoid the race conditions I outlined above in my use of updateWebsitePolicies. I&apos;ll find out if the GTK port supports a similar thing soon enough.

This file also demonstrates some methods to properly test autoplay policies, so I think I can do a better job now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655631</commentid>
    <comment_count>19</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-23 10:37:23 -0700</bug_when>
    <thetext>I debugged this a bit further and found the &quot;corruption&quot;, although, it
might be my implementation of the new API as well,

UIProcess: updateWebsitePolicies page 0x125e30a87000 mainframe 0x125e30a83000 loader 0x125e30a82000 documentLoader 0x53ea3aef6a00
WebCore:   finishInitialization page 0x125e30a87000 mainframe 0x125e30a83000 loader 0x125e30a82000 documentloader 0x53ea3aef9100

In other words, everything but the document loader remains constant,
the one place this new API attaches the policies to use...

The fundamental issue is a race window between the CreateWebPage IPC
message and LoadRequest message. The Mac ports get around this
because they have a notion of a navigation delegate on the web view,
which I assume is avoiding the trap for users of the Mac API where you
can set WebPage policies that will get attached to an &quot;empty
document&quot;, which exists only inside this race window, to be trashed
later when a provisional load completes and the empty document gets
replaced by a real one.

The only example I found in the GTK API that appeared to be predicated
on PageLoadState was =webkit_web_view_set_settings=. But that will
silently drop updates if the state isn&apos;t correct, leaving no clear
method to implement an API that is not surprisingly sensitive to
statement order in the user program. I&apos;ve not any experience even using
the GTK API, so any help on expectations here would be great.

&gt;&gt;IPC CreateWebPage
 WebProcess::createWebPage
  WebPage::WebPage
    m_mainFrame-&gt;initWithCoreMainFrame()
    &gt;&gt;&gt;IPC DidCreateMainFrame
    Frame::init()
      m_loader-&gt;init()
        FrameLoader::init()
          policyLoader &lt;- inital empty document
          provisionalLoader &lt;- policyLoader
          DocumentLoader::startLoadingMainResource()
             maybeLoadEmpty()
               finishedLoading()
                  commitIfReady()
                     DocumentLoader::commitIfReady()
                          frameLoader()-&gt;commitProvisionalLoad()
                              FrameLoader::transitionToCommitted
                                  FrameLoader::setDocumentLoader(0x53ea3aef6a00) // empty document
                                  documentLoader &lt;- provisionalLoader (0x53ea3aef6a00) // still the empty document created way up in FrameLoader::init()

---- If the UIProcess sets any WebPage policies before this next IPC checkpoint, they will be lost.
---- Mac seems to avoid this with their &quot;navigation delegate&quot; abstraction, which I assume ensure policies are never set on the weird &quot;empty document&quot;
---- that exists between CreateWebPage and LoadRequest.

&gt;&gt;IPC LoadRequest
  WebPage::loadRequest
    UserInputBridge::loadRequest
     FrameLoader::load  &lt;&lt; stack frame where the loader gets changed, m_client-&gt;createDocumentLoader
       WebFrameLoaderClient::createDocumentLoader(ResourceRequest, SubsituteData)
          WebPage::createDocumentLoader
             newLoader &lt;- WebDocumnetLoader::create
                             DocumentLoader::DocumentLoader
             load(newLoader)
               FrameLoader::load [here, the newDocumentLoader should get updated with previously set policies?]
                   FrameLoader::loadWithDocumentLoader [if this is a subframe, encoding overrides get propagated, another potential hook?]
                      FrameLoader::setPolicyDocumentLoader
                         policyDocumentLoader &lt;- 0x53ea3aef9100 [previous loader&apos;s policies now trashed]

I can get rid of adding Page lookup as in earlier version of my patch
by hooking into FrameLoader::load, and imitating what happens with
encoding overrides, namely, propagating them to the newly created
loader, if it is replacing an existing one.

I will submit this patch to EWS, there&apos;s some iframe tests on Mac that
should exercise this logic. It&apos;s conceptually racey because depending
on the timing between frame loads and policy setting, an old policy
could override a newly set one. Let&apos;s see what the Mac bot thinks...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655632</commentid>
    <comment_count>20</comment_count>
      <attachid>400127</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-23 10:42:42 -0700</bug_when>
    <thetext>Created attachment 400127
Patch

Provisional patch to see if the Mac EWS fails with this approach. ChangeLogs to be reviewed later. Adds basic API tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655635</commentid>
    <comment_count>21</comment_count>
      <attachid>400127</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-23 11:19:59 -0700</bug_when>
    <thetext>Comment on attachment 400127
Patch

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

&gt; Source/WebCore/loader/FrameLoader.cpp:1543
&gt; -    if (m_documentLoader)
&gt; +    if (m_documentLoader) {
&gt;          newDocumentLoader.setOverrideEncoding(m_documentLoader-&gt;overrideEncoding());
&gt; +        newDocumentLoader.setAutoplayPolicy(m_documentLoader-&gt;autoplayPolicy());
&gt; +    }

Wow, nice debugging.

I&apos;d like to see what Carlos Garcia thinks. See also: comment #10.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655650</commentid>
    <comment_count>22</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-23 13:25:38 -0700</bug_when>
    <thetext>The WebsitePoliciesAutoplayEnabled Cocoa test (which checks the iframe cases) passed as can be seen https://ews-build.webkit.org/#/builders/3/builds/25107 (so did all the other tests). So, I am more confident this is a regression-free solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655722</commentid>
    <comment_count>23</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-24 07:39:45 -0700</bug_when>
    <thetext>To summarise, I have 3 options for how to implement an autoplay API,

1/ As a web setting / web context item
  - Toggling autoplay would toggle all related views (probably, all
    tabs)
  - Unlikely to be useful when media-playback-requires-user-gesture
    exists, although you can now additionally autoplay without sound.

2/ Extension to decide-policy
  - This would conceptually require every media load to block on the
    UI decision.
  - Policy decision could include media URL, then caching could
    mitigate such blocks with persistent storage managed by WebKit.

3/ A web view API as initially proposed
  - Caveat, you must call the API after load committal but before the
    load finishes. Doing so before can lose policy information due to
    the empty document as explained earlier.
  - I took at look at how Surf uses the APIs, it seems accepted
    practice that per URL (i.e., view, page) configuration is given
    after WEBKIT_LOAD_COMMITTED in the load-changed callbacks.
    In such a case, all the complication I documented here about
    IPC message drops and fake document loaders is side-stepped
    and the patch becomes trivial boilerplate. I wonder if this
    is acceptable to the GTK API r+&apos;ers?
  - Then per-url handling of autoplay policies is upto the application
    rather than WebKit, as option 2) suggested.
  - Iframe&apos;s make this more complicated, because load-changed does not
    notify you of them. They must be handled indirectly by the app,
    somehow. (other confused users
    https://lists.webkit.org/pipermail/webkit-gtk/2017-March/002976.html)

Even with caveats, option 3/ seems best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655723</commentid>
    <comment_count>24</comment_count>
      <attachid>400159</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-24 07:46:20 -0700</bug_when>
    <thetext>Created attachment 400159
Patch

Take option 3/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655733</commentid>
    <comment_count>25</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-24 08:31:46 -0700</bug_when>
    <thetext>Hm, I dunno, actually any one of the three options seems OK to me.

Option 2 would be the easiest way for applications to implement per-origin permissions. E.g. the user could allow autoplay on YouTube but not on other websites. Would one round of IPC really have any noticeable effect on performance? Surely not?

(In reply to Charlie Turner from comment #23)
&gt; 3/ A web view API as initially proposed
&gt;   - Caveat, you must call the API after load committal but before the
&gt;     load finishes. Doing so before can lose policy information due to
&gt;     the empty document as explained earlier.

This one seems tricky to use properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655768</commentid>
    <comment_count>26</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-05-24 13:28:25 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #25)
&gt; Hm, I dunno, actually any one of the three options seems OK to me.

Option 1/ is inflexible, you can&apos;t have per URL settings, which might upset your users. For example, audible autoplay is generally a nuisance, but on Netflix it&apos;s kinda expected (yes, EME is an even larger problem...) I&apos;m sure there&apos;s lots of examples like that users would end up asking about.

&gt; 
&gt; Option 2 would be the easiest way for applications to implement per-origin
&gt; permissions. E.g. the user could allow autoplay on YouTube but not on other
&gt; websites. Would one round of IPC really have any noticeable effect on
&gt; performance? Surely not?

This does seem most correct, but...

&gt; 
&gt; (In reply to Charlie Turner from comment #23)
&gt; &gt; 3/ A web view API as initially proposed
&gt; &gt;   - Caveat, you must call the API after load committal but before the
&gt; &gt;     load finishes. Doing so before can lose policy information due to
&gt; &gt;     the empty document as explained earlier.
&gt; 
&gt; This one seems tricky to use properly.

I took a look at Epiphany, and there committed is also a special state that has staging logic. So the precedent looks firmly set.

  /* Warning: the URI property may remain set to the URI of the
   * previously-loaded page until WEBKIT_LOAD_COMMITTED! During
   * WEBKIT_LOAD_STARTED, it may or may not match the URI being loaded.
   */

Also TLS is special cased here,

update_security_status_for_committed_load (EphyWebView *view,
                                           const char  *uri)

^^ This looks like it could be used analogously for autoplay status per URI. Seems like a classic Worse is Better vs. Option 2/ WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655860</commentid>
    <comment_count>27</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-25 07:58:51 -0700</bug_when>
    <thetext>I think I vote for Option 2, because decide-policy is perfect for this. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655861</commentid>
    <comment_count>28</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-25 07:59:06 -0700</bug_when>
    <thetext>Wait for Carlos Garcia&apos;s opinion before changing your patch, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655988</commentid>
    <comment_count>29</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-26 02:35:10 -0700</bug_when>
    <thetext>I would use the policy-decision signal too, which is the perfect place for per-url policies, I would say. Note that there&apos;s also default policies, that can be set in the page and are automatically used when no policies are given to WebFramePolicyListenerProxy::use().

So, I would add a new class por policies, since we might want to support other things in the future that fit as website policies (cocoa api allows to use a different website data store and content manager, and other policies like popup blocker and preferences like enable/disable JavaScript or user agent string). I&apos;m not sure about the name, though WebKitWebsitePolicies is probably confusing, and WebKitWebPreferences (cocoa uses WKWebpagePreferences) could be confused with WebKitSettings too. 

Then I would add a construct only property to set the default policies, that would end up setting the PageConfiguration::m_defaultWebsitePolicies. This way you don&apos;t need to have a process running to set your policies and there&apos;s no race condition.

We add something like webkit_policy_decision_use_with_policies (or with_the_name_we_decide). This allows to override the default policies for a specific url.

And finally webkit_web_view_update_policies that allows to change the policies for the page after it has been loaded.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658304</commentid>
    <comment_count>30</comment_count>
      <attachid>400823</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-02 08:27:24 -0700</bug_when>
    <thetext>Created attachment 400823
Patch

Thanks for the reviews, I have gone with Option 2/ now. This is only for GTK at the moment to ease review iterations. Once the API is decided, I will add the extra boilerplate for WPE as well. I went with WebKitWebsitePolicies as a name just because it internally it made the most sense, and I could not think of a better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658409</commentid>
    <comment_count>31</comment_count>
      <attachid>400823</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-06-02 12:00:37 -0700</bug_when>
    <thetext>Comment on attachment 400823
Patch

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

Thanks Charlie!

Nice API test.

&gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:93
&gt; + * webkit_policy_decision_use_with_policies:
&gt; + * @decision: a #WebKitPolicyDecision
&gt; + * @policies: a #WebKitWebsitePolicies

Charlie, when does it make sense to use this new API? Only for navigation policy decisions?

Hm, what I was expecting was a new policy decision type that would prompt the browser to decide whether certain policies should be allowed... but I see now that&apos;s not quite how this works, maybe it wasn&apos;t the right expectation. Carlos, what do you think? I&apos;m not quite sure the benefit of having this new function after all, since it seems like the autoplay policy is going to need to be set for every load anyway? It feels like this API gives a different point in time to set the website policies, but it doesn&apos;t actually have much to do with the underlying policy decision, it&apos;s just allowing policy setting to be tied to the policy decision, but you could otherwise manually update the policies using the WebKitWebView API after each LOAD_COMMITTED and get the same result. Right?

&gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:96
&gt; + * Accept the action which triggered this decision, and continue with
&gt; + * @policies affecting subsequent loads.

affecting subsequent loads of... what? The entire web view? Or just loads for the security origin corresponding to the policy decision?

&gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:98
&gt; + * For example, a navigation decicion to a video sharing website may

decision

&gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:101
&gt; + * autoplay policy in this case would be set in the @policies.
&gt; + */

Since: 2.30

&gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:102
&gt; +void webkit_policy_decision_use_with_policies(WebKitPolicyDecision* decision, WebKitWebsitePolicies *policies)

WebKitWebsitePolicies* policies

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:1901
&gt; +void webkitWebContextCreatePageForWebView(WebKitWebContext* context, WebKitWebView* webView, WebKitUserContentManager* userContentManager, WebKitWebView* relatedView, WebKitWebsitePolicies *defaultWebsitePolicies)

WebKitWebsitePolicies* defaultWebsitePolicies

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:849
&gt; +        gpointer websitePolicies = g_value_get_object(value);
&gt; +        webView-&gt;priv-&gt;websitePolicies = websitePolicies ? WEBKIT_WEBSITE_POLICIES(websitePolicies) : nullptr;

webView-&gt;priv-&gt;websitePolicies = static_cast&lt;WebKitWebsitePolicies*&gt;(g_value_get_object(value));

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:951
&gt; +    webView-&gt;priv-&gt;websitePolicies = nullptr;

Is there some reason it has to be manually destroyed here? Unless this is breaking a reference loop you can probably just leave it be.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:3790
&gt; -    getPage(webView).runJavaScriptInMainFrame({ String::fromUTF8(script), URL { }, false, WTF::nullopt, true }, [task = WTFMove(task)](API::SerializedScriptValue* serializedScriptValue, Optional&lt;ExceptionDetails&gt; details, WebKit::CallbackBase::Error) {
&gt; +    RunJavaScriptParameters params = { String::fromUTF8(script), URL { }, false, WTF::nullopt, false };
&gt; +    getPage(webView).runJavaScriptInMainFrame(WTFMove(params), [task = WTFMove(task)](API::SerializedScriptValue* serializedScriptValue, Optional&lt;ExceptionDetails&gt; details, WebKit::CallbackBase::Error) {

Unrelated code change?

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4667
&gt; +void webkit_web_view_update_website_policies(WebKitWebView* webView, WebKitWebsitePolicies *policies)

WebKitWebsitePolicies* policies

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4688
&gt; +    WebsitePoliciesData policiesData { };
&gt; +
&gt; +    switch (webkit_website_policies_get_autoplay_policy(policies)) {
&gt; +    case WebKitAutoplayPolicy::WEBKIT_AUTOPLAY_ALLOW:
&gt; +        policiesData.autoplayPolicy = WebsiteAutoplayPolicy::Allow;
&gt; +        break;
&gt; +    case WebKitAutoplayPolicy::WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND:
&gt; +        policiesData.autoplayPolicy = WebsiteAutoplayPolicy::AllowWithoutSound;
&gt; +        break;
&gt; +    case WebKitAutoplayPolicy::WEBKIT_AUTOPLAY_DENY:
&gt; +        policiesData.autoplayPolicy = WebsiteAutoplayPolicy::Deny;
&gt; +        break;
&gt; +    default:
&gt; +        policiesData.autoplayPolicy = WebsiteAutoplayPolicy::Default;
&gt; +    }
&gt; +
&gt; +    getPage(webView).updateWebsitePolicies(WTFMove(policiesData));

Since your WebKitWebsitePolicies contains a API::WebsitePolicies, you should be able to move this logic to WebKitWebsitePolicies, right? You could have a private function webkitWebsitePoliciesGetPoliciesData() in WebKitWebsitePoliciesPrivate.h that returns a WebsitePoliciesData to pass to WebPageProxy::updateWebsitePolicies?

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:141
&gt; + * webkit_website_policies_new_with_policies:
&gt; + * @first_policy_name: name of the first policy to set
&gt; + * @...: value of first policy, followed by more policies, %NULL-terminated
&gt; + *
&gt; + * Returns: (transfer full): the newly created #WebKitWebsitePolicies

Would be good to show a usage example here. variadic functions are hard!

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePoliciesPrivate.h:25
&gt; +API::WebsitePolicies* webkitWebsitePoliciesGetAPIType(WebKitWebsitePolicies *);

Hm, I think we just call these: webkitWebsitePoliciesGetWebsitePolicies

&gt; Source/WebKit/UIProcess/API/gtk/WebKitPolicyDecision.h:67
&gt; +webkit_policy_decision_use_with_policies  (WebKitPolicyDecision *decision, WebKitWebsitePolicies *policies);

Each parameter should be on its own line here in the public header.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp:319
&gt; +        &quot;website-policies&quot;, webkit_web_view_get_website_policies(webView),

Should update the doc comment: &quot;The newly created #WebKitWebView will also have the same #WebKitUserContentManager, #WebKitSettings, and #WebKitWebsitePolicies as @web_view.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658483</commentid>
    <comment_count>32</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-02 16:07:10 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #31)
&gt; Comment on attachment 400823 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=400823&amp;action=review
&gt; 
&gt; Thanks Charlie!
&gt; 
&gt; Nice API test.

Thanks! And thanks for the review. Unfortunately the test looks like it is racey given the failure in the bots and none here. I have some more work to do. As a matter of coordination I will be back Thursday this week.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:93
&gt; &gt; + * webkit_policy_decision_use_with_policies:
&gt; &gt; + * @decision: a #WebKitPolicyDecision
&gt; &gt; + * @policies: a #WebKitWebsitePolicies
&gt; 
&gt; Charlie, when does it make sense to use this new API? Only for navigation
&gt; policy decisions?

I would say it only makes sense for navigation decisions, the app can make use of URI information to decide defaults for things like autoplay (and in the future all the other policy stuff) per load.

&gt; 
&gt; I&apos;m not quite sure the benefit of
&gt; having this new function after all, since it seems like the autoplay policy
&gt; is going to need to be set for every load anyway? It feels like this API
&gt; gives a different point in time to set the website policies, but it doesn&apos;t
&gt; actually have much to do with the underlying policy decision, it&apos;s just
&gt; allowing policy setting to be tied to the policy decision, but you could
&gt; otherwise manually update the policies using the WebKitWebView API after
&gt; each LOAD_COMMITTED and get the same result. Right?

Exactly, I tried to highlight this between options 2/ and 3/ before. They both achieve the same thing, but by using the decide-policy signal, we avoid the race conditions described above, and making the app aware of load states when calling WebKit APIs (although, this is already a practice to some extent in WebKit apps)

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:96
&gt; &gt; + * Accept the action which triggered this decision, and continue with
&gt; &gt; + * @policies affecting subsequent loads.
&gt; 
&gt; affecting subsequent loads of... what? The entire web view? Or just loads
&gt; for the security origin corresponding to the policy decision?

Good question. I should make the docs better. Subsequent loads of the *entire web view&quot;.

For example, if you use_with_policy(deny) on any URI, that policy sticks to the view&apos;s core frame&apos;s loader, which AFAICT, basically means any pages loaded in any way in the current view. So, if you navigate now to a different URI, autoplay will still be denied if the application doesn&apos;t reset anything to default values, per URL navigated to.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:98
&gt; &gt; + * For example, a navigation decicion to a video sharing website may
&gt; 
&gt; decision

Fixed.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:101
&gt; &gt; + * autoplay policy in this case would be set in the @policies.
&gt; &gt; + */
&gt; 
&gt; Since: 2.30

Fixed.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:102
&gt; &gt; +void webkit_policy_decision_use_with_policies(WebKitPolicyDecision* decision, WebKitWebsitePolicies *policies)
&gt; 
&gt; WebKitWebsitePolicies* policies

Fixed.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:1901
&gt; &gt; +void webkitWebContextCreatePageForWebView(WebKitWebContext* context, WebKitWebView* webView, WebKitUserContentManager* userContentManager, WebKitWebView* relatedView, WebKitWebsitePolicies *defaultWebsitePolicies)
&gt; 
&gt; WebKitWebsitePolicies* defaultWebsitePolicies

Fixed.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:849
&gt; &gt; +        gpointer websitePolicies = g_value_get_object(value);
&gt; &gt; +        webView-&gt;priv-&gt;websitePolicies = websitePolicies ? WEBKIT_WEBSITE_POLICIES(websitePolicies) : nullptr;
&gt; 
&gt; webView-&gt;priv-&gt;websitePolicies =
&gt; static_cast&lt;WebKitWebsitePolicies*&gt;(g_value_get_object(value));

Fixed.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:951
&gt; &gt; +    webView-&gt;priv-&gt;websitePolicies = nullptr;
&gt; 
&gt; Is there some reason it has to be manually destroyed here? Unless this is
&gt; breaking a reference loop you can probably just leave it be.

Aye, overly defensive, removed.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:3790
&gt; &gt; -    getPage(webView).runJavaScriptInMainFrame({ String::fromUTF8(script), URL { }, false, WTF::nullopt, true }, [task = WTFMove(task)](API::SerializedScriptValue* serializedScriptValue, Optional&lt;ExceptionDetails&gt; details, WebKit::CallbackBase::Error) {
&gt; &gt; +    RunJavaScriptParameters params = { String::fromUTF8(script), URL { }, false, WTF::nullopt, false };
&gt; &gt; +    getPage(webView).runJavaScriptInMainFrame(WTFMove(params), [task = WTFMove(task)](API::SerializedScriptValue* serializedScriptValue, Optional&lt;ExceptionDetails&gt; details, WebKit::CallbackBase::Error) {
&gt; 
&gt; Unrelated code change?

This is important for the API tests to work. Without it, everytime you `runJavaScriptAndWaitUntilFinished&apos;, user gestures are defaulted to being active (for reasons that were unclear). This change makes it so user gestures are not magically activated, so that the typical behaviour of JS trying to autoplay a video in an origin that is not allowed to autoplay will be blocked.

Note the true -&gt; false change in the lifted RunJavaScriptParameters, you have to squint.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4667
&gt; &gt; +void webkit_web_view_update_website_policies(WebKitWebView* webView, WebKitWebsitePolicies *policies)
&gt; 
&gt; WebKitWebsitePolicies* policies

Fixed.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4688
&gt; &gt; +    WebsitePoliciesData policiesData { };
&gt; &gt; +
&gt; &gt; +    switch (webkit_website_policies_get_autoplay_policy(policies)) {
&gt; &gt; +    case WebKitAutoplayPolicy::WEBKIT_AUTOPLAY_ALLOW:
&gt; &gt; +        policiesData.autoplayPolicy = WebsiteAutoplayPolicy::Allow;
&gt; &gt; +        break;
&gt; &gt; +    case WebKitAutoplayPolicy::WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND:
&gt; &gt; +        policiesData.autoplayPolicy = WebsiteAutoplayPolicy::AllowWithoutSound;
&gt; &gt; +        break;
&gt; &gt; +    case WebKitAutoplayPolicy::WEBKIT_AUTOPLAY_DENY:
&gt; &gt; +        policiesData.autoplayPolicy = WebsiteAutoplayPolicy::Deny;
&gt; &gt; +        break;
&gt; &gt; +    default:
&gt; &gt; +        policiesData.autoplayPolicy = WebsiteAutoplayPolicy::Default;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    getPage(webView).updateWebsitePolicies(WTFMove(policiesData));
&gt; 
&gt; Since your WebKitWebsitePolicies contains a API::WebsitePolicies, you should
&gt; be able to move this logic to WebKitWebsitePolicies, right? You could have a
&gt; private function webkitWebsitePoliciesGetPoliciesData() in
&gt; WebKitWebsitePoliciesPrivate.h that returns a WebsitePoliciesData to pass to
&gt; WebPageProxy::updateWebsitePolicies?

Ah yes, good idea. Fixed!

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:141
&gt; &gt; + * webkit_website_policies_new_with_policies:
&gt; &gt; + * @first_policy_name: name of the first policy to set
&gt; &gt; + * @...: value of first policy, followed by more policies, %NULL-terminated
&gt; &gt; + *
&gt; &gt; + * Returns: (transfer full): the newly created #WebKitWebsitePolicies
&gt; 
&gt; Would be good to show a usage example here. variadic functions are hard!

OK, I&apos;ve added one, I hope it&apos;s useful.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePoliciesPrivate.h:25
&gt; &gt; +API::WebsitePolicies* webkitWebsitePoliciesGetAPIType(WebKitWebsitePolicies *);
&gt; 
&gt; Hm, I think we just call these: webkitWebsitePoliciesGetWebsitePolicies

I&apos;m starting to stammer, but fixed :)

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/gtk/WebKitPolicyDecision.h:67
&gt; &gt; +webkit_policy_decision_use_with_policies  (WebKitPolicyDecision *decision, WebKitWebsitePolicies *policies);
&gt; 
&gt; Each parameter should be on its own line here in the public header.

Fixed.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp:319
&gt; &gt; +        &quot;website-policies&quot;, webkit_web_view_get_website_policies(webView),
&gt; 
&gt; Should update the doc comment: &quot;The newly created #WebKitWebView will also
&gt; have the same #WebKitUserContentManager, #WebKitSettings, and
&gt; #WebKitWebsitePolicies as @web_view.&quot;

Good eye! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658495</commentid>
    <comment_count>33</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-02 16:24:40 -0700</bug_when>
    <thetext>(In reply to Charlie Turner from comment #32)
&gt; (In reply to Michael Catanzaro from comment #31)
&gt; &gt; Comment on attachment 400823 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=400823&amp;action=review
&gt; &gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:96
&gt; &gt; &gt; + * Accept the action which triggered this decision, and continue with
&gt; &gt; &gt; + * @policies affecting subsequent loads.
&gt; &gt; 
&gt; &gt; affecting subsequent loads of... what? The entire web view? Or just loads
&gt; &gt; for the security origin corresponding to the policy decision?
&gt; 
&gt; Good question. I should make the docs better. Subsequent loads of the
&gt; *entire web view&quot;.
&gt; 
&gt; For example, if you use_with_policy(deny) on any URI, that policy sticks to
&gt; the view&apos;s core frame&apos;s loader, which AFAICT, basically means any pages
&gt; loaded in any way in the current view. So, if you navigate now to a
&gt; different URI, autoplay will still be denied if the application doesn&apos;t
&gt; reset anything to default values, per URL navigated to.

Please ignore this, I got it totally wrong due to a bug in my test application. They&apos;re not sticky. The application must respond with its desired policy for every URL loaded, and that policy affects only loads of that URL. If you reload, or otherwise navigate away to another URL, you must set it again. This behaviour makes more sense, should have wondered a bit harder why I was seeing the sticky behaviour...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658502</commentid>
    <comment_count>34</comment_count>
      <attachid>400866</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-02 16:38:18 -0700</bug_when>
    <thetext>Created attachment 400866
Patch

Address Michael&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658728</commentid>
    <comment_count>35</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-06-03 09:18:26 -0700</bug_when>
    <thetext>(In reply to Charlie Turner from comment #33)
&gt; Please ignore this, I got it totally wrong due to a bug in my test
&gt; application. They&apos;re not sticky. The application must respond with its
&gt; desired policy for every URL loaded, and that policy affects only loads of
&gt; that URL. If you reload, or otherwise navigate away to another URL, you must
&gt; set it again. This behaviour makes more sense, should have wondered a bit
&gt; harder why I was seeing the sticky behaviour...

So... what does webkit_web_view_update_website_policies() do then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658960</commentid>
    <comment_count>36</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-03 20:27:43 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #35)
&gt; (In reply to Charlie Turner from comment #33)
&gt; &gt; Please ignore this, I got it totally wrong due to a bug in my test
&gt; &gt; application. They&apos;re not sticky. The application must respond with its
&gt; &gt; desired policy for every URL loaded, and that policy affects only loads of
&gt; &gt; that URL. If you reload, or otherwise navigate away to another URL, you must
&gt; &gt; set it again. This behaviour makes more sense, should have wondered a bit
&gt; &gt; harder why I was seeing the sticky behaviour...
&gt; 
&gt; So... what does webkit_web_view_update_website_policies() do then?

Gives you the option of updating the policies in the most flexible (and potentially dangerous) way. See the API test that uses JavaScript to try and &quot;autoplay&quot; a video. After autoplay is denied initially by the policy handler, the API allows you to change the policy outside of decide-policy flows without reloading the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658994</commentid>
    <comment_count>37</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-03 22:36:45 -0700</bug_when>
    <thetext>The API test failures are unrelated now (a web view fullscreen test failed in the last run)

I continued investigating the spurious failure seen on the bots locally. I could not reproduce, but I did notice a *very rare* failure in the autoplay test that is only triggered when the policy client tests are run as a whole. I can *not* reproduce a failure in my autoplay test in isolation.

The trace looks like this, and makes no sense at first. Where has that wait() call come from?

#0  0x00007fa0c9ce9c75 in _g_log_abort (breakpoint=1) at ../../../glib/gmessages.c:554
#1  0x00007fa0c9ceaf7d in g_logv (log_domain=0x7fa0c9d2f00e &quot;GLib&quot;, log_level=G_LOG_LEVEL_CRITICAL, format=&lt;optimized out&gt;, args=args@entry=0x7ffdf97d08b0) at ../../../glib/gmessages.c:1371
#2  0x00007fa0c9ceb14f in g_log (log_domain=&lt;optimized out&gt;, log_level=&lt;optimized out&gt;, format=&lt;optimized out&gt;) at ../../../glib/gmessages.c:1413
#3  0x000000000041ec69 in WebViewTest::quitMainLoop() (this=0x63e5c0) at /home/cht/igalia/sources/WebKit/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:176
#4  0x000000000041ff1c in WebViewTest::wait(double)::$_0::operator()(void*) const (this=0x63e5c0, userData=0x63e5c0) at /home/cht/igalia/sources/WebKit/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:182
#5  0x000000000041fef5 in WebViewTest::wait(double)::$_0::__invoke(void*) (userData=0x63e5c0, userData@entry=&lt;error reading variable: value has been optimized out&gt;) at /home/cht/igalia/sources/WebKit/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:181
#6  0x00007fa0c9ce4863 in g_timeout_dispatch (source=0x953530, callback=&lt;optimized out&gt;, user_data=&lt;optimized out&gt;) at ../../../glib/gmain.c:4667
#7  0x00007fa0c9ce3dd8 in g_main_dispatch (context=0x4d7820) at ../../../glib/gmain.c:3182
#8  0x00007fa0c9ce3dd8 in g_main_context_dispatch (context=context@entry=0x4d7820) at ../../../glib/gmain.c:3847
#9  0x00007fa0c9ce41c8 in g_main_context_iterate (context=0x4d7820, block=block@entry=1, dispatch=dispatch@entry=1, self=&lt;optimized out&gt;) at ../../../glib/gmain.c:3920
#10 0x00007fa0c9ce44c2 in g_main_loop_run (loop=0x646840) at ../../../glib/gmain.c:4116
#11 0x0000000000410a34 in testAutoplayPolicy(PolicyClientTest*, void const*) (test=0x94be70) at /home/cht/igalia/sources/WebKit/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:147
#12 0x00007fa0c9d0b15a in test_case_run (tc=0x7fa09c00fad0) at ../../../glib/gtestutils.c:2318
#13 0x00007fa0c9d0b15a in g_test_run_suite_internal (suite=suite@entry=0x6534e0, path=path@entry=0x0) at ../../../glib/gtestutils.c:2403
#14 0x00007fa0c9d0b014 in g_test_run_suite_internal (suite=suite@entry=0x653500, path=path@entry=0x0) at ../../../glib/gtestutils.c:2415
#15 0x00007fa0c9d0b014 in g_test_run_suite_internal (suite=suite@entry=0x653520, path=path@entry=0x0) at ../../../glib/gtestutils.c:2415
#16 0x00007fa0c9d0b412 in g_test_run_suite (suite=0x653520) at ../../../glib/gtestutils.c:2490
#17 0x00007fa0c9d0b431 in g_test_run () at ../../../glib/gtestutils.c:1755
#18 0x0000000000418a21 in main(int, char**) (argc=1, argv=0x7ffdf97d1068) at /home/cht/igalia/sources/WebKit/Tools/TestWebKitAPI/glib/WebKitGLib/TestMain.cpp:138

It turns out this only happens when /webkit/WebKitPolicyClient/new-window-policy is part of the group. Looking at that test, it at least becomes understandable why it could cause nondeterminism. It registers a callback on the webview ::create signal which quits the main loop when its dispatched, and this callback is never cleared AFAICT. It also has arbitrary wait() calls in there, which is often a bad idea in unit tests, though it appears to have been done due to constraints deep in GTK. The simple solution is to make sure this test always runs last. I couldn&apos;t find a better one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658995</commentid>
    <comment_count>38</comment_count>
      <attachid>401000</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-03 22:38:38 -0700</bug_when>
    <thetext>Created attachment 401000
Patch

Attempt to resolve the nondeterminism in the decide-policy API tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659055</commentid>
    <comment_count>39</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-04 05:29:53 -0700</bug_when>
    <thetext>Aha, the seemingly unrelated fullscreen test relied on that &quot;force user gestures when running JS&quot; API :) Now seems like a good time to break this change into a separate bug and expose the RunJavaScriptParameters to the GTK API.

The unexpected pass in the forms test seems related to that. I will investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659057</commentid>
    <comment_count>40</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-06-04 06:01:02 -0700</bug_when>
    <thetext>(In reply to Charlie Turner from comment #37) 
&gt; It turns out this only happens when
&gt; /webkit/WebKitPolicyClient/new-window-policy is part of the group. Looking
&gt; at that test, it at least becomes understandable why it could cause
&gt; nondeterminism. It registers a callback on the webview ::create signal which
&gt; quits the main loop when its dispatched, and this callback is never cleared
&gt; AFAICT. 

Can&apos;t you simply disconnect the signal? Possibly also use a new web view for each test?

It also has arbitrary wait() calls in there, which is often a bad
&gt; idea in unit tests, though it appears to have been done due to constraints
&gt; deep in GTK. The simple solution is to make sure this test always runs last.
&gt; I couldn&apos;t find a better one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659452</commentid>
    <comment_count>41</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-04 19:46:12 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #40)
&gt; (In reply to Charlie Turner from comment #37) 
&gt; &gt; It turns out this only happens when
&gt; &gt; /webkit/WebKitPolicyClient/new-window-policy is part of the group. Looking
&gt; &gt; at that test, it at least becomes understandable why it could cause
&gt; &gt; nondeterminism. It registers a callback on the webview ::create signal which
&gt; &gt; quits the main loop when its dispatched, and this callback is never cleared
&gt; &gt; AFAICT. 
&gt; 
&gt; Can&apos;t you simply disconnect the signal?

I tried that, but it didn&apos;t help.

&gt; Possibly also use a new web view for
&gt; each test?

It&apos;s pretty twisted how the C++ test classes are intertwined into the glib test framework. Something as simple sounding as your suggestion actually turns into quite a lot of work when you take a look at the code.

&gt; 
&gt; It also has arbitrary wait() calls in there, which is often a bad
&gt; &gt; idea in unit tests, though it appears to have been done due to constraints
&gt; &gt; deep in GTK. The simple solution is to make sure this test always runs last.
&gt; &gt; I couldn&apos;t find a better one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660248</commentid>
    <comment_count>42</comment_count>
      <attachid>401347</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-08 09:37:00 -0700</bug_when>
    <thetext>Created attachment 401347
Patch

Fix fullscreen test by adding new JS API to run without user gestures active</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660250</commentid>
    <comment_count>43</comment_count>
      <attachid>401348</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-08 09:44:18 -0700</bug_when>
    <thetext>Created attachment 401348
Patch

webkit-patch ignored the new files, try submitting from the cached worktree instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660256</commentid>
    <comment_count>44</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-06-08 10:01:31 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #31)
&gt; Hm, what I was expecting was a new policy decision type that would prompt
&gt; the browser to decide whether certain policies should be allowed... but I
&gt; see now that&apos;s not quite how this works, maybe it wasn&apos;t the right
&gt; expectation. Carlos, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660608</commentid>
    <comment_count>45</comment_count>
      <attachid>401348</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-09 01:05:02 -0700</bug_when>
    <thetext>Comment on attachment 401348
Patch

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

Looks good in general. I would split the patch to discuss the run-js issue in a separate bug. We also need to improve a bit the documentation to make it clear how to use the new api.

&gt; Source/WebCore/ChangeLog:13
&gt; +        * html/HTMLMediaElement.cpp:
&gt; +        (WebCore::HTMLMediaElement::pageMutedStateDidChange): Modernize style.
&gt; +        (WebCore::HTMLMediaElement::updateShouldAutoplay): Add a note to
&gt; +        refactor behaviour restriction logic into MediaElementSession

These changes are unrelated to this patch, no?

&gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:97
&gt; + * @policies affecting all subsequent loads of resources in the
&gt; + * current origin.

all subsequent loads? are you sure?

&gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:101
&gt; + * For example, a navigation decision to a video sharing website may
&gt; + * be accepted under the priviso no movies are allowed to autoplay. The
&gt; + * autoplay policy in this case would be set in the @policies.

I don&apos;t understand this.

&gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:107
&gt; +    g_return_if_fail(WEBKIT_IS_POLICY_DECISION(decision));

You should check policies too since it can&apos;t be nullptr

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:3803
&gt; + * webkit_web_view_run_javascript_without_forced_user_gestures:

I would move this to a separate bug. I don&apos;t remember why we forced the user gesture, maybe we can just change that behavior.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4694
&gt; + * Updates the website policies associated with @web_view.
&gt; + *
&gt; + * Note, it only makes sense to call this API after %WEBKIT_LOAD_COMMITTED
&gt; + * and before %WEBKIT_LOAD_FINISHED.

This is confusing, IIRC this allows to change the policies after a page has already been loaded, but do this affect the next load? I guess it doesn&apos;t, and the default policies will be used again, right? It should be clear what this does, because it might look like this is changing the website-policies property.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4711
&gt; + * Gets the website policies associated with @web_view.

This is the getter of the property and says &quot;policies associated with @web_view.&quot; the same than webkit_web_view_update_website_policies(). It should be clear that these are the policies set on construction, used by default, not affected by policies passed to policy-decision nor updated with webkit_web_view_update_website_policies().

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:37
&gt; + * WebKitWebsitePolicies allows you to configure per-page autoplay policies.

per-page policies, even when we only support autoplay for now.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:90
&gt; +static void webkitWebsitePoliciesConstructed(GObject* object)
&gt; +{
&gt; +    G_OBJECT_CLASS(webkit_website_policies_parent_class)-&gt;constructed(object);
&gt; +}

We don&apos;t need to override constructed just to chain up.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:92
&gt; +API::WebsitePolicies* webkitWebsitePoliciesGetWebsitePolicies(WebKitWebsitePolicies* policies)

This should return a reference instead of a pointer, since it&apos;s never nullptr.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:99
&gt; +    WebsitePoliciesData policiesData { };

Initialization isn&apos;t needed here, you can remove the { }

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:121
&gt; +

Remove this empty line

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:245
&gt; +    }

Since it&apos;s a property, you should check whether it actually changed and emit notify signal.

&gt; Tools/MiniBrowser/gtk/main.c:632
&gt;          if (!editorMode) {

You should unref defaultWebsitePolicies aftr all web view have been created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660611</commentid>
    <comment_count>46</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-09 01:14:41 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #44)
&gt; (In reply to Michael Catanzaro from comment #31)
&gt; &gt; Hm, what I was expecting was a new policy decision type that would prompt
&gt; &gt; the browser to decide whether certain policies should be allowed... but I
&gt; &gt; see now that&apos;s not quite how this works, maybe it wasn&apos;t the right
&gt; &gt; expectation. Carlos, what do you think?

I don&apos;t think it&apos;s ever expected to ask the user, that would block the load on policy decision. Let&apos;s think about how we would implement this in ephy to understand ow the api works. 

 - We might have a global preference for autoplay in the preferences dialog. That should affect the default policies set to a web view. When this setting changes, update_website_policies needs to be called for already created web views. This makes me think that maybe it shouldn&apos;t be a construct only property.

 - We might also have an option in the page popover to override the default policy for a particular website. In decide-policy we would check if the given url is in a security origin with overridden policies and call use_with_policies() instead. If this setting is changed after the page has been loaded we need to call update_website_policies().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660613</commentid>
    <comment_count>47</comment_count>
      <attachid>401348</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-09 01:18:59 -0700</bug_when>
    <thetext>Comment on attachment 401348
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:221
&gt; + * webkit_website_policies_set_autoplay_policy:

hmm, I think WebKitWebsitePolicies should be immutable. Allowing to change it is confusing, because it won&apos;t affect the web views already using this object. This is not like WebKitSettings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660673</commentid>
    <comment_count>48</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-06-09 06:27:39 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #46)
&gt; I don&apos;t think it&apos;s ever expected to ask the user, that would block the load
&gt; on policy decision. Let&apos;s think about how we would implement this in ephy to
&gt; understand ow the api works. 
&gt; 
&gt;  - We might have a global preference for autoplay in the preferences dialog.
&gt; That should affect the default policies set to a web view. When this setting
&gt; changes, update_website_policies needs to be called for already created web
&gt; views. This makes me think that maybe it shouldn&apos;t be a construct only
&gt; property.

In Ephy, we would just leave autoplay disabled always, but yes, theoretically a browser might want to do this.

&gt;  - We might also have an option in the page popover to override the default
&gt; policy for a particular website. In decide-policy we would check if the
&gt; given url is in a security origin with overridden policies and call
&gt; use_with_policies() instead. If this setting is changed after the page has
&gt; been loaded we need to call update_website_policies().

I guess that makes sense... but, we do not actually need the policy decision API at all, then. It could be done just as well in load-changed when LOAD_COMMITTED is seen. So I think I&apos;ve changed my mind about that, we should only add API that is actually needed to do what we want.

(In reply to Carlos Garcia Campos from comment #47)
&gt; hmm, I think WebKitWebsitePolicies should be immutable. Allowing to change
&gt; it is confusing, because it won&apos;t affect the web views already using this
&gt; object. This is not like WebKitSettings.

Hm, right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660674</commentid>
    <comment_count>49</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-06-09 06:29:21 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #45)
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4694
&gt; &gt; + * Updates the website policies associated with @web_view.
&gt; &gt; + *
&gt; &gt; + * Note, it only makes sense to call this API after %WEBKIT_LOAD_COMMITTED
&gt; &gt; + * and before %WEBKIT_LOAD_FINISHED.
&gt; 
&gt; This is confusing, IIRC this allows to change the policies after a page has
&gt; already been loaded, but do this affect the next load? I guess it doesn&apos;t,
&gt; and the default policies will be used again, right? It should be clear what
&gt; this does, because it might look like this is changing the website-policies
&gt; property.

I understand it is a permanent change to the web view&apos;s policies, which is unfortunate because that&apos;s not very natural. Would be much nicer if you are correct and the change is only temporary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660678</commentid>
    <comment_count>50</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-09 06:53:02 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #48)
&gt; (In reply to Carlos Garcia Campos from comment #46)
&gt; &gt; I don&apos;t think it&apos;s ever expected to ask the user, that would block the load
&gt; &gt; on policy decision. Let&apos;s think about how we would implement this in ephy to
&gt; &gt; understand ow the api works. 
&gt; &gt; 
&gt; &gt;  - We might have a global preference for autoplay in the preferences dialog.
&gt; &gt; That should affect the default policies set to a web view. When this setting
&gt; &gt; changes, update_website_policies needs to be called for already created web
&gt; &gt; views. This makes me think that maybe it shouldn&apos;t be a construct only
&gt; &gt; property.
&gt; 
&gt; In Ephy, we would just leave autoplay disabled always, but yes,
&gt; theoretically a browser might want to do this.
&gt; 
&gt; &gt;  - We might also have an option in the page popover to override the default
&gt; &gt; policy for a particular website. In decide-policy we would check if the
&gt; &gt; given url is in a security origin with overridden policies and call
&gt; &gt; use_with_policies() instead. If this setting is changed after the page has
&gt; &gt; been loaded we need to call update_website_policies().
&gt; 
&gt; I guess that makes sense... but, we do not actually need the policy decision
&gt; API at all, then. It could be done just as well in load-changed when
&gt; LOAD_COMMITTED is seen. So I think I&apos;ve changed my mind about that, we
&gt; should only add API that is actually needed to do what we want.

That might be racy, I think it&apos;s better to handle per-url exceptions in the policy-decision, what I&apos;m not sure about is the update_policies function.

&gt; (In reply to Carlos Garcia Campos from comment #47)
&gt; &gt; hmm, I think WebKitWebsitePolicies should be immutable. Allowing to change
&gt; &gt; it is confusing, because it won&apos;t affect the web views already using this
&gt; &gt; object. This is not like WebKitSettings.
&gt; 
&gt; Hm, right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660715</commentid>
    <comment_count>51</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-09 09:26:16 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #45)
&gt; Comment on attachment 401348 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401348&amp;action=review
&gt; 
&gt; Looks good in general. I would split the patch to discuss the run-js issue
&gt; in a separate bug. We also need to improve a bit the documentation to make
&gt; it clear how to use the new api.

Opened https://bugs.webkit.org/show_bug.cgi?id=212969

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        * html/HTMLMediaElement.cpp:
&gt; &gt; +        (WebCore::HTMLMediaElement::pageMutedStateDidChange): Modernize style.
&gt; &gt; +        (WebCore::HTMLMediaElement::updateShouldAutoplay): Add a note to
&gt; &gt; +        refactor behaviour restriction logic into MediaElementSession
&gt; 
&gt; These changes are unrelated to this patch, no?

Unrelated, I&apos;ll remove them, it&apos;s always tempting to to put little style fixes like this in bigger patches due to the submission overhead, sorry :)

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:97
&gt; &gt; + * @policies affecting all subsequent loads of resources in the
&gt; &gt; + * current origin.
&gt; 
&gt; all subsequent loads? are you sure?

Pretty sure? I&apos;m referring to resource loader loads, not API URI loads, which is maybe something I should clarify, or have I misunderstood a deeper issue?

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:101
&gt; &gt; + * For example, a navigation decision to a video sharing website may
&gt; &gt; + * be accepted under the priviso no movies are allowed to autoplay. The
&gt; &gt; + * autoplay policy in this case would be set in the @policies.
&gt; 
&gt; I don&apos;t understand this.

I&apos;m trying to motivate why this API would be used by giving an anticipated example. Maybe I could reword it.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:107
&gt; &gt; +    g_return_if_fail(WEBKIT_IS_POLICY_DECISION(decision));
&gt; 
&gt; You should check policies too since it can&apos;t be nullptr

Done

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:3803
&gt; &gt; + * webkit_web_view_run_javascript_without_forced_user_gestures:
&gt; 
&gt; I would move this to a separate bug. I don&apos;t remember why we forced the user
&gt; gesture, maybe we can just change that behavior.

https://bugs.webkit.org/show_bug.cgi?id=212969

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4694
&gt; &gt; + * Updates the website policies associated with @web_view.
&gt; &gt; + *
&gt; &gt; + * Note, it only makes sense to call this API after %WEBKIT_LOAD_COMMITTED
&gt; &gt; + * and before %WEBKIT_LOAD_FINISHED.
&gt; 
&gt; This is confusing, IIRC this allows to change the policies after a page has
&gt; already been loaded, but do this affect the next load? I guess it doesn&apos;t,
&gt; and the default policies will be used again, right? It should be clear what
&gt; this does, because it might look like this is changing the website-policies
&gt; property.

Agreed. It might be better to not even expose this API. It&apos;s use is basically confined to cases as shown in the unit tests (unlocking JS play() calls and vice versa).

Assuming it didn&apos;t exist, API users would simply have to change their per URL policies and expect the person using the browser/app to reload the page. Not a big deal imo.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4711
&gt; &gt; + * Gets the website policies associated with @web_view.
&gt; 
&gt; This is the getter of the property and says &quot;policies associated with
&gt; @web_view.&quot; the same than webkit_web_view_update_website_policies(). It
&gt; should be clear that these are the policies set on construction, used by
&gt; default, not affected by policies passed to policy-decision nor updated with
&gt; webkit_web_view_update_website_policies().

Agreed. I&apos;m voting for getting rid of webkit_web_view_update_website_policies now though as above.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:37
&gt; &gt; + * WebKitWebsitePolicies allows you to configure per-page autoplay policies.
&gt; 
&gt; per-page policies, even when we only support autoplay for now.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:90
&gt; &gt; +static void webkitWebsitePoliciesConstructed(GObject* object)
&gt; &gt; +{
&gt; &gt; +    G_OBJECT_CLASS(webkit_website_policies_parent_class)-&gt;constructed(object);
&gt; &gt; +}
&gt; 
&gt; We don&apos;t need to override constructed just to chain up.

Fixed.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:92
&gt; &gt; +API::WebsitePolicies* webkitWebsitePoliciesGetWebsitePolicies(WebKitWebsitePolicies* policies)
&gt; 
&gt; This should return a reference instead of a pointer, since it&apos;s never
&gt; nullptr.

Fixed.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:99
&gt; &gt; +    WebsitePoliciesData policiesData { };
&gt; 
&gt; Initialization isn&apos;t needed here, you can remove the { }

Fixed.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:121
&gt; &gt; +
&gt; 
&gt; Remove this empty line

Fixed.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:245
&gt; &gt; +    }
&gt; 
&gt; Since it&apos;s a property, you should check whether it actually changed and emit
&gt; notify signal.

OK, fixed.

&gt; 
&gt; &gt; Tools/MiniBrowser/gtk/main.c:632
&gt; &gt;          if (!editorMode) {
&gt; 
&gt; You should unref defaultWebsitePolicies aftr all web view have been created.

Fixed. I was following the pattern of userContentManager, which seems to also have a missing unref, I added that one in too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660717</commentid>
    <comment_count>52</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-09 09:30:03 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #47)
&gt; Comment on attachment 401348 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401348&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:221
&gt; &gt; + * webkit_website_policies_set_autoplay_policy:
&gt; 
&gt; hmm, I think WebKitWebsitePolicies should be immutable. Allowing to change
&gt; it is confusing, because it won&apos;t affect the web views already using this
&gt; object. This is not like WebKitSettings.

Yeah, the update API for the loader policies seem like they will only add confusion. This setter is here simply to allow resuing the same policy object in multiple tests. It&apos;s not big deal to create a new one each time instead.

I&apos;ll get rid of this and the update API if you both agree. The update() API is there to solve a fairly test-specific detail imo, and in return there&apos;s a lot of potential for confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660719</commentid>
    <comment_count>53</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-09 09:32:33 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #48)
&gt; (In reply to Carlos Garcia Campos from comment #46)
&gt; &gt; I don&apos;t think it&apos;s ever expected to ask the user, that would block the load
&gt; &gt; on policy decision. Let&apos;s think about how we would implement this in ephy to
&gt; &gt; understand ow the api works. 
&gt; &gt; 
&gt; &gt;  - We might have a global preference for autoplay in the preferences dialog.
&gt; &gt; That should affect the default policies set to a web view. When this setting
&gt; &gt; changes, update_website_policies needs to be called for already created web
&gt; &gt; views. This makes me think that maybe it shouldn&apos;t be a construct only
&gt; &gt; property.
&gt; 
&gt; In Ephy, we would just leave autoplay disabled always, but yes,
&gt; theoretically a browser might want to do this.

I&apos;d recommend ALLOW_WITHOUT_SOUND rather than DENY as your browser default FWIW. I&apos;d personally run with DENY, but it can be confusing when some websites completely break because of the strong choice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660720</commentid>
    <comment_count>54</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-09 09:36:11 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #50)
&gt; (In reply to Michael Catanzaro from comment #48)
&gt; &gt; (In reply to Carlos Garcia Campos from comment #46)
&gt; &gt; &gt; I don&apos;t think it&apos;s ever expected to ask the user, that would block the load
&gt; &gt; &gt; on policy decision. Let&apos;s think about how we would implement this in ephy to
&gt; &gt; &gt; understand ow the api works. 
&gt; &gt; &gt; 
&gt; &gt; &gt;  - We might have a global preference for autoplay in the preferences dialog.
&gt; &gt; &gt; That should affect the default policies set to a web view. When this setting
&gt; &gt; &gt; changes, update_website_policies needs to be called for already created web
&gt; &gt; &gt; views. This makes me think that maybe it shouldn&apos;t be a construct only
&gt; &gt; &gt; property.
&gt; &gt; 
&gt; &gt; In Ephy, we would just leave autoplay disabled always, but yes,
&gt; &gt; theoretically a browser might want to do this.
&gt; &gt; 
&gt; &gt; &gt;  - We might also have an option in the page popover to override the default
&gt; &gt; &gt; policy for a particular website. In decide-policy we would check if the
&gt; &gt; &gt; given url is in a security origin with overridden policies and call
&gt; &gt; &gt; use_with_policies() instead. If this setting is changed after the page has
&gt; &gt; &gt; been loaded we need to call update_website_policies().
&gt; &gt; 
&gt; &gt; I guess that makes sense... but, we do not actually need the policy decision
&gt; &gt; API at all, then. It could be done just as well in load-changed when
&gt; &gt; LOAD_COMMITTED is seen. So I think I&apos;ve changed my mind about that, we
&gt; &gt; should only add API that is actually needed to do what we want.
&gt; 
&gt; That might be racy, I think it&apos;s better to handle per-url exceptions in the
&gt; policy-decision, 

Right, the only benefit to the more complicated decide-policy approach is that it&apos;s not racey. As we discussed before, there is some precedent to racey APIs (like webkit_web_view_get_tls_info), but it seems like a good idea to avoid them when possible.

&gt; what I&apos;m not sure about is the update_policies function.

Let me know if you agree with getting rid of update_policies, it doesn&apos;t sound like our API users would have any use for it, the only use I&apos;ve got at the moment is unit test specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660729</commentid>
    <comment_count>55</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-06-09 10:40:13 -0700</bug_when>
    <thetext>(In reply to Charlie Turner from comment #53)
&gt; I&apos;d recommend ALLOW_WITHOUT_SOUND rather than DENY as your browser default
&gt; FWIW. I&apos;d personally run with DENY, but it can be confusing when some
&gt; websites completely break because of the strong choice.

OK, good point, I think that&apos;s what other browsers are doing nowadays anyway.

(In reply to Charlie Turner from comment #54)
&gt; Right, the only benefit to the more complicated decide-policy approach is
&gt; that it&apos;s not racey. As we discussed before, there is some precedent to
&gt; racey APIs (like webkit_web_view_get_tls_info), but it seems like a good
&gt; idea to avoid them when possible.

Hm, TLS info is available after LOAD_COMMITTED (or LOAD_REDIRECTED if you want the result for a redirection), so at least that API should always work properly. 

But yes, I see you&apos;re right about this, if we try to update the polices after LOAD_COMMITTED, it could be too late because the web process is already loading the web content at that point.

&gt; &gt; what I&apos;m not sure about is the update_policies function.
&gt; 
&gt; Let me know if you agree with getting rid of update_policies, it doesn&apos;t
&gt; sound like our API users would have any use for it, the only use I&apos;ve got at
&gt; the moment is unit test specific.

I agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661914</commentid>
    <comment_count>56</comment_count>
      <attachid>401723</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-12 06:30:06 -0700</bug_when>
    <thetext>Created attachment 401723
Patch

Address comments and rebase over 262940. Also attempt #1 of copying boilerplate for WPE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661923</commentid>
    <comment_count>57</comment_count>
      <attachid>401723</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-06-12 07:01:10 -0700</bug_when>
    <thetext>Comment on attachment 401723
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp:101
&gt; + *
&gt; + * Accept the action which triggered this decision, and continue with
&gt; + * @policies affecting all subsequent loads of resources in the
&gt; + * current origin.
&gt; + *
&gt; + * For example, a navigation decision to a video sharing website may
&gt; + * be accepted under the priviso no movies are allowed to autoplay. The
&gt; + * autoplay policy in this case would be set in the @policies.

We should be more clear that this is really only expected to be used with navigation policy decisions.

Also: @policies will affect all subsequent loads of resources in the origin associated with the navigation, not the current origin (because we have not navigated to the new origin until after the policy decision is accepted).

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4667
&gt; +
&gt; +

One blank line between functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661949</commentid>
    <comment_count>58</comment_count>
      <attachid>401730</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-12 08:19:36 -0700</bug_when>
    <thetext>Created attachment 401730
Patch

Address comments, attempt #2 at WPE boilerplate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662570</commentid>
    <comment_count>59</comment_count>
      <attachid>401730</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-15 01:15:24 -0700</bug_when>
    <thetext>Comment on attachment 401730
Patch

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

Let&apos;s start with this API, then we will see if we really need the function to update policies for existing web views. I think we should try to implement the feature in ephy to ensure the API is enough (I can help with that if needed).

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4678
&gt; + * associated with the view.

Indent this line with 4 spaces.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:106
&gt; +        policies-&gt;priv-&gt;websitePolicies-&gt;setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy::Allow);

No need for WebKit:: here

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:109
&gt; +        policies-&gt;priv-&gt;websitePolicies-&gt;setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy::AllowWithoutSound);

Ditto.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:112
&gt; +        policies-&gt;priv-&gt;websitePolicies-&gt;setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy::Deny);

Ditto.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:115
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();

Do not add default, since we are handling all the possible cases.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:127
&gt; +    case PROP_AUTOPLAY_POLICY: {
&gt; +        webkitWebsitePoliciesSetAutoplayPolicy(policies, static_cast&lt;WebKitAutoplayPolicy&gt;(g_value_get_enum(value)));
&gt; +        break;
&gt; +    }

Brackets aren&apos;t needed here.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:155
&gt; +            WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND,

I&apos;m not sure about changing the default behavior here. I guess it&apos;s ok, since it doesn&apos;t require apps to handle any new api.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:161
&gt; + *

Add some body here even if it&apos;s just Create a new #WebKitWebsitePolicies

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:175
&gt; + *

Ditto.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:220
&gt; +    case WebKit::WebsiteAutoplayPolicy::Allow:

No need for WebKit::

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:227
&gt; +    case WebKit::WebsiteAutoplayPolicy::Default:
&gt; +        return WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND;

Is it really possible? This is a construct-only parameter so the setter is always called on construction with the default value WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:229
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();

Do not add default when handling all possible values, we want the compiler to complain if new values are added to the enum.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebsitePolicies.h:61
&gt; + * @WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND: Allow videos to autoplay if
&gt; + * they have no audio track, or if their audio track is muted.

I thought this allowed to autoplay all videos, but the all started muted, like chrome does in android. 

Indent the second line with 4 spaces.

&gt; Tools/MiniBrowser/gtk/main.c:574
&gt; +    WebKitWebsitePolicies *defaultWebsitePolicies = webkit_website_policies_new_with_policies(
&gt; +        &quot;autoplay-policy&quot;, WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND,
&gt; +        NULL);

We don&apos;t need to do this as long as it&apos;s the default option already. I would a command line option to set any autoplay-policy so that we can manually test with MiniBrowser.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:117
&gt; +        return m_autoplayed &amp;&amp; *m_autoplayed;

m_autoplayed.valueOr(False);

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:320
&gt; +    test-&gt;m_autoplayed = WTF::nullopt;
&gt; +    test-&gt;m_policyDecisionResponse = PolicyClientTest::UseWithPolicy;
&gt; +    test-&gt;m_respondToPolicyDecisionAsynchronously = true;
&gt; +    test-&gt;loadURI(resourceURL.get());
&gt; +    // Run until the user content messages come back from autoplay-check.html
&gt; +    g_main_loop_run(test-&gt;m_mainLoop);

What we normally do it adding a method to the test class, in this case something like 

bool loadURIAndWaitForAutoPlayed(const char* uri)
{
    m_autoplayed = WTF::nullopt;
    m_policyDecisionResponse = PolicyClientTest::UseWithPolicy;
    loadURI(uri);
    g_main_loop_run(m_mainLoop);
    return m_autoplayed.valueOr(False);
}

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:324
&gt; +    test-&gt;m_websitePolicies = webkit_website_policies_new_with_policies(&quot;autoplay-policy&quot;, WEBKIT_AUTOPLAY_ALLOW, nullptr);

adoptGRef()

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:334
&gt; +    test-&gt;m_websitePolicies = webkit_website_policies_new_with_policies(&quot;autoplay-policy&quot;, WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND, nullptr);

adoptGRef()

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:343
&gt; +    // Now check dynamically updating the loader policies

This comment should be Test with WEBKIT_AUTOPLAY_DENY I guess.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:344
&gt; +    test-&gt;m_websitePolicies = webkit_website_policies_new_with_policies(&quot;autoplay-policy&quot;, WEBKIT_AUTOPLAY_DENY, nullptr);

adoptGRef()

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:407
&gt; +    PolicyClientTest::add(&quot;WebKitPolicyClient&quot;, &quot;autoplay-policy&quot;, testAutoplayPolicy);
&gt; +    // WARNING: This test must come last, it uses racey constructs that
&gt; +    // interfere nondeterminisically with any test running after it.

What other tests do fail if run after this one? We should try to avoid tests to depend on each other

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:409
&gt;  }

We should also tests the default website policies in WebKitWebView API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662610</commentid>
    <comment_count>60</comment_count>
      <attachid>401730</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-15 05:22:32 -0700</bug_when>
    <thetext>Comment on attachment 401730
Patch

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

Thanks for the review. I will take a look at Ephy and see if I can test it there as well.

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4678
&gt;&gt; + * associated with the view.
&gt; 
&gt; Indent this line with 4 spaces.

Done

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:106
&gt;&gt; +        policies-&gt;priv-&gt;websitePolicies-&gt;setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy::Allow);
&gt; 
&gt; No need for WebKit:: here

Done.

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:109
&gt;&gt; +        policies-&gt;priv-&gt;websitePolicies-&gt;setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy::AllowWithoutSound);
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:112
&gt;&gt; +        policies-&gt;priv-&gt;websitePolicies-&gt;setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy::Deny);
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:115
&gt;&gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; Do not add default, since we are handling all the possible cases.

This was C instincts to always be careful about unwanted int-&gt;enum conversions. Hopefully the implementation will always pass valid values in :). Changed.

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:127
&gt;&gt; +    }
&gt; 
&gt; Brackets aren&apos;t needed here.

Done.

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:155
&gt;&gt; +            WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND,
&gt; 
&gt; I&apos;m not sure about changing the default behavior here. I guess it&apos;s ok, since it doesn&apos;t require apps to handle any new api.

This is in keeping with other browser defaults. Would you prefer I change it to ALLOW?

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:161
&gt;&gt; + *
&gt; 
&gt; Add some body here even if it&apos;s just Create a new #WebKitWebsitePolicies

Done.

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:175
&gt;&gt; + *
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:227
&gt;&gt; +        return WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND;
&gt; 
&gt; Is it really possible? This is a construct-only parameter so the setter is always called on construction with the default value WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND

Not now. It was in the past. Also avoids compiler warnings about unhandled switch values, and it adds a bit of implicit documentation about our default autoplay policy. Didn&apos;t seem necessary to ASSERT() it.

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:229
&gt;&gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; Do not add default when handling all possible values, we want the compiler to complain if new values are added to the enum.

Done.

&gt;&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebsitePolicies.h:61
&gt;&gt; + * they have no audio track, or if their audio track is muted.
&gt; 
&gt; I thought this allowed to autoplay all videos, but the all started muted, like chrome does in android. 
&gt; 
&gt; Indent the second line with 4 spaces.

It will only start if the movie has no audio track, or if the website has arranged for the audio to be muted or the volume to be 0. The media player doesn&apos;t go out of its way to mute and/or set volume=0 to attempt an autoplay without sound.

Indentation done.

&gt;&gt; Tools/MiniBrowser/gtk/main.c:574
&gt;&gt; +        NULL);
&gt; 
&gt; We don&apos;t need to do this as long as it&apos;s the default option already. I would a command line option to set any autoplay-policy so that we can manually test with MiniBrowser.

OK. I have added a command-line option, but this code remains (to set the option), even though as you point out it&apos;s redundant with the default set in WebKitWebsitePolicy. I can condition this out on whether the command-line was really passed if you&apos;d prefer.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:117
&gt;&gt; +        return m_autoplayed &amp;&amp; *m_autoplayed;
&gt; 
&gt; m_autoplayed.valueOr(False);

Oo, nice. Done.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:320
&gt;&gt; +    g_main_loop_run(test-&gt;m_mainLoop);
&gt; 
&gt; What we normally do it adding a method to the test class, in this case something like 
&gt; 
&gt; bool loadURIAndWaitForAutoPlayed(const char* uri)
&gt; {
&gt;     m_autoplayed = WTF::nullopt;
&gt;     m_policyDecisionResponse = PolicyClientTest::UseWithPolicy;
&gt;     loadURI(uri);
&gt;     g_main_loop_run(m_mainLoop);
&gt;     return m_autoplayed.valueOr(False);
&gt; }

Done.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:324
&gt;&gt; +    test-&gt;m_websitePolicies = webkit_website_policies_new_with_policies(&quot;autoplay-policy&quot;, WEBKIT_AUTOPLAY_ALLOW, nullptr);
&gt; 
&gt; adoptGRef()

Done, this was factored into the new loadURIAndWaitForAutoPlayed.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:334
&gt;&gt; +    test-&gt;m_websitePolicies = webkit_website_policies_new_with_policies(&quot;autoplay-policy&quot;, WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND, nullptr);
&gt; 
&gt; adoptGRef()

Done.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:343
&gt;&gt; +    // Now check dynamically updating the loader policies
&gt; 
&gt; This comment should be Test with WEBKIT_AUTOPLAY_DENY I guess.

Should be clearer now I refactored this test case, but it&apos;s as intended.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:344
&gt;&gt; +    test-&gt;m_websitePolicies = webkit_website_policies_new_with_policies(&quot;autoplay-policy&quot;, WEBKIT_AUTOPLAY_DENY, nullptr);
&gt; 
&gt; adoptGRef()

Done.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:407
&gt;&gt; +    // interfere nondeterminisically with any test running after it.
&gt; 
&gt; What other tests do fail if run after this one? We should try to avoid tests to depend on each other

It&apos;s specifically the ordering in this test. When I move testNewWindowPolicy to be the first test run here, it hits various assertions. I couldn&apos;t figure out why. https://bugs.webkit.org/show_bug.cgi?id=213190

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:409
&gt;&gt;  }
&gt; 
&gt; We should also tests the default website policies in WebKitWebView API.

I added a test to check it&apos;s ALLOW_WITHOUT_SOUND.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662612</commentid>
    <comment_count>61</comment_count>
      <attachid>401891</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-15 05:40:17 -0700</bug_when>
    <thetext>Created attachment 401891
Patch

Address review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662614</commentid>
    <comment_count>62</comment_count>
      <attachid>401891</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-15 06:00:12 -0700</bug_when>
    <thetext>Comment on attachment 401891
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:71
&gt; +    case WebKitAutoplayPolicy::WEBKIT_AUTOPLAY_ALLOW:

Didn&apos;t notice this before but you don&apos;t need the WebKitAutoplayPolicy:: since it&apos;s not a C++ enum class.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:74
&gt; +    case WebKitAutoplayPolicy::WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND:

Ditto.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:77
&gt; +    case WebKitAutoplayPolicy::WEBKIT_AUTOPLAY_DENY:

Ditto.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:152
&gt; +            WEBKIT_AUTOPLAY_ALLOW_WITHOUT_SOUND,

Let&apos;s keep this as the default, yes.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:228
&gt; +    case WebsiteAutoplayPolicy::Default:

I still don&apos;t see how Default can be set at this point.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePoliciesPrivate.h:26
&gt; +API::WebsitePolicies* webkitWebsitePoliciesGetWebsitePolicies(WebKitWebsitePolicies *);

WebKitWebsitePolicies * -&gt; WebKitWebsitePolicies*

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePoliciesPrivate.h:27
&gt; +WebKit::WebsitePoliciesData webkitWebsitePoliciesGetPoliciesData(WebKitWebsitePolicies *);

Ditto.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebsitePolicies.h:85
&gt; +webkit_website_policies_get_autoplay_policy                   (WebKitWebsitePolicies* policies);

WebKitWebsitePolicies* -&gt; WebKitWebsitePolicies *

&gt; Source/WebKit/UIProcess/API/wpe/WebKitWebsitePolicies.h:85
&gt; +webkit_website_policies_get_autoplay_policy                   (WebKitWebsitePolicies* policies);

Ditto.

&gt; Tools/MiniBrowser/gtk/main.c:132
&gt; +    { &quot;autoplay-policy&quot;, 0, 0, G_OPTION_ARG_CALLBACK, parseAutoplayPolicy, &quot;Autoplay policy&quot;, NULL },

Add the possible options to the help string &quot;Autoplay policy (allow, allow-without-sound or deny)&quot; for example

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:118
&gt; +        m_websitePolicies = adoptGRef(webkit_website_policies_new_with_policies(&quot;autoplay-policy&quot;, policy, nullptr));

hmm, now that I see this used, I think autoplay-policy as a property of class named WebKitWebsitePolicies is a bit redundant, what do you think about using just autoplay?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662638</commentid>
    <comment_count>63</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-06-15 07:54:26 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #62)
&gt; hmm, now that I see this used, I think autoplay-policy as a property of
&gt; class named WebKitWebsitePolicies is a bit redundant, what do you think
&gt; about using just autoplay?

I think it&apos;s OK for every property name to end in &quot;-policy&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663104</commentid>
    <comment_count>64</comment_count>
      <attachid>402009</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-16 08:53:23 -0700</bug_when>
    <thetext>Created attachment 402009
Patch

Address remaining comments for cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663105</commentid>
    <comment_count>65</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-16 08:53:51 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #62)
&gt; Comment on attachment 401891 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401891&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:71
&gt; &gt; +    case WebKitAutoplayPolicy::WEBKIT_AUTOPLAY_ALLOW:
&gt; 
&gt; Didn&apos;t notice this before but you don&apos;t need the WebKitAutoplayPolicy::
&gt; since it&apos;s not a C++ enum class.

Done. (and the others you pointed out)

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePolicies.cpp:228
&gt; &gt; +    case WebsiteAutoplayPolicy::Default:
&gt; 
&gt; I still don&apos;t see how Default can be set at this point.

Removed. It&apos;s not actually used API side, was there for completeness. I&apos;ll simply fold it into the default: handler.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePoliciesPrivate.h:26
&gt; &gt; +API::WebsitePolicies* webkitWebsitePoliciesGetWebsitePolicies(WebKitWebsitePolicies *);
&gt; 
&gt; WebKitWebsitePolicies * -&gt; WebKitWebsitePolicies*
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsitePoliciesPrivate.h:27
&gt; &gt; +WebKit::WebsitePoliciesData webkitWebsitePoliciesGetPoliciesData(WebKitWebsitePolicies *);
&gt; 
&gt; Ditto.

Done.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/gtk/WebKitWebsitePolicies.h:85
&gt; &gt; +webkit_website_policies_get_autoplay_policy                   (WebKitWebsitePolicies* policies);
&gt; 
&gt; WebKitWebsitePolicies* -&gt; WebKitWebsitePolicies *
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/wpe/WebKitWebsitePolicies.h:85
&gt; &gt; +webkit_website_policies_get_autoplay_policy                   (WebKitWebsitePolicies* policies);
&gt; 
&gt; Ditto.

Done.
&gt; 
&gt; &gt; Tools/MiniBrowser/gtk/main.c:132
&gt; &gt; +    { &quot;autoplay-policy&quot;, 0, 0, G_OPTION_ARG_CALLBACK, parseAutoplayPolicy, &quot;Autoplay policy&quot;, NULL },
&gt; 
&gt; Add the possible options to the help string &quot;Autoplay policy (allow,
&gt; allow-without-sound or deny)&quot; for example

Done.

&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:118
&gt; &gt; +        m_websitePolicies = adoptGRef(webkit_website_policies_new_with_policies(&quot;autoplay-policy&quot;, policy, nullptr));
&gt; 
&gt; hmm, now that I see this used, I think autoplay-policy as a property of
&gt; class named WebKitWebsitePolicies is a bit redundant, what do you think
&gt; about using just autoplay?

I see your point, there&apos;s a lot of stuttering going on. I changed to &quot;autoplay&quot; as the property name, but kept --autoplay-policy for the browser option (in keeping with other browsers).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663106</commentid>
    <comment_count>66</comment_count>
      <attachid>402010</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-06-16 08:56:31 -0700</bug_when>
    <thetext>Created attachment 402010
Patch

Add reviewed-by lines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663112</commentid>
    <comment_count>67</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-16 09:24:57 -0700</bug_when>
    <thetext>Committed r263095: &lt;https://trac.webkit.org/changeset/263095&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 402010.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338472</attachid>
            <date>2018-04-20 15:39:03 -0700</date>
            <delta_ts>2020-05-12 04:49:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20180420173902.patch</filename>
            <type>text/plain</type>
            <size>1543</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM4OWU3Nzg3NzRhMTQyODM5
MjVkY2M4NGQ0YmRhZWRmZDVhODhkM2MuLmZlOGU2ZWNjZGI0NTk5MjA0ZDBkMDM4OGI5YmEwNWE3
YTI3NzJlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDQtMjAgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIERpc2Fi
bGUgdmlkZW8gYXV0b3BsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4NDg0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld0NyZWF0ZVBhZ2UpOgorCiAyMDE4LTA0LTIwICBNaWNoYWVsIENhdGFu
emFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXgg
LVdmb3JtYXQgd2FybmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAyN2U2MzIyYzM3YmVlY2ExNTZiZjhkMTBlMjExMWI5
MDk3MTI0NzMxLi5lOTdhNjkyODlkYTFkN2NkZGRiZjlmMjdlOGVlOGQ4YTYyYTMzN2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNw
cApAQCAtMTk3NCw2ICsxOTc0LDExIEBAIHZvaWQgd2Via2l0V2ViVmlld0NyZWF0ZVBhZ2UoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+CiAjZWxpZiBQ
TEFURk9STShXUEUpCiAgICAgd2ViVmlldy0+cHJpdi0+dmlldy5yZXNldChXS1dQRTo6Vmlldzo6
Y3JlYXRlKHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX2dldF93cGVfYmFja2VuZCh3ZWJWaWV3LT5w
cml2LT5iYWNrZW5kLmdldCgpKSwgY29uZmlndXJhdGlvbi5nZXQoKSkpOwogI2VuZGlmCisKKyAg
ICAvLyBGSVhNRTogU3VyZWx5IG5vdCB0aGUgYmVzdCBwbGFjZSBmb3IgdGhpcy4KKyAgICBXZWJz
aXRlUG9saWNpZXNEYXRhIHBvbGljaWVzIHsgfTsKKyAgICBwb2xpY2llcy5hdXRvcGxheVBvbGlj
eSA9IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQ7CisgICAgZ2V0UGFn
ZSh3ZWJWaWV3KS51cGRhdGVXZWJzaXRlUG9saWNpZXMoV1RGTW92ZShwb2xpY2llcykpOwogfQog
CiBXZWJQYWdlUHJveHkmIHdlYmtpdFdlYlZpZXdHZXRQYWdlKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399119</attachid>
            <date>2020-05-12 04:50:02 -0700</date>
            <delta_ts>2020-05-23 10:42:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20200512125001.patch</filename>
            <type>text/plain</type>
            <size>15105</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNiNGExMTZhMmE3ZjRm
MzQwNDMwOWRiMTA1NzM1NzZkZDI2YTYyOC4uMTJjZjFjNmE5Yjc5NjJkMzVjYjMzNWYyNTViMjNj
MWY5NWY0MTgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA1LTEyICBDaGFy
bGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBEaXNhYmxl
IHZpZGVvIGF1dG9wbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ4NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJIGhhdmUgb25seSBwZXJmb3JtZWQgbWFudWFsbHkgdGVzdGluZyBzbyBmYXIsIHNp
bmNlIHRoaXMgaXMgbXkKKyAgICAgICAgZmlyc3QgZm9yYXkgaW4gdGhlIEFQSSBzaWRlIG9mIFdl
YktpdCwgSSdtIG5vdCBzdXJlIGhvdyBiZXN0IHRvCisgICAgICAgIHRlc3QgdGhlc2UgdGhpbmdz
IHdpdGhvdXQgcmVzb3J0aW5nIHRvIGEgdHJpdmlhbCBjaGVjayB0aGF0CisgICAgICAgIHNldHRl
cnMgLyBnZXR0ZXJzIHdvcmsgKHdoaWNoIHNlZW1zIGZydWl0bGVzcykuCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOiBNb2RpZnkgYXV0b3BsYXkgbG9va3VwIG1ldGhvZHMgdG8gY2hlY2sg
dGhlCisgICAgICAgIGNvbnRhaW5pbmcgcGFnZSBpbiBhZGRpdGlvbiB0byB0aGUgbG9hZGVyIGFu
ZCBmaW5hbGx5IHRoZSBnbG9iYWwKKyAgICAgICAgd2ViIHNldHRpbmdzLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmF1ZGlvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp2aWRlb1BsYXliYWNrUmVxdWlyZXNVc2VyR2Vz
dHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWVkaWFEYXRhTG9hZHNB
dXRvbWF0aWNhbGx5IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFnZU11dGVkU3RhdGVEaWRD
aGFuZ2UpOiBTdHlsZSBmaXguCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1
cGRhdGVTaG91bGRBdXRvcGxheSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6IEdUSy9XUEUgc3Bl
Y2lmaWMgcGFnZSB7Z2V0LHNldH10ZXJzIHRvIHdvcmstYXJvdW5kCisgICAgICAgIGRvY3VtZW50
IGxvYWRlcnMgbm90IGJlaW5nIHRoZSBzYW1lIGF0IHRoZSBVSSBBUEkgYm91bmRhcnkgYW5kCisg
ICAgICAgIHdoZW4gdGhlIG1lZGlhIGVsZW1lbnQgcXVlcmllcyBpdHMgZG9jdW1lbnQncyBsb2Fk
ZXJzLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0QXV0b3BsYXlQb2xpY3kpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6YXV0b3BsYXlQb2xpY3kpOgorCiAyMDIwLTA1LTA4ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFByZXNlcnZlIGNoYXJh
Y3RlciBzZXQgaW5mb3JtYXRpb24gd2hlbiB3cml0aW5nIHRvIHRoZSBwYXN0ZWJvYXJkIHdoZW4g
Y29weWluZyByaWNoIHRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjFiZDM2ZWRlMTFkZDkzNDYzNWQ3MjM5MzE2
YjU0ZmQyZTAzMDQyYS4uZTc1ZTc4NzQxMDVmZTA2M2Q2ZTkxOTY2OGQ5MmY2MWU2ZWYxODFmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0wNS0xMiAgQ2hhcmxpZSBUdXJuZXIgIDxj
dHVybmVyQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRGlzYWJsZSB2aWRlbyBhdXRvcGxh
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0ODQ1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6IEV4cG9zZSBwZXItcGFnZSBhdXRvcGxh
eQorICAgICAgICBwb2xpY3kgY29uZmlndXJhdGlvbi4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19zZXRfYXV0b3BsYXlfcG9saWN5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9u
cy50eHQ6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVXZWJzaXRlUG9saWNpZXMpOiBIYW5nIHRoZSBhdXRv
cGxheSBwb2xpY3kKKyAgICAgICAgb2ZmIHRoZSBQYWdlIGFzIHdlbGwgYXMgdGhlIFBhZ2UncyBt
YWluZnJhbWUncyBmcmFtZSBsb2FkZXIncworICAgICAgICBkb2N1bWVudCBsb2FkZXIgKHdoYXQg
YSBtb3V0aGZ1bCksIHNpbmNlIHRoaXMgaXMgbm90IGNvbnNpc3RlbnRseQorICAgICAgICBtYWlu
dGFpbnRlZCBhY3Jvc3MgdGhlIG1lZGlhIGVsZW1lbnQncyBsaWZldGltZS4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6c2V0QXV0b3BsYXlQb2xpY3lGb3JQYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCiAyMDIwLTA1LTA4ICBEYXZpZCBLaWx6ZXIgIDxk
ZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2MDIyOCk6IExpbmtl
ciB3YXJuaW5nIGFib3V0IGxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgcHJvcGVy
dHkgb3ZlcnJpZGluZyBpbnN0YW5jZSBtZXRob2RzIGZyb20gY2xhc3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDk2MGRkNjAzOWNjZjgwOWI3OTAxNjQ1OTFkZDQ5YWI0NmYwMTRkOGUuLjI1
MTk3ZjY2NGZiZTE1MTU5NzQwNDhiNjQwZDc3ODVmZGFmNWM4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtNTQyOCw2ICs1NDI4LDE0IEBAIGJvb2wgRG9jdW1lbnQ6OmF1ZGlvUGxheWJh
Y2tSZXF1aXJlc1VzZXJHZXN0dXJlKCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBwb2xpY3kg
PT0gQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kIHx8IHBvbGljeSA9PSBBdXRvcGxh
eVBvbGljeTo6RGVueTsKICAgICB9CiAKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQ
RSkKKyAgICBpZiAoYXV0byAqcGFnZSA9IHRoaXMtPnBhZ2UoKSkgeworICAgICAgICBBdXRvcGxh
eVBvbGljeSBwb2xpY3kgPSBwYWdlLT5hdXRvcGxheVBvbGljeSgpOworICAgICAgICBpZiAocG9s
aWN5ICE9IEF1dG9wbGF5UG9saWN5OjpEZWZhdWx0KQorICAgICAgICAgICAgcmV0dXJuIHBvbGlj
eSA9PSBBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQgfHwgcG9saWN5ID09IEF1dG9w
bGF5UG9saWN5OjpEZW55OworICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIHNldHRpbmdzKCku
YXVkaW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKTsKIH0KIApAQCAtNTQ0MCw2ICs1NDQ4
LDE0IEBAIGJvb2wgRG9jdW1lbnQ6OnZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKCkg
Y29uc3QKICAgICAgICAgICAgIHJldHVybiBwb2xpY3kgPT0gQXV0b3BsYXlQb2xpY3k6OkRlbnk7
CiAgICAgfQogCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgaWYgKGF1
dG8gKnBhZ2UgPSB0aGlzLT5wYWdlKCkpIHsKKyAgICAgICAgQXV0b3BsYXlQb2xpY3kgcG9saWN5
ID0gcGFnZS0+YXV0b3BsYXlQb2xpY3koKTsKKyAgICAgICAgaWYgKHBvbGljeSAhPSBBdXRvcGxh
eVBvbGljeTo6RGVmYXVsdCkKKyAgICAgICAgICAgIHJldHVybiBwb2xpY3kgPT0gQXV0b3BsYXlQ
b2xpY3k6OkRlbnk7CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gc2V0dGluZ3MoKS52aWRl
b1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSgpOwogfQogCkBAIC01NDUxLDYgKzU0NjcsMTQg
QEAgYm9vbCBEb2N1bWVudDo6bWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5KCkgY29uc3QKICAg
ICAgICAgICAgIHJldHVybiBwb2xpY3kgIT0gQXV0b3BsYXlQb2xpY3k6OkRlbnk7CiAgICAgfQog
CisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgaWYgKGF1dG8gKnBhZ2Ug
PSB0aGlzLT5wYWdlKCkpIHsKKyAgICAgICAgQXV0b3BsYXlQb2xpY3kgcG9saWN5ID0gcGFnZS0+
YXV0b3BsYXlQb2xpY3koKTsKKyAgICAgICAgaWYgKHBvbGljeSAhPSBBdXRvcGxheVBvbGljeTo6
RGVmYXVsdCkKKyAgICAgICAgICAgIHJldHVybiBwb2xpY3kgPT0gQXV0b3BsYXlQb2xpY3k6OkRl
bnk7CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gc2V0dGluZ3MoKS5tZWRpYURhdGFMb2Fk
c0F1dG9tYXRpY2FsbHkoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggYTU2MzU1NmQ1ZjhkZTQ4NDBmOWQzMWY5YjZjMDVmYWNiNjk3YTQyZC4uYzFm
MmUyZjllYmUzNGRjZTc3MDMwZjE2Nzk4NjY3MzIyMjA1MTVkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC03NjgwLDcgKzc2ODAsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkKIHsKICAgICB1cGRhdGVWb2x1
bWUoKTsKIAotICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpIHsKKyAgICBp
ZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChoYXNBdWRp
bygpICYmICFtdXRlZCgpICYmIHBhZ2UtPmlzQXVkaW9NdXRlZCgpKQogICAgICAgICAgICAgdXNl
ckRpZEludGVyZmVyZVdpdGhBdXRvcGxheSgpOwogICAgIH0KQEAgLTc4NTIsNiArNzg1Miw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkQXV0b3BsYXkoKQogICAgIGlmICgh
YXV0b3BsYXkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IEFsbCB0aGlzIGlz
IG1lZGlhIHNlc3Npb24gc3BlY2lmaWMsIHB1dCBpdCBpbiB0aGF0IGNsYXNzIGluc3RlYWQuCiAg
ICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+aGFzQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1l
bnRTZXNzaW9uOjpJbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRlZCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAppbmRleCAwYTk4MTNhMGY1MWI0ZmQxNDQ5OTExY2UyNWQ0NTUyN2Zi
ZWU5ODUyLi4yOTMwZWQ5ODUzMjdhNDIzNzkzODUyZjY5NmYyNmE0NjUyY2IyYjI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaApAQCAtMjQsNiArMjQsOSBAQAogI2luY2x1ZGUgIkFuaW1hdGlvbkZyYW1lUmF0ZS5o
IgogI2luY2x1ZGUgIkRpc2FibGVkQWRhcHRhdGlvbnMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorI2luY2x1ZGUgIkRvY3VtZW50
TG9hZGVyLmgiCisjZW5kaWYKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmUuaCIKQEAgLTc1Niw2
ICs3NTksMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2Vy
U2NyaXB0cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQmVlbk5vdGlmaWVkVG9JbmplY3RVc2VyU2Ny
aXB0czsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5VG9JbmplY3RVc2VyU2NyaXB0
cygpOwogICAgIHZvaWQgYWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKERPTVdyYXBw
ZXJXb3JsZCYsIGNvbnN0IFVzZXJTY3JpcHQmKTsKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFdQRSkKKyAgICB2b2lkIHNldEF1dG9wbGF5UG9saWN5KEF1dG9wbGF5UG9saWN5IHBvbGlj
eSkgeyBtX2F1dG9wbGF5UG9saWN5ID0gcG9saWN5OyB9CisgICAgQXV0b3BsYXlQb2xpY3kgYXV0
b3BsYXlQb2xpY3koKSB7IHJldHVybiBtX2F1dG9wbGF5UG9saWN5OyB9CisjZW5kaWYKIAogcHJp
dmF0ZToKICAgICBzdHJ1Y3QgTmF2aWdhdGlvbiB7CkBAIC0xMDQ3LDYgKzEwNTQsOSBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9o
YXNCZWVuTm90aWZpZWRUb0luamVjdFVzZXJTY3JpcHRzIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8
c3RkOjpwYWlyPFJlZjxET01XcmFwcGVyV29ybGQ+LCBVbmlxdWVSZWY8VXNlclNjcmlwdD4+PiBt
X3VzZXJTY3JpcHRzQXdhaXRpbmdOb3RpZmljYXRpb247CisjaWYgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShXUEUpCisgICAgQXV0b3BsYXlQb2xpY3kgbV9hdXRvcGxheVBvbGljeSB7IEF1dG9w
bGF5UG9saWN5OjpEZWZhdWx0IH07CisjZW5kaWYKIH07CiAKIGlubGluZSBQYWdlR3JvdXAmIFBh
Z2U6Omdyb3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHAKaW5kZXggZjVjZTQ3NDk3ZTBlMDMxYTA0MjVhYzljOTQyMTRlMjE1YjU5
MWIwOC4uOTcxOTg4Yzc0MjljNjFlZmJkN2IxZTE4MDQyNzA3ZDcxNWNhMzU4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAg
LTQ1NTksMyArNDU1OSwzNSBAQCBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIHdlYmtpdF93ZWJf
dmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQoV2ViS2l0V2ViVmlldwogI2VuZGlmCiAKIH0K
KworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2F1dG9wbGF5X3BvbGljeToKKyAqIEB3ZWJf
dmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHBvbGljeTogYSAjV2ViS2l0QXV0b3BsYXlQb2xp
Y3kKKyAqCisgKiBTZXQgdGhlIHBlci1wYWdlIGF1dG9wbGF5IHBvbGljeS4KKyAqCisgKiBTaW5j
ZTogMi4zMAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYXV0b3BsYXlfcG9saWN5KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEF1dG9wbGF5UG9saWN5IHBvbGljeSkKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisKKyAgICBX
ZWJzaXRlUG9saWNpZXNEYXRhIHBvbGljaWVzIHsgfTsKKworICAgIHN3aXRjaCAocG9saWN5KSB7
CisgICAgY2FzZSBXZWJLaXRBdXRvcGxheVBvbGljeTo6V0VCS0lUX0FVVE9QTEFZX0FMTE9XOgor
ICAgICAgICBwb2xpY2llcy5hdXRvcGxheVBvbGljeSA9IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6
QWxsb3c7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViS2l0QXV0b3BsYXlQb2xpY3k6OldF
QktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EOgorICAgICAgICBwb2xpY2llcy5hdXRv
cGxheVBvbGljeSA9IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViS2l0QXV0b3BsYXlQb2xpY3k6OldFQktJVF9BVVRP
UExBWV9ERU5ZOgorICAgICAgICBwb2xpY2llcy5hdXRvcGxheVBvbGljeSA9IFdlYnNpdGVBdXRv
cGxheVBvbGljeTo6RGVueTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cG9saWNpZXMuYXV0b3BsYXlQb2xpY3kgPSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlZmF1bHQ7
CisgICAgfQorCisgICAgZ2V0UGFnZSh3ZWJWaWV3KS51cGRhdGVXZWJzaXRlUG9saWNpZXMoV1RG
TW92ZShwb2xpY2llcykpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuaAppbmRleCBjMTUzOWNjMjc4OWUwYzk0YWE0YTViMWZkMzhiMGUxNTUz
ZDU4MTFjLi5mMDQxOTY3MWFlZmNiNjlmMmFlMWU1NDMxNGJiZjZhYTgxYTQ1NjlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMjAy
LDYgKzIwMiwyMiBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9XRUJfUFJPQ0VTU19FWENF
RURFRF9NRU1PUllfTElNSVQKIH0gV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOwog
CisvKioKKyAqIFdlYktpdEF1dG9wbGF5UG9saWN5OgorICogQFdFQktJVF9BVVRPUExBWV9BTExP
VzogRG8gbm90IHJlc3RyaWN0IGF1dG9wbGF5LgorICogQFdFQktJVF9BVVRPUExBWV9BTExPV19X
SVRIT1VUX1NPVU5EOiBBbGxvdyB2aWRlb3MgdG8gYXV0b3BsYXkgaWYgdGhleSBoYXZlIG5vIGF1
ZGlvIHRyYWNrLCBvciBpZiB0aGVpciBhdWRpbyB0cmFjayBpcyBtdXRlZC4KKyAqIEBXRUJLSVRf
QVVUT1BMQVlfREVOWTogTmV2ZXIgYWxsb3cgYXV0b3BsYXkuCisgKgorICogRW51bSB2YWx1ZXMg
dXNlZCB0byBzcGVjaWZ5IHBlci1wYWdlIGF1dG9wbGF5IHBvbGljaWVzLgorICoKKyAqIFNpbmNl
OiAyLjMwCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0FVVE9QTEFZX0FMTE9XLAor
ICAgIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5ELAorICAgIFdFQktJVF9BVVRP
UExBWV9ERU5ZCit9IFdlYktpdEF1dG9wbGF5UG9saWN5OworCiBzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXcgewogICAgIFdlYktpdFdlYlZpZXdCYXNlIHBhcmVudDsKIApAQCAtNTc3LDYgKzU5MywxMCBA
QCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lucHV0X21ldGhvZF9jb250ZXh0ICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3CiBXRUJLSVRfQVBJIFdlYktpdElucHV0TWV0aG9kQ29udGV4dCAqCiB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0ICAgICAgICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X3dlYl92aWV3X3NldF9hdXRvcGxheV9wb2xpY3kgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRBdXRvcGxheVBvbGljeSAgICAgIHBvbGlj
eSk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQKaW5kZXggMWJjNDI3MGM5ZjQwZThmYjhjNGZlNjZjZTZlM2JiNTBiM2ZmOTcxNy4uNmQ1YTJm
MGIyOGEzNTA3NzY5Y2JmOTY1MTcyYWQ1MDA3ZGNhYzJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAt
c2VjdGlvbnMudHh0CkBAIC0xOTgsNiArMTk4LDcgQEAgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZl
bnQKIFdlYktpdFNuYXBzaG90T3B0aW9ucwogV2ViS2l0U25hcHNob3RSZWdpb24KIFdlYktpdFdl
YlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbgorV2ViS2l0QXV0b3BsYXlQb2xpY3kKIAogPFNVQlNF
Q1RJT04gRWRpdGluZyBDb21tYW5kcz4KIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUCkBAIC0y
ODUsNiArMjg2LDcgQEAgd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlCiB3ZWJr
aXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiB3ZWJraXRfd2ViX3ZpZXdf
c2V0X2lucHV0X21ldGhvZF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhv
ZF9jb250ZXh0Cit3ZWJraXRfd2ViX3ZpZXdfc2V0X2F1dG9wbGF5X3BvbGljeQogCiA8U1VCU0VD
VElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAppbmRleCAy
YjJkNzhkMWJiNTNhMmZmZGI3MGMyYTRiZGJjODg0YWY2MDM2ZjYwLi5lMzc3YWNiZmEyOWE4MzFm
YTRlYTYxNDc4NzA3MjhmYTcwYmYxNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAtNTU0LDYgKzU1NCw5IEBAIHdlYmtpdF93ZWJf
dmlld19zZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcK
IFdFQktJVF9BUEkgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0ICoKIHdlYmtpdF93ZWJfdmlld19n
ZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19z
ZXRfYXV0b3BsYXlfcG9saWN5ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4
dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25z
LnR4dAppbmRleCAwYzJkYzY1MTVjNjZiNzk1NzdhN2Q1ODA3Y2E0YTBmYmM1ZDA3NTM5Li43MzNm
ZDM2OTUxZjVlZDcwNTI0MjMwZDJjNGQ4ZDkwZTQ4OGMwNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0
CkBAIC0xNzIsNiArMTcyLDcgQEAgV2ViS2l0U2F2ZU1vZGUKIFdlYktpdEluc2VjdXJlQ29udGVu
dEV2ZW50CiBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb24KIFdlYktpdEZyYW1lRGlz
cGxheWVkQ2FsbGJhY2sKK1dlYktpdEF1dG9wbGF5UG9saWN5CiAKIDxTVUJTRUNUSU9OIEVkaXRp
bmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVApAQCAtMjU3LDYgKzI1OCw3
IEBAIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZQogd2Via2l0X3dlYl92aWV3
X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaAogd2Via2l0X3dlYl92aWV3X3NldF9pbnB1dF9t
ZXRob2RfY29udGV4dAogd2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9tZXRob2RfY29udGV4dAor
d2Via2l0X3dlYl92aWV3X3NldF9hdXRvcGxheV9wb2xpY3kKIAogPFNVQlNFQ1RJT04gV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDA4MGIwZGRjYzU1MGIxY2Qy
ZmUwMTM3NTA1NThjOGJhMTkzMWNmMi4uNDFiZDM5YTU4ZjU2NmM2MGUzMjQ0ZDkxNjNkZTI0ZmNi
ZGRjNWI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTYzMzYsNiArNjMzNiwxOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVdlYnNpdGVQb2xp
Y2llcyhXZWJzaXRlUG9saWNpZXNEYXRhJiYgd2Vic2l0ZVBvbGljaWVzKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0
aW9uID0gd2Vic2l0ZVBvbGljaWVzLmFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OworCisjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgLy8gRklYTUU6IEFwcGx5IHRoZSBhdXRv
cGxheSBwb2xpY3kgdG8gdGhlICJnbG9iYWwiIFBhZ2UgYXMgd2VsbAorICAgIC8vIGFzIHRoZSBs
b2FkZXIsIGl0IHNlZW1zIHRoZXJlIGlzIGEgc2VtYW50aWMgZXJyb3Igc3RvcmluZyB0aGVtCisg
ICAgLy8gaW4gdGhlIGRvY3VtZW50IGxvYWRlciwgd2hpY2ggY2FuIGNoYW5nZSBpbiBsb3RzIG9m
IGRpZmZlcmVudAorICAgIC8vIHdheXMgYnkgdGhlIHRpbWUgdGhlIG1lZGlhIGVsZW1lbnQgd2Fu
dHMgdG8ga25vdyB3aGF0IHRoZSBVSQorICAgIC8vIGNsaWVudCdzIGF1dG9wbGF5IHByZWZlcmVu
Y2VzIGFyZS4gQSBsb3Qgb2YgYXV0b3BsYXkgbG9naWMKKyAgICAvLyBjb3VsZCBiZSBzZW5zaWJs
eSByZWZhY3RvcmVkIGFuZCBjb25zb2xpZGF0ZWQsIGJ1dCB0aGVyZSdzIHNvCisgICAgLy8gbXVj
aCB1bmRvY3VtZW50ZWQgTWFjLXNwZWNpZmljIGJlaGF2aW91ciB0aGF0IGl0J3Mgc2ltcGx5Cisg
ICAgLy8gaW5mZWFzaWJsZSB0byBkbyBzdWNoIGEgcmVmYWN0b3JpbmcgYXMgYSBHVEsvV1BFIGRl
dmVsb3BlcgorICAgIC8vIHdpdGhvdXQgZmVhciBvZiBicmVha2luZyBzb21ldGhpbmcgb24gb3Ro
ZXIgcG9ydHMuCisgICAgc2V0QXV0b3BsYXlQb2xpY3lGb3JQYWdlKHdlYnNpdGVQb2xpY2llcy5h
dXRvcGxheVBvbGljeSk7CisjZW5kaWYKICAgICBXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRv
RG9jdW1lbnRMb2FkZXIoV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCAqZG9jdW1lbnRMb2FkZXIp
OwogICAgIAogI2lmIEVOQUJMRShWSURFTykKQEAgLTYzNDMsNiArNjM1NiwyOSBAQCB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNEYXRhJiYgd2Vic2l0
ZVBvbGljaWVzKQogI2VuZGlmCiB9CiAKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQ
RSkKK3ZvaWQgV2ViUGFnZTo6c2V0QXV0b3BsYXlQb2xpY3lGb3JQYWdlKFdlYnNpdGVBdXRvcGxh
eVBvbGljeSBwb2xpY3kpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHN3aXRjaCAocG9saWN5KSB7CisgICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRl
ZmF1bHQ6CisgICAgICAgIG1fcGFnZS0+c2V0QXV0b3BsYXlQb2xpY3koV2ViQ29yZTo6QXV0b3Bs
YXlQb2xpY3k6OkRlZmF1bHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYnNpdGVBdXRv
cGxheVBvbGljeTo6QWxsb3c6CisgICAgICAgIG1fcGFnZS0+c2V0QXV0b3BsYXlQb2xpY3koV2Vi
Q29yZTo6QXV0b3BsYXlQb2xpY3k6OkFsbG93KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
ZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kOgorICAgICAgICBtX3BhZ2Ut
PnNldEF1dG9wbGF5UG9saWN5KFdlYkNvcmU6OkF1dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhvdXRT
b3VuZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpE
ZW55OgorICAgICAgICBtX3BhZ2UtPnNldEF1dG9wbGF5UG9saWN5KFdlYkNvcmU6OkF1dG9wbGF5
UG9saWN5OjpEZW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQg
V2ViUGFnZTo6bm90aWZ5VXNlclNjcmlwdHMoKQogewogICAgIGlmICghbV9wYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGMwOGM3NmJhZWEyMTNh
OTk5OTdkNzViYzhlY2JhNDdlNjRhZTEyMmMuLjA4OGM3N2YzYWQ2YjYxZGIwZTZlNGUzNDQwZjhi
NzU0MDVkODhmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTE3MzMsNiArMTczMyw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZvaWQgcGxh
dGZvcm1EaWRTY2FsZVBhZ2UoKTsKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkK
KyAgICB2b2lkIHNldEF1dG9wbGF5UG9saWN5Rm9yUGFnZShXZWJzaXRlQXV0b3BsYXlQb2xpY3kp
OworI2VuZGlmCiAKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400127</attachid>
            <date>2020-05-23 10:42:42 -0700</date>
            <delta_ts>2020-05-24 07:46:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20200523184241.patch</filename>
            <type>text/plain</type>
            <size>17410</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2YyZjE5MGU2Njg1ZjY2
YTJiYTEwNWU1OGM4Y2QzODdhMmM2YzM2NC4uMWE1OWM5NTA4OTk2NjE1YjJlMzExMmFhZTI4MTA4
NmFjMjhlZDQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTIzICBDaGFy
bGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBEaXNhYmxl
IHZpZGVvIGF1dG9wbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ4NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUZXN0ZWQgaW4gYXV0b3BsYXktcG9saWNpZXMgd2ViLXZpZXcgQVBJIHRlc3QuCisK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkQXV0b3BsYXkpOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
bG9hZCk6CisKIDIwMjAtMDUtMTMgIFRvbW9raSBJbWFpICA8VG9tb2tpLkltYWlAc29ueS5jb20+
CiAKICAgICAgICAgU2VsZWN0ZWQgZWxlbWVudCBvbiBXZWIgSW5zcGVjdG9yIGlzIG5vdCBoaWdo
bGlnaHRlZCB3aXRoIENQVSBSZW5kZXJpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQyNTg0ZTBjZGFhYWJmODE1
NjVhZjViZGZhY2RkYjAzODJkNzdhYjUuLmY1ZjIzODg4Y2UyM2Q4OTlmNDkzMWVkY2MyMmM4NmRm
YzdhZTA5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDUtMjMgIENoYXJsaWUg
VHVybmVyICA8Y3R1cm5lckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIERpc2FibGUgdmlk
ZW8gYXV0b3BsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDg0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X3NldF9hdXRvcGxheV9wb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUt
MS4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVXZWJzaXRlUG9saWNpZXMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6dXBkYXRlV2Vic2l0ZVBvbGljaWVzKToKKwogMjAyMC0wNS0xMyAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjYw
NTcxKTogUmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24gZG9lc24ndCBoYXZlIGl0cyBzY3JvbGwgY2hh
bmdlIGFwcGxpZWQgdG8gbGF5ZXJzIGFueW1vcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCmluZGV4IGVmOWZiZDc0MGIxYzM1NWQ3Mjg5MzdiNjUyN2I2ODhmYzU5MDc0
MGIuLjBkOTI4ZDk5NDgxZmZkYTU4OWVkZDgyOGI5OTk5NmY5ZTlhMmE1MTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzcwOSw3ICs3NzA5LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpCiB7CiAgICAgdXBk
YXRlVm9sdW1lKCk7CiAKLSAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKSB7
CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkgewogICAgICAgICBpZiAo
aGFzQXVkaW8oKSAmJiAhbXV0ZWQoKSAmJiBwYWdlLT5pc0F1ZGlvTXV0ZWQoKSkKICAgICAgICAg
ICAgIHVzZXJEaWRJbnRlcmZlcmVXaXRoQXV0b3BsYXkoKTsKICAgICB9CkBAIC03ODgxLDYgKzc4
ODEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZEF1dG9wbGF5KCkKICAg
ICBpZiAoIWF1dG9wbGF5KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiBBbGwg
dGhpcyBpcyBtZWRpYSBzZXNzaW9uIHNwZWNpZmljLCBwdXQgaXQgaW4gdGhhdCBjbGFzcyBpbnN0
ZWFkLgogICAgIGlmICghbV9tZWRpYVNlc3Npb24tPmhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oTWVk
aWFFbGVtZW50U2Vzc2lvbjo6SW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQpKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGQyZTUx
ZDg2ZDdlNDE0ZGNhNjVmNDIxZGU2Y2QxNzM0MDFiZTdiMDUuLmM2NzFkODgxOGZkN2EzNWIzMTdi
Y2Q4NGQ2MzcyNjU3OTcwNDVkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtMTUzNyw4ICsxNTM3LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoRG9jdW1lbnRM
b2FkZXImIG5ld0RvY3VtZW50TG9hZGVyKQogICAgIGVsc2UKICAgICAgICAgdHlwZSA9IEZyYW1l
TG9hZFR5cGU6OlN0YW5kYXJkOwogCi0gICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCisgICAgaWYg
KG1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgbmV3RG9jdW1lbnRMb2FkZXIuc2V0T3ZlcnJp
ZGVFbmNvZGluZyhtX2RvY3VtZW50TG9hZGVyLT5vdmVycmlkZUVuY29kaW5nKCkpOworICAgICAg
ICBuZXdEb2N1bWVudExvYWRlci5zZXRBdXRvcGxheVBvbGljeShtX2RvY3VtZW50TG9hZGVyLT5h
dXRvcGxheVBvbGljeSgpKTsKKyAgICB9CiAgICAgCiAgICAgLy8gV2hlbiB3ZSBsb2FkaW5nIGFs
dGVybmF0ZSBjb250ZW50IGZvciBhbiB1bnJlYWNoYWJsZSBVUkwgdGhhdCB3ZSdyZQogICAgIC8v
IHZpc2l0aW5nIGluIHRoZSBoaXN0b3J5IGxpc3QsIHdlIHRyZWF0IGl0IGFzIGEgcmVsb2FkIHNv
IHRoZSBoaXN0b3J5IGxpc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGY1Y2U0NzQ5N2UwZTAzMWEwNDI1YWM5Yzk0MjE0
ZTIxNWI1OTFiMDguLmJjYjM5MjcyOGNlMjBjMTYzMjFkZmJhNTk0YzdhZjVmZTRlZDlhZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwCkBAIC00NTU5LDMgKzQ1NTksMzUgQEAgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0KFdlYktpdFdlYlZpZXcKICNlbmRp
ZgogCiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF9hdXRvcGxheV9wb2xpY3k6Cisg
KiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBwb2xpY3k6IGEgI1dlYktpdEF1dG9w
bGF5UG9saWN5CisgKgorICogU2V0IHRoZSBhdXRvcGxheSBwb2xpY3kgZm9yIGxvYWRlcnMgaW4g
dGhpcyB2aWV3LgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3
X3NldF9hdXRvcGxheV9wb2xpY3koV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0QXV0b3Bs
YXlQb2xpY3kgcG9saWN5KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpKTsKKworICAgIFdlYnNpdGVQb2xpY2llc0RhdGEgcG9saWNpZXMgeyB9Owor
CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIFdlYktpdEF1dG9wbGF5UG9saWN5OjpX
RUJLSVRfQVVUT1BMQVlfQUxMT1c6CisgICAgICAgIHBvbGljaWVzLmF1dG9wbGF5UG9saWN5ID0g
V2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvdzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
ZWJLaXRBdXRvcGxheVBvbGljeTo6V0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ6
CisgICAgICAgIHBvbGljaWVzLmF1dG9wbGF5UG9saWN5ID0gV2Vic2l0ZUF1dG9wbGF5UG9saWN5
OjpBbGxvd1dpdGhvdXRTb3VuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJLaXRBdXRv
cGxheVBvbGljeTo6V0VCS0lUX0FVVE9QTEFZX0RFTlk6CisgICAgICAgIHBvbGljaWVzLmF1dG9w
bGF5UG9saWN5ID0gV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZW55OworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBwb2xpY2llcy5hdXRvcGxheVBvbGljeSA9IFdlYnNpdGVB
dXRvcGxheVBvbGljeTo6RGVmYXVsdDsKKyAgICB9CisKKyAgICBnZXRQYWdlKHdlYlZpZXcpLnVw
ZGF0ZVdlYnNpdGVQb2xpY2llcyhXVEZNb3ZlKHBvbGljaWVzKSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGMxNTM5Y2MyNzg5
ZTBjOTRhYTRhNWIxZmQzOGIwZTE1NTNkNTgxMWMuLmYwNDE5NjcxYWVmY2I2OWYyYWUxZTU0MzE0
YmJmNmFhODFhNDU2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5oCkBAIC0yMDIsNiArMjAyLDIyIEBAIHR5cGVkZWYgZW51bSB7CiAgICAg
V0VCS0lUX1dFQl9QUk9DRVNTX0VYQ0VFREVEX01FTU9SWV9MSU1JVAogfSBXZWJLaXRXZWJQcm9j
ZXNzVGVybWluYXRpb25SZWFzb247CiAKKy8qKgorICogV2ViS2l0QXV0b3BsYXlQb2xpY3k6Cisg
KiBAV0VCS0lUX0FVVE9QTEFZX0FMTE9XOiBEbyBub3QgcmVzdHJpY3QgYXV0b3BsYXkuCisgKiBA
V0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ6IEFsbG93IHZpZGVvcyB0byBhdXRv
cGxheSBpZiB0aGV5IGhhdmUgbm8gYXVkaW8gdHJhY2ssIG9yIGlmIHRoZWlyIGF1ZGlvIHRyYWNr
IGlzIG11dGVkLgorICogQFdFQktJVF9BVVRPUExBWV9ERU5ZOiBOZXZlciBhbGxvdyBhdXRvcGxh
eS4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNpZnkgcGVyLXBhZ2UgYXV0b3BsYXkg
cG9saWNpZXMuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBX
RUJLSVRfQVVUT1BMQVlfQUxMT1csCisgICAgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRf
U09VTkQsCisgICAgV0VCS0lUX0FVVE9QTEFZX0RFTlkKK30gV2ViS2l0QXV0b3BsYXlQb2xpY3k7
CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UgcGFyZW50
OwogCkBAIC01NzcsNiArNTkzLDEwIEBAIHdlYmtpdF93ZWJfdmlld19zZXRfaW5wdXRfbWV0aG9k
X2NvbnRleHQgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcKIFdFQktJVF9BUEkgV2ViS2l0SW5w
dXRNZXRob2RDb250ZXh0ICoKIHdlYmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRl
eHQgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2F1dG9wbGF5X3BvbGljeSAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEF1
dG9wbGF5UG9saWN5ICAgICAgcG9saWN5KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCAxYmM0MjcwYzlmNDBlOGZiOGM0ZmU2NmNl
NmUzYmI1MGIzZmY5NzE3Li42ZDVhMmYwYjI4YTM1MDc3NjljYmY5NjUxNzJhZDUwMDdkY2FjMmIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTE5OCw2ICsxOTgsNyBAQCBX
ZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudAogV2ViS2l0U25hcHNob3RPcHRpb25zCiBXZWJLaXRT
bmFwc2hvdFJlZ2lvbgogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uCitXZWJLaXRB
dXRvcGxheVBvbGljeQogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1hbmRzPgogV0VCS0lUX0VE
SVRJTkdfQ09NTUFORF9DVVQKQEAgLTI4NSw2ICsyODYsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfc2Vu
ZF9tZXNzYWdlX3RvX3BhZ2UKIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9m
aW5pc2gKIHdlYmtpdF93ZWJfdmlld19zZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKIHdlYmtpdF93
ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKK3dlYmtpdF93ZWJfdmlld19zZXRfYXV0
b3BsYXlfcG9saWN5CiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJL
aXRKYXZhc2NyaXB0UmVzdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0V2ViVmlldy5oCmluZGV4IDJiMmQ3OGQxYmI1M2EyZmZkYjcwYzJhNGJkYmM4ODRhZjYw
MzZmNjAuLjRhNmYzODU1NDI2NTEyODU5MTk0YjJmZTk3YzVmN2Y1MDc0ZWUxMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCkBAIC0xNzEs
NiArMTcxLDIyIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX1dFQl9QUk9DRVNTX0VYQ0VF
REVEX01FTU9SWV9MSU1JVAogfSBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb247CiAK
Ky8qKgorICogV2ViS2l0QXV0b3BsYXlQb2xpY3k6CisgKiBAV0VCS0lUX0FVVE9QTEFZX0FMTE9X
OiBEbyBub3QgcmVzdHJpY3QgYXV0b3BsYXkuCisgKiBAV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJ
VEhPVVRfU09VTkQ6IEFsbG93IHZpZGVvcyB0byBhdXRvcGxheSBpZiB0aGV5IGhhdmUgbm8gYXVk
aW8gdHJhY2ssIG9yIGlmIHRoZWlyIGF1ZGlvIHRyYWNrIGlzIG11dGVkLgorICogQFdFQktJVF9B
VVRPUExBWV9ERU5ZOiBOZXZlciBhbGxvdyBhdXRvcGxheS4KKyAqCisgKiBFbnVtIHZhbHVlcyB1
c2VkIHRvIHNwZWNpZnkgcGVyLXBhZ2UgYXV0b3BsYXkgcG9saWNpZXMuCisgKgorICogU2luY2U6
IDIuMzAKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfQVVUT1BMQVlfQUxMT1csCisg
ICAgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQsCisgICAgV0VCS0lUX0FVVE9Q
TEFZX0RFTlkKK30gV2ViS2l0QXV0b3BsYXlQb2xpY3k7CisKIC8qKgogICogV2ViS2l0RnJhbWVE
aXNwbGF5ZWRDYWxsYmFjazoKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwpAQCAtNTU0
LDYgKzU3MCw5IEBAIHdlYmtpdF93ZWJfdmlld19zZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcKIFdFQktJVF9BUEkgV2ViS2l0SW5wdXRNZXRob2RDb250
ZXh0ICoKIHdlYmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfYXV0b3BsYXlfcG9saWN5ICAgICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCiBHX0VORF9ERUNM
UwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
ZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCAwYzJkYzY1MTVjNjZiNzk1NzdhN2Q1
ODA3Y2E0YTBmYmM1ZDA3NTM5Li43MzNmZDM2OTUxZjVlZDcwNTI0MjMwZDJjNGQ4ZDkwZTQ4OGMw
NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3Bl
LTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9k
b2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0xNzIsNiArMTcyLDcgQEAgV2ViS2l0U2F2ZU1v
ZGUKIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50CiBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRp
b25SZWFzb24KIFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJhY2sKK1dlYktpdEF1dG9wbGF5UG9s
aWN5CiAKIDxTVUJTRUNUSU9OIEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01N
QU5EX0NVVApAQCAtMjU3LDYgKzI1OCw3IEBAIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2Vf
dG9fcGFnZQogd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaAogd2Vi
a2l0X3dlYl92aWV3X3NldF9pbnB1dF9tZXRob2RfY29udGV4dAogd2Via2l0X3dlYl92aWV3X2dl
dF9pbnB1dF9tZXRob2RfY29udGV4dAord2Via2l0X3dlYl92aWV3X3NldF9hdXRvcGxheV9wb2xp
Y3kKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDJk
OTNlZTg1MzE5MWQxNTNlNzAxMzhiYTczMmVlZWQxZWU2MWFhN2UuLjMzZjIwYmE1Yzc0NzI4MmJk
YjMxMGM2OTcyYTA1Yzc5MjgxMWIxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtODI0NSw2ICs4MjQ1LDkgQEAgYm9vbCBXZWJQYWdlUHJveHk6OndpbGxI
YW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZlbnRzKCkgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNEYXRhJiYgd2Vic2l0ZVBvbGlj
aWVzKQogeworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAgbGF1bmNoUHJv
Y2Vzcyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKKwogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVdlYnNpdGVQb2xpY2llcyh3ZWJzaXRlUG9saWNp
ZXMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGE3NTU5ZTY2NWNlYWIxOGI3MDBlNmNmOTE5OGVlZTY2NDVmZWIzYjUuLjBmZThlOGZk
YmRhNGNhOWFkMmQ0NjU4MzQzYTVlNTliNjE2N2Y5NmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wNS0yMyAg
Q2hhcmxpZSBUdXJuZXIgIDxjdHVybmVyQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRGlz
YWJsZSB2aWRlbyBhdXRvcGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg0ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdl
YlZpZXcuY3BwOgorICAgICAgICAoSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdDo6aXNQbGF5aW5n
QXVkaW9DaGFuZ2VkKToKKyAgICAgICAgKElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3Q6OndhaXRV
bnRpbElzUGxheWluZ0F1ZGlvQ2hhbmdlZCk6CisgICAgICAgIChBdXRvcGxheVBvbGljeVRlc3Q6
OnRlc3RIYW5kbGVyTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAoQXV0b3BsYXlQ
b2xpY3lUZXN0OjpBdXRvcGxheVBvbGljeVRlc3QpOgorICAgICAgICAoQXV0b3BsYXlQb2xpY3lU
ZXN0Ojpsb2FkUmVzb3VyY2VXaXRoUG9saWN5KToKKyAgICAgICAgKEF1dG9wbGF5UG9saWN5VGVz
dDo6cmVzdW1lV2l0aFBvbGljeSk6CisgICAgICAgIChBdXRvcGxheVBvbGljeVRlc3Q6OmRpZEF1
dG9wbGF5KToKKyAgICAgICAgKHRlc3RXZWJWaWV3QXV0b3BsYXlQb2xpY2llcyk6CisgICAgICAg
IChiZWZvcmVBbGwpOgorCiAyMDIwLTA1LTEzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbRmxhdHBhayBTREtdIFByb3BlciBoYW5kbGluZyBvZiBz
Y2NhY2hlIHNjaGVkdWxlciBVUkwgY29tbWFuZC1saW5lIGFyZ3VtZW50CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3
LmNwcAppbmRleCA3N2Y3NjE3MmU5MmZkOWE5MDY1YWU1ZmZiMmY4MjFlZDY3YmJiZDAxLi5hODBi
NmRmNTNkMWQxODUwM2UxYTEzMGQ3NjE5Y2FhODQ5M2FjYTRmIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5j
cHAKQEAgLTI0LDIzICsyNCw2IEBACiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRl
IDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKLWNsYXNzIElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3Qg
OiBwdWJsaWMgV2ViVmlld1Rlc3QgewotcHVibGljOgotICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRV
UkUoSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBpc1BsYXlp
bmdBdWRpb0NoYW5nZWQoR09iamVjdCosIEdQYXJhbVNwZWMqLCBJc1BsYXlpbmdBdWRpb1dlYlZp
ZXdUZXN0KiB0ZXN0KQotICAgIHsKLSAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9ieV9mdW5jKHRlc3QtPm1fd2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oaXNQbGF5
aW5nQXVkaW9DaGFuZ2VkKSwgdGVzdCk7Ci0gICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+
bV9tYWluTG9vcCk7Ci0gICAgfQotCi0gICAgdm9pZCB3YWl0VW50aWxJc1BsYXlpbmdBdWRpb0No
YW5nZWQoKQotICAgIHsKLSAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJub3Rp
Znk6OmlzLXBsYXlpbmctYXVkaW8iLCBHX0NBTExCQUNLKGlzUGxheWluZ0F1ZGlvQ2hhbmdlZCks
IHRoaXMpOwotICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7Ci0gICAgfQotfTsK
LQogc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGdTZXJ2ZXI7CiAKIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3V2ViQ29udGV4dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTEx
MDQsNiArMTA4NywyMyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05vdGlmaWNhdGlvbkluaXRp
YWxQZXJtaXNzaW9uRGlzYWxsb3dlZChOb3RpZmljYXRpb25XZWJWaQogfQogI2VuZGlmIC8vIEVO
QUJMRShOT1RJRklDQVRJT05TKQogCitjbGFzcyBJc1BsYXlpbmdBdWRpb1dlYlZpZXdUZXN0IDog
cHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJF
KElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3QpOworCisgICAgc3RhdGljIHZvaWQgaXNQbGF5aW5n
QXVkaW9DaGFuZ2VkKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgSXNQbGF5aW5nQXVkaW9XZWJWaWV3
VGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
YnlfZnVuYyh0ZXN0LT5tX3dlYlZpZXcsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlzUGxheWlu
Z0F1ZGlvQ2hhbmdlZCksIHRlc3QpOworICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1f
bWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgd2FpdFVudGlsSXNQbGF5aW5nQXVkaW9DaGFu
Z2VkKCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibm90aWZ5
Ojppcy1wbGF5aW5nLWF1ZGlvIiwgR19DQUxMQkFDSyhpc1BsYXlpbmdBdWRpb0NoYW5nZWQpLCB0
aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KK307CisK
IHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SXNQbGF5aW5nQXVkaW8oSXNQbGF5aW5nQXVkaW9XZWJW
aWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICNpZiBQTEFURk9STShHVEspCkBAIC0x
MzMxLDYgKzEzMzEsODcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGcmFtZURpc3BsYXllZChG
cmFtZURpc3BsYXllZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB9CiAjZW5kaWYKIAorY2xh
c3MgQXV0b3BsYXlQb2xpY3lUZXN0IDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAg
ICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKEF1dG9wbGF5UG9saWN5VGVzdCk7CisKKyAgICBzdGF0
aWMgdm9pZCB0ZXN0SGFuZGxlck1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKFdlYktpdFVzZXJDb250
ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBq
YXZhc2NyaXB0UmVzdWx0LCBBdXRvcGxheVBvbGljeVRlc3QqIHRlc3QpCisgICAgeworICAgICAg
ICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVz
dWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICAgICAgaWYgKGdfc3RyX2VxdWFs
KHZhbHVlU3RyaW5nLmdldCgpLCAiYXV0b3BsYXllZCIpKQorICAgICAgICAgICAgdGVzdC0+bV9h
dXRvcGxheWVkID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAoZ19zdHJfZXF1YWwodmFsdWVTdHJp
bmcuZ2V0KCksICJkaWQtbm90LXBsYXkiKSkKKyAgICAgICAgICAgIHRlc3QtPm1fYXV0b3BsYXll
ZCA9IGZhbHNlOworCisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7
CisgICAgfQorCisgICAgQXV0b3BsYXlQb2xpY3lUZXN0KCkKKyAgICAgICAgOiBXZWJWaWV3VGVz
dCgpCisgICAgeworICAgICAgICB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJf
c2NyaXB0X21lc3NhZ2VfaGFuZGxlcihtX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgInRlc3RI
YW5kbGVyIik7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV91c2VyQ29udGVudE1hbmFnZXIu
Z2V0KCksICJzY3JpcHQtbWVzc2FnZS1yZWNlaXZlZDo6dGVzdEhhbmRsZXIiLCBHX0NBTExCQUNL
KHRlc3RIYW5kbGVyTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICB9CisKKyAg
ICB2b2lkIGxvYWRSZXNvdXJjZVdpdGhQb2xpY3koY29uc3QgY2hhciogcmVzb3VyY2VOYW1lLCBX
ZWJLaXRBdXRvcGxheVBvbGljeSBwb2xpY3kpCisgICAgeworICAgICAgICBtX2F1dG9wbGF5ZWQg
PSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfYXV0b3BsYXlfcG9s
aWN5KG1fd2ViVmlldywgcG9saWN5KTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNvdXJj
ZVBhdGgoZ19idWlsZF9maWxlbmFtZShUZXN0OjpnZXRSZXNvdXJjZXNEaXIoVGVzdDo6V2ViS2l0
MlJlc291cmNlcykuZGF0YSgpLCByZXNvdXJjZU5hbWUsIG51bGxwdHIpKTsKKyAgICAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiByZXNvdXJjZVVSTChnX2ZpbGVuYW1lX3RvX3VyaShyZXNvdXJjZVBhdGgu
Z2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRf
dXJpKG1fd2ViVmlldywgcmVzb3VyY2VVUkwuZ2V0KCkpOworICAgICAgICBnX21haW5fbG9vcF9y
dW4obV9tYWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCByZXN1bWVXaXRoUG9saWN5KFdlYktp
dEF1dG9wbGF5UG9saWN5IHBvbGljeSkKKyAgICB7CisgICAgICAgIG1fYXV0b3BsYXllZCA9IFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9hdXRvcGxheV9wb2xpY3ko
bV93ZWJWaWV3LCBwb2xpY3kpOworICAgICAgICBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoInBsYXlWaWRlbygpOyIsIG51bGxwdHIpOworICAgICAgICBnX21haW5fbG9vcF9ydW4o
bV9tYWluTG9vcCk7CisgICAgfQorCisgICAgYm9vbCBkaWRBdXRvcGxheSgpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9hdXRvcGxheWVkICYmICptX2F1dG9wbGF5ZWQ7CisgICAgfQorCitwcml2
YXRlOgorICAgIE9wdGlvbmFsPGJvb2w+IG1fYXV0b3BsYXllZDsKK307CisKK3N0YXRpYyB2b2lk
IHRlc3RXZWJWaWV3QXV0b3BsYXlQb2xpY2llcyhBdXRvcGxheVBvbGljeVRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCit7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIC8vIFRoZSB3ZWIgdmlldyBt
dXN0IGJlIHJlYWxpemVkIGZvciB0aGUgdmlkZW8gdG8gc3RhcnQgcGxheWJhY2suCisgICAgdGVz
dC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEdUS19XSU5ET1dfVE9QTEVWRUwpOwor
I2VuZGlmCisKKyAgICB0ZXN0LT5sb2FkUmVzb3VyY2VXaXRoUG9saWN5KCJhdXRvcGxheS1jaGVj
ay5odG1sIiwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3Qt
PmRpZEF1dG9wbGF5KCkpOworICAgIHRlc3QtPmxvYWRSZXNvdXJjZVdpdGhQb2xpY3koImF1dG9w
bGF5LWNoZWNrLmh0bWwiLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCk7Cisg
ICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisgICAgdGVzdC0+bG9hZFJl
c291cmNlV2l0aFBvbGljeSgiYXV0b3BsYXktY2hlY2suaHRtbCIsIFdFQktJVF9BVVRPUExBWV9E
RU5ZKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKyAgICB0ZXN0
LT5sb2FkUmVzb3VyY2VXaXRoUG9saWN5KCJhdXRvcGxheS1jaGVjay5odG1sIiwgV0VCS0lUX0FV
VE9QTEFZX0FMTE9XKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOwor
CisgICAgdGVzdC0+bG9hZFJlc291cmNlV2l0aFBvbGljeSgiYXV0b3BsYXktbm8tYXVkaW8tY2hl
Y2suaHRtbCIsIFdFQktJVF9BVVRPUExBWV9BTExPVyk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0
LT5kaWRBdXRvcGxheSgpKTsKKyAgICB0ZXN0LT5sb2FkUmVzb3VyY2VXaXRoUG9saWN5KCJhdXRv
cGxheS1uby1hdWRpby1jaGVjay5odG1sIiwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRf
U09VTkQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisgICAgdGVz
dC0+bG9hZFJlc291cmNlV2l0aFBvbGljeSgiYXV0b3BsYXktbm8tYXVkaW8tY2hlY2suaHRtbCIs
IFdFQktJVF9BVVRPUExBWV9ERU5ZKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRv
cGxheSgpKTsKKyAgICB0ZXN0LT5sb2FkUmVzb3VyY2VXaXRoUG9saWN5KCJhdXRvcGxheS1uby1h
dWRpby1jaGVjay5odG1sIiwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XKTsKKyAgICBnX2Fzc2VydF90
cnVlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworCisgICAgLy8gVGVzdCB1cGRhdGluZyB0aGUgYXV0
b3BsYXkgcG9saWNpZXMKKyAgICB0ZXN0LT5sb2FkUmVzb3VyY2VXaXRoUG9saWN5KCJhdXRvcGxh
eS1jaGVjay5odG1sIiwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQpOworICAg
IGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworICAgIHRlc3QtPnJlc3VtZVdp
dGhQb2xpY3koV0VCS0lUX0FVVE9QTEFZX0FMTE9XKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3Qt
PmRpZEF1dG9wbGF5KCkpOworfQorCiBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2Vy
dmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFz
aFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKIHsKICAgICBpZiAobWVzc2Fn
ZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgewpAQCAtMTM4OSw2ICsxNDcwLDcgQEAgdm9p
ZCBiZWZvcmVBbGwoKQogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBGcmFtZURpc3BsYXllZFRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJmcmFtZS1kaXNwbGF5ZWQiLCB0ZXN0V2ViVmlld0ZyYW1l
RGlzcGxheWVkKTsKICNlbmRpZgorICAgIEF1dG9wbGF5UG9saWN5VGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgImF1dG9wbGF5LXBvbGljaWVzIiwgdGVzdFdlYlZpZXdBdXRvcGxheVBvbGljaWVz
KTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400159</attachid>
            <date>2020-05-24 07:46:20 -0700</date>
            <delta_ts>2020-06-02 08:27:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20200524154619.patch</filename>
            <type>text/plain</type>
            <size>19036</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2YyZjE5MGU2Njg1ZjY2
YTJiYTEwNWU1OGM4Y2QzODdhMmM2YzM2NC4uOGIxOTJkNDRiYjVhNzU1NWRlMDczNmRhYWRhNmNj
Y2JkZThjMmM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI0ICBDaGFy
bGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBEaXNhYmxl
IHZpZGVvIGF1dG9wbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ4NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYWdlTXV0
ZWRTdGF0ZURpZENoYW5nZSk6IE1vZGVybml6ZQorICAgICAgICBzdHlsZSBzaW5jZSBJIGRyb3Zl
IHRocm91Z2ggaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZVNob3VsZEF1dG9wbGF5KTogQWRkIGEgbm90ZSB0bworICAgICAgICByZWZhY3Rvci4KKwogMjAy
MC0wNS0xMyAgVG9tb2tpIEltYWkgIDxUb21va2kuSW1haUBzb255LmNvbT4KIAogICAgICAgICBT
ZWxlY3RlZCBlbGVtZW50IG9uIFdlYiBJbnNwZWN0b3IgaXMgbm90IGhpZ2hsaWdodGVkIHdpdGgg
Q1BVIFJlbmRlcmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDI1ODRlMGNkYWFhYmY4MTU2NWFmNWJkZmFjZGRi
MDM4MmQ3N2FiNS4uNzYyNGU0ODgxY2YxYjQ1YmE1NjJiYTUwMDQ1MmVlYTVhNTdhMmMxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNS0yNCAgQ2hhcmxpZSBUdXJuZXIgIDxjdHVy
bmVyQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRGlzYWJsZSB2aWRlbyBhdXRvcGxheQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0ODQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsIGJvaWxl
cnBsYXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3Bw
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9hdXRvcGxheV9wb2xpY3kpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dDoKKwogMjAyMC0wNS0xMyAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjYwNTcx
KTogUmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24gZG9lc24ndCBoYXZlIGl0cyBzY3JvbGwgY2hhbmdl
IGFwcGxpZWQgdG8gbGF5ZXJzIGFueW1vcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IGVmOWZiZDc0MGIxYzM1NWQ3Mjg5MzdiNjUyN2I2ODhmYzU5MDc0MGIu
LjBkOTI4ZDk5NDgxZmZkYTU4OWVkZDgyOGI5OTk5NmY5ZTlhMmE1MTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzcwOSw3ICs3NzA5LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpCiB7CiAgICAgdXBkYXRl
Vm9sdW1lKCk7CiAKLSAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKSB7Cisg
ICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkgewogICAgICAgICBpZiAoaGFz
QXVkaW8oKSAmJiAhbXV0ZWQoKSAmJiBwYWdlLT5pc0F1ZGlvTXV0ZWQoKSkKICAgICAgICAgICAg
IHVzZXJEaWRJbnRlcmZlcmVXaXRoQXV0b3BsYXkoKTsKICAgICB9CkBAIC03ODgxLDYgKzc4ODEs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZEF1dG9wbGF5KCkKICAgICBp
ZiAoIWF1dG9wbGF5KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiBBbGwgdGhp
cyBpcyBtZWRpYSBzZXNzaW9uIHNwZWNpZmljLCBwdXQgaXQgaW4gdGhhdCBjbGFzcyBpbnN0ZWFk
LgogICAgIGlmICghbV9tZWRpYVNlc3Npb24tPmhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFF
bGVtZW50U2Vzc2lvbjo6SW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQpKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViVmlldy5jcHAKaW5kZXggZjVjZTQ3NDk3ZTBlMDMxYTA0MjVhYzljOTQyMTRlMjE1YjU5MWIw
OC4uOGFmNjMwNTQ5ODU0YTc0MWFmZGQ4OTVjY2I2ZjdjNjc1ODliMGFmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTQ1
NTksMyArNDU1OSwzOCBAQCBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIHdlYmtpdF93ZWJfdmll
d19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQoV2ViS2l0V2ViVmlldwogI2VuZGlmCiAKIH0KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2F1dG9wbGF5X3BvbGljeToKKyAqIEB3ZWJfdmll
dzogYSAjV2ViS2l0V2ViVmlldworICogQHBvbGljeTogYSAjV2ViS2l0QXV0b3BsYXlQb2xpY3kK
KyAqCisgKiBTZXQgdGhlIGF1dG9wbGF5IHBvbGljeSBmb3IgdGhlIGNvbW1pdHRlZCBsb2FkZXIu
CisgKgorICogSXQgb25seSBtYWtlcyBzZW5zZSB0byBjYWxsIHRoaXMgQVBJIGFmdGVyICVXRUJL
SVRfTE9BRF9DT01NSVRURUQKKyAqIGFuZCBiZWZvcmUgJVdFQktJVF9MT0FEX0ZJTklTSEVELgor
ICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9hdXRvcGxh
eV9wb2xpY3koV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0QXV0b3BsYXlQb2xpY3kgcG9s
aWN5KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcp
KTsKKworICAgIFdlYnNpdGVQb2xpY2llc0RhdGEgcG9saWNpZXMgeyB9OworCisgICAgc3dpdGNo
IChwb2xpY3kpIHsKKyAgICBjYXNlIFdlYktpdEF1dG9wbGF5UG9saWN5OjpXRUJLSVRfQVVUT1BM
QVlfQUxMT1c6CisgICAgICAgIHBvbGljaWVzLmF1dG9wbGF5UG9saWN5ID0gV2Vic2l0ZUF1dG9w
bGF5UG9saWN5OjpBbGxvdzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJLaXRBdXRvcGxh
eVBvbGljeTo6V0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ6CisgICAgICAgIHBv
bGljaWVzLmF1dG9wbGF5UG9saWN5ID0gV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhv
dXRTb3VuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJLaXRBdXRvcGxheVBvbGljeTo6
V0VCS0lUX0FVVE9QTEFZX0RFTlk6CisgICAgICAgIHBvbGljaWVzLmF1dG9wbGF5UG9saWN5ID0g
V2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZW55OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBwb2xpY2llcy5hdXRvcGxheVBvbGljeSA9IFdlYnNpdGVBdXRvcGxheVBvbGlj
eTo6RGVmYXVsdDsKKyAgICB9CisKKyAgICBnZXRQYWdlKHdlYlZpZXcpLnVwZGF0ZVdlYnNpdGVQ
b2xpY2llcyhXVEZNb3ZlKHBvbGljaWVzKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGMxNTM5Y2MyNzg5ZTBjOTRhYTRhNWIx
ZmQzOGIwZTE1NTNkNTgxMWMuLmJhYTE4OTdlM2QzNzM0MDM5NDdkNWM5YTVjM2E3Y2E5Y2ZiMzFk
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5oCkBAIC0yMDIsNiArMjAyLDIzIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX1dFQl9Q
Uk9DRVNTX0VYQ0VFREVEX01FTU9SWV9MSU1JVAogfSBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRp
b25SZWFzb247CiAKKy8qKgorICogV2ViS2l0QXV0b3BsYXlQb2xpY3k6CisgKiBAV0VCS0lUX0FV
VE9QTEFZX0FMTE9XOiBEbyBub3QgcmVzdHJpY3QgYXV0b3BsYXkuCisgKiBAV0VCS0lUX0FVVE9Q
TEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ6IEFsbG93IHZpZGVvcyB0byBhdXRvcGxheSBpZgorICog
dGhleSBoYXZlIG5vIGF1ZGlvIHRyYWNrLCBvciBpZiB0aGVpciBhdWRpbyB0cmFjayBpcyBtdXRl
ZC4KKyAqIEBXRUJLSVRfQVVUT1BMQVlfREVOWTogTmV2ZXIgYWxsb3cgYXV0b3BsYXkuCisgKgor
ICogRW51bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IGF1dG9wbGF5IHBvbGljaWVzLgorICoKKyAq
IFNpbmNlOiAyLjMwCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0FVVE9QTEFZX0FM
TE9XLAorICAgIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5ELAorICAgIFdFQktJ
VF9BVVRPUExBWV9ERU5ZCit9IFdlYktpdEF1dG9wbGF5UG9saWN5OworCiBzdHJ1Y3QgX1dlYktp
dFdlYlZpZXcgewogICAgIFdlYktpdFdlYlZpZXdCYXNlIHBhcmVudDsKIApAQCAtNTc3LDYgKzU5
NCwxMCBAQCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lucHV0X21ldGhvZF9jb250ZXh0ICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3CiBXRUJLSVRfQVBJIFdlYktpdElucHV0TWV0aG9kQ29udGV4dCAq
CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0ICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X3dlYl92aWV3X3NldF9hdXRvcGxheV9wb2xpY3kgICAgICAgICAgICAgICAgICAoV2Vi
S2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRBdXRvcGxheVBvbGljeSAgICAg
IHBvbGljeSk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0
aW9ucy50eHQKaW5kZXggMWJjNDI3MGM5ZjQwZThmYjhjNGZlNjZjZTZlM2JiNTBiM2ZmOTcxNy4u
NmQ1YTJmMGIyOGEzNTA3NzY5Y2JmOTY1MTcyYWQ1MDA3ZGNhYzJiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25z
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAtc2VjdGlvbnMudHh0CkBAIC0xOTgsNiArMTk4LDcgQEAgV2ViS2l0SW5zZWN1cmVDb250
ZW50RXZlbnQKIFdlYktpdFNuYXBzaG90T3B0aW9ucwogV2ViS2l0U25hcHNob3RSZWdpb24KIFdl
YktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbgorV2ViS2l0QXV0b3BsYXlQb2xpY3kKIAog
PFNVQlNFQ1RJT04gRWRpdGluZyBDb21tYW5kcz4KIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VU
CkBAIC0yODUsNiArMjg2LDcgQEAgd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdl
CiB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiB3ZWJraXRfd2Vi
X3ZpZXdfc2V0X2lucHV0X21ldGhvZF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0
X21ldGhvZF9jb250ZXh0Cit3ZWJraXRfd2ViX3ZpZXdfc2V0X2F1dG9wbGF5X3BvbGljeQogCiA8
U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApp
bmRleCAyYjJkNzhkMWJiNTNhMmZmZGI3MGMyYTRiZGJjODg0YWY2MDM2ZjYwLi4zMGVkZjM2OGUx
ODQ0YjE2Y2FlYzQyODgwZDM1ODhlMDlkODg4MGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAtMTcxLDYgKzE3MSwyMyBAQCB0eXBl
ZGVmIGVudW0gewogICAgIFdFQktJVF9XRUJfUFJPQ0VTU19FWENFRURFRF9NRU1PUllfTElNSVQK
IH0gV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOwogCisvKioKKyAqIFdlYktpdEF1
dG9wbGF5UG9saWN5OgorICogQFdFQktJVF9BVVRPUExBWV9BTExPVzogRG8gbm90IHJlc3RyaWN0
IGF1dG9wbGF5LgorICogQFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EOiBBbGxv
dyB2aWRlb3MgdG8gYXV0b3BsYXkgaWYKKyAqIHRoZXkgaGF2ZSBubyBhdWRpbyB0cmFjaywgb3Ig
aWYgdGhlaXIgYXVkaW8gdHJhY2sgaXMgbXV0ZWQuCisgKiBAV0VCS0lUX0FVVE9QTEFZX0RFTlk6
IE5ldmVyIGFsbG93IGF1dG9wbGF5LgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc3BlY2lm
eSBhdXRvcGxheSBwb2xpY2llcy4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit0eXBlZGVmIGVu
dW0geworICAgIFdFQktJVF9BVVRPUExBWV9BTExPVywKKyAgICBXRUJLSVRfQVVUT1BMQVlfQUxM
T1dfV0lUSE9VVF9TT1VORCwKKyAgICBXRUJLSVRfQVVUT1BMQVlfREVOWQorfSBXZWJLaXRBdXRv
cGxheVBvbGljeTsKKwogLyoqCiAgKiBXZWJLaXRGcmFtZURpc3BsYXllZENhbGxiYWNrOgogICog
QHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CkBAIC01NTQsNiArNTcxLDkgQEAgd2Via2l0X3dl
Yl92aWV3X3NldF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dwogV0VCS0lUX0FQSSBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgKgogd2Via2l0X3dlYl92aWV3
X2dldF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3
X3NldF9hdXRvcGxheV9wb2xpY3kgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAgICp3ZWJfdmlldyk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMu
dHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlv
bnMudHh0CmluZGV4IDBjMmRjNjUxNWM2NmI3OTU3N2E3ZDU4MDdjYTRhMGZiYzVkMDc1MzkuLjcz
M2ZkMzY5NTFmNWVkNzA1MjQyMzBkMmM0ZDhkOTBlNDg4YzA0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50
eHQKQEAgLTE3Miw2ICsxNzIsNyBAQCBXZWJLaXRTYXZlTW9kZQogV2ViS2l0SW5zZWN1cmVDb250
ZW50RXZlbnQKIFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbgogV2ViS2l0RnJhbWVE
aXNwbGF5ZWRDYWxsYmFjaworV2ViS2l0QXV0b3BsYXlQb2xpY3kKIAogPFNVQlNFQ1RJT04gRWRp
dGluZyBDb21tYW5kcz4KIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUCkBAIC0yNTcsNiArMjU4
LDcgQEAgd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlCiB3ZWJraXRfd2ViX3Zp
ZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lucHV0
X21ldGhvZF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0
Cit3ZWJraXRfd2ViX3ZpZXdfc2V0X2F1dG9wbGF5X3BvbGljeQogCiA8U1VCU0VDVElPTiBXZWJL
aXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE3NTU5ZTY2NWNlYWIxOGI3
MDBlNmNmOTE5OGVlZTY2NDVmZWIzYjUuLjM2YjAyNjMzNGUxZDUzYWI0M2JmZDdkMjlkZGU1NzZm
YWUyNTA3NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0wNS0yNCAgQ2hhcmxpZSBUdXJuZXIgIDxjdHVybmVy
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRGlzYWJsZSB2aWRlbyBhdXRvcGxheQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0ODQ1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoSXNQ
bGF5aW5nQXVkaW9XZWJWaWV3VGVzdDo6aXNQbGF5aW5nQXVkaW9DaGFuZ2VkKTogTW92ZSB0byBt
YXRjaAorICAgICAgICBwYXR0ZXJuIGluIHJlc3Qgb2YgZmlsZS4KKyAgICAgICAgKElzUGxheWlu
Z0F1ZGlvV2ViVmlld1Rlc3Q6OndhaXRVbnRpbElzUGxheWluZ0F1ZGlvQ2hhbmdlZCk6IFdoaXRl
c3BhY2UuCisgICAgICAgIChBdXRvcGxheVBvbGljeVRlc3Q6OnRlc3RIYW5kbGVyTWVzc2FnZVJl
Y2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAoQXV0b3BsYXlQb2xpY3lUZXN0OjpBdXRvcGxheVBv
bGljeVRlc3QpOgorICAgICAgICAoQXV0b3BsYXlQb2xpY3lUZXN0Ojpsb2FkUmVzb3VyY2VXaXRo
UG9saWN5KToKKyAgICAgICAgKEF1dG9wbGF5UG9saWN5VGVzdDo6cmVzdW1lV2l0aFBvbGljeSk6
CisgICAgICAgIChBdXRvcGxheVBvbGljeVRlc3Q6OmRpZEF1dG9wbGF5KToKKyAgICAgICAgKHRl
c3RXZWJWaWV3QXV0b3BsYXlQb2xpY2llcyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcDoKKyAgICAg
ICAgKHF1aXRJZkV4cGVjdGVkTG9hZEV2ZW50KTogUmVmYWN0b3IgdG8gd2FpdCBvbiBtb3JlIGxv
YWQgZXZlbnRzLgorICAgICAgICAoV2ViVmlld1Rlc3Q6OndhaXRVbnRpbExvYWRFdmVudCk6Cisg
ICAgICAgIChXZWJWaWV3VGVzdDo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFdl
YlZpZXdUZXN0Ojp3YWl0VW50aWxMb2FkQ29tbWl0dGVkKToKKyAgICAgICAgKGxvYWRDaGFuZ2Vk
KTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJW
aWV3VGVzdC5oOgorCiAyMDIwLTA1LTEzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbRmxhdHBhayBTREtdIFByb3BlciBoYW5kbGluZyBvZiBzY2Nh
Y2hlIHNjaGVkdWxlciBVUkwgY29tbWFuZC1saW5lIGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNw
cAppbmRleCA3N2Y3NjE3MmU5MmZkOWE5MDY1YWU1ZmZiMmY4MjFlZDY3YmJiZDAxLi5jYTlmY2Jl
ZjYxODc4ZDJiM2RkZDgyOGE1NDg2ZTQwODNjODVhZWE1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAK
QEAgLTI0LDIzICsyNCw2IEBACiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9HUmVmUHRyLmg+CiAKLWNsYXNzIElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3QgOiBw
dWJsaWMgV2ViVmlld1Rlc3QgewotcHVibGljOgotICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUo
SXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBpc1BsYXlpbmdB
dWRpb0NoYW5nZWQoR09iamVjdCosIEdQYXJhbVNwZWMqLCBJc1BsYXlpbmdBdWRpb1dlYlZpZXdU
ZXN0KiB0ZXN0KQotICAgIHsKLSAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9i
eV9mdW5jKHRlc3QtPm1fd2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oaXNQbGF5aW5n
QXVkaW9DaGFuZ2VkKSwgdGVzdCk7Ci0gICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9t
YWluTG9vcCk7Ci0gICAgfQotCi0gICAgdm9pZCB3YWl0VW50aWxJc1BsYXlpbmdBdWRpb0NoYW5n
ZWQoKQotICAgIHsKLSAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJub3RpZnk6
OmlzLXBsYXlpbmctYXVkaW8iLCBHX0NBTExCQUNLKGlzUGxheWluZ0F1ZGlvQ2hhbmdlZCksIHRo
aXMpOwotICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7Ci0gICAgfQotfTsKLQog
c3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGdTZXJ2ZXI7CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3V2ViQ29udGV4dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTExMDQs
NiArMTA4NywyMyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05vdGlmaWNhdGlvbkluaXRpYWxQ
ZXJtaXNzaW9uRGlzYWxsb3dlZChOb3RpZmljYXRpb25XZWJWaQogfQogI2VuZGlmIC8vIEVOQUJM
RShOT1RJRklDQVRJT05TKQogCitjbGFzcyBJc1BsYXlpbmdBdWRpb1dlYlZpZXdUZXN0IDogcHVi
bGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKElz
UGxheWluZ0F1ZGlvV2ViVmlld1Rlc3QpOworCisgICAgc3RhdGljIHZvaWQgaXNQbGF5aW5nQXVk
aW9DaGFuZ2VkKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVz
dCogdGVzdCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlf
ZnVuYyh0ZXN0LT5tX3dlYlZpZXcsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlzUGxheWluZ0F1
ZGlvQ2hhbmdlZCksIHRlc3QpOworICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFp
bkxvb3ApOworICAgIH0KKworICAgIHZvaWQgd2FpdFVudGlsSXNQbGF5aW5nQXVkaW9DaGFuZ2Vk
KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibm90aWZ5Ojpp
cy1wbGF5aW5nLWF1ZGlvIiwgR19DQUxMQkFDSyhpc1BsYXlpbmdBdWRpb0NoYW5nZWQpLCB0aGlz
KTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KK307CisKIHN0
YXRpYyB2b2lkIHRlc3RXZWJWaWV3SXNQbGF5aW5nQXVkaW8oSXNQbGF5aW5nQXVkaW9XZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICNpZiBQTEFURk9STShHVEspCkBAIC0xMzMx
LDYgKzEzMzEsODcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGcmFtZURpc3BsYXllZChGcmFt
ZURpc3BsYXllZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB9CiAjZW5kaWYKIAorY2xhc3Mg
QXV0b3BsYXlQb2xpY3lUZXN0IDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBN
QUtFX0dMSUJfVEVTVF9GSVhUVVJFKEF1dG9wbGF5UG9saWN5VGVzdCk7CisKKyAgICBzdGF0aWMg
dm9pZCB0ZXN0SGFuZGxlck1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKFdlYktpdFVzZXJDb250ZW50
TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZh
c2NyaXB0UmVzdWx0LCBBdXRvcGxheVBvbGljeVRlc3QqIHRlc3QpCisgICAgeworICAgICAgICBH
VW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0
VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICAgICAgaWYgKGdfc3RyX2VxdWFsKHZh
bHVlU3RyaW5nLmdldCgpLCAiYXV0b3BsYXllZCIpKQorICAgICAgICAgICAgdGVzdC0+bV9hdXRv
cGxheWVkID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAoZ19zdHJfZXF1YWwodmFsdWVTdHJpbmcu
Z2V0KCksICJkaWQtbm90LXBsYXkiKSkKKyAgICAgICAgICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9
IGZhbHNlOworCisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7Cisg
ICAgfQorCisgICAgQXV0b3BsYXlQb2xpY3lUZXN0KCkKKyAgICAgICAgOiBXZWJWaWV3VGVzdCgp
CisgICAgeworICAgICAgICB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2Ny
aXB0X21lc3NhZ2VfaGFuZGxlcihtX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgInRlc3RIYW5k
bGVyIik7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV91c2VyQ29udGVudE1hbmFnZXIuZ2V0
KCksICJzY3JpcHQtbWVzc2FnZS1yZWNlaXZlZDo6dGVzdEhhbmRsZXIiLCBHX0NBTExCQUNLKHRl
c3RIYW5kbGVyTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICB9CisKKyAgICB2
b2lkIGxvYWRSZXNvdXJjZVdpdGhQb2xpY3koY29uc3QgY2hhciogcmVzb3VyY2VOYW1lLCBXZWJL
aXRBdXRvcGxheVBvbGljeSBwb2xpY3kpCisgICAgeworICAgICAgICBtX2F1dG9wbGF5ZWQgPSBX
VEY6Om51bGxvcHQ7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VQYXRoKGdfYnVp
bGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKFRlc3Q6OldlYktpdDJSZXNvdXJjZXMp
LmRhdGEoKSwgcmVzb3VyY2VOYW1lLCBudWxscHRyKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hh
cj4gcmVzb3VyY2VVUkwoZ19maWxlbmFtZV90b191cmkocmVzb3VyY2VQYXRoLmdldCgpLCBudWxs
cHRyLCBudWxscHRyKSk7CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaShtX3dlYlZp
ZXcsIHJlc291cmNlVVJMLmdldCgpKTsKKyAgICAgICAgd2FpdFVudGlsTG9hZENvbW1pdHRlZCgp
OworICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2F1dG9wbGF5X3BvbGljeShtX3dlYlZpZXcs
IHBvbGljeSk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICB9CisK
KyAgICB2b2lkIHJlc3VtZVdpdGhQb2xpY3koV2ViS2l0QXV0b3BsYXlQb2xpY3kgcG9saWN5KQor
ICAgIHsKKyAgICAgICAgbV9hdXRvcGxheWVkID0gV1RGOjpudWxsb3B0OworICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X2F1dG9wbGF5X3BvbGljeShtX3dlYlZpZXcsIHBvbGljeSk7CisgICAg
ICAgIHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgicGxheVZpZGVvKCk7IiwgbnVs
bHB0cik7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICB9CisKKyAg
ICBib29sIGRpZEF1dG9wbGF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2F1dG9wbGF5ZWQg
JiYgKm1fYXV0b3BsYXllZDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgT3B0aW9uYWw8Ym9vbD4g
bV9hdXRvcGxheWVkOworfTsKKworc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRvcGxheVBvbGlj
aWVzKEF1dG9wbGF5UG9saWN5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyNpZiBQTEFU
Rk9STShHVEspCisgICAgLy8gVGhlIHdlYiB2aWV3IG11c3QgYmUgcmVhbGl6ZWQgZm9yIHRoZSB2
aWRlbyB0byBzdGFydCBwbGF5YmFjay4KKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50
aWxNYXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisjZW5kaWYKKyAgICB0ZXN0LT5sb2FkUmVz
b3VyY2VXaXRoUG9saWN5KCJhdXRvcGxheS1jaGVjay5odG1sIiwgV0VCS0lUX0FVVE9QTEFZX0FM
TE9XKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworICAgIHRlc3Qt
PmxvYWRSZXNvdXJjZVdpdGhQb2xpY3koImF1dG9wbGF5LWNoZWNrLmh0bWwiLCBXRUJLSVRfQVVU
T1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+ZGlk
QXV0b3BsYXkoKSk7CisgICAgdGVzdC0+bG9hZFJlc291cmNlV2l0aFBvbGljeSgiYXV0b3BsYXkt
Y2hlY2suaHRtbCIsIFdFQktJVF9BVVRPUExBWV9ERU5ZKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0
ZXN0LT5kaWRBdXRvcGxheSgpKTsKKyAgICB0ZXN0LT5sb2FkUmVzb3VyY2VXaXRoUG9saWN5KCJh
dXRvcGxheS1jaGVjay5odG1sIiwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworCisgICAgdGVzdC0+bG9hZFJlc291cmNlV2l0
aFBvbGljeSgiYXV0b3BsYXktbm8tYXVkaW8tY2hlY2suaHRtbCIsIFdFQktJVF9BVVRPUExBWV9B
TExPVyk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKyAgICB0ZXN0
LT5sb2FkUmVzb3VyY2VXaXRoUG9saWN5KCJhdXRvcGxheS1uby1hdWRpby1jaGVjay5odG1sIiwg
V0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQpOworICAgIGdfYXNzZXJ0X3RydWUo
dGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisgICAgdGVzdC0+bG9hZFJlc291cmNlV2l0aFBvbGljeSgi
YXV0b3BsYXktbm8tYXVkaW8tY2hlY2suaHRtbCIsIFdFQktJVF9BVVRPUExBWV9ERU5ZKTsKKyAg
ICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKyAgICB0ZXN0LT5sb2FkUmVz
b3VyY2VXaXRoUG9saWN5KCJhdXRvcGxheS1uby1hdWRpby1jaGVjay5odG1sIiwgV0VCS0lUX0FV
VE9QTEFZX0FMTE9XKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOwor
CisgICAgLy8gVGVzdCB1cGRhdGluZyB0aGUgYXV0b3BsYXkgcG9saWNpZXMKKyAgICB0ZXN0LT5s
b2FkUmVzb3VyY2VXaXRoUG9saWN5KCJhdXRvcGxheS1jaGVjay5odG1sIiwgV0VCS0lUX0FVVE9Q
TEFZX0FMTE9XX1dJVEhPVVRfU09VTkQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmRpZEF1
dG9wbGF5KCkpOworICAgIHRlc3QtPnJlc3VtZVdpdGhQb2xpY3koV0VCS0lUX0FVVE9QTEFZX0FM
TE9XKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworfQorCiBzdGF0
aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQq
LCBncG9pbnRlcikKIHsKICAgICBpZiAobWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dF
VCkgewpAQCAtMTM4OSw2ICsxNDcwLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogI2lmIFBMQVRGT1JN
KFdQRSkKICAgICBGcmFtZURpc3BsYXllZFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJmcmFt
ZS1kaXNwbGF5ZWQiLCB0ZXN0V2ViVmlld0ZyYW1lRGlzcGxheWVkKTsKICNlbmRpZgorICAgIEF1
dG9wbGF5UG9saWN5VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImF1dG9wbGF5LXBvbGljaWVz
IiwgdGVzdFdlYlZpZXdBdXRvcGxheVBvbGljaWVzKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVz
dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5j
cHAKaW5kZXggOGUzZjM0OGQ4YWI1MTRkNDc4M2VjYjFhYWVhM2JiZDIzMDI3YTliZS4uYTJjY2Uy
NTc1YzBmMWI3ZTFkZTI4NGNlOGVhMzY1YWNiZTA0MTIxNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMTg1LDIwICsx
ODUsMzEgQEAgdm9pZCBXZWJWaWV3VGVzdDo6d2FpdChkb3VibGUgc2Vjb25kcykKICAgICBnX21h
aW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvYWRDaGFuZ2VkKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsIFdlYlZpZXdU
ZXN0KiB0ZXN0KQorc3RhdGljIHZvaWQgcXVpdElmRXhwZWN0ZWRMb2FkRXZlbnQoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCwgV2ViVmlld1Rlc3QqIHRl
c3QpCiB7Ci0gICAgaWYgKGxvYWRFdmVudCAhPSBXRUJLSVRfTE9BRF9GSU5JU0hFRCkKKyAgICBp
ZiAobG9hZEV2ZW50ICE9IHRlc3QtPm1fZXhwZWN0ZWRMb2FkRXZlbnQpCiAgICAgICAgIHJldHVy
bjsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4obG9hZENoYW5nZWQpLCB0ZXN0KTsKKyAgICBnX3NpZ25hbF9o
YW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4ocXVpdElmRXhwZWN0ZWRMb2FkRXZlbnQpLCB0ZXN0KTsKICAgICBnX21haW5fbG9vcF9xdWl0
KHRlc3QtPm1fbWFpbkxvb3ApOwogfQogCi12b2lkIFdlYlZpZXdUZXN0Ojp3YWl0VW50aWxMb2Fk
RmluaXNoZWQoKQordm9pZCBXZWJWaWV3VGVzdDo6d2FpdFVudGlsTG9hZEV2ZW50KFdlYktpdExv
YWRFdmVudCBldmVudCkKIHsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImxvYWQt
Y2hhbmdlZCIsIEdfQ0FMTEJBQ0sobG9hZENoYW5nZWQpLCB0aGlzKTsKKyAgICBtX2V4cGVjdGVk
TG9hZEV2ZW50ID0gZXZlbnQ7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJsb2Fk
LWNoYW5nZWQiLCBHX0NBTExCQUNLKHF1aXRJZkV4cGVjdGVkTG9hZEV2ZW50KSwgdGhpcyk7CiAg
ICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogfQogCit2b2lkIFdlYlZpZXdUZXN0Ojp3
YWl0VW50aWxMb2FkRmluaXNoZWQoKQoreworICAgIHdhaXRVbnRpbExvYWRFdmVudChXRUJLSVRf
TE9BRF9GSU5JU0hFRCk7Cit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OndhaXRVbnRpbExvYWRDb21t
aXR0ZWQoKQoreworICAgIHdhaXRVbnRpbExvYWRFdmVudChXRUJLSVRfTE9BRF9DT01NSVRURUQp
OworfQorCiBzdGF0aWMgdm9pZCB0aXRsZUNoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
R1BhcmFtU3BlYyosIFdlYlZpZXdUZXN0KiB0ZXN0KQogewogICAgIGlmICghdGVzdC0+bV9leHBl
Y3RlZFRpdGxlLmlzTnVsbCgpICYmIHRlc3QtPm1fZXhwZWN0ZWRUaXRsZSAhPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3RpdGxlKHdlYlZpZXcpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKaW5kZXggYzNmZGQ5ODI1ODkxMWI1ZWNiZjMxMGM5
YWVjZTRiYzg1M2FjZjUwYi4uNGUyNTk3ZGI1ZmZiODU0Njc5YTQ0NzA0MGY1ZWYzNWNiODcwM2Q5
OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmll
d1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3
VGVzdC5oCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHF1aXRNYWluTG9vcCgp
OwogICAgIHZvaWQgcXVpdE1haW5Mb29wQWZ0ZXJQcm9jZXNzaW5nUGVuZGluZ0V2ZW50cygpOwog
ICAgIHZvaWQgd2FpdChkb3VibGUgc2Vjb25kcyk7CisgICAgdm9pZCB3YWl0VW50aWxMb2FkRXZl
bnQoV2ViS2l0TG9hZEV2ZW50KTsKKyAgICB2b2lkIHdhaXRVbnRpbExvYWRDb21taXR0ZWQoKTsK
ICAgICB2b2lkIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIHZvaWQgd2FpdFVudGlsVGl0
bGVDaGFuZ2VkVG8oY29uc3QgY2hhciogZXhwZWN0ZWRUaXRsZSk7CiAgICAgdm9pZCB3YWl0VW50
aWxUaXRsZUNoYW5nZWQoKTsKQEAgLTExMSw2ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90
IG1fcmVzb3VyY2VEYXRhU2l6ZSB7IDAgfTsKICAgICBjYWlyb19zdXJmYWNlX3QqIG1fc3VyZmFj
ZSB7IG51bGxwdHIgfTsKICAgICBib29sIG1fZXhwZWN0ZWRXZWJQcm9jZXNzQ3Jhc2ggeyBmYWxz
ZSB9OworICAgIFdlYktpdExvYWRFdmVudCBtX2V4cGVjdGVkTG9hZEV2ZW50OwogCiAjaWYgUExB
VEZPUk0oR1RLKQogICAgIEd0a1dpZGdldCogbV9wYXJlbnRXaW5kb3cgeyBudWxscHRyIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400823</attachid>
            <date>2020-06-02 08:27:24 -0700</date>
            <delta_ts>2020-06-02 16:38:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20200602162723.patch</filename>
            <type>text/plain</type>
            <size>50321</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDdiZDZkMGY0NTE5Y2Qx
YzY4ZWUxOTAzN2E2ZTgwMzEzNDhmN2Y4MS4uNDJiM2YzMWVjMjZiNDJlYzZmNWE2ZWQ4NjU0Mjgw
ZWZlNzE3NDk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA2LTAyICBDaGFy
bGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBEaXNhYmxl
IHZpZGVvIGF1dG9wbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ4NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3VyLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UpOiBNb2Rlcm5pemUgc3R5bGUuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRvcGxheSk6IEFk
ZCBhIG5vdGUgdG8KKyAgICAgICAgcmVmYWN0b3IgYmVoYXZpb3VyIHJlc3RyaWN0aW9uIGxvZ2lj
IGludG8gTWVkaWFFbGVtZW50U2Vzc2lvbi4KKwogMjAyMC0wNS0yOSAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEpTQmlnSW50IGFsbG9jYXRpb24g
c2hvdWxkIGJlIGdyYWNlZnVsIGZvciBPT00KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzg1Mjk1ZjM5Y2JmMDgxMGVh
ZjNkODI4NzE2NzRjZTE2NzllMDBjNi4uMzc4NDE0ZjFmZDg5YjEwMWJiZTFmMTQ5NzFmYWQ5NDAy
YWI3M2Y5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAyMC0wNi0wMiAgQ2hhcmxpZSBU
dXJuZXIgIDxjdHVybmVyQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRGlzYWJsZSB2aWRl
byBhdXRvcGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg0ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwOgorICAgICAg
ICAod2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcyk6IEFkZCBhbiBBUEkg
dG8gcmVzcG9uZAorICAgICAgICB0byBuYXZpZ2F0aW9uIGRlY2lzaW9ucyB3aXRoIHBvbGljaWVz
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAg
ICAgICAgKHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyk6IFBsdW1iIGluIHRo
ZSBkZWZhdWx0CisgICAgICAgIHdlYnNpdGUgcG9saWNpZXMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3
aXRoIHRoZSB3ZWIgdmlldy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlldy5jcHA6IEFkZCBhIGNvbnN0cnVjdCBvbmx5CisgICAgICAgIGRlZmF1bHQgd2Vic2l0ZSBw
b2xpY3kgZmllbGQgdG8gdGhlIHZpZXcuIFRoaXMgd2lsbCBiZSB1c2VkIHdoZW4KKyAgICAgICAg
Y3JlYXRpbmcgd2ViIHZpZXdzIGluIHRoZSB3ZWIgY29udGV4dC4KKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkpOgor
ICAgICAgICAod2Via2l0V2ViVmlld0dldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdEaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdCk6IFVzZXIgZ2VzdHVyZXMgd2VyZSBi
ZWluZworICAgICAgICBhcnRpZmljaWFsbHkgZm9yY2VkIG9uIGluIHRoaXMgQVBJLCBzbyBpZiB5
b3UgcmVzdW1lZCBhIHZpZGVvIGZyb20KKyAgICAgICAgSlMsIHRoZSBhY3RpdmUgYXV0b3BsYXkg
cG9saWN5IHdvdWxkIGVzc2VudGlhbGx5IGJlIGlnbm9yZWQuIFRoaXMKKyAgICAgICAgZG9lc24n
dCBzZWVtIGxpa2UgdGhlIHJpZ2h0IGJlaGF2aW91ciwgYW5kIGlmIHlvdSB3YW50IGl0LCB3ZQor
ICAgICAgICBzaG91bGQgZXhwb3NlIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHRvIHRoZSBBUEkg
dXNlcnMgdG8gdG9nZ2xlCisgICAgICAgIGRlZmF1bHRzLiBXaXRob3V0IHRoaXMgY2hhbmdlLCBp
dCdzIG5vdCBwb3NzaWJsZSBmb3IgbWUgdG8gdGVzdAorICAgICAgICB0aGUgQVBJIHdvcmtzIGFz
IGludGVuZGVkIHdoZW4gSlMgYXR0ZW1wdCB0byBhdXRvcGxheSB2aWRlb3MgdGhhdAorICAgICAg
ICB0aGUgdXNlciBkb2VzIG5vdCB3YW50IHRvIGF1dG9wbGF5LiBUaGUgcGFyYW1ldGVycyBhcmUg
ZmFjdG9yZWQKKyAgICAgICAgb3V0IG9mIHRoZSBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUgY2Fs
bCwgc2luY2UgaXQgd2FzIGdldHRpbmcKKyAgICAgICAgaGFyZCB0byByZWFkLgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3VwZGF0ZV93ZWJzaXRlX3BvbGljaWVzKTogQWRkIGFuIEFQSSB0byB1
cGRhdGUKKyAgICAgICAgdGhlIHZpZXcncyBhY3RpdmUgcG9saWNpZXMgZHluYW1pY2FsbHkuIFlv
dSBtdXN0IGJlIGNhcmVmdWwgdG8KKyAgICAgICAgY2FsbCB0aGlzIGFmdGVyIGNvbW1pdHRhbCBh
bmQgYmVmb3JlIGxvYWQsIG90aGVyd2lzZSBpdCB3b24ndAorICAgICAgICBzdGljay4KKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0d0ay5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhf
cmVsYXRlZF92aWV3KTogQ29weSBvdmVyIHRoZSBkZWZhdWx0CisgICAgICAgIHdlYnNpdGUgcG9s
aWNpZXMgYXMgd2VsbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS0xLjAtc2VjdGlvbnMudHh0OgorCiAyMDIwLTA1LTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJEcml2ZXI6IHN0b3AgdXNp
bmcgR2RrRXZlbnQgQVBJIGluIHByZXBhcmF0aW9uIGZvciBHVEs0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAxMWUzZjIzMGUwMjIzY2JkYjUxMWI1MjNiZGYz
N2ZjMTI5YWM2NGNmLi4xYjc3NjMxOTJlYzNiNDhhOGFmOWJlYjA4ZjFjYzM5ZWM1NGJjNmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTc3MTIsNyArNzcx
Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKQog
ewogICAgIHVwZGF0ZVZvbHVtZSgpOwogCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgp
LnBhZ2UoKSkgeworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpIHsKICAg
ICAgICAgaWYgKGhhc0F1ZGlvKCkgJiYgIW11dGVkKCkgJiYgcGFnZS0+aXNBdWRpb011dGVkKCkp
CiAgICAgICAgICAgICB1c2VyRGlkSW50ZXJmZXJlV2l0aEF1dG9wbGF5KCk7CiAgICAgfQpAQCAt
Nzg4NCw2ICs3ODg0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRv
cGxheSgpCiAgICAgaWYgKCFhdXRvcGxheSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBG
SVhNRTogQWxsIHRoaXMgaXMgbWVkaWEgc2Vzc2lvbiBzcGVjaWZpYywgcHV0IGl0IGluIHRoYXQg
Y2xhc3MgaW5zdGVhZC4KICAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5oYXNCZWhhdmlvclJlc3Ry
aWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OkludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVk
KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
R1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBiOTQ1MjJj
OGZjYTBhZjg4NmZlZmQyY2U0Yzk4MmU0MDc3MTVkNTZiLi5mZDk0M2ZmNWE1ZmVhMDY5NWM0NGRi
Zjk4ZGRmYWQwNDBmM2VjMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE0MCw2ICsx
NDAsNyBAQCBzZXQoV2ViS2l0MkdUS19JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaAogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKICAgICAke1dF
QktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuaAorICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgK
ICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAogKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzR1RLLnR4dAppbmRleCAyZDVhYWM5NTNhYmVmMjNlYTVkMDIzM2FkMGE1YmU5YWE1OTg1Yjhl
Li4xY2YyNzdjOTU1OTJiMTczODE5ZTk0MmE3OTllNzZhOGQxMDFkODg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dU
Sy50eHQKQEAgLTE5Miw2ICsxOTIsNyBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
d1Nlc3Npb25TdGF0ZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGEuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVE
YXRhTWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2luZG93
UHJvcGVydGllcy5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZVBvbGljaWVzLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0
azMuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwIEBu
by11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0UG9saWN5RGVjaXNpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0UG9saWN5RGVjaXNpb24uY3BwCmluZGV4IGEzNTc0NzkzYzY5ZWQwNzY4M2E2MDNlNjI5
ZjQwOTExZjc1YmNhM2EuLmJiZjc3MTZjYTIzMTZjMjMwN2FmOGE4MDMyOTFhNTQ4MzI2Y2Q5MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFBvbGlj
eURlY2lzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRQb2xpY3lEZWNpc2lvbi5jcHAKQEAgLTIwLDggKzIwLDExIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9saWN5RGVjaXNpb24uaCIKIAorI2luY2x1ZGUgIkFQSVdl
YnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5o
IgogI2luY2x1ZGUgIldlYktpdFBvbGljeURlY2lzaW9uUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldl
YktpdFdlYnNpdGVQb2xpY2llcy5oIgorI2luY2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llc1By
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAjaW5jbHVkZSA8d3Rm
L2dsaWIvV1RGR1R5cGUuaD4KIApAQCAtODQsNiArODcsMzAgQEAgdm9pZCB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX3VzZShXZWJLaXRQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCiAgICAgbGlzdGVu
ZXItPnVzZSgpOwogfQogCisvKioKKyAqIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhf
cG9saWNpZXM6CisgKiBAZGVjaXNpb246IGEgI1dlYktpdFBvbGljeURlY2lzaW9uCisgKiBAcG9s
aWNpZXM6IGEgI1dlYktpdFdlYnNpdGVQb2xpY2llcworICoKKyAqIEFjY2VwdCB0aGUgYWN0aW9u
IHdoaWNoIHRyaWdnZXJlZCB0aGlzIGRlY2lzaW9uLCBhbmQgY29udGludWUgd2l0aAorICogQHBv
bGljaWVzIGFmZmVjdGluZyBzdWJzZXF1ZW50IGxvYWRzLgorICoKKyAqIEZvciBleGFtcGxlLCBh
IG5hdmlnYXRpb24gZGVjaWNpb24gdG8gYSB2aWRlbyBzaGFyaW5nIHdlYnNpdGUgbWF5CisgKiBi
ZSBhY2NlcHRlZCB1bmRlciB0aGUgcHJpdmlzbyBubyBtb3ZpZXMgYXJlIGFsbG93ZWQgdG8gYXV0
b3BsYXkuIFRoZQorICogYXV0b3BsYXkgcG9saWN5IGluIHRoaXMgY2FzZSB3b3VsZCBiZSBzZXQg
aW4gdGhlIEBwb2xpY2llcy4KKyAqLwordm9pZCB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZV93
aXRoX3BvbGljaWVzKFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lvbiwgV2ViS2l0V2Vic2l0
ZVBvbGljaWVzICpwb2xpY2llcykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19Q
T0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKworICAgIGlmICghZGVjaXNpb24tPnByaXYtPmxp
c3RlbmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxpc3RlbmVyID0gc3RkOjpleGNo
YW5nZShkZWNpc2lvbi0+cHJpdi0+bGlzdGVuZXIsIG51bGxwdHIpOworCisgICAgbGlzdGVuZXIt
PnVzZSh3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRBUElUeXBlKHBvbGljaWVzKSk7Cit9CisKIC8q
KgogICogd2Via2l0X3BvbGljeV9kZWNpc2lvbl9pZ25vcmU6CiAgKiBAZGVjaXNpb246IGEgI1dl
YktpdFBvbGljeURlY2lzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDcyMjJhOTFjYjk1YTVlMzcwZjkyMjll
ZTY0MjVlNDEyYjVmOGIwNzguLmJkZjM4NWJjZDZlNTdkYzA2MzJlZTMzMDFmNjdlYmNhODAzNGY1
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYkNvbnRleHQuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29u
dGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJzaXRlUG9saWNpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
VVJMU2NoZW1lSGFuZGxlci5oIgpAQCAtMTg5Nyw3ICsxODk4LDcgQEAgV2ViUHJvY2Vzc1Bvb2wm
IHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0
KQogICAgIHJldHVybiAqY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2w7CiB9CiAKLXZvaWQgd2Vi
a2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRl
eHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNl
ckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykKK3ZvaWQgd2Via2l0
V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQs
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNv
bnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldywgV2ViS2l0V2Vic2l0ZVBv
bGljaWVzICpkZWZhdWx0V2Vic2l0ZVBvbGljaWVzKQogewogICAgIGF1dG8gcGFnZUNvbmZpZ3Vy
YXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wuZ2V0KCkp
OwpAQCAtMTkxMCw2ICsxOTExLDcgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZv
cldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmkKICAgICBpZiAo
IW1hbmFnZXIpCiAgICAgICAgIG1hbmFnZXIgPSBjb250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1h
bmFnZXIuZ2V0KCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFdlYnNpdGVEYXRhU3RvcmUo
JndlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShtYW5hZ2VyKSk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldERlZmF1bHRXZWJzaXRlUG9saWNpZXMod2Via2l0V2Vic2l0ZVBv
bGljaWVzR2V0QVBJVHlwZShkZWZhdWx0V2Vic2l0ZVBvbGljaWVzKSk7CiAgICAgd2Via2l0V2Vi
Vmlld0NyZWF0ZVBhZ2Uod2ViVmlldywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAg
ICAgYXV0byYgcGFnZSA9IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHRQ
cml2YXRlLmgKaW5kZXggZDg1NjljODU5YmFiZmUxMTY5YzY4MmViNjg2MzY2ZTNkMDY5YjlhZC4u
NzhkMTU3OGY5NDc5M2U5ZTU5YTNkNGQyYjMzZTc5ZWE4NTMwZmEwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJp
dmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAK
QEAgLTM2LDcgKzM3LDcgQEAgV2ViS2l0RG93bmxvYWQqIHdlYmtpdFdlYkNvbnRleHRHZXRPckNy
ZWF0ZURvd25sb2FkKFdlYktpdDo6RG93bmxvYWRQcm94eSopOwogV2ViS2l0RG93bmxvYWQqIHdl
YmtpdFdlYkNvbnRleHRTdGFydERvd25sb2FkKFdlYktpdFdlYkNvbnRleHQqLCBjb25zdCBjaGFy
KiB1cmksIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRSZW1v
dmVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4
dERvd25sb2FkU3RhcnRlZChXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0RG93bmxvYWQqKTsKLXZv
aWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQq
LCBXZWJLaXRXZWJWaWV3KiwgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiwgV2ViS2l0V2ViVmll
dyopOwordm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2Vi
Q29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJL
aXRXZWJWaWV3KiwgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKik7CiB2b2lkIHdlYmtpdFdlYkNvbnRl
eHRXZWJWaWV3RGVzdHJveWVkKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3Kik7CiBX
ZWJLaXRXZWJWaWV3KiB3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UoV2ViS2l0V2Vi
Q29udGV4dCosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiBHVmFyaWFudCogd2Via2l0V2ViQ29u
dGV4dEluaXRpYWxpemVXZWJFeHRlbnNpb25zKFdlYktpdFdlYkNvbnRleHQqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXgg
ZTQwNDVjMzY3MDY1NzVjYzdkYjlmOTg3MTFlZmQ2OTAwNGEyYTNmMC4uYmFlMTFlMzdlZmY0ODM4
MWI1MTQzYWIwMDg4MDllNTM3NGQ0ZjllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdTZXNz
aW9uU3RhdGVQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KQEAgLTIwMCw3
ICsyMDEsOCBAQCBlbnVtIHsKICAgICBQUk9QX0FVVE9NQVRJT05fUFJFU0VOVEFUSU9OX1RZUEUs
CiAgICAgUFJPUF9FRElUQUJMRSwKICAgICBQUk9QX1BBR0VfSUQsCi0gICAgUFJPUF9JU19NVVRF
RAorICAgIFBST1BfSVNfTVVURUQsCisgICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTCiB9OwogCiB0
eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQdHI8V2ViS2l0V2ViUmVzb3VyY2U+ID4gTG9h
ZGluZ1Jlc291cmNlc01hcDsKQEAgLTMwMiw2ICszMDQsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXdQcml2YXRlIHsKICAgICBHUmVmUHRyPFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdD4gYXV0
aGVudGljYXRpb25SZXF1ZXN0OwogCiAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXI+IHdlYnNpdGVEYXRhTWFuYWdlcjsKKyAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVQb2xpY2ll
cz4gd2Vic2l0ZVBvbGljaWVzOwogfTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdO
QUxdID0geyAwLCB9OwpAQCAtNzU1LDcgKzc1OCwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgICAgICB3ZWJraXRXZWJzaXRlRGF0
YU1hbmFnZXJBZGRQcm9jZXNzUG9vbChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCksIHdl
YmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbChwcml2LT5jb250ZXh0LmdldCgpKSk7CiAgICAg
fQogCi0gICAgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRl
eHQuZ2V0KCksIHdlYlZpZXcsIHByaXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+
cmVsYXRlZFZpZXcpOworICAgIGlmICghcHJpdi0+d2Vic2l0ZVBvbGljaWVzKQorICAgICAgICBw
cml2LT53ZWJzaXRlUG9saWNpZXMgPSBhZG9wdEdSZWYod2Via2l0X3dlYnNpdGVfcG9saWNpZXNf
bmV3KCkpOworCisgICAgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYt
PmNvbnRleHQuZ2V0KCksIHdlYlZpZXcsIHByaXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwg
cHJpdi0+cmVsYXRlZFZpZXcsIHByaXYtPndlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiAKICAgICBw
cml2LT5sb2FkT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2Vi
Vmlldyk7CiAgICAgZ2V0UGFnZSh3ZWJWaWV3KS5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIo
KnByaXYtPmxvYWRPYnNlcnZlcik7CkBAIC04MzgsNiArODQ0LDExIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHVlCiAgICAgY2FzZSBQUk9QX0lTX01VVEVEOgogICAgICAgICB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X2lzX211dGVkKHdlYlZpZXcsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dFQlNJVEVfUE9MSUNJRVM6IHsKKyAgICAgICAg
Z3BvaW50ZXIgd2Vic2l0ZVBvbGljaWVzID0gZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKTsKKyAg
ICAgICAgd2ViVmlldy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzID0gd2Vic2l0ZVBvbGljaWVzID8g
V0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMod2Vic2l0ZVBvbGljaWVzKSA6IG51bGxwdHI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lO
VkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAt
OTAzLDYgKzkxNCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0lT
X01VVEVEOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2lzX211dGVkKHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X1dFQlNJVEVfUE9MSUNJRVM6CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Vi
a2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZ
X0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOwogICAgIH0KQEAgLTkzNCw2ICs5NDgsOCBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiAgICAg
ICAgIHdlYlZpZXctPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlciA9IG51bGxwdHI7CiAgICAgfQog
CisgICAgd2ViVmlldy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzID0gbnVsbHB0cjsKKwogICAgIGlm
ICh3ZWJWaWV3LT5wcml2LT5jdXJyZW50U2NyaXB0RGlhbG9nKSB7CiAgICAgICAgIHdlYmtpdF9z
Y3JpcHRfZGlhbG9nX2Nsb3NlKHdlYlZpZXctPnByaXYtPmN1cnJlbnRTY3JpcHREaWFsb2cpOwog
ICAgICAgICBBU1NFUlQoIXdlYlZpZXctPnByaXYtPmN1cnJlbnRTY3JpcHREaWFsb2cpOwpAQCAt
MTI5MCw2ICsxMzA2LDIzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0
KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgRkFMU0UsCiAg
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CiAKKyAgICAvKioKKyAgICAgKiBX
ZWJLaXRXZWJWaWV3OndlYnNpdGUtcG9saWNpZXM6CisgICAgICoKKyAgICAgKiBUaGUgI1dlYktp
dFdlYnNpdGVQb2xpY2llcyBmb3IgdGhlIHZpZXcuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4z
MAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAg
IGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTLAorICAgICAgICBn
X3BhcmFtX3NwZWNfb2JqZWN0KAorICAgICAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLAorICAg
ICAgICAgICAgXygiRGVmYXVsdCBXZWJzaXRlIFBvbGljaWVzIiksCisgICAgICAgICAgICBfKCJU
aGUgZGVmYXVsdCBwb2xpY3kgb2JqZWN0IGZvciBzaXRlcyBsb2FkZWQgaW4gdGhpcyB2aWV3Iiks
CisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLAorICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFN
X0NPTlNUUlVDVF9PTkxZKSkpOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6bG9h
ZC1jaGFuZ2VkOgogICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNo
IHRoZSBzaWduYWwgaXMgZW1pdHRlZApAQCAtMzc1Myw3ICszNzg2LDggQEAgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2No
YXIqIHNjcmlwdCwKICAgICBnX3JldHVybl9pZl9mYWlsKHNjcmlwdCk7CiAKICAgICBHUmVmUHRy
PEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcod2ViVmlldywgY2FuY2VsbGFibGUs
IGNhbGxiYWNrLCB1c2VyRGF0YSkpOwotICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9LCBmYWxzZSwg
V1RGOjpudWxsb3B0LCB0cnVlIH0sIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0aW9u
RGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgUnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFyYW1zID0geyBTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCks
IFVSTCB7IH0sIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZhbHNlIH07CisgICAgZ2V0UGFnZSh3ZWJW
aWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV1RGTW92ZShwYXJhbXMpLCBbdGFzayA9IFdU
Rk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvcikgewogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFp
bHM7CiAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAgZXhjZXB0aW9uRGV0YWlscyA9
ICpkZXRhaWxzOwpAQCAtNDYxNywzICs0NjUxLDU2IEBAIFdlYktpdElucHV0TWV0aG9kQ29udGV4
dCogd2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9tZXRob2RfY29udGV4dChXZWJLaXRXZWJWaWV3
CiAjZW5kaWYKIAogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld191cGRhdGVfd2Vic2l0ZV9w
b2xpY2llczoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHBvbGljaWVzOiBU
aGUgI1dlYktpdFdlYnNpdGVQb2xpY2llcyB0byBhcHBseSB0byB0aGUgcGFnZS4KKyAqCisgKiBV
cGRhdGVzIHRoZSB3ZWJzaXRlIHBvbGljaWVzIGFzc29jaWF0ZWQgd2l0aCBAd2ViX3ZpZXcuCisg
KgorICogTm90ZSwgaXQgb25seSBtYWtlcyBzZW5zZSB0byBjYWxsIHRoaXMgQVBJIGFmdGVyICVX
RUJLSVRfTE9BRF9DT01NSVRURUQKKyAqIGFuZCBiZWZvcmUgJVdFQktJVF9MT0FEX0ZJTklTSEVE
LgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV93
ZWJzaXRlX3BvbGljaWVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYnNpdGVQb2xp
Y2llcyAqcG9saWNpZXMpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJ
RVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVfUE9M
SUNJRVMocG9saWNpZXMpKTsKKworICAgIFdlYnNpdGVQb2xpY2llc0RhdGEgcG9saWNpZXNEYXRh
IHsgfTsKKworICAgIHN3aXRjaCAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5
X3BvbGljeShwb2xpY2llcykpIHsKKyAgICBjYXNlIFdlYktpdEF1dG9wbGF5UG9saWN5OjpXRUJL
SVRfQVVUT1BMQVlfQUxMT1c6CisgICAgICAgIHBvbGljaWVzRGF0YS5hdXRvcGxheVBvbGljeSA9
IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3c7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2ViS2l0QXV0b3BsYXlQb2xpY3k6OldFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5E
OgorICAgICAgICBwb2xpY2llc0RhdGEuYXV0b3BsYXlQb2xpY3kgPSBXZWJzaXRlQXV0b3BsYXlQ
b2xpY3k6OkFsbG93V2l0aG91dFNvdW5kOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYktp
dEF1dG9wbGF5UG9saWN5OjpXRUJLSVRfQVVUT1BMQVlfREVOWToKKyAgICAgICAgcG9saWNpZXNE
YXRhLmF1dG9wbGF5UG9saWN5ID0gV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZW55OworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBwb2xpY2llc0RhdGEuYXV0b3BsYXlQb2xp
Y3kgPSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlZmF1bHQ7CisgICAgfQorCisgICAgZ2V0UGFn
ZSh3ZWJWaWV3KS51cGRhdGVXZWJzaXRlUG9saWNpZXMoV1RGTW92ZShwb2xpY2llc0RhdGEpKTsK
K30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXM6CisgKiBA
d2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXRzIHRoZSB3ZWJzaXRlIHBvbGlj
aWVzIGFzc29jaWF0ZWQgd2l0aCBAd2ViX3ZpZXcuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVy
IG5vbmUpOiB0aGUgI1dlYktpdFdlYnNpdGVQb2xpY2llcyBhc3NvY2lhdGVkIHdpdGggdGhlIHZp
ZXcKKyAqCisgKiBTaW5jZTogMi4zMAorICovCitXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHdlYmtp
dF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwg
bnVsbHB0cik7CisKKyAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzLmdl
dCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVQb2xpY2llcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYyNGNiYWUxMTU2Mzg0OTA1
NzQzZmEzYTUxNDk2ZDI2NTdkNDFkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llcy5jcHAKQEAgLTAsMCArMSwy
MTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKKworI2luY2x1ZGUg
IkFQSVdlYnNpdGVQb2xpY2llcy5oIgorI2luY2x1ZGUgIldlYktpdEVudW1UeXBlcy5oIgorI2lu
Y2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRXZWJz
aXRlUG9saWNpZXMKKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogVmlldyBzcGVjaWZpYyB3ZWJzaXRl
IHBvbGljaWVzCisgKiBAVGl0bGU6IFdlYktpdFdlYnNpdGVQb2xpY2llcworICogQFNlZV9hbHNv
OiAjV2ViS2l0V2ViVmlldworICoKKyAqIFdlYktpdFdlYnNpdGVQb2xpY2llcyBhbGxvd3MgeW91
IHRvIGNvbmZpZ3VyZSBwZXItcGFnZSBhdXRvcGxheSBwb2xpY2llcy4KKyAqCisgKiBTaW5jZTog
Mi4zMAorICovCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2VudW0geworICAgIFBST1Bf
MCwKKworICAgIFBST1BfQVVUT1BMQVlfUE9MSUNZCit9OworCitzdHJ1Y3QgX1dlYktpdFdlYnNp
dGVQb2xpY2llc1ByaXZhdGUgeworICAgIF9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlKCkK
KyAgICAgICAgOiB3ZWJzaXRlUG9saWNpZXMoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmNyZWF0ZSgp
KQorICAgIHsKKyAgICB9CisgICAgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiB3ZWJzaXRl
UG9saWNpZXM7Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2Vic2l0ZVBvbGljaWVz
LCB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llcywgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQg
d2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBw
cm9wSUQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sKKyAgICBXZWJL
aXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzID0gV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMob2Jq
ZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElEKSB7CisgICAgY2FzZSBQUk9QX0FVVE9QTEFZX1BP
TElDWToKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1ZSwgd2Via2l0X3dlYnNpdGVfcG9s
aWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeShwb2xpY2llcykpOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2Jq
ZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJzaXRlUG9saWNpZXNTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwg
Y29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktp
dFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMgPSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFUyhvYmpl
Y3QpOworCisgICAgc3dpdGNoIChwcm9wSUQpIHsKKyAgICBjYXNlIFBST1BfQVVUT1BMQVlfUE9M
SUNZOiB7CisgICAgICAgIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX3NldF9hdXRvcGxheV9wb2xp
Y3kocG9saWNpZXMsIHN0YXRpY19jYXN0PFdlYktpdEF1dG9wbGF5UG9saWN5PihnX3ZhbHVlX2dl
dF9lbnVtKHZhbHVlKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBw
YXJhbVNwZWMpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0V2Vic2l0ZVBvbGljaWVz
Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQoreworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtp
dF93ZWJzaXRlX3BvbGljaWVzX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7Cit9
CisKK0FQSTo6V2Vic2l0ZVBvbGljaWVzKiB3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRBUElUeXBl
KFdlYktpdFdlYnNpdGVQb2xpY2llcyAqcG9saWNpZXMpCit7CisgICAgcmV0dXJuIHBvbGljaWVz
LT5wcml2LT53ZWJzaXRlUG9saWNpZXMuZ2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJzaXRlX3BvbGljaWVzX2NsYXNzX2luaXQoV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MqIGZp
bmRDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NM
QVNTKGZpbmRDbGFzcyk7CisKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtp
dFdlYnNpdGVQb2xpY2llc0dldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+c2V0X3Byb3Bl
cnR5ID0gd2Via2l0V2Vic2l0ZVBvbGljaWVzU2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNz
LT5jb25zdHJ1Y3RlZCA9IHdlYmtpdFdlYnNpdGVQb2xpY2llc0NvbnN0cnVjdGVkOworCisgICAg
LyoqCisgICAgICogV2ViS2l0V2Vic2l0ZVBvbGljaWVzOmF1dG9wbGF5LXBvbGljeToKKyAgICAg
KgorICAgICAqIFRoZSAjV2ViS2l0QXV0b3BsYXlQb2xpY3kgb2YgI1dlYktpdFdlYnNpdGVQb2xp
Y2llcy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjMwCisgICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQ
Uk9QX0FVVE9QTEFZX1BPTElDWSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX2VudW0oCisgICAgICAg
ICAgICAiYXV0b3BsYXktcG9saWN5IiwKKyAgICAgICAgICAgICJBdXRvcGxheSBQb2xpY3kiLAor
ICAgICAgICAgICAgXygiVGhlIGF1dG9wbGF5IHBvbGljeSB0byB1c2Ugd2hlbiBkZWNpZGluZyB0
byBhdXRvcGxheSBtZWRpYSIpLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfQVVUT1BMQVlfUE9M
SUNZLAorICAgICAgICAgICAgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQsCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklU
RSkpKTsKK30KKworCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ldzoKKyAqCisg
KiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IHRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJz
aXRlUG9saWNpZXMKKyAqCisgKiBTaW5jZTogMi4zMAorICovCitXZWJLaXRXZWJzaXRlUG9saWNp
ZXMqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ldyh2b2lkKQoreworICAgIHJldHVybiBXRUJL
SVRfV0VCU0lURV9QT0xJQ0lFUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJ
Q0lFUywgbnVsbHB0cikpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25l
d193aXRoX3BvbGljaWVzOgorICogQGZpcnN0X3BvbGljeV9uYW1lOiBuYW1lIG9mIHRoZSBmaXJz
dCBwb2xpY3kgdG8gc2V0CisgKiBALi4uOiB2YWx1ZSBvZiBmaXJzdCBwb2xpY3ksIGZvbGxvd2Vk
IGJ5IG1vcmUgcG9saWNpZXMsICVOVUxMLXRlcm1pbmF0ZWQKKyAqCisgKiBSZXR1cm5zOiAodHJh
bnNmZXIgZnVsbCk6IHRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAq
CisgKiBTaW5jZTogMi4zMAorICovCitXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHdlYmtpdF93ZWJz
aXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzKGNvbnN0IGdjaGFyKiBmaXJzdFBvbGljeU5h
bWUsIC4uLikKK3sKKyAgICB2YV9saXN0IGFyZ3M7CisgICAgdmFfc3RhcnQoYXJncywgZmlyc3RQ
b2xpY3lOYW1lKTsKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzID0gV0VCS0lU
X1dFQlNJVEVfUE9MSUNJRVMoZ19vYmplY3RfbmV3X3ZhbGlzdChXRUJLSVRfVFlQRV9XRUJTSVRF
X1BPTElDSUVTLCBmaXJzdFBvbGljeU5hbWUsIGFyZ3MpKTsKKyAgICB2YV9lbmQoYXJncyk7CisK
KyAgICByZXR1cm4gcG9saWNpZXM7Cit9CisKKy8qKgorICogd2Via2l0X3dlYnNpdGVfcG9saWNp
ZXNfZ2V0X2F1dG9wbGF5X3BvbGljeToKKyAqIEBwb2xpY2llczogYSAjV2ViS2l0V2Vic2l0ZVBv
bGljaWVzCisgKgorICogR2V0IHRoZSAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzOmF1dG9wbGF5LXBv
bGljeSBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAjV2ViS2l0QXV0b3BsYXlQb2xpY3kKKyAq
CisgKiBTaW5jZTogMi4zMAorICovCitXZWJLaXRBdXRvcGxheVBvbGljeSB3ZWJraXRfd2Vic2l0
ZV9wb2xpY2llc19nZXRfYXV0b3BsYXlfcG9saWN5KFdlYktpdFdlYnNpdGVQb2xpY2llcyogcG9s
aWNpZXMpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVfUE9M
SUNJRVMocG9saWNpZXMpLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCk7CisK
KyAgICBhdXRvIGFwaUF1dG9wbGF5UG9saWN5VHlwZSA9IHBvbGljaWVzLT5wcml2LT53ZWJzaXRl
UG9saWNpZXMtPmF1dG9wbGF5UG9saWN5KCk7CisgICAgc3dpdGNoIChhcGlBdXRvcGxheVBvbGlj
eVR5cGUpIHsKKyAgICBjYXNlIFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvdzoK
KyAgICAgICAgcmV0dXJuIFdFQktJVF9BVVRPUExBWV9BTExPVzsKKyAgICBjYXNlIFdlYktpdDo6
V2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhvdXRTb3VuZDoKKyAgICAgICAgcmV0dXJu
IFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EOworICAgIGNhc2UgV2ViS2l0OjpX
ZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlbnk6CisgICAgICAgIHJldHVybiBXRUJLSVRfQVVUT1BM
QVlfREVOWTsKKyAgICBjYXNlIFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZWZhdWx0
OgorICAgICAgICByZXR1cm4gV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCisv
KioKKyAqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX3NldF9hdXRvcGxheV9wb2xpY3k6CisgKiBA
cG9saWNpZXM6IHRoZSAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKiBAcG9saWN5OiB0aGUgI1dl
YktpdEF1dG9wbGF5UG9saWN5IHRvIHVzZQorICoKKyAqIFNldCB0aGUgI1dlYktpdFdlYnNpdGVQ
b2xpY2llczphdXRvcGxheS1wb2xpY3kgcHJvcGVydHkuCisgKgorICogU2luY2U6IDIuMzAKKyAq
Lwordm9pZCB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlfcG9saWN5KFdlYktp
dFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFdlYktpdEF1dG9wbGF5UG9saWN5IHBvbGljeSkK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTKHBvbGlj
aWVzKSk7CisKKyAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgIGNhc2UgV0VCS0lUX0FVVE9QTEFZ
X0FMTE9XOgorICAgICAgICBwb2xpY2llcy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzLT5zZXRBdXRv
cGxheVBvbGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3cpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EOgor
ICAgICAgICBwb2xpY2llcy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzLT5zZXRBdXRvcGxheVBvbGlj
eShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9BVVRPUExBWV9ERU5ZOgorICAgICAgICBwb2xp
Y2llcy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzLT5zZXRBdXRvcGxheVBvbGljeShXZWJLaXQ6Oldl
YnNpdGVBdXRvcGxheVBvbGljeTo6RGVueSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xp
Y2llc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2ViNDc2ZmFjMjJmY2YwNzlhMzNjODQ2Y2M5ZDEw
ODZlNTY3NjIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNp
ZXMuaCIKKworQVBJOjpXZWJzaXRlUG9saWNpZXMqIHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldEFQ
SVR5cGUoV2ViS2l0V2Vic2l0ZVBvbGljaWVzICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oCmluZGV4IGYxOTJhMWQz
NzlkYzY0MjFkZjc2MDQ3NGQyMDY0OWU0NWZmMGM4Y2IuLjM4NTIwNGE0MzNhZjBjYzRlMWM3Zjg2
ZGVjNGQyNWE5ZGU3YmUzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lu
Y2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+
CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaD4KIAogR19CRUdJTl9E
RUNMUwogCkBAIC02Miw2ICs2Myw5IEBAIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5cGUg
KHZvaWQpOwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZSAgICAg
IChXZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24pOwogCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhfcG9saWNpZXMgIChXZWJLaXRQb2xpY3lEZWNp
c2lvbiAqZGVjaXNpb24sIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqcG9saWNpZXMpOworCiBXRUJL
SVRfQVBJIHZvaWQKIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3JlICAgKFdlYktpdFBvbGlj
eURlY2lzaW9uICpkZWNpc2lvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggMTMxMzYwYzNkZDBlYmZjYTExYzZlNzE0ODZlNjEx
NmQ3ZGYxMGJjZi4uNTBlMjAyMjIyYmRhMmE5MzhlZTM1MDczODM3MTc2ZjQyY2JjOWIxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAg
LTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkluc3BlY3Rvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0V2ViUmVzb3VyY2UuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYnNpdGVQb2xp
Y2llcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld0Jhc2UuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuaD4KQEAgLTU4NCw2ICs1ODUsMTUgQEAgd2Via2l0X3dl
Yl92aWV3X3NldF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dwogV0VCS0lUX0FQSSBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgKgogd2Via2l0X3dlYl92aWV3
X2dldF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAqd2ViX3ZpZXcpOwogCisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3
X3VwZGF0ZV93ZWJzaXRlX3BvbGljaWVzICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMgICAgICpwb2xpY2llcyk7CisK
K1dFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKK3dlYmtpdF93ZWJfdmlld19nZXRf
d2Vic2l0ZV9wb2xpY2llcyAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3KTsKKworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCmluZGV4IGQ0
YTU1YzU1NWJlYWRlNWU3NTExMWRmOTA5MmU4Y2FhNGY0OTA3ODIuLjI1NGYxMGI0NTgxMGRjMTdi
ODE3OWU4OGFhNDhlOGY4MTVjNTY1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcApAQCAtMzE2LDYgKzMxNiw3IEBAIEd0
a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRfdmlldyhXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAic2V0dGlu
Z3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAicmVs
YXRlZC12aWV3Iiwgd2ViVmlldywKKyAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldyksCiAgICAgICAgIG51bGxwdHIp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJzaXRlUG9saWNpZXMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzU1ZjRhZjY4MDA1NWNmNGE2OTAxZTQ5
ODc4ODJmNjY0MTA5YjNiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgKQEAgLTAsMCArMSw5MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lU
Ml9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJP
bmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRp
ZgorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9U
WVBFX1dFQlNJVEVfUE9MSUNJRVMgICAgICAgICAgICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNf
Z2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMob2JqKSAgICAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCU0lU
RV9QT0xJQ0lFUywgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dF
QlNJVEVfUE9MSUNJRVMob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgo
b2JqKSwgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUykpCisjZGVmaW5lIFdFQktJVF9XRUJT
SVRFX1BPTElDSUVTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGts
YXNzKSwgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsIFdlYktpdFdlYnNpdGVQb2xpY2ll
c0NsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1Moa2xhc3Mp
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCU0lURV9Q
T0xJQ0lFUykpCisjZGVmaW5lIFdFQktJVF9XRUJTSVRFX1BPTElDSUVTX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQlNJVEVf
UE9MSUNJRVMsIFdlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYnNpdGVQb2xpY2llcyAgICAgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzOwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzICAgV2ViS2l0V2Vic2l0ZVBv
bGljaWVzQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0
ZSBXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQ
b2xpY2llcyB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNp
ZXNQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFz
cyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0
X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQp
OworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Vi
a2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsKKworLyoqCisgKiBXZWJLaXRBdXRvcGxheVBvbGlj
eToKKyAqIEBXRUJLSVRfQVVUT1BMQVlfQUxMT1c6IERvIG5vdCByZXN0cmljdCBhdXRvcGxheS4K
KyAqIEBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORDogQWxsb3cgdmlkZW9zIHRv
IGF1dG9wbGF5IGlmCisgKiB0aGV5IGhhdmUgbm8gYXVkaW8gdHJhY2ssIG9yIGlmIHRoZWlyIGF1
ZGlvIHRyYWNrIGlzIG11dGVkLgorICogQFdFQktJVF9BVVRPUExBWV9ERU5ZOiBOZXZlciBhbGxv
dyBhdXRvcGxheS4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNpZnkgYXV0b3BsYXkg
cG9saWNpZXMuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBX
RUJLSVRfQVVUT1BMQVlfQUxMT1csCisgICAgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRf
U09VTkQsCisgICAgV0VCS0lUX0FVVE9QTEFZX0RFTlkKK30gV2ViS2l0QXV0b3BsYXlQb2xpY3k7
CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF90eXBlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdl
YnNpdGVQb2xpY2llcyAqCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJzaXRl
UG9saWNpZXMgKgord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMgICAg
ICAgICAgICAgICAgICAgICAoY29uc3QgZ2NoYXIgICpmaXJzdF9wb2xpY3lfbmFtZSwgLi4uKTsK
KworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlf
cG9saWN5ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlUG9saWNpZXMgKnBvbGljaWVz
LCBXZWJLaXRBdXRvcGxheVBvbGljeSBwb2xpY3kKKyk7CisKK1dFQktJVF9BUEkgV2ViS2l0QXV0
b3BsYXlQb2xpY3kKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRvcGxheV9wb2xpY3kg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVQb2xpY2llcyAqcG9saWNpZXMpOworCitH
X0VORF9ERUNMUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggNDgyYjA2Y2Vj
ZmExN2JiZDM5OWNiODhkODRkMTFhZDNkOTQ1YWVhMC4uZmEyN2IyMWM5OTY2ZDNmNmI0YzJjY2Vm
Yjg0NTliMjdmZjAxMDY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0x
OTgsNiArMTk4LDcgQEAgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQKIFdlYktpdFNuYXBzaG90
T3B0aW9ucwogV2ViS2l0U25hcHNob3RSZWdpb24KIFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbgorV2ViS2l0QXV0b3BsYXlQb2xpY3kKIAogPFNVQlNFQ1RJT04gRWRpdGluZyBDb21t
YW5kcz4KIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUCkBAIC0yODgsNiArMjg5LDggQEAgd2Vi
a2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlCiB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9t
ZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lucHV0X21ldGhvZF9j
b250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0Cit3ZWJraXRf
d2ViX3ZpZXdfdXBkYXRlX3dlYnNpdGVfcG9saWNpZXMKK3dlYmtpdF93ZWJfdmlld19nZXRfd2Vi
c2l0ZV9wb2xpY2llcwogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdApAQCAtODQ3LDYgKzg1MCw3IEBAIFdlYktpdFBvbGljeURlY2lz
aW9uCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkCiB3ZWJraXRfcG9saWN5X2RlY2lz
aW9uX2lnbm9yZQogd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UKK3dlYmtpdF9wb2xpY3lfZGVj
aXNpb25fdXNlX3dpdGhfcG9saWNpZXMKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRQ
b2xpY3lEZWNpc2lvbkNsYXNzCkBAIC0xODQ2LDMgKzE4NTAsMjcgQEAgV0VCS0lUX1VTRVJfTUVT
U0FHRV9HRVRfQ0xBU1MKIFdlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZQogd2Via2l0X3VzZXJfbWVz
c2FnZV9nZXRfdHlwZQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPldlYktpdFdlYnNp
dGVQb2xpY2llczwvRklMRT4KK1dlYktpdFdlYnNpdGVQb2xpY2llcword2Via2l0X3dlYnNpdGVf
cG9saWNpZXNfbmV3Cit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcwor
d2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeQord2Via2l0X3dlYnNp
dGVfcG9saWNpZXNfc2V0X2F1dG9wbGF5X3BvbGljeQorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4K
K1dlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzCitXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFUwor
V0VCS0lUX0lTX1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1MKK1dFQktJVF9UWVBFX1dFQlNJVEVfUE9M
SUNJRVMKK1dFQktJVF9XRUJTSVRFX1BPTElDSUVTCitXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19D
TEFTUworV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFBy
aXZhdGU+CitXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlCit3ZWJraXRfd2Vic2l0ZV9wb2xp
Y2llc19nZXRfdHlwZQorPC9TRUNUSU9OPgorCisKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0NzlkMjY1MGU5M2EwNThjZjBlZWY3NjIzYmNkM2M1
YzFjZGIwYzA3Li5jOWVjZGM1ZGYzNjBmNDY1NjBkNzI4ZTliMTFlN2FhYTliYTgwZGJlIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzAgQEAKKzIwMjAtMDYtMDIgIENoYXJsaWUgVHVybmVyICA8Y3R1cm5lckBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIERpc2FibGUgdmlkZW8gYXV0b3BsYXkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDg0NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgdmFyaW91cyBjYWxsc2l0
ZXMgZm9yIGNvbnN0cnVjdGluZyBhIHZpZXcgdG8gdGFrZSBpbnRvCisgICAgICAgIGFjY291bnQg
dGhlIGRlZmF1bHQgcG9saWNpZXMuIEkgY2hvc2UgdGhlIGRlZmF1bHQgYXMgYXV0b3BsYXkKKyAg
ICAgICAgYWxsb3cgd2l0aG91dCBzb3VuZCwgd2hpY2ggaXMgaW4ga2VlcGluZyB3aXRoIFdlYkNv
cmUncyBjaG9pY2UuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jOgor
ICAgICAgICAoZGVjaWRlUG9saWN5KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3Nl
cldpbmRvdy5jOgorICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6CisgICAgICAgIChuZXdU
YWJDYWxsYmFjayk6CisgICAgICAgIChvcGVuUHJpdmF0ZVdpbmRvdyk6CisgICAgICAgIChicm93
c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKToKKyAgICAg
ICAgKGJyb3dzZXJfd2luZG93X2NyZWF0ZV93ZWJfdmlld19pbl9uZXdfdGFiX2Zvcl9hdXRvbWF0
aW9uKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAoY3JlYXRl
QnJvd3NlclRhYik6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHA6IEFkZAorICAgICAgICBh
dXRvcGxheSBwb2xpY3kgdGVzdHMsIGFuZCB1c2UgbW9kZXJuIGNsYXNzIGluaXRpYWxpemVycy4K
KyAgICAgICAgKHRlc3RBdXRvcGxheVBvbGljeSk6CisgICAgICAgIChiZWZvcmVBbGwpOgorCiAy
MDIwLTA1LTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBXZWJEcml2ZXI6IHN0b3AgdXNpbmcgR2RrRXZlbnQgQVBJIGluIHByZXBh
cmF0aW9uIGZvciBHVEs0CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nl
cldpbmRvdy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwppbmRleCAx
ZGUyMTRjZDQ2M2FjOWQ4MTAwMTMzMzUxYTIzNWNmOGQyOTg5ZDExLi5mMGIwZjQzMjgyZjZiODFh
MGViYmEyNzI3MjlkYTg5YjBmNWQxMmFjIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9n
dGsvQnJvd3NlcldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2lu
ZG93LmMKQEAgLTQxOCw2ICs0MTgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0RlY2lkZVBv
bGljeShXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQb2xpY3lEZWNpc2lvbgogICAgICAg
ICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAg
ICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29u
dGVudF9tYW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0
aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3
KSwKKyAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNp
dGVfcG9saWNpZXMod2ViVmlldyksCiAgICAgICAgIE5VTEwpKTsKICAgICBicm93c2VyX3dpbmRv
d19hcHBlbmRfdmlldyh3aW5kb3csIG5ld1dlYlZpZXcpOwogICAgIHdlYmtpdF93ZWJfdmlld19s
b2FkX3JlcXVlc3QobmV3V2ViVmlldywgd2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2dldF9yZXF1
ZXN0KG5hdmlnYXRpb25BY3Rpb24pKTsKQEAgLTU4Myw2ICs1ODQsNyBAQCBzdGF0aWMgdm9pZCBu
ZXdUYWJDYWxsYmFjayhCcm93c2VyV2luZG93ICp3aW5kb3cpCiAgICAgICAgICJzZXR0aW5ncyIs
IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyksCiAgICAgICAgICJ1c2VyLWNv
bnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIo
d2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCB3ZWJraXRf
d2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcpLAorICAgICAgICAi
d2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3
ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpKTsKICAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMod2lu
ZG93LT51cmlFbnRyeSk7CiAgICAgZ3RrX25vdGVib29rX3NldF9jdXJyZW50X3BhZ2UoR1RLX05P
VEVCT09LKHdpbmRvdy0+bm90ZWJvb2spLCAtMSk7CkBAIC02MDIsNiArNjA0LDcgQEAgc3RhdGlj
IHZvaWQgb3BlblByaXZhdGVXaW5kb3coQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgICAgICAi
dXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9t
YW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtZXBoZW1lcmFsIiwgVFJVRSwKICAgICAgICAg
ImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdlYmtpdF93ZWJfdmlld19pc19jb250cm9s
bGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCisgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwg
d2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAogICAgICAgICBO
VUxMKSk7CiAgICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoR1RL
X1dJTkRPVyh3aW5kb3cpLCB3aW5kb3ctPndlYkNvbnRleHQpOwogICAgIGJyb3dzZXJfd2luZG93
X2FwcGVuZF92aWV3KEJST1dTRVJfV0lORE9XKG5ld1dpbmRvdyksIG5ld1dlYlZpZXcpOwpAQCAt
MTMxNSw2ICsxMzE4LDcgQEAgV2ViS2l0V2ViVmlldyAqYnJvd3Nlcl93aW5kb3dfZ2V0X29yX2Ny
ZWF0ZV93ZWJfdmlld19mb3JfYXV0b21hdGlvbih2b2lkKQogICAgICAgICAic2V0dGluZ3MiLCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNlci1jb250
ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdl
YlZpZXcpLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgVFJVRSwKKyAg
ICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9s
aWNpZXMod2ViVmlldyksCiAgICAgICAgIE5VTEwpKTsKICAgICBHdGtXaWRnZXQgKm5ld1dpbmRv
dyA9IGJyb3dzZXJfd2luZG93X25ldyhHVEtfV0lORE9XKHdpbmRvdyksIHdpbmRvdy0+d2ViQ29u
dGV4dCk7CiAjaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQpAQCAtMTMzOSw2ICsxMzQz
LDcgQEAgV2ViS2l0V2ViVmlldyAqYnJvd3Nlcl93aW5kb3dfY3JlYXRlX3dlYl92aWV3X2luX25l
d190YWJfZm9yX2F1dG9tYXRpb24odm9pZCkKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2Vy
Iiwgd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSwKICAg
ICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIFRSVUUsCiAgICAgICAgICJhdXRv
bWF0aW9uLXByZXNlbnRhdGlvbi10eXBlIiwgV0VCS0lUX0FVVE9NQVRJT05fQlJPV1NJTkdfQ09O
VEVYVF9QUkVTRU5UQVRJT05fVEFCLAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtp
dF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkp
OwogICAgIGJyb3dzZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAg
ICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKG5ld1dlYlZpZXcsICJhYm91dDpibGFuayIpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9tYWluLmMKaW5kZXggMmZmNDViOTM4Y2ZmYWJlOTVmZTE3MTM3MzkzYjhiNmM1MDZk
NDk5My4uZGQ2NWFlODgyYjMwNDJhODM1YTAwNmZlYTM2M2RjNWIwYTRmNjU3MyAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9n
dGsvbWFpbi5jCkBAIC03NywxMyArNzcsMTQgQEAgc3RhdGljIGdjaGFyICphcmd1bWVudFRvVVJM
KGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogICAgIHJldHVybiBmaWxlVVJMOwogfQogCi1zdGF0aWMg
V2ViS2l0V2ViVmlldyAqY3JlYXRlQnJvd3NlclRhYihCcm93c2VyV2luZG93ICp3aW5kb3csIFdl
YktpdFNldHRpbmdzICp3ZWJraXRTZXR0aW5ncywgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICp1
c2VyQ29udGVudE1hbmFnZXIpCitzdGF0aWMgV2ViS2l0V2ViVmlldyAqY3JlYXRlQnJvd3NlclRh
YihCcm93c2VyV2luZG93ICp3aW5kb3csIFdlYktpdFNldHRpbmdzICp3ZWJraXRTZXR0aW5ncywg
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICp1c2VyQ29udGVudE1hbmFnZXIsIFdlYktpdFdlYnNp
dGVQb2xpY2llcyAqZGVmYXVsdFdlYnNpdGVQb2xpY2llcykKIHsKICAgICBXZWJLaXRXZWJWaWV3
ICp3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJf
VklFVywKICAgICAgICAgIndlYi1jb250ZXh0IiwgYnJvd3Nlcl93aW5kb3dfZ2V0X3dlYl9jb250
ZXh0KHdpbmRvdyksCiAgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdFNldHRpbmdzLAogICAgICAg
ICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29udGVudE1hbmFnZXIsCiAgICAgICAgICJp
cy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBhdXRvbWF0aW9uTW9kZSwKKyAgICAgICAgIndl
YnNpdGUtcG9saWNpZXMiLCBkZWZhdWx0V2Vic2l0ZVBvbGljaWVzLAogICAgICAgICBOVUxMKSk7
CiAKICAgICBpZiAoZWRpdG9yTW9kZSkKQEAgLTU4Niw2ICs1ODcsMTAgQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVn
aXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcih1c2VyQ29udGVudE1hbmFnZXIsICJhYm91dERh
dGEiKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHVzZXJDb250ZW50TWFuYWdlciwgInNjcmlwdC1t
ZXNzYWdlLXJlY2VpdmVkOjphYm91dERhdGEiLCBHX0NBTExCQUNLKGFib3V0RGF0YVNjcmlwdE1l
c3NhZ2VSZWNlaXZlZENhbGxiYWNrKSwgd2ViQ29udGV4dCk7CiAKKyAgICBXZWJLaXRXZWJzaXRl
UG9saWNpZXMgKmRlZmF1bHRXZWJzaXRlUG9saWNpZXMgPSB3ZWJraXRfd2Vic2l0ZV9wb2xpY2ll
c19uZXdfd2l0aF9wb2xpY2llcygKKyAgICAgICAgImF1dG9wbGF5LXBvbGljeSIsIFdFQktJVF9B
VVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5ELAorICAgICAgICBOVUxMKTsKKwogICAgIGlmIChj
b250ZW50RmlsdGVyKSB7CiAgICAgICAgIEdGaWxlICpjb250ZW50RmlsdGVyRmlsZSA9IGdfZmls
ZV9uZXdfZm9yX2NvbW1hbmRsaW5lX2FyZyhjb250ZW50RmlsdGVyKTsKIApAQCAtNjMwLDcgKzYz
NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgIGludCBpOwog
CiAgICAgICAgIGZvciAoaSA9IDA7IHVyaUFyZ3VtZW50c1tpXTsgaSsrKSB7Ci0gICAgICAgICAg
ICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0gY3JlYXRlQnJvd3NlclRhYihtYWluV2luZG93LCB3
ZWJraXRTZXR0aW5ncywgdXNlckNvbnRlbnRNYW5hZ2VyKTsKKyAgICAgICAgICAgIFdlYktpdFdl
YlZpZXcgKndlYlZpZXcgPSBjcmVhdGVCcm93c2VyVGFiKG1haW5XaW5kb3csIHdlYmtpdFNldHRp
bmdzLCB1c2VyQ29udGVudE1hbmFnZXIsIGRlZmF1bHRXZWJzaXRlUG9saWNpZXMpOwogICAgICAg
ICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgIGZpcnN0VGFiID0gR1RLX1dJREdFVCh3ZWJW
aWV3KTsKICAgICAgICAgICAgIGdjaGFyICp1cmwgPSBhcmd1bWVudFRvVVJMKHVyaUFyZ3VtZW50
c1tpXSk7CkBAIC02MzgsNyArNjQzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb
XSkKICAgICAgICAgICAgIGdfZnJlZSh1cmwpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGNyZWF0ZUJyb3dzZXJUYWIobWFpbldpbmRv
dywgd2Via2l0U2V0dGluZ3MsIHVzZXJDb250ZW50TWFuYWdlcik7CisgICAgICAgIFdlYktpdFdl
YlZpZXcgKndlYlZpZXcgPSBjcmVhdGVCcm93c2VyVGFiKG1haW5XaW5kb3csIHdlYmtpdFNldHRp
bmdzLCB1c2VyQ29udGVudE1hbmFnZXIsIGRlZmF1bHRXZWJzaXRlUG9saWNpZXMpOwogICAgICAg
ICBmaXJzdFRhYiA9IEdUS19XSURHRVQod2ViVmlldyk7CiAKICAgICAgICAgaWYgKCFlZGl0b3JN
b2RlKSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKaW5kZXggNzY5YmNjODkxNmJiOWIx
YzFhZmUyOWQ2YmMyMDlkZDQzMjgwMTZhNi4uMGYwM2M1Zjg4Yjk4ZDBhMzczZDkxNTI4OTE3NzRm
ZWZiZWYxNTZjYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcApAQCAtMjEsNiArMjEs
NyBAQAogCiAjaW5jbHVkZSAiTG9hZFRyYWNraW5nVGVzdC5oIgogI2luY2x1ZGUgIldlYktpdFRl
c3RTZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRl
IDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBA
IC0zMiw2ICszMyw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gUG9saWN5RGVjaXNpb25SZXNwb25z
ZSB7CiAgICAgICAgIFVzZSwKKyAgICAgICAgVXNlV2l0aFBvbGljeSwKICAgICAgICAgSWdub3Jl
LAogICAgICAgICBEb3dubG9hZCwKICAgICAgICAgTm9uZQpAQCAtMzksMTIgKzQxLDIxIEBAIHB1
YmxpYzoKIAogICAgIFBvbGljeUNsaWVudFRlc3QoKQogICAgICAgICA6IExvYWRUcmFja2luZ1Rl
c3QoKQotICAgICAgICAsIG1fcG9saWN5RGVjaXNpb25SZXNwb25zZShOb25lKQotICAgICAgICAs
IG1fcG9saWN5RGVjaXNpb25UeXBlRmlsdGVyKDApCi0gICAgICAgICwgbV9yZXNwb25kVG9Qb2xp
Y3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5KGZhbHNlKQotICAgICAgICAsIG1faGFsdE1haW5Mb29w
QWZ0ZXJNYWtpbmdEZWNpc2lvbihmYWxzZSkKICAgICB7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV93ZWJWaWV3LCAiZGVjaWRlLXBvbGljeSIsIEdfQ0FMTEJBQ0soZGVjaWRlUG9saWN5Q2Fs
bGJhY2spLCB0aGlzKTsKKyAgICAgICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lz
dGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIobV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksICJ0
ZXN0SGFuZGxlciIpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fdXNlckNvbnRlbnRNYW5h
Z2VyLmdldCgpLCAic2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OnRlc3RIYW5kbGVyIiwgR19DQUxM
QkFDSyh0ZXN0SGFuZGxlck1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgfQor
CisgICAgc3RhdGljIHZvaWQgdGVzdEhhbmRsZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayhXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIqIHVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCwgUG9saWN5Q2xpZW50VGVzdCogdGVzdCkKKyAgICB7
CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFz
Y3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgICAgICBpZiAoZ19z
dHJfZXF1YWwodmFsdWVTdHJpbmcuZ2V0KCksICJhdXRvcGxheWVkIikpCisgICAgICAgICAgICB0
ZXN0LT5tX2F1dG9wbGF5ZWQgPSB0cnVlOworICAgICAgICBlbHNlIGlmIChnX3N0cl9lcXVhbCh2
YWx1ZVN0cmluZy5nZXQoKSwgImRpZC1ub3QtcGxheSIpKQorICAgICAgICAgICAgdGVzdC0+bV9h
dXRvcGxheWVkID0gZmFsc2U7CisKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21h
aW5Mb29wKTsKICAgICB9CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gcXVpdE1haW5Mb29wTGF0ZXIo
R01haW5Mb29wKiBsb29wKQpAQCAtNTksNiArNzAsOSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
VXNlOgogICAgICAgICAgICAgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UoZGVjaXNpb24pOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVXNlV2l0aFBvbGljeToKKyAgICAgICAg
ICAgIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhfcG9saWNpZXMoZGVjaXNpb24sIHRl
c3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIElnbm9yZToKICAgICAgICAgICAgIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3Jl
KGRlY2lzaW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTMgKzExMiwxMzYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogCi0gICAgUG9saWN5RGVjaXNpb25S
ZXNwb25zZSBtX3BvbGljeURlY2lzaW9uUmVzcG9uc2U7Ci0gICAgaW50IG1fcG9saWN5RGVjaXNp
b25UeXBlRmlsdGVyOwotICAgIGJvb2wgbV9yZXNwb25kVG9Qb2xpY3lEZWNpc2lvbkFzeW5jaHJv
bm91c2x5OwotICAgIGJvb2wgbV9oYWx0TWFpbkxvb3BBZnRlck1ha2luZ0RlY2lzaW9uOworICAg
IGJvb2wgZGlkQXV0b3BsYXkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXV0b3BsYXllZCAm
JiAqbV9hdXRvcGxheWVkOworICAgIH0KKworICAgIFBvbGljeURlY2lzaW9uUmVzcG9uc2UgbV9w
b2xpY3lEZWNpc2lvblJlc3BvbnNlIHsgTm9uZSB9OworICAgIGludCBtX3BvbGljeURlY2lzaW9u
VHlwZUZpbHRlciB7IDAgfTsKKyAgICBib29sIG1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3lu
Y2hyb25vdXNseSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhbHRNYWluTG9vcEFmdGVyTWFraW5n
RGVjaXNpb24geyBmYWxzZSB9OworICAgIE9wdGlvbmFsPGJvb2w+IG1fYXV0b3BsYXllZDsKICAg
ICBHUmVmUHRyPFdlYktpdFBvbGljeURlY2lzaW9uPiBtX3ByZXZpb3VzUG9saWN5RGVjaXNpb247
CisgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlUG9saWNpZXM+IG1fd2Vic2l0ZVBvbGljaWVzOwog
fTsKIAorc3RhdGljIHZvaWQgdGVzdEF1dG9wbGF5UG9saWN5KFBvbGljeUNsaWVudFRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCit7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIC8vIFRoZSB3ZWIg
dmlldyBtdXN0IGJlIHJlYWxpemVkIGZvciB0aGUgdmlkZW8gdG8gc3RhcnQgcGxheWJhY2suCisg
ICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEdUS19XSU5ET1dfVE9QTEVW
RUwpOworI2VuZGlmCisKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uVHlwZUZpbHRlciA9IFdF
QktJVF9QT0xJQ1lfREVDSVNJT05fVFlQRV9OQVZJR0FUSU9OX0FDVElPTjsKKyAgICB0ZXN0LT5t
X3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5
OworICAgIHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzID0gd2Via2l0X3dlYnNpdGVfcG9saWNpZXNf
bmV3X3dpdGhfcG9saWNpZXMoImF1dG9wbGF5LXBvbGljeSIsIFdFQktJVF9BVVRPUExBWV9ERU5Z
LCBudWxscHRyKTsKKworICAgIGNvbnN0IGNoYXIqIHJlc291cmNlTmFtZSA9ICJhdXRvcGxheS1j
aGVjay5odG1sIjsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlUGF0aChnX2J1aWxkX2Zp
bGVuYW1lKFRlc3Q6OmdldFJlc291cmNlc0RpcihUZXN0OjpXZWJLaXQyUmVzb3VyY2VzKS5kYXRh
KCksIHJlc291cmNlTmFtZSwgbnVsbHB0cikpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3Vy
Y2VVUkwoZ19maWxlbmFtZV90b191cmkocmVzb3VyY2VQYXRoLmdldCgpLCBudWxscHRyLCBudWxs
cHRyKSk7CisKKyAgICAvLyBUZXN0IHdpdGggREVOWSBwb2xpY3kKKyAgICB0ZXN0LT5sb2FkVVJJ
KHJlc291cmNlVVJMLmdldCgpKTsKKyAgICAvLyBSdW4gdW50aWwgdGhlIHVzZXIgY29udGVudCBt
ZXNzYWdlcyBjb21lIGJhY2sgZnJvbSBhdXRvcGxheS1jaGVjay5odG1sCisgICAgZ19tYWluX2xv
b3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmRpZEF1
dG9wbGF5KCkpOworCisgICAgLy8gQXN5bmMgdGVzdAorICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9
IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xp
Y3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9saWN5
RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IHRydWU7CisgICAgdGVzdC0+bG9hZFVSSShyZXNvdXJj
ZVVSTC5nZXQoKSk7CisgICAgLy8gUnVuIHVudGlsIHRoZSB1c2VyIGNvbnRlbnQgbWVzc2FnZXMg
Y29tZSBiYWNrIGZyb20gYXV0b3BsYXktY2hlY2suaHRtbAorICAgIGdfbWFpbl9sb29wX3J1bih0
ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgp
KTsKKworICAgIC8vIFRlc3Qgd2l0aCBBTExPVyBwb2xpY3kKKyAgICB3ZWJraXRfd2Vic2l0ZV9w
b2xpY2llc19zZXRfYXV0b3BsYXlfcG9saWN5KHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgp
LCBXRUJLSVRfQVVUT1BMQVlfQUxMT1cpOworICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IFdURjo6
bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGll
bnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9saWN5RGVjaXNp
b25Bc3luY2hyb25vdXNseSA9IGZhbHNlOworCisgICAgdGVzdC0+bG9hZFVSSShyZXNvdXJjZVVS
TC5nZXQoKSk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdf
YXNzZXJ0X3RydWUodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBUZXN0IHdpdGggQUxM
T1dfV0lUSE9VVF9TT1VORCBwb2xpY3kKKyAgICB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRf
YXV0b3BsYXlfcG9saWN5KHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpLCBXRUJLSVRfQVVU
T1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCk7CisgICAgdGVzdC0+bV9hdXRvcGxheWVkID0gV1RG
OjpudWxsb3B0OworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBvbGljeUNs
aWVudFRlc3Q6OlVzZVdpdGhQb2xpY3k7CisgICAgdGVzdC0+bV9yZXNwb25kVG9Qb2xpY3lEZWNp
c2lvbkFzeW5jaHJvbm91c2x5ID0gZmFsc2U7CisKKyAgICB0ZXN0LT5sb2FkVVJJKHJlc291cmNl
VVJMLmdldCgpKTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAg
Z19hc3NlcnRfZmFsc2UodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBOb3cgY2hlY2sg
ZHluYW1pY2FsbHkgdXBkYXRpbmcgdGhlIGxvYWRlciBwb2xpY2llcworICAgIHdlYmtpdF93ZWJz
aXRlX3BvbGljaWVzX3NldF9hdXRvcGxheV9wb2xpY3kodGVzdC0+bV93ZWJzaXRlUG9saWNpZXMu
Z2V0KCksIFdFQktJVF9BVVRPUExBWV9ERU5ZKTsKKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBX
VEY6Om51bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5
Q2xpZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURl
Y2lzaW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKworICAgIHRlc3QtPmxvYWRVUkkocmVzb3Vy
Y2VVUkwuZ2V0KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAg
ICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIENoZWNrIHRo
YXQgSlMgY2FuIG5vdCBzaWRlLXN0ZXAgdGhlIGFjdGl2ZSBwb2xpY3kKKyAgICB0ZXN0LT5tX2F1
dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKCJwbGF5VmlkZW8oKTsiLCBudWxscHRyKTsKKyAgICAvLyBTcGluIHVudGls
IGF1dG9wbGF5IHN0YXR1cyBpcyByZXBvcnRlZCwgdGhlIHJ1biBKUyBBUEkgY2FuCisgICAgLy8g
Y29tcGxldGUgaXRzIG1haW4gbG9vcCBiZWZvcmUgdGhlIHByb21pc2VzIGluIGF1dG9wbGF5LWNo
ZWNrIGZpcmUuCisgICAgd2hpbGUgKCF0ZXN0LT5tX2F1dG9wbGF5ZWQuaGFzVmFsdWUoKSkKKyAg
ICAgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X2Zh
bHNlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworCisgICAgLy8gTm93IHVwZGF0ZSB0aGUgcG9saWN5
IHRvIGFsbG93IGF1dG9wbGF5LCBhbmQgdXNlIEpTIHRvIHJlc3VtZSB0aGUgdmlkZW8uCisgICAg
dGVzdC0+bV9hdXRvcGxheWVkID0gV1RGOjpudWxsb3B0OworICAgIHdlYmtpdF93ZWJzaXRlX3Bv
bGljaWVzX3NldF9hdXRvcGxheV9wb2xpY3kodGVzdC0+bV93ZWJzaXRlUG9saWNpZXMuZ2V0KCks
IFdFQktJVF9BVVRPUExBWV9BTExPVyk7CisgICAgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV93ZWJz
aXRlX3BvbGljaWVzKHRlc3QtPm1fd2ViVmlldywgdGVzdC0+bV93ZWJzaXRlUG9saWNpZXMuZ2V0
KCkpOworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgicGxheVZp
ZGVvKCk7IiwgbnVsbHB0cik7CisgICAgLy8gU3BpbiB1bnRpbCBhdXRvcGxheSBzdGF0dXMgaXMg
cmVwb3J0ZWQsIHRoZSBydW4gSlMgQVBJIGNhbgorICAgIC8vIGNvbXBsZXRlIGl0cyBtYWluIGxv
b3AgYmVmb3JlIHRoZSBwcm9taXNlcyBpbiBhdXRvcGxheS1jaGVjayBmaXJlLgorICAgIHdoaWxl
ICghdGVzdC0+bV9hdXRvcGxheWVkLmhhc1ZhbHVlKCkpCisgICAgICAgIGdfbWFpbl9sb29wX3J1
bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmRpZEF1dG9wbGF5
KCkpOworCisgICAgLy8gU2lsZW50IGF1ZGlvIHRyYWNrIHRlc3RzCisgICAgcmVzb3VyY2VOYW1l
ID0gImF1dG9wbGF5LW5vLWF1ZGlvLWNoZWNrLmh0bWwiOworICAgIHJlc291cmNlUGF0aC5yZXNl
dChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFJlc291cmNlc0RpcihUZXN0OjpXZWJLaXQyUmVz
b3VyY2VzKS5kYXRhKCksIHJlc291cmNlTmFtZSwgbnVsbHB0cikpOworICAgIHJlc291cmNlVVJM
LnJlc2V0KGdfZmlsZW5hbWVfdG9fdXJpKHJlc291cmNlUGF0aC5nZXQoKSwgbnVsbHB0ciwgbnVs
bHB0cikpOworCisgICAgLy8gREVOWSBwb2xpY3kKKyAgICB3ZWJraXRfd2Vic2l0ZV9wb2xpY2ll
c19zZXRfYXV0b3BsYXlfcG9saWN5KHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpLCBXRUJL
SVRfQVVUT1BMQVlfREVOWSk7CisgICAgdGVzdC0+bV9hdXRvcGxheWVkID0gV1RGOjpudWxsb3B0
OworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBvbGljeUNsaWVudFRlc3Q6
OlVzZVdpdGhQb2xpY3k7CisgICAgdGVzdC0+bV9yZXNwb25kVG9Qb2xpY3lEZWNpc2lvbkFzeW5j
aHJvbm91c2x5ID0gZmFsc2U7CisKKyAgICB0ZXN0LT5sb2FkVVJJKHJlc291cmNlVVJMLmdldCgp
KTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnRf
ZmFsc2UodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBBTExPVworICAgIHdlYmtpdF93
ZWJzaXRlX3BvbGljaWVzX3NldF9hdXRvcGxheV9wb2xpY3kodGVzdC0+bV93ZWJzaXRlUG9saWNp
ZXMuZ2V0KCksIFdFQktJVF9BVVRPUExBWV9BTExPVyk7CisgICAgdGVzdC0+bV9hdXRvcGxheWVk
ID0gV1RGOjpudWxsb3B0OworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBv
bGljeUNsaWVudFRlc3Q6OlVzZVdpdGhQb2xpY3k7CisgICAgdGVzdC0+bV9yZXNwb25kVG9Qb2xp
Y3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5ID0gZmFsc2U7CisKKyAgICB0ZXN0LT5sb2FkVVJJKHJl
c291cmNlVVJMLmdldCgpKTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7
CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIEFMTE9X
X1dJVEhPVVRfU09VTkQKKyAgICB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlf
cG9saWN5KHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpLCBXRUJLSVRfQVVUT1BMQVlfQUxM
T1dfV0lUSE9VVF9TT1VORCk7CisgICAgdGVzdC0+bV9hdXRvcGxheWVkID0gV1RGOjpudWxsb3B0
OworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBvbGljeUNsaWVudFRlc3Q6
OlVzZVdpdGhQb2xpY3k7CisgICAgdGVzdC0+bV9yZXNwb25kVG9Qb2xpY3lEZWNpc2lvbkFzeW5j
aHJvbm91c2x5ID0gZmFsc2U7CisKKyAgICB0ZXN0LT5sb2FkVVJJKHJlc291cmNlVVJMLmdldCgp
KTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnRf
dHJ1ZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdE5hdmlnYXRp
b25Qb2xpY3koUG9saWN5Q2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0
ZXN0LT5tX3BvbGljeURlY2lzaW9uVHlwZUZpbHRlciA9IFdFQktJVF9QT0xJQ1lfREVDSVNJT05f
VFlQRV9OQVZJR0FUSU9OX0FDVElPTjsKQEAgLTI3Nyw2ICs0MTQsNyBAQCB2b2lkIGJlZm9yZUFs
bCgpCiAgICAgUG9saWN5Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRQb2xpY3lDbGllbnQiLCAibmF2
aWdhdGlvbi1wb2xpY3kiLCB0ZXN0TmF2aWdhdGlvblBvbGljeSk7CiAgICAgUG9saWN5Q2xpZW50
VGVzdDo6YWRkKCJXZWJLaXRQb2xpY3lDbGllbnQiLCAicmVzcG9uc2UtcG9saWN5IiwgdGVzdFJl
c3BvbnNlUG9saWN5KTsKICAgICBQb2xpY3lDbGllbnRUZXN0OjphZGQoIldlYktpdFBvbGljeUNs
aWVudCIsICJuZXctd2luZG93LXBvbGljeSIsIHRlc3ROZXdXaW5kb3dQb2xpY3kpOworICAgIFBv
bGljeUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0UG9saWN5Q2xpZW50IiwgImF1dG9wbGF5LXBvbGlj
eSIsIHRlc3RBdXRvcGxheVBvbGljeSk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400866</attachid>
            <date>2020-06-02 16:38:18 -0700</date>
            <delta_ts>2020-06-03 22:38:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20200603003817.patch</filename>
            <type>text/plain</type>
            <size>51697</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDdiZDZkMGY0NTE5Y2Qx
YzY4ZWUxOTAzN2E2ZTgwMzEzNDhmN2Y4MS4uNDJiM2YzMWVjMjZiNDJlYzZmNWE2ZWQ4NjU0Mjgw
ZWZlNzE3NDk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA2LTAyICBDaGFy
bGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBEaXNhYmxl
IHZpZGVvIGF1dG9wbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ4NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3VyLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UpOiBNb2Rlcm5pemUgc3R5bGUuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRvcGxheSk6IEFk
ZCBhIG5vdGUgdG8KKyAgICAgICAgcmVmYWN0b3IgYmVoYXZpb3VyIHJlc3RyaWN0aW9uIGxvZ2lj
IGludG8gTWVkaWFFbGVtZW50U2Vzc2lvbi4KKwogMjAyMC0wNS0yOSAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEpTQmlnSW50IGFsbG9jYXRpb24g
c2hvdWxkIGJlIGdyYWNlZnVsIGZvciBPT00KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzg1Mjk1ZjM5Y2JmMDgxMGVh
ZjNkODI4NzE2NzRjZTE2NzllMDBjNi4uMzc4NDE0ZjFmZDg5YjEwMWJiZTFmMTQ5NzFmYWQ5NDAy
YWI3M2Y5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAyMC0wNi0wMiAgQ2hhcmxpZSBU
dXJuZXIgIDxjdHVybmVyQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRGlzYWJsZSB2aWRl
byBhdXRvcGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg0ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwOgorICAgICAg
ICAod2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcyk6IEFkZCBhbiBBUEkg
dG8gcmVzcG9uZAorICAgICAgICB0byBuYXZpZ2F0aW9uIGRlY2lzaW9ucyB3aXRoIHBvbGljaWVz
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAg
ICAgICAgKHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyk6IFBsdW1iIGluIHRo
ZSBkZWZhdWx0CisgICAgICAgIHdlYnNpdGUgcG9saWNpZXMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3
aXRoIHRoZSB3ZWIgdmlldy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlldy5jcHA6IEFkZCBhIGNvbnN0cnVjdCBvbmx5CisgICAgICAgIGRlZmF1bHQgd2Vic2l0ZSBw
b2xpY3kgZmllbGQgdG8gdGhlIHZpZXcuIFRoaXMgd2lsbCBiZSB1c2VkIHdoZW4KKyAgICAgICAg
Y3JlYXRpbmcgd2ViIHZpZXdzIGluIHRoZSB3ZWIgY29udGV4dC4KKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkpOgor
ICAgICAgICAod2Via2l0V2ViVmlld0dldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdEaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdCk6IFVzZXIgZ2VzdHVyZXMgd2VyZSBi
ZWluZworICAgICAgICBhcnRpZmljaWFsbHkgZm9yY2VkIG9uIGluIHRoaXMgQVBJLCBzbyBpZiB5
b3UgcmVzdW1lZCBhIHZpZGVvIGZyb20KKyAgICAgICAgSlMsIHRoZSBhY3RpdmUgYXV0b3BsYXkg
cG9saWN5IHdvdWxkIGVzc2VudGlhbGx5IGJlIGlnbm9yZWQuIFRoaXMKKyAgICAgICAgZG9lc24n
dCBzZWVtIGxpa2UgdGhlIHJpZ2h0IGJlaGF2aW91ciwgYW5kIGlmIHlvdSB3YW50IGl0LCB3ZQor
ICAgICAgICBzaG91bGQgZXhwb3NlIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHRvIHRoZSBBUEkg
dXNlcnMgdG8gdG9nZ2xlCisgICAgICAgIGRlZmF1bHRzLiBXaXRob3V0IHRoaXMgY2hhbmdlLCBp
dCdzIG5vdCBwb3NzaWJsZSBmb3IgbWUgdG8gdGVzdAorICAgICAgICB0aGUgQVBJIHdvcmtzIGFz
IGludGVuZGVkIHdoZW4gSlMgYXR0ZW1wdCB0byBhdXRvcGxheSB2aWRlb3MgdGhhdAorICAgICAg
ICB0aGUgdXNlciBkb2VzIG5vdCB3YW50IHRvIGF1dG9wbGF5LiBUaGUgcGFyYW1ldGVycyBhcmUg
ZmFjdG9yZWQKKyAgICAgICAgb3V0IG9mIHRoZSBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUgY2Fs
bCwgc2luY2UgaXQgd2FzIGdldHRpbmcKKyAgICAgICAgaGFyZCB0byByZWFkLgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3VwZGF0ZV93ZWJzaXRlX3BvbGljaWVzKTogQWRkIGFuIEFQSSB0byB1
cGRhdGUKKyAgICAgICAgdGhlIHZpZXcncyBhY3RpdmUgcG9saWNpZXMgZHluYW1pY2FsbHkuIFlv
dSBtdXN0IGJlIGNhcmVmdWwgdG8KKyAgICAgICAgY2FsbCB0aGlzIGFmdGVyIGNvbW1pdHRhbCBh
bmQgYmVmb3JlIGxvYWQsIG90aGVyd2lzZSBpdCB3b24ndAorICAgICAgICBzdGljay4KKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0d0ay5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhf
cmVsYXRlZF92aWV3KTogQ29weSBvdmVyIHRoZSBkZWZhdWx0CisgICAgICAgIHdlYnNpdGUgcG9s
aWNpZXMgYXMgd2VsbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS0xLjAtc2VjdGlvbnMudHh0OgorCiAyMDIwLTA1LTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJEcml2ZXI6IHN0b3AgdXNp
bmcgR2RrRXZlbnQgQVBJIGluIHByZXBhcmF0aW9uIGZvciBHVEs0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAxMWUzZjIzMGUwMjIzY2JkYjUxMWI1MjNiZGYz
N2ZjMTI5YWM2NGNmLi4xYjc3NjMxOTJlYzNiNDhhOGFmOWJlYjA4ZjFjYzM5ZWM1NGJjNmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTc3MTIsNyArNzcx
Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKQog
ewogICAgIHVwZGF0ZVZvbHVtZSgpOwogCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgp
LnBhZ2UoKSkgeworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpIHsKICAg
ICAgICAgaWYgKGhhc0F1ZGlvKCkgJiYgIW11dGVkKCkgJiYgcGFnZS0+aXNBdWRpb011dGVkKCkp
CiAgICAgICAgICAgICB1c2VyRGlkSW50ZXJmZXJlV2l0aEF1dG9wbGF5KCk7CiAgICAgfQpAQCAt
Nzg4NCw2ICs3ODg0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRv
cGxheSgpCiAgICAgaWYgKCFhdXRvcGxheSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBG
SVhNRTogQWxsIHRoaXMgaXMgbWVkaWEgc2Vzc2lvbiBzcGVjaWZpYywgcHV0IGl0IGluIHRoYXQg
Y2xhc3MgaW5zdGVhZC4KICAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5oYXNCZWhhdmlvclJlc3Ry
aWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OkludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVk
KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
R1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBiOTQ1MjJj
OGZjYTBhZjg4NmZlZmQyY2U0Yzk4MmU0MDc3MTVkNTZiLi5mZDk0M2ZmNWE1ZmVhMDY5NWM0NGRi
Zjk4ZGRmYWQwNDBmM2VjMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE0MCw2ICsx
NDAsNyBAQCBzZXQoV2ViS2l0MkdUS19JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaAogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKICAgICAke1dF
QktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuaAorICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgK
ICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAogKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzR1RLLnR4dAppbmRleCAyZDVhYWM5NTNhYmVmMjNlYTVkMDIzM2FkMGE1YmU5YWE1OTg1Yjhl
Li4xY2YyNzdjOTU1OTJiMTczODE5ZTk0MmE3OTllNzZhOGQxMDFkODg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dU
Sy50eHQKQEAgLTE5Miw2ICsxOTIsNyBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
d1Nlc3Npb25TdGF0ZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGEuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVE
YXRhTWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2luZG93
UHJvcGVydGllcy5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZVBvbGljaWVzLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0
azMuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwIEBu
by11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0UG9saWN5RGVjaXNpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0UG9saWN5RGVjaXNpb24uY3BwCmluZGV4IGEzNTc0NzkzYzY5ZWQwNzY4M2E2MDNlNjI5
ZjQwOTExZjc1YmNhM2EuLmRiNGQzNTA4ZDQxNDllNWQ0NGZjOWUxMmJlZmVkNWViMjllNzRlOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFBvbGlj
eURlY2lzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRQb2xpY3lEZWNpc2lvbi5jcHAKQEAgLTIwLDggKzIwLDExIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9saWN5RGVjaXNpb24uaCIKIAorI2luY2x1ZGUgIkFQSVdl
YnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5o
IgogI2luY2x1ZGUgIldlYktpdFBvbGljeURlY2lzaW9uUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldl
YktpdFdlYnNpdGVQb2xpY2llcy5oIgorI2luY2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llc1By
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAjaW5jbHVkZSA8d3Rm
L2dsaWIvV1RGR1R5cGUuaD4KIApAQCAtODQsNiArODcsMzMgQEAgdm9pZCB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX3VzZShXZWJLaXRQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCiAgICAgbGlzdGVu
ZXItPnVzZSgpOwogfQogCisvKioKKyAqIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhf
cG9saWNpZXM6CisgKiBAZGVjaXNpb246IGEgI1dlYktpdFBvbGljeURlY2lzaW9uCisgKiBAcG9s
aWNpZXM6IGEgI1dlYktpdFdlYnNpdGVQb2xpY2llcworICoKKyAqIEFjY2VwdCB0aGUgYWN0aW9u
IHdoaWNoIHRyaWdnZXJlZCB0aGlzIGRlY2lzaW9uLCBhbmQgY29udGludWUgd2l0aAorICogQHBv
bGljaWVzIGFmZmVjdGluZyBhbGwgc3Vic2VxdWVudCBsb2FkcyBvZiByZXNvdXJjZXMgaW4gdGhl
CisgKiBjdXJyZW50IG9yaWdpbi4KKyAqCisgKiBGb3IgZXhhbXBsZSwgYSBuYXZpZ2F0aW9uIGRl
Y2lzaW9uIHRvIGEgdmlkZW8gc2hhcmluZyB3ZWJzaXRlIG1heQorICogYmUgYWNjZXB0ZWQgdW5k
ZXIgdGhlIHByaXZpc28gbm8gbW92aWVzIGFyZSBhbGxvd2VkIHRvIGF1dG9wbGF5LiBUaGUKKyAq
IGF1dG9wbGF5IHBvbGljeSBpbiB0aGlzIGNhc2Ugd291bGQgYmUgc2V0IGluIHRoZSBAcG9saWNp
ZXMuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwordm9pZCB3ZWJraXRfcG9saWN5X2RlY2lzaW9u
X3VzZV93aXRoX3BvbGljaWVzKFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lvbiwgV2ViS2l0
V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKworICAgIGlmICghZGVjaXNpb24tPnBy
aXYtPmxpc3RlbmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxpc3RlbmVyID0gc3Rk
OjpleGNoYW5nZShkZWNpc2lvbi0+cHJpdi0+bGlzdGVuZXIsIG51bGxwdHIpOworCisgICAgbGlz
dGVuZXItPnVzZSh3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRXZWJzaXRlUG9saWNpZXMocG9saWNp
ZXMpKTsKK30KKwogLyoqCiAgKiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2lnbm9yZToKICAqIEBk
ZWNpc2lvbjogYSAjV2ViS2l0UG9saWN5RGVjaXNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggNzIyMmE5MWNi
OTVhNWUzNzBmOTIyOWVlNjQyNWU0MTJiNWY4YjA3OC4uY2JlYzkxM2Q1YjJhMDMwNTkyMDhjYTcw
MTdkNzhiYzBiMGU4YmRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRl
ICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCkBAIC0xODk3LDcgKzE4OTgsNyBAQCBX
ZWJQcm9jZXNzUG9vbCYgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKFdlYktpdFdlYkNv
bnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJuICpjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbDsK
IH0KIAotdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2Vi
Q29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyKiB1c2VyQ29udGVudE1hbmFnZXIsIFdlYktpdFdlYlZpZXcqIHJlbGF0ZWRWaWV3
KQordm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29u
dGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyKiB1c2VyQ29udGVudE1hbmFnZXIsIFdlYktpdFdlYlZpZXcqIHJlbGF0ZWRWaWV3LCBX
ZWJLaXRXZWJzaXRlUG9saWNpZXMqIGRlZmF1bHRXZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgYXV0
byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbChjb250ZXh0LT5wcml2LT5wcm9j
ZXNzUG9vbC5nZXQoKSk7CkBAIC0xOTEwLDYgKzE5MTEsNyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRl
eHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRX
ZWJWaQogICAgIGlmICghbWFuYWdlcikKICAgICAgICAgbWFuYWdlciA9IGNvbnRleHQtPnByaXYt
PndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0V2Vi
c2l0ZURhdGFTdG9yZSgmd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKG1hbmFn
ZXIpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0RGVmYXVsdFdlYnNpdGVQb2xpY2llcyh3
ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRXZWJzaXRlUG9saWNpZXMoZGVmYXVsdFdlYnNpdGVQb2xp
Y2llcykpOwogICAgIHdlYmtpdFdlYlZpZXdDcmVhdGVQYWdlKHdlYlZpZXcsIFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24pKTsKIAogICAgIGF1dG8mIHBhZ2UgPSB3ZWJraXRXZWJWaWV3R2V0UGFn
ZSh3ZWJWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCmluZGV4IGQ4NTY5Yzg1OWJhYmZlMTE2OWM2
ODJlYjY4NjM2NmUzZDA2OWI5YWQuLjc4ZDE1NzhmOTQ3OTNlOWU1OWEzZDRkMmIzM2U3OWVhODUz
MGZhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYkNvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaCIK
ICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZVBv
bGljaWVzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogCkBAIC0zNiw3ICszNyw3IEBAIFdlYktpdERvd25sb2FkKiB3
ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkUHJveHkq
KTsKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZChXZWJLaXRX
ZWJDb250ZXh0KiwgY29uc3QgY2hhciogdXJpLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwogdm9p
ZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5Kik7
CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQoV2ViS2l0V2ViQ29udGV4dCos
IFdlYktpdERvd25sb2FkKik7Ci12b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2Vi
VmlldyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2ViVmlldyosIFdlYktpdFVzZXJDb250ZW50
TWFuYWdlciosIFdlYktpdFdlYlZpZXcqKTsKK3ZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBh
Z2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3KiwgV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyKiwgV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYnNpdGVQb2xpY2llcyop
Owogdm9pZCB3ZWJraXRXZWJDb250ZXh0V2ViVmlld0Rlc3Ryb3llZChXZWJLaXRXZWJDb250ZXh0
KiwgV2ViS2l0V2ViVmlldyopOwogV2ViS2l0V2ViVmlldyogd2Via2l0V2ViQ29udGV4dEdldFdl
YlZpZXdGb3JQYWdlKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwog
R1ZhcmlhbnQqIHdlYmtpdFdlYkNvbnRleHRJbml0aWFsaXplV2ViRXh0ZW5zaW9ucyhXZWJLaXRX
ZWJDb250ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwCmluZGV4IGU0MDQ1YzM2NzA2NTc1Y2M3ZGI5Zjk4NzExZWZkNjkwMDRh
MmEzZjAuLjU4NTA4MGZjYjQ0NzA2NDlhMTlhZTQ2YjQ4MDgyNzA2MzA2OThkMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBA
IC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9s
aWNpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BUElDYXN0Lmg+CkBAIC0yMDAsNyArMjAxLDggQEAgZW51bSB7CiAgICAgUFJPUF9BVVRPTUFU
SU9OX1BSRVNFTlRBVElPTl9UWVBFLAogICAgIFBST1BfRURJVEFCTEUsCiAgICAgUFJPUF9QQUdF
X0lELAotICAgIFBST1BfSVNfTVVURUQKKyAgICBQUk9QX0lTX01VVEVELAorICAgIFBST1BfV0VC
U0lURV9QT0xJQ0lFUwogfTsKIAogdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPFdl
YktpdFdlYlJlc291cmNlPiA+IExvYWRpbmdSZXNvdXJjZXNNYXA7CkBAIC0zMDIsNiArMzA0LDcg
QEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRBdXRo
ZW50aWNhdGlvblJlcXVlc3Q+IGF1dGhlbnRpY2F0aW9uUmVxdWVzdDsKIAogICAgIEdSZWZQdHI8
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyPiB3ZWJzaXRlRGF0YU1hbmFnZXI7CisgICAgR1JlZlB0
cjxXZWJLaXRXZWJzaXRlUG9saWNpZXM+IHdlYnNpdGVQb2xpY2llczsKIH07CiAKIHN0YXRpYyBn
dWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTc1NSw3ICs3NTgsMTAgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAg
ICAgICAgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vzc1Bvb2wocHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyLmdldCgpLCB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wocHJpdi0+
Y29udGV4dC5nZXQoKSkpOwogICAgIH0KIAotICAgIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdl
Rm9yV2ViVmlldyhwcml2LT5jb250ZXh0LmdldCgpLCB3ZWJWaWV3LCBwcml2LT51c2VyQ29udGVu
dE1hbmFnZXIuZ2V0KCksIHByaXYtPnJlbGF0ZWRWaWV3KTsKKyAgICBpZiAoIXByaXYtPndlYnNp
dGVQb2xpY2llcykKKyAgICAgICAgcHJpdi0+d2Vic2l0ZVBvbGljaWVzID0gYWRvcHRHUmVmKHdl
YmtpdF93ZWJzaXRlX3BvbGljaWVzX25ldygpKTsKKworICAgIHdlYmtpdFdlYkNvbnRleHRDcmVh
dGVQYWdlRm9yV2ViVmlldyhwcml2LT5jb250ZXh0LmdldCgpLCB3ZWJWaWV3LCBwcml2LT51c2Vy
Q29udGVudE1hbmFnZXIuZ2V0KCksIHByaXYtPnJlbGF0ZWRWaWV3LCBwcml2LT53ZWJzaXRlUG9s
aWNpZXMuZ2V0KCkpOwogCiAgICAgcHJpdi0+bG9hZE9ic2VydmVyID0gbWFrZVVuaXF1ZTxQYWdl
TG9hZFN0YXRlT2JzZXJ2ZXI+KHdlYlZpZXcpOwogICAgIGdldFBhZ2Uod2ViVmlldykucGFnZUxv
YWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpwcml2LT5sb2FkT2JzZXJ2ZXIpOwpAQCAtODM4LDYgKzg0
NCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlCiAgICAgY2FzZSBQUk9QX0lTX01VVEVEOgog
ICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lzX211dGVkKHdlYlZpZXcsIGdfdmFsdWVfZ2V0
X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dFQlNJVEVf
UE9MSUNJRVM6CisgICAgICAgIHdlYlZpZXctPnByaXYtPndlYnNpdGVQb2xpY2llcyA9IHN0YXRp
Y19jYXN0PFdlYktpdFdlYnNpdGVQb2xpY2llcyo+KGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSkp
OworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lO
VkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAt
OTAzLDYgKzkxMiw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0lT
X01VVEVEOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2lzX211dGVkKHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X1dFQlNJVEVfUE9MSUNJRVM6CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Vi
a2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZ
X0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOwogICAgIH0KQEAgLTEyOTAsNiArMTMwMiwy
MyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3
Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIEZBTFNFLAogICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURXUklURSkpOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzp3
ZWJzaXRlLXBvbGljaWVzOgorICAgICAqCisgICAgICogVGhlICNXZWJLaXRXZWJzaXRlUG9saWNp
ZXMgZm9yIHRoZSB2aWV3LgorICAgICAqCisgICAgICogU2luY2U6IDIuMzAKKyAgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3Ms
CisgICAgICAgIFBST1BfV0VCU0lURV9QT0xJQ0lFUywKKyAgICAgICAgZ19wYXJhbV9zcGVjX29i
amVjdCgKKyAgICAgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwKKyAgICAgICAgICAgIF8oIkRl
ZmF1bHQgV2Vic2l0ZSBQb2xpY2llcyIpLAorICAgICAgICAgICAgXygiVGhlIGRlZmF1bHQgcG9s
aWN5IG9iamVjdCBmb3Igc2l0ZXMgbG9hZGVkIGluIHRoaXMgdmlldyIpLAorICAgICAgICAgICAg
V0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUywKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQ
YXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05M
WSkpKTsKKwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6OmxvYWQtY2hhbmdlZDoKICAg
ICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlz
IGVtaXR0ZWQKQEAgLTM3NTMsNyArMzc4Miw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9q
YXZhc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBzY3JpcHQsCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9
IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNl
ckRhdGEpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7
IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwg
dHJ1ZSB9LCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFp
bHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzIHBhcmFtcyA9IHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9LCBmYWxz
ZSwgV1RGOjpudWxsb3B0LCBmYWxzZSB9OworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKFdURk1vdmUocGFyYW1zKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25h
bDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ip
IHsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwogICAgICAgICBp
ZiAoZGV0YWlscykKICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsKQEAg
LTQ2MTcsMyArNDY0Nyw0MSBAQCBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIHdlYmtpdF93ZWJf
dmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQoV2ViS2l0V2ViVmlldwogI2VuZGlmCiAKIH0K
KworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3dlYnNpdGVfcG9saWNpZXM6CisgKiBA
d2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBwb2xpY2llczogVGhlICNXZWJLaXRXZWJz
aXRlUG9saWNpZXMgdG8gYXBwbHkgdG8gdGhlIHBhZ2UuCisgKgorICogVXBkYXRlcyB0aGUgd2Vi
c2l0ZSBwb2xpY2llcyBhc3NvY2lhdGVkIHdpdGggQHdlYl92aWV3LgorICoKKyAqIE5vdGUsIGl0
IG9ubHkgbWFrZXMgc2Vuc2UgdG8gY2FsbCB0aGlzIEFQSSBhZnRlciAlV0VCS0lUX0xPQURfQ09N
TUlUVEVECisgKiBhbmQgYmVmb3JlICVXRUJLSVRfTE9BRF9GSU5JU0hFRC4KKyAqCisgKiBTaW5j
ZTogMi4zMAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfd2Vic2l0ZV9wb2xpY2ll
cyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVz
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsK
KyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTKHBvbGljaWVz
KSk7CisKKyAgICBhdXRvIHBvbGljaWVzRGF0YSA9IHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFBv
bGljaWVzRGF0YShwb2xpY2llcyk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS51cGRhdGVXZWJzaXRl
UG9saWNpZXMoV1RGTW92ZShwb2xpY2llc0RhdGEpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXM6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqCisgKiBHZXRzIHRoZSB3ZWJzaXRlIHBvbGljaWVzIGFzc29jaWF0ZWQgd2l0aCBAd2Vi
X3ZpZXcuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdFdlYnNp
dGVQb2xpY2llcyBhc3NvY2lhdGVkIHdpdGggdGhlIHZpZXcKKyAqCisgKiBTaW5jZTogMi4zMAor
ICovCitXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9w
b2xpY2llcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4g
d2ViVmlldy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzLmdldCgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llcy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzA5MzQwMWQ2M2IyNTJiNjg0ZjllNTk2ZGY2OGRjZmVmY2Q0MjlmZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYnNpdGVQb2xpY2llcy5jcHAKQEAgLTAsMCArMSwyNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJL
aXRXZWJzaXRlUG9saWNpZXMuaCIKKworI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgor
I2luY2x1ZGUgIldlYktpdEVudW1UeXBlcy5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0Rh
dGEuaCIKKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL1dU
RkdUeXBlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogU0VDVElPTjog
V2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IFZpZXcgc3BlY2lm
aWMgd2Vic2l0ZSBwb2xpY2llcworICogQFRpdGxlOiBXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAq
IEBTZWVfYWxzbzogI1dlYktpdFdlYlZpZXcKKyAqCisgKiBXZWJLaXRXZWJzaXRlUG9saWNpZXMg
YWxsb3dzIHlvdSB0byBjb25maWd1cmUgcGVyLXBhZ2UgYXV0b3BsYXkgcG9saWNpZXMuCisgKgor
ICogU2luY2U6IDIuMzAKKyAqLworCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitlbnVtIHsK
KyAgICBQUk9QXzAsCisKKyAgICBQUk9QX0FVVE9QTEFZX1BPTElDWQorfTsKKworc3RydWN0IF9X
ZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlIHsKKyAgICBfV2ViS2l0V2Vic2l0ZVBvbGljaWVz
UHJpdmF0ZSgpCisgICAgICAgIDogd2Vic2l0ZVBvbGljaWVzKEFQSTo6V2Vic2l0ZVBvbGljaWVz
OjpjcmVhdGUoKSkKKyAgICB7CisgICAgfQorICAgIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2ll
cz4gd2Vic2l0ZVBvbGljaWVzOworfTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYnNp
dGVQb2xpY2llcywgd2Via2l0X3dlYnNpdGVfcG9saWNpZXMsIEdfVFlQRV9PQkpFQ1QpCisKK3N0
YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7
CisgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcyA9IFdFQktJVF9XRUJTSVRFX1BP
TElDSUVTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9B
VVRPUExBWV9QT0xJQ1k6CisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93
ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRvcGxheV9wb2xpY3kocG9saWNpZXMpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BF
UlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOworICAgIH0KK30KKworc3RhdGljIHZv
aWQgd2Via2l0V2Vic2l0ZVBvbGljaWVzU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wSUQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sK
KyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzID0gV0VCS0lUX1dFQlNJVEVfUE9M
SUNJRVMob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElEKSB7CisgICAgY2FzZSBQUk9QX0FV
VE9QTEFZX1BPTElDWTogeworICAgICAgICB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0
b3BsYXlfcG9saWN5KHBvbGljaWVzLCBzdGF0aWNfY2FzdDxXZWJLaXRBdXRvcGxheVBvbGljeT4o
Z192YWx1ZV9nZXRfZW51bSh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRl
ZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BJRCwgcGFyYW1TcGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYnNp
dGVQb2xpY2llc0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChv
YmplY3QpOworfQorCitBUEk6OldlYnNpdGVQb2xpY2llcyogd2Via2l0V2Vic2l0ZVBvbGljaWVz
R2V0V2Vic2l0ZVBvbGljaWVzKFdlYktpdFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMpCit7Cisg
ICAgcmV0dXJuIHBvbGljaWVzLT5wcml2LT53ZWJzaXRlUG9saWNpZXMuZ2V0KCk7Cit9CisKK1dl
YnNpdGVQb2xpY2llc0RhdGEgd2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UG9saWNpZXNEYXRhKFdl
YktpdFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMpCit7CisgICAgV2Vic2l0ZVBvbGljaWVzRGF0
YSBwb2xpY2llc0RhdGEgeyB9OworCisgICAgc3dpdGNoICh3ZWJraXRfd2Vic2l0ZV9wb2xpY2ll
c19nZXRfYXV0b3BsYXlfcG9saWN5KHBvbGljaWVzKSkgeworICAgIGNhc2UgV2ViS2l0QXV0b3Bs
YXlQb2xpY3k6OldFQktJVF9BVVRPUExBWV9BTExPVzoKKyAgICAgICAgcG9saWNpZXNEYXRhLmF1
dG9wbGF5UG9saWN5ID0gV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvdzsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBXZWJLaXRBdXRvcGxheVBvbGljeTo6V0VCS0lUX0FVVE9QTEFZX0FMTE9X
X1dJVEhPVVRfU09VTkQ6CisgICAgICAgIHBvbGljaWVzRGF0YS5hdXRvcGxheVBvbGljeSA9IFdl
YnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgV2ViS2l0QXV0b3BsYXlQb2xpY3k6OldFQktJVF9BVVRPUExBWV9ERU5ZOgorICAg
ICAgICBwb2xpY2llc0RhdGEuYXV0b3BsYXlQb2xpY3kgPSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6
OkRlbnk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHBvbGljaWVzRGF0
YS5hdXRvcGxheVBvbGljeSA9IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdDsKKyAgICB9
CisKKyAgICByZXR1cm4gcG9saWNpZXNEYXRhOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
c2l0ZV9wb2xpY2llc19jbGFzc19pbml0KFdlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzKiBmaW5k
Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFT
UyhmaW5kQ2xhc3MpOworCisgICAgZ09iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRX
ZWJzaXRlUG9saWNpZXNHZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0
eSA9IHdlYmtpdFdlYnNpdGVQb2xpY2llc1NldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+
Y29uc3RydWN0ZWQgPSB3ZWJraXRXZWJzaXRlUG9saWNpZXNDb25zdHJ1Y3RlZDsKKworICAgIC8q
KgorICAgICAqIFdlYktpdFdlYnNpdGVQb2xpY2llczphdXRvcGxheS1wb2xpY3k6CisgICAgICoK
KyAgICAgKiBUaGUgI1dlYktpdEF1dG9wbGF5UG9saWN5IG9mICNXZWJLaXRXZWJzaXRlUG9saWNp
ZXMuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zMAorICAgICAqLworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJP
UF9BVVRPUExBWV9QT0xJQ1ksCisgICAgICAgIGdfcGFyYW1fc3BlY19lbnVtKAorICAgICAgICAg
ICAgImF1dG9wbGF5LXBvbGljeSIsCisgICAgICAgICAgICAiQXV0b3BsYXkgUG9saWN5IiwKKyAg
ICAgICAgICAgIF8oIlRoZSBhdXRvcGxheSBwb2xpY3kgdG8gdXNlIHdoZW4gZGVjaWRpbmcgdG8g
YXV0b3BsYXkgbWVkaWEiKSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0FVVE9QTEFZX1BPTElD
WSwKKyAgICAgICAgICAgIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5ELAorICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUp
KSk7Cit9CisKKworLyoqCisgKiB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXc6CisgKgorICog
UmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiB0aGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2Vic2l0
ZVBvbGljaWVzCisgKgorICogU2luY2U6IDIuMzAKKyAqLworV2ViS2l0V2Vic2l0ZVBvbGljaWVz
KiB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcodm9pZCkKK3sKKyAgICByZXR1cm4gV0VCS0lU
X1dFQlNJVEVfUE9MSUNJRVMoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJ
RVMsIG51bGxwdHIpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdf
d2l0aF9wb2xpY2llczoKKyAqIEBmaXJzdF9wb2xpY3lfbmFtZTogbmFtZSBvZiB0aGUgZmlyc3Qg
cG9saWN5IHRvIHNldAorICogQC4uLjogdmFsdWUgb2YgZmlyc3QgcG9saWN5LCBmb2xsb3dlZCBi
eSBtb3JlIHBvbGljaWVzLCAlTlVMTC10ZXJtaW5hdGVkCisgKgorICogUmV0dXJuczogKHRyYW5z
ZmVyIGZ1bGwpOiB0aGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKgor
ICogPGluZm9ybWFsZXhhbXBsZT48cHJvZ3JhbWxpc3Rpbmc+CisgKiBXZWJLaXRXZWJzaXRlUG9s
aWNpZXMgKmRlZmF1bHRfd2Vic2l0ZV9wb2xpY2llcyA9IHdlYmtpdF93ZWJzaXRlX3BvbGljaWVz
X25ld193aXRoX3BvbGljaWVzKAorICogICAgICJhdXRvcGxheS1wb2xpY3kiLCBXRUJLSVRfQVVU
T1BMQVlfREVOWSwKKyAqICAgICBOVUxMKTsKKyAqIC4uLgorICogV2ViS2l0V2ViVmlldyAqdmll
dyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCisg
KiAgICAgIndlYi1jb250ZXh0IiwgY3R4LAorICogICAgICJzZXR0aW5ncyIsIHNldHRpbmdzLAor
ICogICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIGNvbnRlbnRfbWFuYWdlciwKKyAqICAgICAi
d2Vic2l0ZS1wb2xpY2llcyIsIGRlZmF1bHRfd2Vic2l0ZV9wb2xpY2llcywKKyAqICAgICBOVUxM
KSk7CisgKiAuLi4KKyAqIDwvcHJvZ3JhbWxpc3Rpbmc+PC9pbmZvcm1hbGV4YW1wbGU+CisgKgor
ICogU2luY2U6IDIuMzAKKyAqLworV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiB3ZWJraXRfd2Vic2l0
ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcyhjb25zdCBnY2hhciogZmlyc3RQb2xpY3lOYW1l
LCAuLi4pCit7CisgICAgdmFfbGlzdCBhcmdzOworICAgIHZhX3N0YXJ0KGFyZ3MsIGZpcnN0UG9s
aWN5TmFtZSk7CisgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcyA9IFdFQktJVF9X
RUJTSVRFX1BPTElDSUVTKGdfb2JqZWN0X25ld192YWxpc3QoV0VCS0lUX1RZUEVfV0VCU0lURV9Q
T0xJQ0lFUywgZmlyc3RQb2xpY3lOYW1lLCBhcmdzKSk7CisgICAgdmFfZW5kKGFyZ3MpOworCisg
ICAgcmV0dXJuIHBvbGljaWVzOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVz
X2dldF9hdXRvcGxheV9wb2xpY3k6CisgKiBAcG9saWNpZXM6IGEgI1dlYktpdFdlYnNpdGVQb2xp
Y2llcworICoKKyAqIEdldCB0aGUgI1dlYktpdFdlYnNpdGVQb2xpY2llczphdXRvcGxheS1wb2xp
Y3kgcHJvcGVydHkuCisgKgorICogUmV0dXJuczogI1dlYktpdEF1dG9wbGF5UG9saWN5CisgKgor
ICogU2luY2U6IDIuMzAKKyAqLworV2ViS2l0QXV0b3BsYXlQb2xpY3kgd2Via2l0X3dlYnNpdGVf
cG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeShXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGlj
aWVzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX1BPTElD
SUVTKHBvbGljaWVzKSwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQpOworCisg
ICAgYXV0byBhcGlBdXRvcGxheVBvbGljeVR5cGUgPSBwb2xpY2llcy0+cHJpdi0+d2Vic2l0ZVBv
bGljaWVzLT5hdXRvcGxheVBvbGljeSgpOworICAgIHN3aXRjaCAoYXBpQXV0b3BsYXlQb2xpY3lU
eXBlKSB7CisgICAgY2FzZSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3c6Cisg
ICAgICAgIHJldHVybiBXRUJLSVRfQVVUT1BMQVlfQUxMT1c7CisgICAgY2FzZSBXZWJLaXQ6Oldl
YnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQ6CisgICAgICAgIHJldHVybiBX
RUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORDsKKyAgICBjYXNlIFdlYktpdDo6V2Vi
c2l0ZUF1dG9wbGF5UG9saWN5OjpEZW55OgorICAgICAgICByZXR1cm4gV0VCS0lUX0FVVE9QTEFZ
X0RFTlk7CisgICAgY2FzZSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworLyoq
CisgKiB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlfcG9saWN5OgorICogQHBv
bGljaWVzOiB0aGUgI1dlYktpdFdlYnNpdGVQb2xpY2llcworICogQHBvbGljeTogdGhlICNXZWJL
aXRBdXRvcGxheVBvbGljeSB0byB1c2UKKyAqCisgKiBTZXQgdGhlICNXZWJLaXRXZWJzaXRlUG9s
aWNpZXM6YXV0b3BsYXktcG9saWN5IHByb3BlcnR5LgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8K
K3ZvaWQgd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfc2V0X2F1dG9wbGF5X3BvbGljeShXZWJLaXRX
ZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBXZWJLaXRBdXRvcGxheVBvbGljeSBwb2xpY3kpCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFUyhwb2xpY2ll
cykpOworCisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIFdFQktJVF9BVVRPUExBWV9B
TExPVzoKKyAgICAgICAgcG9saWNpZXMtPnByaXYtPndlYnNpdGVQb2xpY2llcy0+c2V0QXV0b3Bs
YXlQb2xpY3koV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93KTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORDoKKyAg
ICAgICAgcG9saWNpZXMtPnByaXYtPndlYnNpdGVQb2xpY2llcy0+c2V0QXV0b3BsYXlQb2xpY3ko
V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfQVVUT1BMQVlfREVOWToKKyAgICAgICAgcG9saWNp
ZXMtPnByaXYtPndlYnNpdGVQb2xpY2llcy0+c2V0QXV0b3BsYXlQb2xpY3koV2ViS2l0OjpXZWJz
aXRlQXV0b3BsYXlQb2xpY3k6OkRlbnkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlUG9saWNp
ZXNQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZmMWYxMjg3ZThkMWJjNTdmN2ViZGMzNmNiNjY2YTA2
NTdkYmVjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaApAQCAtMCwwICsxLDI3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZVBvbGljaWVz
LmgiCisjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgorCitBUEk6OldlYnNpdGVQb2xp
Y2llcyogd2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0V2Vic2l0ZVBvbGljaWVzKFdlYktpdFdlYnNp
dGVQb2xpY2llcyAqKTsKK1dlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJraXRXZWJzaXRl
UG9saWNpZXNHZXRQb2xpY2llc0RhdGEoV2ViS2l0V2Vic2l0ZVBvbGljaWVzICopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lv
bi5oCmluZGV4IGYxOTJhMWQzNzlkYzY0MjFkZjc2MDQ3NGQyMDY0OWU0NWZmMGM4Y2IuLjBmZjg5
ZTQ5Yzc2M2QzNmY1ZTRhZTNiZDFjMTE3ZDYzMWMxMzJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmgKQEAgLTI2
LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJzaXRlUG9saWNp
ZXMuaD4KIAogR19CRUdJTl9ERUNMUwogCkBAIC02Miw2ICs2MywxMCBAQCB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX2dldF90eXBlICh2b2lkKTsKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3BvbGlj
eV9kZWNpc2lvbl91c2UgICAgICAoV2ViS2l0UG9saWN5RGVjaXNpb24gKmRlY2lzaW9uKTsKIAor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZV93aXRoX3BvbGljaWVz
ICAoV2ViS2l0UG9saWN5RGVjaXNpb24gKmRlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqcG9saWNpZXMpOwor
CiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3JlICAgKFdlYktp
dFBvbGljeURlY2lzaW9uICpkZWNpc2lvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggMTMxMzYwYzNkZDBlYmZjYTExYzZlNzE0
ODZlNjExNmQ3ZGYxMGJjZi4uNTBlMjAyMjIyYmRhMmE5MzhlZTM1MDczODM3MTc2ZjQyY2JjOWIx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmgKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkluc3BlY3Rvci5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0V2ViUmVzb3VyY2UuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYnNp
dGVQb2xpY2llcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld0Jhc2UuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuaD4KQEAgLTU4NCw2ICs1ODUsMTUgQEAgd2Vi
a2l0X3dlYl92aWV3X3NldF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldwogV0VCS0lUX0FQSSBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgKgogd2Via2l0X3dl
Yl92aWV3X2dldF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dl
Yl92aWV3X3VwZGF0ZV93ZWJzaXRlX3BvbGljaWVzICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMgICAgICpwb2xpY2ll
cyk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKK3dlYmtpdF93ZWJfdmll
d19nZXRfd2Vic2l0ZV9wb2xpY2llcyAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgKndlYl92aWV3KTsKKworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCmlu
ZGV4IGQ0YTU1YzU1NWJlYWRlNWU3NTExMWRmOTA5MmU4Y2FhNGY0OTA3ODIuLjU2NjYyMzAwYWRj
NmZjMjg4M2JhMTFmNzc3MTkzOWFhNjQ2NGJhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcApAQCAtMzAxLDggKzMwMSw4
IEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQoV2ViS2l0V2Vi
Q29udGV4dCogY29udGV4dCkKICAqIFlvdSBjYW4gYWxzbyB1c2UgdGhpcyBtZXRob2QgdG8gaW1w
bGVtZW50IG90aGVyIHByb2Nlc3MgbW9kZWxzIGJhc2VkIG9uICVXRUJLSVRfUFJPQ0VTU19NT0RF
TF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTLAogICogbGlrZSBmb3IgZXhhbXBsZSwgc2hh
cmluZyB0aGUgc2FtZSB3ZWIgcHJvY2VzcyBmb3IgYWxsIHRoZSB2aWV3cyBpbiB0aGUgc2FtZSBz
ZWN1cml0eSBkb21haW4uCiAgKgotICogVGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYlZpZXcg
d2lsbCBhbHNvIGhhdmUgdGhlIHNhbWUgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlcgotICogYW5k
ICNXZWJLaXRTZXR0aW5ncyBhcyBAd2ViX3ZpZXcuCisgKiBUaGUgbmV3bHkgY3JlYXRlZCAjV2Vi
S2l0V2ViVmlldyB3aWxsIGFsc28gaGF2ZSB0aGUgc2FtZSAjV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLAorICogI1dlYktpdFNldHRpbmdzLCBhbmQgI1dlYktpdFdlYnNpdGVQb2xpY2llcyBhcyBA
d2ViX3ZpZXcuCiAgKgogICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBUaGUgbmV3bHkgY3Jl
YXRlZCAjV2ViS2l0V2ViVmlldyB3aWRnZXQKICAqCkBAIC0zMTYsNiArMzE2LDcgQEAgR3RrV2lk
Z2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmll
d19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJzZXR0aW5ncyIs
IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyksCiAgICAgICAgICJyZWxhdGVk
LXZpZXciLCB3ZWJWaWV3LAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJf
dmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgbnVsbHB0cikpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVQb2xpY2llcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJzaXRlUG9saWNpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGVmODhjMTAzNmUwM2Q4OGZlYTRkN2UzNmU2
MzA1NGNhYzMxM2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaApAQCAtMCwwICsxLDkxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hf
SU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkg
PHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVf
V0VCU0lURV9QT0xJQ0lFUyAgICAgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRf
dHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFUyhvYmopICAgICAgICAgICAg
KEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJTSVRFX1BP
TElDSUVTLCBXZWJLaXRXZWJzaXRlUG9saWNpZXMpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCU0lU
RV9QT0xJQ0lFUyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmop
LCBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTKSkKKyNkZWZpbmUgV0VCS0lUX1dFQlNJVEVf
UE9MSUNJRVNfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3Mp
LCAgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUywgV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xh
c3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFU19DTEFTUyhrbGFzcykgKEdf
VFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElD
SUVTKSkKKyNkZWZpbmUgV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NMQVNTKG9iaikgIChH
X1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJ
Q0lFUywgV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzICAgICAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXM7Cit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MgICBXZWJLaXRXZWJzaXRlUG9saWNp
ZXNDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlIFdl
YktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGlj
aWVzIHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIFdlYktpdFdlYnNpdGVQb2xpY2llc1By
aXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzIHsK
KyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQwKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7Cisg
ICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRf
cmVzZXJ2ZWQzKSAodm9pZCk7Cit9OworCisvKioKKyAqIFdlYktpdEF1dG9wbGF5UG9saWN5Ogor
ICogQFdFQktJVF9BVVRPUExBWV9BTExPVzogRG8gbm90IHJlc3RyaWN0IGF1dG9wbGF5LgorICog
QFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EOiBBbGxvdyB2aWRlb3MgdG8gYXV0
b3BsYXkgaWYKKyAqIHRoZXkgaGF2ZSBubyBhdWRpbyB0cmFjaywgb3IgaWYgdGhlaXIgYXVkaW8g
dHJhY2sgaXMgbXV0ZWQuCisgKiBAV0VCS0lUX0FVVE9QTEFZX0RFTlk6IE5ldmVyIGFsbG93IGF1
dG9wbGF5LgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc3BlY2lmeSBhdXRvcGxheSBwb2xp
Y2llcy4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJ
VF9BVVRPUExBWV9BTExPVywKKyAgICBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VO
RCwKKyAgICBXRUJLSVRfQVVUT1BMQVlfREVOWQorfSBXZWJLaXRBdXRvcGxheVBvbGljeTsKKwor
V0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X3R5cGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2Vic2l0
ZVBvbGljaWVzICoKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ldyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYnNpdGVQb2xp
Y2llcyAqCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcyAgICAgICAg
ICAgICAgICAgICAgIChjb25zdCBnY2hhciAgKmZpcnN0X3BvbGljeV9uYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4u
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3Bs
YXlfcG9saWN5ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGlj
aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0QXV0b3BsYXlQb2xpY3kgcG9saWN5KTsKKworV0VCS0lUX0FQSSBX
ZWJLaXRBdXRvcGxheVBvbGljeQord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5
X3BvbGljeSAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2ll
cyk7CisKK0dfRU5EX0RFQ0xTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCA0
ODJiMDZjZWNmYTE3YmJkMzk5Y2I4OGQ4NGQxMWFkM2Q5NDVhZWEwLi5mYTI3YjIxYzk5NjZkM2Y2
YjRjMmNjZWZiODQ1OWIyN2ZmMDEwNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQKQEAgLTE5OCw2ICsxOTgsNyBAQCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudAogV2ViS2l0
U25hcHNob3RPcHRpb25zCiBXZWJLaXRTbmFwc2hvdFJlZ2lvbgogV2ViS2l0V2ViUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uCitXZWJLaXRBdXRvcGxheVBvbGljeQogCiA8U1VCU0VDVElPTiBFZGl0
aW5nIENvbW1hbmRzPgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQKQEAgLTI4OCw2ICsyODks
OCBAQCB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2UKIHdlYmtpdF93ZWJfdmll
d19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19zZXRfaW5wdXRf
bWV0aG9kX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQK
K3dlYmtpdF93ZWJfdmlld191cGRhdGVfd2Vic2l0ZV9wb2xpY2llcword2Via2l0X3dlYl92aWV3
X2dldF93ZWJzaXRlX3BvbGljaWVzCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1
bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC04NDcsNiArODUwLDcgQEAgV2ViS2l0UG9s
aWN5RGVjaXNpb24KIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQKIHdlYmtpdF9wb2xp
Y3lfZGVjaXNpb25faWdub3JlCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZQord2Via2l0X3Bv
bGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcwogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4K
IFdlYktpdFBvbGljeURlY2lzaW9uQ2xhc3MKQEAgLTE4NDYsMyArMTg1MCwyNyBAQCBXRUJLSVRf
VVNFUl9NRVNTQUdFX0dFVF9DTEFTUwogV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlCiB3ZWJraXRf
dXNlcl9tZXNzYWdlX2dldF90eXBlCiA8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2Vi
S2l0V2Vic2l0ZVBvbGljaWVzPC9GSUxFPgorV2ViS2l0V2Vic2l0ZVBvbGljaWVzCit3ZWJraXRf
d2Vic2l0ZV9wb2xpY2llc19uZXcKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3Bv
bGljaWVzCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfYXV0b3BsYXlfcG9saWN5Cit3ZWJr
aXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlfcG9saWN5CisKKzxTVUJTRUNUSU9OIFN0
YW5kYXJkPgorV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MKK1dFQktJVF9JU19XRUJTSVRFX1BP
TElDSUVTCitXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFU19DTEFTUworV0VCS0lUX1RZUEVfV0VC
U0lURV9QT0xJQ0lFUworV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMKK1dFQktJVF9XRUJTSVRFX1BP
TElDSUVTX0NMQVNTCitXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19HRVRfQ0xBU1MKKworPFNVQlNF
Q1RJT04gUHJpdmF0ZT4KK1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUKK3dlYmtpdF93ZWJz
aXRlX3BvbGljaWVzX2dldF90eXBlCis8L1NFQ1RJT04+CisKKwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ3OWQyNjUwZTkzYTA1OGNmMGVlZjc2
MjNiY2QzYzVjMWNkYjBjMDcuLmM5ZWNkYzVkZjM2MGY0NjU2MGQ3MjhlOWIxMWU3YWFhOWJhODBk
YmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMCBAQAorMjAyMC0wNi0wMiAgQ2hhcmxpZSBUdXJuZXIgIDxjdHVybmVyQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gRGlzYWJsZSB2aWRlbyBhdXRvcGxheQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0ODQ1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSB2YXJpb3Vz
IGNhbGxzaXRlcyBmb3IgY29uc3RydWN0aW5nIGEgdmlldyB0byB0YWtlIGludG8KKyAgICAgICAg
YWNjb3VudCB0aGUgZGVmYXVsdCBwb2xpY2llcy4gSSBjaG9zZSB0aGUgZGVmYXVsdCBhcyBhdXRv
cGxheQorICAgICAgICBhbGxvdyB3aXRob3V0IHNvdW5kLCB3aGljaCBpcyBpbiBrZWVwaW5nIHdp
dGggV2ViQ29yZSdzIGNob2ljZS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
VGFiLmM6CisgICAgICAgIChkZWNpZGVQb2xpY3kpOgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgICh3ZWJWaWV3RGVjaWRlUG9saWN5KToKKyAgICAg
ICAgKG5ld1RhYkNhbGxiYWNrKToKKyAgICAgICAgKG9wZW5Qcml2YXRlV2luZG93KToKKyAgICAg
ICAgKGJyb3dzZXJfd2luZG93X2dldF9vcl9jcmVhdGVfd2ViX3ZpZXdfZm9yX2F1dG9tYXRpb24p
OgorICAgICAgICAoYnJvd3Nlcl93aW5kb3dfY3JlYXRlX3dlYl92aWV3X2luX25ld190YWJfZm9y
X2F1dG9tYXRpb24pOgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAg
IChjcmVhdGVCcm93c2VyVGFiKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcDogQWRkCisg
ICAgICAgIGF1dG9wbGF5IHBvbGljeSB0ZXN0cywgYW5kIHVzZSBtb2Rlcm4gY2xhc3MgaW5pdGlh
bGl6ZXJzLgorICAgICAgICAodGVzdEF1dG9wbGF5UG9saWN5KToKKyAgICAgICAgKGJlZm9yZUFs
bCk6CisKIDIwMjAtMDUtMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIFdlYkRyaXZlcjogc3RvcCB1c2luZyBHZGtFdmVudCBBUEkg
aW4gcHJlcGFyYXRpb24gZm9yIEdUSzQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5j
CmluZGV4IDFkZTIxNGNkNDYzYWM5ZDgxMDAxMzMzNTFhMjM1Y2Y4ZDI5ODlkMTEuLmYwYjBmNDMy
ODJmNmI4MWEwZWJiYTI3MjcyOWRhODliMGY1ZDEyYWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jy
b3dzZXJXaW5kb3cuYwpAQCAtNDE4LDYgKzQxOCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3
RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBvbGljeURlY2lzaW9u
CiAgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmll
dyksCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9u
KHdlYlZpZXcpLAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19n
ZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJyb3dz
ZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNTgzLDYgKzU4NCw3IEBAIHN0YXRp
YyB2b2lkIG5ld1RhYkNhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICAgICAgInNl
dHRpbmdzIiwgd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSwKICAgICAgICAg
InVzZXItY29udGVudC1tYW5hZ2VyIiwgd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRf
bWFuYWdlcih3ZWJWaWV3KSwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIs
IHdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCisg
ICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3Bv
bGljaWVzKHdlYlZpZXcpLAogICAgICAgICBOVUxMKSkpOwogICAgIGd0a193aWRnZXRfZ3JhYl9m
b2N1cyh3aW5kb3ctPnVyaUVudHJ5KTsKICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFn
ZShHVEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKQEAgLTYwMiw2ICs2MDQsNyBA
QCBzdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdpbmRvdyhCcm93c2VyV2luZG93ICp3aW5kb3cpCiAg
ICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9j
b250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVyYWwiLCBUUlVFLAog
ICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3X2lz
X2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKKyAgICAgICAgIndlYnNpdGUtcG9s
aWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldyksCiAg
ICAgICAgIE5VTEwpKTsKICAgICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93
X25ldyhHVEtfV0lORE9XKHdpbmRvdyksIHdpbmRvdy0+d2ViQ29udGV4dCk7CiAgICAgYnJvd3Nl
cl93aW5kb3dfYXBwZW5kX3ZpZXcoQlJPV1NFUl9XSU5ET1cobmV3V2luZG93KSwgbmV3V2ViVmll
dyk7CkBAIC0xMzE1LDYgKzEzMTgsNyBAQCBXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19n
ZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKHZvaWQpCiAgICAgICAgICJzZXR0
aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyksCiAgICAgICAgICJ1
c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21h
bmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBU
UlVFLAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vi
c2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIEd0a1dpZGdldCAq
bmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1cod2luZG93KSwgd2luZG93
LT53ZWJDb250ZXh0KTsKICNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCkBAIC0xMzM5
LDYgKzEzNDMsNyBAQCBXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19jcmVhdGVfd2ViX3Zp
ZXdfaW5fbmV3X3RhYl9mb3JfYXV0b21hdGlvbih2b2lkKQogICAgICAgICAidXNlci1jb250ZW50
LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZp
ZXcpLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgVFJVRSwKICAgICAg
ICAgImF1dG9tYXRpb24tcHJlc2VudGF0aW9uLXR5cGUiLCBXRUJLSVRfQVVUT01BVElPTl9CUk9X
U0lOR19DT05URVhUX1BSRVNFTlRBVElPTl9UQUIsCisgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVz
Iiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAogICAgICAg
ICBOVUxMKSk7CiAgICAgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcod2luZG93LCBuZXdXZWJW
aWV3KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkobmV3V2ViVmlldywgImFib3V0OmJs
YW5rIik7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCAyZmY0NWI5MzhjZmZhYmU5NWZlMTcxMzczOTNi
OGI2YzUwNmQ0OTkzLi5kZDY1YWU4ODJiMzA0MmE4MzVhMDA2ZmVhMzYzZGM1YjBhNGY2NTczIDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9tYWluLmMKQEAgLTc3LDEzICs3NywxNCBAQCBzdGF0aWMgZ2NoYXIgKmFyZ3Vt
ZW50VG9VUkwoY29uc3QgY2hhciAqZmlsZW5hbWUpCiAgICAgcmV0dXJuIGZpbGVVUkw7CiB9CiAK
LXN0YXRpYyBXZWJLaXRXZWJWaWV3ICpjcmVhdGVCcm93c2VyVGFiKEJyb3dzZXJXaW5kb3cgKndp
bmRvdywgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzLCBXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIgKnVzZXJDb250ZW50TWFuYWdlcikKK3N0YXRpYyBXZWJLaXRXZWJWaWV3ICpjcmVhdGVC
cm93c2VyVGFiKEJyb3dzZXJXaW5kb3cgKndpbmRvdywgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNl
dHRpbmdzLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKnVzZXJDb250ZW50TWFuYWdlciwgV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzICpkZWZhdWx0V2Vic2l0ZVBvbGljaWVzKQogewogICAgIFdlYktp
dFdlYlZpZXcgKndlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX1dFQl9WSUVXLAogICAgICAgICAid2ViLWNvbnRleHQiLCBicm93c2VyX3dpbmRvd19nZXRf
d2ViX2NvbnRleHQod2luZG93KSwKICAgICAgICAgInNldHRpbmdzIiwgd2Via2l0U2V0dGluZ3Ms
CiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHVzZXJDb250ZW50TWFuYWdlciwKICAg
ICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIGF1dG9tYXRpb25Nb2RlLAorICAg
ICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIGRlZmF1bHRXZWJzaXRlUG9saWNpZXMsCiAgICAgICAg
IE5VTEwpKTsKIAogICAgIGlmIChlZGl0b3JNb2RlKQpAQCAtNTg2LDYgKzU4NywxMCBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFu
YWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKHVzZXJDb250ZW50TWFuYWdlciwg
ImFib3V0RGF0YSIpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QodXNlckNvbnRlbnRNYW5hZ2VyLCAi
c2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OmFib3V0RGF0YSIsIEdfQ0FMTEJBQ0soYWJvdXREYXRh
U2NyaXB0TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spLCB3ZWJDb250ZXh0KTsKIAorICAgIFdlYktp
dFdlYnNpdGVQb2xpY2llcyAqZGVmYXVsdFdlYnNpdGVQb2xpY2llcyA9IHdlYmtpdF93ZWJzaXRl
X3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzKAorICAgICAgICAiYXV0b3BsYXktcG9saWN5Iiwg
V0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQsCisgICAgICAgIE5VTEwpOworCiAg
ICAgaWYgKGNvbnRlbnRGaWx0ZXIpIHsKICAgICAgICAgR0ZpbGUgKmNvbnRlbnRGaWx0ZXJGaWxl
ID0gZ19maWxlX25ld19mb3JfY29tbWFuZGxpbmVfYXJnKGNvbnRlbnRGaWx0ZXIpOwogCkBAIC02
MzAsNyArNjM1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAg
aW50IGk7CiAKICAgICAgICAgZm9yIChpID0gMDsgdXJpQXJndW1lbnRzW2ldOyBpKyspIHsKLSAg
ICAgICAgICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBjcmVhdGVCcm93c2VyVGFiKG1haW5X
aW5kb3csIHdlYmtpdFNldHRpbmdzLCB1c2VyQ29udGVudE1hbmFnZXIpOworICAgICAgICAgICAg
V2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGNyZWF0ZUJyb3dzZXJUYWIobWFpbldpbmRvdywgd2Vi
a2l0U2V0dGluZ3MsIHVzZXJDb250ZW50TWFuYWdlciwgZGVmYXVsdFdlYnNpdGVQb2xpY2llcyk7
CiAgICAgICAgICAgICBpZiAoIWkpCiAgICAgICAgICAgICAgICAgZmlyc3RUYWIgPSBHVEtfV0lE
R0VUKHdlYlZpZXcpOwogICAgICAgICAgICAgZ2NoYXIgKnVybCA9IGFyZ3VtZW50VG9VUkwodXJp
QXJndW1lbnRzW2ldKTsKQEAgLTYzOCw3ICs2NDMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh
ciAqYXJndltdKQogICAgICAgICAgICAgZ19mcmVlKHVybCk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgewotICAgICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0gY3JlYXRlQnJvd3NlclRhYiht
YWluV2luZG93LCB3ZWJraXRTZXR0aW5ncywgdXNlckNvbnRlbnRNYW5hZ2VyKTsKKyAgICAgICAg
V2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGNyZWF0ZUJyb3dzZXJUYWIobWFpbldpbmRvdywgd2Vi
a2l0U2V0dGluZ3MsIHVzZXJDb250ZW50TWFuYWdlciwgZGVmYXVsdFdlYnNpdGVQb2xpY2llcyk7
CiAgICAgICAgIGZpcnN0VGFiID0gR1RLX1dJREdFVCh3ZWJWaWV3KTsKIAogICAgICAgICBpZiAo
IWVkaXRvck1vZGUpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcAppbmRleCA3NjliY2M4
OTE2YmI5YjFjMWFmZTI5ZDZiYzIwOWRkNDMyODAxNmE2Li4wZjAzYzVmODhiOThkMGEzNzNkOTE1
Mjg5MTc3NGZlZmJlZjE1NmNiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCkBAIC0y
MSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJMb2FkVHJhY2tpbmdUZXN0LmgiCiAjaW5jbHVkZSAi
V2ViS2l0VGVzdFNlcnZlci5oIgorI2luY2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llcy5oIgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKQEAgLTMyLDYgKzMzLDcgQEAgcHVibGljOgogCiAgICAgZW51bSBQb2xpY3lEZWNpc2lv
blJlc3BvbnNlIHsKICAgICAgICAgVXNlLAorICAgICAgICBVc2VXaXRoUG9saWN5LAogICAgICAg
ICBJZ25vcmUsCiAgICAgICAgIERvd25sb2FkLAogICAgICAgICBOb25lCkBAIC0zOSwxMiArNDEs
MjEgQEAgcHVibGljOgogCiAgICAgUG9saWN5Q2xpZW50VGVzdCgpCiAgICAgICAgIDogTG9hZFRy
YWNraW5nVGVzdCgpCi0gICAgICAgICwgbV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlKE5vbmUpCi0g
ICAgICAgICwgbV9wb2xpY3lEZWNpc2lvblR5cGVGaWx0ZXIoMCkKLSAgICAgICAgLCBtX3Jlc3Bv
bmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkoZmFsc2UpCi0gICAgICAgICwgbV9oYWx0
TWFpbkxvb3BBZnRlck1ha2luZ0RlY2lzaW9uKGZhbHNlKQogICAgIHsKICAgICAgICAgZ19zaWdu
YWxfY29ubmVjdChtX3dlYlZpZXcsICJkZWNpZGUtcG9saWN5IiwgR19DQUxMQkFDSyhkZWNpZGVQ
b2xpY3lDYWxsYmFjayksIHRoaXMpOworICAgICAgICB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcihtX3VzZXJDb250ZW50TWFuYWdlci5n
ZXQoKSwgInRlc3RIYW5kbGVyIik7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV91c2VyQ29u
dGVudE1hbmFnZXIuZ2V0KCksICJzY3JpcHQtbWVzc2FnZS1yZWNlaXZlZDo6dGVzdEhhbmRsZXIi
LCBHX0NBTExCQUNLKHRlc3RIYW5kbGVyTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spLCB0aGlzKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB0ZXN0SGFuZGxlck1lc3NhZ2VSZWNlaXZlZENhbGxi
YWNrKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0LCBQb2xpY3lDbGllbnRUZXN0KiB0ZXN0
KQorICAgIHsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJWaWV3VGVz
dDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgICAg
IGlmIChnX3N0cl9lcXVhbCh2YWx1ZVN0cmluZy5nZXQoKSwgImF1dG9wbGF5ZWQiKSkKKyAgICAg
ICAgICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKGdfc3Ry
X2VxdWFsKHZhbHVlU3RyaW5nLmdldCgpLCAiZGlkLW5vdC1wbGF5IikpCisgICAgICAgICAgICB0
ZXN0LT5tX2F1dG9wbGF5ZWQgPSBmYWxzZTsKKworICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRl
c3QtPm1fbWFpbkxvb3ApOwogICAgIH0KIAogICAgIHN0YXRpYyBnYm9vbGVhbiBxdWl0TWFpbkxv
b3BMYXRlcihHTWFpbkxvb3AqIGxvb3ApCkBAIC01OSw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBVc2U6CiAgICAgICAgICAgICB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZShkZWNp
c2lvbik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVc2VXaXRoUG9saWN5Ogor
ICAgICAgICAgICAgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcyhkZWNp
c2lvbiwgdGVzdC0+bV93ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgSWdub3JlOgogICAgICAgICAgICAgd2Via2l0X3BvbGljeV9kZWNpc2lv
bl9pZ25vcmUoZGVjaXNpb24pOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05OCwxMyArMTEyLDEz
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKLSAgICBQb2xpY3lE
ZWNpc2lvblJlc3BvbnNlIG1fcG9saWN5RGVjaXNpb25SZXNwb25zZTsKLSAgICBpbnQgbV9wb2xp
Y3lEZWNpc2lvblR5cGVGaWx0ZXI7Ci0gICAgYm9vbCBtX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9u
QXN5bmNocm9ub3VzbHk7Ci0gICAgYm9vbCBtX2hhbHRNYWluTG9vcEFmdGVyTWFraW5nRGVjaXNp
b247CisgICAgYm9vbCBkaWRBdXRvcGxheSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9hdXRv
cGxheWVkICYmICptX2F1dG9wbGF5ZWQ7CisgICAgfQorCisgICAgUG9saWN5RGVjaXNpb25SZXNw
b25zZSBtX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgeyBOb25lIH07CisgICAgaW50IG1fcG9saWN5
RGVjaXNpb25UeXBlRmlsdGVyIHsgMCB9OworICAgIGJvb2wgbV9yZXNwb25kVG9Qb2xpY3lEZWNp
c2lvbkFzeW5jaHJvbm91c2x5IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFsdE1haW5Mb29wQWZ0
ZXJNYWtpbmdEZWNpc2lvbiB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9hdXRvcGxh
eWVkOwogICAgIEdSZWZQdHI8V2ViS2l0UG9saWN5RGVjaXNpb24+IG1fcHJldmlvdXNQb2xpY3lE
ZWNpc2lvbjsKKyAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVQb2xpY2llcz4gbV93ZWJzaXRlUG9s
aWNpZXM7CiB9OwogCitzdGF0aWMgdm9pZCB0ZXN0QXV0b3BsYXlQb2xpY3koUG9saWN5Q2xpZW50
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyNpZiBQTEFURk9STShHVEspCisgICAgLy8g
VGhlIHdlYiB2aWV3IG11c3QgYmUgcmVhbGl6ZWQgZm9yIHRoZSB2aWRlbyB0byBzdGFydCBwbGF5
YmFjay4KKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR1RLX1dJTkRP
V19UT1BMRVZFTCk7CisjZW5kaWYKKworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25UeXBlRmls
dGVyID0gV0VCS0lUX1BPTElDWV9ERUNJU0lPTl9UWVBFX05BVklHQVRJT05fQUNUSU9OOworICAg
IHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBvbGljeUNsaWVudFRlc3Q6OlVzZVdp
dGhQb2xpY3k7CisgICAgdGVzdC0+bV93ZWJzaXRlUG9saWNpZXMgPSB3ZWJraXRfd2Vic2l0ZV9w
b2xpY2llc19uZXdfd2l0aF9wb2xpY2llcygiYXV0b3BsYXktcG9saWN5IiwgV0VCS0lUX0FVVE9Q
TEFZX0RFTlksIG51bGxwdHIpOworCisgICAgY29uc3QgY2hhciogcmVzb3VyY2VOYW1lID0gImF1
dG9wbGF5LWNoZWNrLmh0bWwiOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VQYXRoKGdf
YnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKFRlc3Q6OldlYktpdDJSZXNvdXJj
ZXMpLmRhdGEoKSwgcmVzb3VyY2VOYW1lLCBudWxscHRyKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFy
PiByZXNvdXJjZVVSTChnX2ZpbGVuYW1lX3RvX3VyaShyZXNvdXJjZVBhdGguZ2V0KCksIG51bGxw
dHIsIG51bGxwdHIpKTsKKworICAgIC8vIFRlc3Qgd2l0aCBERU5ZIHBvbGljeQorICAgIHRlc3Qt
PmxvYWRVUkkocmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIC8vIFJ1biB1bnRpbCB0aGUgdXNlciBj
b250ZW50IG1lc3NhZ2VzIGNvbWUgYmFjayBmcm9tIGF1dG9wbGF5LWNoZWNrLmh0bWwKKyAgICBn
X21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVz
dC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBBc3luYyB0ZXN0CisgICAgdGVzdC0+bV9hdXRv
cGxheWVkID0gV1RGOjpudWxsb3B0OworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25z
ZSA9IFBvbGljeUNsaWVudFRlc3Q6OlVzZVdpdGhQb2xpY3k7CisgICAgdGVzdC0+bV9yZXNwb25k
VG9Qb2xpY3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5ID0gdHJ1ZTsKKyAgICB0ZXN0LT5sb2FkVVJJ
KHJlc291cmNlVVJMLmdldCgpKTsKKyAgICAvLyBSdW4gdW50aWwgdGhlIHVzZXIgY29udGVudCBt
ZXNzYWdlcyBjb21lIGJhY2sgZnJvbSBhdXRvcGxheS1jaGVjay5odG1sCisgICAgZ19tYWluX2xv
b3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmRpZEF1
dG9wbGF5KCkpOworCisgICAgLy8gVGVzdCB3aXRoIEFMTE9XIHBvbGljeQorICAgIHdlYmtpdF93
ZWJzaXRlX3BvbGljaWVzX3NldF9hdXRvcGxheV9wb2xpY3kodGVzdC0+bV93ZWJzaXRlUG9saWNp
ZXMuZ2V0KCksIFdFQktJVF9BVVRPUExBWV9BTExPVyk7CisgICAgdGVzdC0+bV9hdXRvcGxheWVk
ID0gV1RGOjpudWxsb3B0OworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBv
bGljeUNsaWVudFRlc3Q6OlVzZVdpdGhQb2xpY3k7CisgICAgdGVzdC0+bV9yZXNwb25kVG9Qb2xp
Y3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5ID0gZmFsc2U7CisKKyAgICB0ZXN0LT5sb2FkVVJJKHJl
c291cmNlVVJMLmdldCgpKTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7
CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIFRlc3Qg
d2l0aCBBTExPV19XSVRIT1VUX1NPVU5EIHBvbGljeQorICAgIHdlYmtpdF93ZWJzaXRlX3BvbGlj
aWVzX3NldF9hdXRvcGxheV9wb2xpY3kodGVzdC0+bV93ZWJzaXRlUG9saWNpZXMuZ2V0KCksIFdF
QktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EKTsKKyAgICB0ZXN0LT5tX2F1dG9wbGF5
ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0g
UG9saWN5Q2xpZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1Bv
bGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKworICAgIHRlc3QtPmxvYWRVUkko
cmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29w
KTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIE5v
dyBjaGVjayBkeW5hbWljYWxseSB1cGRhdGluZyB0aGUgbG9hZGVyIHBvbGljaWVzCisgICAgd2Vi
a2l0X3dlYnNpdGVfcG9saWNpZXNfc2V0X2F1dG9wbGF5X3BvbGljeSh0ZXN0LT5tX3dlYnNpdGVQ
b2xpY2llcy5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZX0RFTlkpOworICAgIHRlc3QtPm1fYXV0b3Bs
YXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2Ug
PSBQb2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1fcmVzcG9uZFRv
UG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IGZhbHNlOworCisgICAgdGVzdC0+bG9hZFVS
SShyZXNvdXJjZVVSTC5nZXQoKSk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxv
b3ApOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworCisgICAgLy8g
Q2hlY2sgdGhhdCBKUyBjYW4gbm90IHNpZGUtc3RlcCB0aGUgYWN0aXZlIHBvbGljeQorICAgIHRl
c3QtPm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoInBsYXlWaWRlbygpOyIsIG51bGxwdHIpOworICAgIC8vIFNw
aW4gdW50aWwgYXV0b3BsYXkgc3RhdHVzIGlzIHJlcG9ydGVkLCB0aGUgcnVuIEpTIEFQSSBjYW4K
KyAgICAvLyBjb21wbGV0ZSBpdHMgbWFpbiBsb29wIGJlZm9yZSB0aGUgcHJvbWlzZXMgaW4gYXV0
b3BsYXktY2hlY2sgZmlyZS4KKyAgICB3aGlsZSAoIXRlc3QtPm1fYXV0b3BsYXllZC5oYXNWYWx1
ZSgpKQorICAgICAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAgZ19h
c3NlcnRfZmFsc2UodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBOb3cgdXBkYXRlIHRo
ZSBwb2xpY3kgdG8gYWxsb3cgYXV0b3BsYXksIGFuZCB1c2UgSlMgdG8gcmVzdW1lIHRoZSB2aWRl
by4KKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgd2Via2l0X3dl
YnNpdGVfcG9saWNpZXNfc2V0X2F1dG9wbGF5X3BvbGljeSh0ZXN0LT5tX3dlYnNpdGVQb2xpY2ll
cy5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfdXBk
YXRlX3dlYnNpdGVfcG9saWNpZXModGVzdC0+bV93ZWJWaWV3LCB0ZXN0LT5tX3dlYnNpdGVQb2xp
Y2llcy5nZXQoKSk7CisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVk
KCJwbGF5VmlkZW8oKTsiLCBudWxscHRyKTsKKyAgICAvLyBTcGluIHVudGlsIGF1dG9wbGF5IHN0
YXR1cyBpcyByZXBvcnRlZCwgdGhlIHJ1biBKUyBBUEkgY2FuCisgICAgLy8gY29tcGxldGUgaXRz
IG1haW4gbG9vcCBiZWZvcmUgdGhlIHByb21pc2VzIGluIGF1dG9wbGF5LWNoZWNrIGZpcmUuCisg
ICAgd2hpbGUgKCF0ZXN0LT5tX2F1dG9wbGF5ZWQuaGFzVmFsdWUoKSkKKyAgICAgICAgZ19tYWlu
X2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+ZGlk
QXV0b3BsYXkoKSk7CisKKyAgICAvLyBTaWxlbnQgYXVkaW8gdHJhY2sgdGVzdHMKKyAgICByZXNv
dXJjZU5hbWUgPSAiYXV0b3BsYXktbm8tYXVkaW8tY2hlY2suaHRtbCI7CisgICAgcmVzb3VyY2VQ
YXRoLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKFRlc3Q6Oldl
YktpdDJSZXNvdXJjZXMpLmRhdGEoKSwgcmVzb3VyY2VOYW1lLCBudWxscHRyKSk7CisgICAgcmVz
b3VyY2VVUkwucmVzZXQoZ19maWxlbmFtZV90b191cmkocmVzb3VyY2VQYXRoLmdldCgpLCBudWxs
cHRyLCBudWxscHRyKSk7CisKKyAgICAvLyBERU5ZIHBvbGljeQorICAgIHdlYmtpdF93ZWJzaXRl
X3BvbGljaWVzX3NldF9hdXRvcGxheV9wb2xpY3kodGVzdC0+bV93ZWJzaXRlUG9saWNpZXMuZ2V0
KCksIFdFQktJVF9BVVRPUExBWV9ERU5ZKTsKKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6
Om51bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xp
ZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lz
aW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKworICAgIHRlc3QtPmxvYWRVUkkocmVzb3VyY2VV
UkwuZ2V0KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBn
X2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIEFMTE9XCisgICAg
d2Via2l0X3dlYnNpdGVfcG9saWNpZXNfc2V0X2F1dG9wbGF5X3BvbGljeSh0ZXN0LT5tX3dlYnNp
dGVQb2xpY2llcy5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XKTsKKyAgICB0ZXN0LT5tX2F1
dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3Bv
bnNlID0gUG9saWN5Q2xpZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0LT5tX3Jlc3Bv
bmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKworICAgIHRlc3QtPmxv
YWRVUkkocmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21h
aW5Mb29wKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworCisgICAg
Ly8gQUxMT1dfV0lUSE9VVF9TT1VORAorICAgIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX3NldF9h
dXRvcGxheV9wb2xpY3kodGVzdC0+bV93ZWJzaXRlUG9saWNpZXMuZ2V0KCksIFdFQktJVF9BVVRP
UExBWV9BTExPV19XSVRIT1VUX1NPVU5EKTsKKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6
Om51bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xp
ZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lz
aW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKworICAgIHRlc3QtPmxvYWRVUkkocmVzb3VyY2VV
UkwuZ2V0KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBn
X2Fzc2VydF90cnVlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0
TmF2aWdhdGlvblBvbGljeShQb2xpY3lDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ewogICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25UeXBlRmlsdGVyID0gV0VCS0lUX1BPTElDWV9E
RUNJU0lPTl9UWVBFX05BVklHQVRJT05fQUNUSU9OOwpAQCAtMjc3LDYgKzQxNCw3IEBAIHZvaWQg
YmVmb3JlQWxsKCkKICAgICBQb2xpY3lDbGllbnRUZXN0OjphZGQoIldlYktpdFBvbGljeUNsaWVu
dCIsICJuYXZpZ2F0aW9uLXBvbGljeSIsIHRlc3ROYXZpZ2F0aW9uUG9saWN5KTsKICAgICBQb2xp
Y3lDbGllbnRUZXN0OjphZGQoIldlYktpdFBvbGljeUNsaWVudCIsICJyZXNwb25zZS1wb2xpY3ki
LCB0ZXN0UmVzcG9uc2VQb2xpY3kpOwogICAgIFBvbGljeUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0
UG9saWN5Q2xpZW50IiwgIm5ldy13aW5kb3ctcG9saWN5IiwgdGVzdE5ld1dpbmRvd1BvbGljeSk7
CisgICAgUG9saWN5Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRQb2xpY3lDbGllbnQiLCAiYXV0b3Bs
YXktcG9saWN5IiwgdGVzdEF1dG9wbGF5UG9saWN5KTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401000</attachid>
            <date>2020-06-03 22:38:38 -0700</date>
            <delta_ts>2020-06-08 09:36:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20200604063836.patch</filename>
            <type>text/plain</type>
            <size>51741</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDdiZDZkMGY0NTE5Y2Qx
YzY4ZWUxOTAzN2E2ZTgwMzEzNDhmN2Y4MS4uNDJiM2YzMWVjMjZiNDJlYzZmNWE2ZWQ4NjU0Mjgw
ZWZlNzE3NDk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA2LTAyICBDaGFy
bGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBEaXNhYmxl
IHZpZGVvIGF1dG9wbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ4NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3VyLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UpOiBNb2Rlcm5pemUgc3R5bGUuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRvcGxheSk6IEFk
ZCBhIG5vdGUgdG8KKyAgICAgICAgcmVmYWN0b3IgYmVoYXZpb3VyIHJlc3RyaWN0aW9uIGxvZ2lj
IGludG8gTWVkaWFFbGVtZW50U2Vzc2lvbi4KKwogMjAyMC0wNS0yOSAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEpTQmlnSW50IGFsbG9jYXRpb24g
c2hvdWxkIGJlIGdyYWNlZnVsIGZvciBPT00KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzg1Mjk1ZjM5Y2JmMDgxMGVh
ZjNkODI4NzE2NzRjZTE2NzllMDBjNi4uMzc4NDE0ZjFmZDg5YjEwMWJiZTFmMTQ5NzFmYWQ5NDAy
YWI3M2Y5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAyMC0wNi0wMiAgQ2hhcmxpZSBU
dXJuZXIgIDxjdHVybmVyQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRGlzYWJsZSB2aWRl
byBhdXRvcGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg0ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwOgorICAgICAg
ICAod2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcyk6IEFkZCBhbiBBUEkg
dG8gcmVzcG9uZAorICAgICAgICB0byBuYXZpZ2F0aW9uIGRlY2lzaW9ucyB3aXRoIHBvbGljaWVz
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAg
ICAgICAgKHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyk6IFBsdW1iIGluIHRo
ZSBkZWZhdWx0CisgICAgICAgIHdlYnNpdGUgcG9saWNpZXMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3
aXRoIHRoZSB3ZWIgdmlldy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlldy5jcHA6IEFkZCBhIGNvbnN0cnVjdCBvbmx5CisgICAgICAgIGRlZmF1bHQgd2Vic2l0ZSBw
b2xpY3kgZmllbGQgdG8gdGhlIHZpZXcuIFRoaXMgd2lsbCBiZSB1c2VkIHdoZW4KKyAgICAgICAg
Y3JlYXRpbmcgd2ViIHZpZXdzIGluIHRoZSB3ZWIgY29udGV4dC4KKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkpOgor
ICAgICAgICAod2Via2l0V2ViVmlld0dldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdEaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdCk6IFVzZXIgZ2VzdHVyZXMgd2VyZSBi
ZWluZworICAgICAgICBhcnRpZmljaWFsbHkgZm9yY2VkIG9uIGluIHRoaXMgQVBJLCBzbyBpZiB5
b3UgcmVzdW1lZCBhIHZpZGVvIGZyb20KKyAgICAgICAgSlMsIHRoZSBhY3RpdmUgYXV0b3BsYXkg
cG9saWN5IHdvdWxkIGVzc2VudGlhbGx5IGJlIGlnbm9yZWQuIFRoaXMKKyAgICAgICAgZG9lc24n
dCBzZWVtIGxpa2UgdGhlIHJpZ2h0IGJlaGF2aW91ciwgYW5kIGlmIHlvdSB3YW50IGl0LCB3ZQor
ICAgICAgICBzaG91bGQgZXhwb3NlIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHRvIHRoZSBBUEkg
dXNlcnMgdG8gdG9nZ2xlCisgICAgICAgIGRlZmF1bHRzLiBXaXRob3V0IHRoaXMgY2hhbmdlLCBp
dCdzIG5vdCBwb3NzaWJsZSBmb3IgbWUgdG8gdGVzdAorICAgICAgICB0aGUgQVBJIHdvcmtzIGFz
IGludGVuZGVkIHdoZW4gSlMgYXR0ZW1wdCB0byBhdXRvcGxheSB2aWRlb3MgdGhhdAorICAgICAg
ICB0aGUgdXNlciBkb2VzIG5vdCB3YW50IHRvIGF1dG9wbGF5LiBUaGUgcGFyYW1ldGVycyBhcmUg
ZmFjdG9yZWQKKyAgICAgICAgb3V0IG9mIHRoZSBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUgY2Fs
bCwgc2luY2UgaXQgd2FzIGdldHRpbmcKKyAgICAgICAgaGFyZCB0byByZWFkLgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3VwZGF0ZV93ZWJzaXRlX3BvbGljaWVzKTogQWRkIGFuIEFQSSB0byB1
cGRhdGUKKyAgICAgICAgdGhlIHZpZXcncyBhY3RpdmUgcG9saWNpZXMgZHluYW1pY2FsbHkuIFlv
dSBtdXN0IGJlIGNhcmVmdWwgdG8KKyAgICAgICAgY2FsbCB0aGlzIGFmdGVyIGNvbW1pdHRhbCBh
bmQgYmVmb3JlIGxvYWQsIG90aGVyd2lzZSBpdCB3b24ndAorICAgICAgICBzdGljay4KKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0d0ay5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhf
cmVsYXRlZF92aWV3KTogQ29weSBvdmVyIHRoZSBkZWZhdWx0CisgICAgICAgIHdlYnNpdGUgcG9s
aWNpZXMgYXMgd2VsbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS0xLjAtc2VjdGlvbnMudHh0OgorCiAyMDIwLTA1LTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJEcml2ZXI6IHN0b3AgdXNp
bmcgR2RrRXZlbnQgQVBJIGluIHByZXBhcmF0aW9uIGZvciBHVEs0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAxMWUzZjIzMGUwMjIzY2JkYjUxMWI1MjNiZGYz
N2ZjMTI5YWM2NGNmLi4xYjc3NjMxOTJlYzNiNDhhOGFmOWJlYjA4ZjFjYzM5ZWM1NGJjNmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTc3MTIsNyArNzcx
Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKQog
ewogICAgIHVwZGF0ZVZvbHVtZSgpOwogCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgp
LnBhZ2UoKSkgeworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpIHsKICAg
ICAgICAgaWYgKGhhc0F1ZGlvKCkgJiYgIW11dGVkKCkgJiYgcGFnZS0+aXNBdWRpb011dGVkKCkp
CiAgICAgICAgICAgICB1c2VyRGlkSW50ZXJmZXJlV2l0aEF1dG9wbGF5KCk7CiAgICAgfQpAQCAt
Nzg4NCw2ICs3ODg0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRv
cGxheSgpCiAgICAgaWYgKCFhdXRvcGxheSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBG
SVhNRTogQWxsIHRoaXMgaXMgbWVkaWEgc2Vzc2lvbiBzcGVjaWZpYywgcHV0IGl0IGluIHRoYXQg
Y2xhc3MgaW5zdGVhZC4KICAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5oYXNCZWhhdmlvclJlc3Ry
aWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OkludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVk
KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
R1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBiOTQ1MjJj
OGZjYTBhZjg4NmZlZmQyY2U0Yzk4MmU0MDc3MTVkNTZiLi5mZDk0M2ZmNWE1ZmVhMDY5NWM0NGRi
Zjk4ZGRmYWQwNDBmM2VjMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE0MCw2ICsx
NDAsNyBAQCBzZXQoV2ViS2l0MkdUS19JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaAogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKICAgICAke1dF
QktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuaAorICAg
ICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgK
ICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAogKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzR1RLLnR4dAppbmRleCAyZDVhYWM5NTNhYmVmMjNlYTVkMDIzM2FkMGE1YmU5YWE1OTg1Yjhl
Li4xY2YyNzdjOTU1OTJiMTczODE5ZTk0MmE3OTllNzZhOGQxMDFkODg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dU
Sy50eHQKQEAgLTE5Miw2ICsxOTIsNyBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
d1Nlc3Npb25TdGF0ZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGEuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVE
YXRhTWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2luZG93
UHJvcGVydGllcy5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZVBvbGljaWVzLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0
azMuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwIEBu
by11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0UG9saWN5RGVjaXNpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0UG9saWN5RGVjaXNpb24uY3BwCmluZGV4IGEzNTc0NzkzYzY5ZWQwNzY4M2E2MDNlNjI5
ZjQwOTExZjc1YmNhM2EuLmRiNGQzNTA4ZDQxNDllNWQ0NGZjOWUxMmJlZmVkNWViMjllNzRlOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFBvbGlj
eURlY2lzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRQb2xpY3lEZWNpc2lvbi5jcHAKQEAgLTIwLDggKzIwLDExIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9saWN5RGVjaXNpb24uaCIKIAorI2luY2x1ZGUgIkFQSVdl
YnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5o
IgogI2luY2x1ZGUgIldlYktpdFBvbGljeURlY2lzaW9uUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldl
YktpdFdlYnNpdGVQb2xpY2llcy5oIgorI2luY2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llc1By
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAjaW5jbHVkZSA8d3Rm
L2dsaWIvV1RGR1R5cGUuaD4KIApAQCAtODQsNiArODcsMzMgQEAgdm9pZCB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX3VzZShXZWJLaXRQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCiAgICAgbGlzdGVu
ZXItPnVzZSgpOwogfQogCisvKioKKyAqIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhf
cG9saWNpZXM6CisgKiBAZGVjaXNpb246IGEgI1dlYktpdFBvbGljeURlY2lzaW9uCisgKiBAcG9s
aWNpZXM6IGEgI1dlYktpdFdlYnNpdGVQb2xpY2llcworICoKKyAqIEFjY2VwdCB0aGUgYWN0aW9u
IHdoaWNoIHRyaWdnZXJlZCB0aGlzIGRlY2lzaW9uLCBhbmQgY29udGludWUgd2l0aAorICogQHBv
bGljaWVzIGFmZmVjdGluZyBhbGwgc3Vic2VxdWVudCBsb2FkcyBvZiByZXNvdXJjZXMgaW4gdGhl
CisgKiBjdXJyZW50IG9yaWdpbi4KKyAqCisgKiBGb3IgZXhhbXBsZSwgYSBuYXZpZ2F0aW9uIGRl
Y2lzaW9uIHRvIGEgdmlkZW8gc2hhcmluZyB3ZWJzaXRlIG1heQorICogYmUgYWNjZXB0ZWQgdW5k
ZXIgdGhlIHByaXZpc28gbm8gbW92aWVzIGFyZSBhbGxvd2VkIHRvIGF1dG9wbGF5LiBUaGUKKyAq
IGF1dG9wbGF5IHBvbGljeSBpbiB0aGlzIGNhc2Ugd291bGQgYmUgc2V0IGluIHRoZSBAcG9saWNp
ZXMuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwordm9pZCB3ZWJraXRfcG9saWN5X2RlY2lzaW9u
X3VzZV93aXRoX3BvbGljaWVzKFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lvbiwgV2ViS2l0
V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKworICAgIGlmICghZGVjaXNpb24tPnBy
aXYtPmxpc3RlbmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxpc3RlbmVyID0gc3Rk
OjpleGNoYW5nZShkZWNpc2lvbi0+cHJpdi0+bGlzdGVuZXIsIG51bGxwdHIpOworCisgICAgbGlz
dGVuZXItPnVzZSh3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRXZWJzaXRlUG9saWNpZXMocG9saWNp
ZXMpKTsKK30KKwogLyoqCiAgKiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2lnbm9yZToKICAqIEBk
ZWNpc2lvbjogYSAjV2ViS2l0UG9saWN5RGVjaXNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggNzIyMmE5MWNi
OTVhNWUzNzBmOTIyOWVlNjQyNWU0MTJiNWY4YjA3OC4uY2JlYzkxM2Q1YjJhMDMwNTkyMDhjYTcw
MTdkNzhiYzBiMGU4YmRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRl
ICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCkBAIC0xODk3LDcgKzE4OTgsNyBAQCBX
ZWJQcm9jZXNzUG9vbCYgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKFdlYktpdFdlYkNv
bnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJuICpjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbDsK
IH0KIAotdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2Vi
Q29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyKiB1c2VyQ29udGVudE1hbmFnZXIsIFdlYktpdFdlYlZpZXcqIHJlbGF0ZWRWaWV3
KQordm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29u
dGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyKiB1c2VyQ29udGVudE1hbmFnZXIsIFdlYktpdFdlYlZpZXcqIHJlbGF0ZWRWaWV3LCBX
ZWJLaXRXZWJzaXRlUG9saWNpZXMqIGRlZmF1bHRXZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgYXV0
byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbChjb250ZXh0LT5wcml2LT5wcm9j
ZXNzUG9vbC5nZXQoKSk7CkBAIC0xOTEwLDYgKzE5MTEsNyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRl
eHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRX
ZWJWaQogICAgIGlmICghbWFuYWdlcikKICAgICAgICAgbWFuYWdlciA9IGNvbnRleHQtPnByaXYt
PndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0V2Vi
c2l0ZURhdGFTdG9yZSgmd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKG1hbmFn
ZXIpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0RGVmYXVsdFdlYnNpdGVQb2xpY2llcyh3
ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRXZWJzaXRlUG9saWNpZXMoZGVmYXVsdFdlYnNpdGVQb2xp
Y2llcykpOwogICAgIHdlYmtpdFdlYlZpZXdDcmVhdGVQYWdlKHdlYlZpZXcsIFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24pKTsKIAogICAgIGF1dG8mIHBhZ2UgPSB3ZWJraXRXZWJWaWV3R2V0UGFn
ZSh3ZWJWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCmluZGV4IGQ4NTY5Yzg1OWJhYmZlMTE2OWM2
ODJlYjY4NjM2NmUzZDA2OWI5YWQuLjc4ZDE1NzhmOTQ3OTNlOWU1OWEzZDRkMmIzM2U3OWVhODUz
MGZhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYkNvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaCIK
ICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZVBv
bGljaWVzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogCkBAIC0zNiw3ICszNyw3IEBAIFdlYktpdERvd25sb2FkKiB3
ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkUHJveHkq
KTsKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZChXZWJLaXRX
ZWJDb250ZXh0KiwgY29uc3QgY2hhciogdXJpLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwogdm9p
ZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5Kik7
CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQoV2ViS2l0V2ViQ29udGV4dCos
IFdlYktpdERvd25sb2FkKik7Ci12b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2Vi
VmlldyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2ViVmlldyosIFdlYktpdFVzZXJDb250ZW50
TWFuYWdlciosIFdlYktpdFdlYlZpZXcqKTsKK3ZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBh
Z2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3KiwgV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyKiwgV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYnNpdGVQb2xpY2llcyop
Owogdm9pZCB3ZWJraXRXZWJDb250ZXh0V2ViVmlld0Rlc3Ryb3llZChXZWJLaXRXZWJDb250ZXh0
KiwgV2ViS2l0V2ViVmlldyopOwogV2ViS2l0V2ViVmlldyogd2Via2l0V2ViQ29udGV4dEdldFdl
YlZpZXdGb3JQYWdlKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwog
R1ZhcmlhbnQqIHdlYmtpdFdlYkNvbnRleHRJbml0aWFsaXplV2ViRXh0ZW5zaW9ucyhXZWJLaXRX
ZWJDb250ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwCmluZGV4IGU0MDQ1YzM2NzA2NTc1Y2M3ZGI5Zjk4NzExZWZkNjkwMDRh
MmEzZjAuLjU4NTA4MGZjYjQ0NzA2NDlhMTlhZTQ2YjQ4MDgyNzA2MzA2OThkMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBA
IC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9s
aWNpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BUElDYXN0Lmg+CkBAIC0yMDAsNyArMjAxLDggQEAgZW51bSB7CiAgICAgUFJPUF9BVVRPTUFU
SU9OX1BSRVNFTlRBVElPTl9UWVBFLAogICAgIFBST1BfRURJVEFCTEUsCiAgICAgUFJPUF9QQUdF
X0lELAotICAgIFBST1BfSVNfTVVURUQKKyAgICBQUk9QX0lTX01VVEVELAorICAgIFBST1BfV0VC
U0lURV9QT0xJQ0lFUwogfTsKIAogdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPFdl
YktpdFdlYlJlc291cmNlPiA+IExvYWRpbmdSZXNvdXJjZXNNYXA7CkBAIC0zMDIsNiArMzA0LDcg
QEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRBdXRo
ZW50aWNhdGlvblJlcXVlc3Q+IGF1dGhlbnRpY2F0aW9uUmVxdWVzdDsKIAogICAgIEdSZWZQdHI8
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyPiB3ZWJzaXRlRGF0YU1hbmFnZXI7CisgICAgR1JlZlB0
cjxXZWJLaXRXZWJzaXRlUG9saWNpZXM+IHdlYnNpdGVQb2xpY2llczsKIH07CiAKIHN0YXRpYyBn
dWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTc1NSw3ICs3NTgsMTAgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAg
ICAgICAgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vzc1Bvb2wocHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyLmdldCgpLCB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wocHJpdi0+
Y29udGV4dC5nZXQoKSkpOwogICAgIH0KIAotICAgIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdl
Rm9yV2ViVmlldyhwcml2LT5jb250ZXh0LmdldCgpLCB3ZWJWaWV3LCBwcml2LT51c2VyQ29udGVu
dE1hbmFnZXIuZ2V0KCksIHByaXYtPnJlbGF0ZWRWaWV3KTsKKyAgICBpZiAoIXByaXYtPndlYnNp
dGVQb2xpY2llcykKKyAgICAgICAgcHJpdi0+d2Vic2l0ZVBvbGljaWVzID0gYWRvcHRHUmVmKHdl
YmtpdF93ZWJzaXRlX3BvbGljaWVzX25ldygpKTsKKworICAgIHdlYmtpdFdlYkNvbnRleHRDcmVh
dGVQYWdlRm9yV2ViVmlldyhwcml2LT5jb250ZXh0LmdldCgpLCB3ZWJWaWV3LCBwcml2LT51c2Vy
Q29udGVudE1hbmFnZXIuZ2V0KCksIHByaXYtPnJlbGF0ZWRWaWV3LCBwcml2LT53ZWJzaXRlUG9s
aWNpZXMuZ2V0KCkpOwogCiAgICAgcHJpdi0+bG9hZE9ic2VydmVyID0gbWFrZVVuaXF1ZTxQYWdl
TG9hZFN0YXRlT2JzZXJ2ZXI+KHdlYlZpZXcpOwogICAgIGdldFBhZ2Uod2ViVmlldykucGFnZUxv
YWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpwcml2LT5sb2FkT2JzZXJ2ZXIpOwpAQCAtODM4LDYgKzg0
NCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlCiAgICAgY2FzZSBQUk9QX0lTX01VVEVEOgog
ICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lzX211dGVkKHdlYlZpZXcsIGdfdmFsdWVfZ2V0
X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dFQlNJVEVf
UE9MSUNJRVM6CisgICAgICAgIHdlYlZpZXctPnByaXYtPndlYnNpdGVQb2xpY2llcyA9IHN0YXRp
Y19jYXN0PFdlYktpdFdlYnNpdGVQb2xpY2llcyo+KGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSkp
OworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lO
VkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAt
OTAzLDYgKzkxMiw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0lT
X01VVEVEOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2lzX211dGVkKHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X1dFQlNJVEVfUE9MSUNJRVM6CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Vi
a2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZ
X0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOwogICAgIH0KQEAgLTEyOTAsNiArMTMwMiwy
MyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3
Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIEZBTFNFLAogICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURXUklURSkpOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzp3
ZWJzaXRlLXBvbGljaWVzOgorICAgICAqCisgICAgICogVGhlICNXZWJLaXRXZWJzaXRlUG9saWNp
ZXMgZm9yIHRoZSB2aWV3LgorICAgICAqCisgICAgICogU2luY2U6IDIuMzAKKyAgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3Ms
CisgICAgICAgIFBST1BfV0VCU0lURV9QT0xJQ0lFUywKKyAgICAgICAgZ19wYXJhbV9zcGVjX29i
amVjdCgKKyAgICAgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwKKyAgICAgICAgICAgIF8oIkRl
ZmF1bHQgV2Vic2l0ZSBQb2xpY2llcyIpLAorICAgICAgICAgICAgXygiVGhlIGRlZmF1bHQgcG9s
aWN5IG9iamVjdCBmb3Igc2l0ZXMgbG9hZGVkIGluIHRoaXMgdmlldyIpLAorICAgICAgICAgICAg
V0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUywKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQ
YXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05M
WSkpKTsKKwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6OmxvYWQtY2hhbmdlZDoKICAg
ICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlz
IGVtaXR0ZWQKQEAgLTM3NTMsNyArMzc4Miw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9q
YXZhc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBzY3JpcHQsCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9
IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNl
ckRhdGEpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7
IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwg
dHJ1ZSB9LCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFp
bHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzIHBhcmFtcyA9IHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9LCBmYWxz
ZSwgV1RGOjpudWxsb3B0LCBmYWxzZSB9OworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKFdURk1vdmUocGFyYW1zKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25h
bDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ip
IHsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwogICAgICAgICBp
ZiAoZGV0YWlscykKICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsKQEAg
LTQ2MTcsMyArNDY0Nyw0MSBAQCBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIHdlYmtpdF93ZWJf
dmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQoV2ViS2l0V2ViVmlldwogI2VuZGlmCiAKIH0K
KworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3dlYnNpdGVfcG9saWNpZXM6CisgKiBA
d2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBwb2xpY2llczogVGhlICNXZWJLaXRXZWJz
aXRlUG9saWNpZXMgdG8gYXBwbHkgdG8gdGhlIHBhZ2UuCisgKgorICogVXBkYXRlcyB0aGUgd2Vi
c2l0ZSBwb2xpY2llcyBhc3NvY2lhdGVkIHdpdGggQHdlYl92aWV3LgorICoKKyAqIE5vdGUsIGl0
IG9ubHkgbWFrZXMgc2Vuc2UgdG8gY2FsbCB0aGlzIEFQSSBhZnRlciAlV0VCS0lUX0xPQURfQ09N
TUlUVEVECisgKiBhbmQgYmVmb3JlICVXRUJLSVRfTE9BRF9GSU5JU0hFRC4KKyAqCisgKiBTaW5j
ZTogMi4zMAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfd2Vic2l0ZV9wb2xpY2ll
cyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVz
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsK
KyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTKHBvbGljaWVz
KSk7CisKKyAgICBhdXRvIHBvbGljaWVzRGF0YSA9IHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFBv
bGljaWVzRGF0YShwb2xpY2llcyk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS51cGRhdGVXZWJzaXRl
UG9saWNpZXMoV1RGTW92ZShwb2xpY2llc0RhdGEpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXM6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqCisgKiBHZXRzIHRoZSB3ZWJzaXRlIHBvbGljaWVzIGFzc29jaWF0ZWQgd2l0aCBAd2Vi
X3ZpZXcuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdFdlYnNp
dGVQb2xpY2llcyBhc3NvY2lhdGVkIHdpdGggdGhlIHZpZXcKKyAqCisgKiBTaW5jZTogMi4zMAor
ICovCitXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9w
b2xpY2llcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4g
d2ViVmlldy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzLmdldCgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llcy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzA5MzQwMWQ2M2IyNTJiNjg0ZjllNTk2ZGY2OGRjZmVmY2Q0MjlmZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYnNpdGVQb2xpY2llcy5jcHAKQEAgLTAsMCArMSwyNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJL
aXRXZWJzaXRlUG9saWNpZXMuaCIKKworI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgor
I2luY2x1ZGUgIldlYktpdEVudW1UeXBlcy5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0Rh
dGEuaCIKKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL1dU
RkdUeXBlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8qKgorICogU0VDVElPTjog
V2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IFZpZXcgc3BlY2lm
aWMgd2Vic2l0ZSBwb2xpY2llcworICogQFRpdGxlOiBXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAq
IEBTZWVfYWxzbzogI1dlYktpdFdlYlZpZXcKKyAqCisgKiBXZWJLaXRXZWJzaXRlUG9saWNpZXMg
YWxsb3dzIHlvdSB0byBjb25maWd1cmUgcGVyLXBhZ2UgYXV0b3BsYXkgcG9saWNpZXMuCisgKgor
ICogU2luY2U6IDIuMzAKKyAqLworCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitlbnVtIHsK
KyAgICBQUk9QXzAsCisKKyAgICBQUk9QX0FVVE9QTEFZX1BPTElDWQorfTsKKworc3RydWN0IF9X
ZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlIHsKKyAgICBfV2ViS2l0V2Vic2l0ZVBvbGljaWVz
UHJpdmF0ZSgpCisgICAgICAgIDogd2Vic2l0ZVBvbGljaWVzKEFQSTo6V2Vic2l0ZVBvbGljaWVz
OjpjcmVhdGUoKSkKKyAgICB7CisgICAgfQorICAgIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2ll
cz4gd2Vic2l0ZVBvbGljaWVzOworfTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYnNp
dGVQb2xpY2llcywgd2Via2l0X3dlYnNpdGVfcG9saWNpZXMsIEdfVFlQRV9PQkpFQ1QpCisKK3N0
YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7
CisgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcyA9IFdFQktJVF9XRUJTSVRFX1BP
TElDSUVTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9B
VVRPUExBWV9QT0xJQ1k6CisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93
ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRvcGxheV9wb2xpY3kocG9saWNpZXMpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BF
UlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOworICAgIH0KK30KKworc3RhdGljIHZv
aWQgd2Via2l0V2Vic2l0ZVBvbGljaWVzU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wSUQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sK
KyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzID0gV0VCS0lUX1dFQlNJVEVfUE9M
SUNJRVMob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElEKSB7CisgICAgY2FzZSBQUk9QX0FV
VE9QTEFZX1BPTElDWTogeworICAgICAgICB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0
b3BsYXlfcG9saWN5KHBvbGljaWVzLCBzdGF0aWNfY2FzdDxXZWJLaXRBdXRvcGxheVBvbGljeT4o
Z192YWx1ZV9nZXRfZW51bSh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRl
ZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BJRCwgcGFyYW1TcGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYnNp
dGVQb2xpY2llc0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChv
YmplY3QpOworfQorCitBUEk6OldlYnNpdGVQb2xpY2llcyogd2Via2l0V2Vic2l0ZVBvbGljaWVz
R2V0V2Vic2l0ZVBvbGljaWVzKFdlYktpdFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMpCit7Cisg
ICAgcmV0dXJuIHBvbGljaWVzLT5wcml2LT53ZWJzaXRlUG9saWNpZXMuZ2V0KCk7Cit9CisKK1dl
YnNpdGVQb2xpY2llc0RhdGEgd2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UG9saWNpZXNEYXRhKFdl
YktpdFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMpCit7CisgICAgV2Vic2l0ZVBvbGljaWVzRGF0
YSBwb2xpY2llc0RhdGEgeyB9OworCisgICAgc3dpdGNoICh3ZWJraXRfd2Vic2l0ZV9wb2xpY2ll
c19nZXRfYXV0b3BsYXlfcG9saWN5KHBvbGljaWVzKSkgeworICAgIGNhc2UgV2ViS2l0QXV0b3Bs
YXlQb2xpY3k6OldFQktJVF9BVVRPUExBWV9BTExPVzoKKyAgICAgICAgcG9saWNpZXNEYXRhLmF1
dG9wbGF5UG9saWN5ID0gV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvdzsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBXZWJLaXRBdXRvcGxheVBvbGljeTo6V0VCS0lUX0FVVE9QTEFZX0FMTE9X
X1dJVEhPVVRfU09VTkQ6CisgICAgICAgIHBvbGljaWVzRGF0YS5hdXRvcGxheVBvbGljeSA9IFdl
YnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgV2ViS2l0QXV0b3BsYXlQb2xpY3k6OldFQktJVF9BVVRPUExBWV9ERU5ZOgorICAg
ICAgICBwb2xpY2llc0RhdGEuYXV0b3BsYXlQb2xpY3kgPSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6
OkRlbnk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHBvbGljaWVzRGF0
YS5hdXRvcGxheVBvbGljeSA9IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdDsKKyAgICB9
CisKKyAgICByZXR1cm4gcG9saWNpZXNEYXRhOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
c2l0ZV9wb2xpY2llc19jbGFzc19pbml0KFdlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzKiBmaW5k
Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFT
UyhmaW5kQ2xhc3MpOworCisgICAgZ09iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRX
ZWJzaXRlUG9saWNpZXNHZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0
eSA9IHdlYmtpdFdlYnNpdGVQb2xpY2llc1NldFByb3BlcnR5OworICAgIGdPYmplY3RDbGFzcy0+
Y29uc3RydWN0ZWQgPSB3ZWJraXRXZWJzaXRlUG9saWNpZXNDb25zdHJ1Y3RlZDsKKworICAgIC8q
KgorICAgICAqIFdlYktpdFdlYnNpdGVQb2xpY2llczphdXRvcGxheS1wb2xpY3k6CisgICAgICoK
KyAgICAgKiBUaGUgI1dlYktpdEF1dG9wbGF5UG9saWN5IG9mICNXZWJLaXRXZWJzaXRlUG9saWNp
ZXMuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zMAorICAgICAqLworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJP
UF9BVVRPUExBWV9QT0xJQ1ksCisgICAgICAgIGdfcGFyYW1fc3BlY19lbnVtKAorICAgICAgICAg
ICAgImF1dG9wbGF5LXBvbGljeSIsCisgICAgICAgICAgICAiQXV0b3BsYXkgUG9saWN5IiwKKyAg
ICAgICAgICAgIF8oIlRoZSBhdXRvcGxheSBwb2xpY3kgdG8gdXNlIHdoZW4gZGVjaWRpbmcgdG8g
YXV0b3BsYXkgbWVkaWEiKSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0FVVE9QTEFZX1BPTElD
WSwKKyAgICAgICAgICAgIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5ELAorICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUp
KSk7Cit9CisKKworLyoqCisgKiB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXc6CisgKgorICog
UmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiB0aGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2Vic2l0
ZVBvbGljaWVzCisgKgorICogU2luY2U6IDIuMzAKKyAqLworV2ViS2l0V2Vic2l0ZVBvbGljaWVz
KiB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcodm9pZCkKK3sKKyAgICByZXR1cm4gV0VCS0lU
X1dFQlNJVEVfUE9MSUNJRVMoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJ
RVMsIG51bGxwdHIpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdf
d2l0aF9wb2xpY2llczoKKyAqIEBmaXJzdF9wb2xpY3lfbmFtZTogbmFtZSBvZiB0aGUgZmlyc3Qg
cG9saWN5IHRvIHNldAorICogQC4uLjogdmFsdWUgb2YgZmlyc3QgcG9saWN5LCBmb2xsb3dlZCBi
eSBtb3JlIHBvbGljaWVzLCAlTlVMTC10ZXJtaW5hdGVkCisgKgorICogUmV0dXJuczogKHRyYW5z
ZmVyIGZ1bGwpOiB0aGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKgor
ICogPGluZm9ybWFsZXhhbXBsZT48cHJvZ3JhbWxpc3Rpbmc+CisgKiBXZWJLaXRXZWJzaXRlUG9s
aWNpZXMgKmRlZmF1bHRfd2Vic2l0ZV9wb2xpY2llcyA9IHdlYmtpdF93ZWJzaXRlX3BvbGljaWVz
X25ld193aXRoX3BvbGljaWVzKAorICogICAgICJhdXRvcGxheS1wb2xpY3kiLCBXRUJLSVRfQVVU
T1BMQVlfREVOWSwKKyAqICAgICBOVUxMKTsKKyAqIC4uLgorICogV2ViS2l0V2ViVmlldyAqdmll
dyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCisg
KiAgICAgIndlYi1jb250ZXh0IiwgY3R4LAorICogICAgICJzZXR0aW5ncyIsIHNldHRpbmdzLAor
ICogICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIGNvbnRlbnRfbWFuYWdlciwKKyAqICAgICAi
d2Vic2l0ZS1wb2xpY2llcyIsIGRlZmF1bHRfd2Vic2l0ZV9wb2xpY2llcywKKyAqICAgICBOVUxM
KSk7CisgKiAuLi4KKyAqIDwvcHJvZ3JhbWxpc3Rpbmc+PC9pbmZvcm1hbGV4YW1wbGU+CisgKgor
ICogU2luY2U6IDIuMzAKKyAqLworV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiB3ZWJraXRfd2Vic2l0
ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcyhjb25zdCBnY2hhciogZmlyc3RQb2xpY3lOYW1l
LCAuLi4pCit7CisgICAgdmFfbGlzdCBhcmdzOworICAgIHZhX3N0YXJ0KGFyZ3MsIGZpcnN0UG9s
aWN5TmFtZSk7CisgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcyA9IFdFQktJVF9X
RUJTSVRFX1BPTElDSUVTKGdfb2JqZWN0X25ld192YWxpc3QoV0VCS0lUX1RZUEVfV0VCU0lURV9Q
T0xJQ0lFUywgZmlyc3RQb2xpY3lOYW1lLCBhcmdzKSk7CisgICAgdmFfZW5kKGFyZ3MpOworCisg
ICAgcmV0dXJuIHBvbGljaWVzOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVz
X2dldF9hdXRvcGxheV9wb2xpY3k6CisgKiBAcG9saWNpZXM6IGEgI1dlYktpdFdlYnNpdGVQb2xp
Y2llcworICoKKyAqIEdldCB0aGUgI1dlYktpdFdlYnNpdGVQb2xpY2llczphdXRvcGxheS1wb2xp
Y3kgcHJvcGVydHkuCisgKgorICogUmV0dXJuczogI1dlYktpdEF1dG9wbGF5UG9saWN5CisgKgor
ICogU2luY2U6IDIuMzAKKyAqLworV2ViS2l0QXV0b3BsYXlQb2xpY3kgd2Via2l0X3dlYnNpdGVf
cG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeShXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGlj
aWVzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX1BPTElD
SUVTKHBvbGljaWVzKSwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQpOworCisg
ICAgYXV0byBhcGlBdXRvcGxheVBvbGljeVR5cGUgPSBwb2xpY2llcy0+cHJpdi0+d2Vic2l0ZVBv
bGljaWVzLT5hdXRvcGxheVBvbGljeSgpOworICAgIHN3aXRjaCAoYXBpQXV0b3BsYXlQb2xpY3lU
eXBlKSB7CisgICAgY2FzZSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3c6Cisg
ICAgICAgIHJldHVybiBXRUJLSVRfQVVUT1BMQVlfQUxMT1c7CisgICAgY2FzZSBXZWJLaXQ6Oldl
YnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQ6CisgICAgICAgIHJldHVybiBX
RUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORDsKKyAgICBjYXNlIFdlYktpdDo6V2Vi
c2l0ZUF1dG9wbGF5UG9saWN5OjpEZW55OgorICAgICAgICByZXR1cm4gV0VCS0lUX0FVVE9QTEFZ
X0RFTlk7CisgICAgY2FzZSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworLyoq
CisgKiB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlfcG9saWN5OgorICogQHBv
bGljaWVzOiB0aGUgI1dlYktpdFdlYnNpdGVQb2xpY2llcworICogQHBvbGljeTogdGhlICNXZWJL
aXRBdXRvcGxheVBvbGljeSB0byB1c2UKKyAqCisgKiBTZXQgdGhlICNXZWJLaXRXZWJzaXRlUG9s
aWNpZXM6YXV0b3BsYXktcG9saWN5IHByb3BlcnR5LgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8K
K3ZvaWQgd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfc2V0X2F1dG9wbGF5X3BvbGljeShXZWJLaXRX
ZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBXZWJLaXRBdXRvcGxheVBvbGljeSBwb2xpY3kpCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFUyhwb2xpY2ll
cykpOworCisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIFdFQktJVF9BVVRPUExBWV9B
TExPVzoKKyAgICAgICAgcG9saWNpZXMtPnByaXYtPndlYnNpdGVQb2xpY2llcy0+c2V0QXV0b3Bs
YXlQb2xpY3koV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93KTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORDoKKyAg
ICAgICAgcG9saWNpZXMtPnByaXYtPndlYnNpdGVQb2xpY2llcy0+c2V0QXV0b3BsYXlQb2xpY3ko
V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfQVVUT1BMQVlfREVOWToKKyAgICAgICAgcG9saWNp
ZXMtPnByaXYtPndlYnNpdGVQb2xpY2llcy0+c2V0QXV0b3BsYXlQb2xpY3koV2ViS2l0OjpXZWJz
aXRlQXV0b3BsYXlQb2xpY3k6OkRlbnkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlUG9saWNp
ZXNQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZmMWYxMjg3ZThkMWJjNTdmN2ViZGMzNmNiNjY2YTA2
NTdkYmVjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaApAQCAtMCwwICsxLDI3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZVBvbGljaWVz
LmgiCisjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgorCitBUEk6OldlYnNpdGVQb2xp
Y2llcyogd2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0V2Vic2l0ZVBvbGljaWVzKFdlYktpdFdlYnNp
dGVQb2xpY2llcyAqKTsKK1dlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJraXRXZWJzaXRl
UG9saWNpZXNHZXRQb2xpY2llc0RhdGEoV2ViS2l0V2Vic2l0ZVBvbGljaWVzICopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lv
bi5oCmluZGV4IGYxOTJhMWQzNzlkYzY0MjFkZjc2MDQ3NGQyMDY0OWU0NWZmMGM4Y2IuLjBmZjg5
ZTQ5Yzc2M2QzNmY1ZTRhZTNiZDFjMTE3ZDYzMWMxMzJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmgKQEAgLTI2
LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJzaXRlUG9saWNp
ZXMuaD4KIAogR19CRUdJTl9ERUNMUwogCkBAIC02Miw2ICs2MywxMCBAQCB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX2dldF90eXBlICh2b2lkKTsKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3BvbGlj
eV9kZWNpc2lvbl91c2UgICAgICAoV2ViS2l0UG9saWN5RGVjaXNpb24gKmRlY2lzaW9uKTsKIAor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZV93aXRoX3BvbGljaWVz
ICAoV2ViS2l0UG9saWN5RGVjaXNpb24gKmRlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqcG9saWNpZXMpOwor
CiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3JlICAgKFdlYktp
dFBvbGljeURlY2lzaW9uICpkZWNpc2lvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggMTMxMzYwYzNkZDBlYmZjYTExYzZlNzE0
ODZlNjExNmQ3ZGYxMGJjZi4uNTBlMjAyMjIyYmRhMmE5MzhlZTM1MDczODM3MTc2ZjQyY2JjOWIx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmgKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkluc3BlY3Rvci5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0V2ViUmVzb3VyY2UuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYnNp
dGVQb2xpY2llcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld0Jhc2UuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuaD4KQEAgLTU4NCw2ICs1ODUsMTUgQEAgd2Vi
a2l0X3dlYl92aWV3X3NldF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldwogV0VCS0lUX0FQSSBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgKgogd2Via2l0X3dl
Yl92aWV3X2dldF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dl
Yl92aWV3X3VwZGF0ZV93ZWJzaXRlX3BvbGljaWVzICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMgICAgICpwb2xpY2ll
cyk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKK3dlYmtpdF93ZWJfdmll
d19nZXRfd2Vic2l0ZV9wb2xpY2llcyAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgKndlYl92aWV3KTsKKworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCmlu
ZGV4IGQ0YTU1YzU1NWJlYWRlNWU3NTExMWRmOTA5MmU4Y2FhNGY0OTA3ODIuLjU2NjYyMzAwYWRj
NmZjMjg4M2JhMTFmNzc3MTkzOWFhNjQ2NGJhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcApAQCAtMzAxLDggKzMwMSw4
IEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQoV2ViS2l0V2Vi
Q29udGV4dCogY29udGV4dCkKICAqIFlvdSBjYW4gYWxzbyB1c2UgdGhpcyBtZXRob2QgdG8gaW1w
bGVtZW50IG90aGVyIHByb2Nlc3MgbW9kZWxzIGJhc2VkIG9uICVXRUJLSVRfUFJPQ0VTU19NT0RF
TF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTLAogICogbGlrZSBmb3IgZXhhbXBsZSwgc2hh
cmluZyB0aGUgc2FtZSB3ZWIgcHJvY2VzcyBmb3IgYWxsIHRoZSB2aWV3cyBpbiB0aGUgc2FtZSBz
ZWN1cml0eSBkb21haW4uCiAgKgotICogVGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYlZpZXcg
d2lsbCBhbHNvIGhhdmUgdGhlIHNhbWUgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlcgotICogYW5k
ICNXZWJLaXRTZXR0aW5ncyBhcyBAd2ViX3ZpZXcuCisgKiBUaGUgbmV3bHkgY3JlYXRlZCAjV2Vi
S2l0V2ViVmlldyB3aWxsIGFsc28gaGF2ZSB0aGUgc2FtZSAjV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLAorICogI1dlYktpdFNldHRpbmdzLCBhbmQgI1dlYktpdFdlYnNpdGVQb2xpY2llcyBhcyBA
d2ViX3ZpZXcuCiAgKgogICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBUaGUgbmV3bHkgY3Jl
YXRlZCAjV2ViS2l0V2ViVmlldyB3aWRnZXQKICAqCkBAIC0zMTYsNiArMzE2LDcgQEAgR3RrV2lk
Z2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmll
d19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJzZXR0aW5ncyIs
IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyksCiAgICAgICAgICJyZWxhdGVk
LXZpZXciLCB3ZWJWaWV3LAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJf
dmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgbnVsbHB0cikpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVQb2xpY2llcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJzaXRlUG9saWNpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGVmODhjMTAzNmUwM2Q4OGZlYTRkN2UzNmU2
MzA1NGNhYzMxM2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaApAQCAtMCwwICsxLDkxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hf
SU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkg
PHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVf
V0VCU0lURV9QT0xJQ0lFUyAgICAgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRf
dHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFUyhvYmopICAgICAgICAgICAg
KEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJTSVRFX1BP
TElDSUVTLCBXZWJLaXRXZWJzaXRlUG9saWNpZXMpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCU0lU
RV9QT0xJQ0lFUyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmop
LCBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTKSkKKyNkZWZpbmUgV0VCS0lUX1dFQlNJVEVf
UE9MSUNJRVNfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3Mp
LCAgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUywgV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xh
c3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFU19DTEFTUyhrbGFzcykgKEdf
VFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElD
SUVTKSkKKyNkZWZpbmUgV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NMQVNTKG9iaikgIChH
X1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJ
Q0lFUywgV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzICAgICAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXM7Cit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MgICBXZWJLaXRXZWJzaXRlUG9saWNp
ZXNDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlIFdl
YktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGlj
aWVzIHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIFdlYktpdFdlYnNpdGVQb2xpY2llc1By
aXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzIHsK
KyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQwKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7Cisg
ICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRf
cmVzZXJ2ZWQzKSAodm9pZCk7Cit9OworCisvKioKKyAqIFdlYktpdEF1dG9wbGF5UG9saWN5Ogor
ICogQFdFQktJVF9BVVRPUExBWV9BTExPVzogRG8gbm90IHJlc3RyaWN0IGF1dG9wbGF5LgorICog
QFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EOiBBbGxvdyB2aWRlb3MgdG8gYXV0
b3BsYXkgaWYKKyAqIHRoZXkgaGF2ZSBubyBhdWRpbyB0cmFjaywgb3IgaWYgdGhlaXIgYXVkaW8g
dHJhY2sgaXMgbXV0ZWQuCisgKiBAV0VCS0lUX0FVVE9QTEFZX0RFTlk6IE5ldmVyIGFsbG93IGF1
dG9wbGF5LgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc3BlY2lmeSBhdXRvcGxheSBwb2xp
Y2llcy4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJ
VF9BVVRPUExBWV9BTExPVywKKyAgICBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VO
RCwKKyAgICBXRUJLSVRfQVVUT1BMQVlfREVOWQorfSBXZWJLaXRBdXRvcGxheVBvbGljeTsKKwor
V0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X3R5cGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2Vic2l0
ZVBvbGljaWVzICoKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ldyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYnNpdGVQb2xp
Y2llcyAqCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcyAgICAgICAg
ICAgICAgICAgICAgIChjb25zdCBnY2hhciAgKmZpcnN0X3BvbGljeV9uYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4u
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3Bs
YXlfcG9saWN5ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGlj
aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0QXV0b3BsYXlQb2xpY3kgcG9saWN5KTsKKworV0VCS0lUX0FQSSBX
ZWJLaXRBdXRvcGxheVBvbGljeQord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5
X3BvbGljeSAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2ll
cyk7CisKK0dfRU5EX0RFQ0xTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCA0
ODJiMDZjZWNmYTE3YmJkMzk5Y2I4OGQ4NGQxMWFkM2Q5NDVhZWEwLi5mYTI3YjIxYzk5NjZkM2Y2
YjRjMmNjZWZiODQ1OWIyN2ZmMDEwNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQKQEAgLTE5OCw2ICsxOTgsNyBAQCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudAogV2ViS2l0
U25hcHNob3RPcHRpb25zCiBXZWJLaXRTbmFwc2hvdFJlZ2lvbgogV2ViS2l0V2ViUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uCitXZWJLaXRBdXRvcGxheVBvbGljeQogCiA8U1VCU0VDVElPTiBFZGl0
aW5nIENvbW1hbmRzPgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQKQEAgLTI4OCw2ICsyODks
OCBAQCB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2UKIHdlYmtpdF93ZWJfdmll
d19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19zZXRfaW5wdXRf
bWV0aG9kX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQK
K3dlYmtpdF93ZWJfdmlld191cGRhdGVfd2Vic2l0ZV9wb2xpY2llcword2Via2l0X3dlYl92aWV3
X2dldF93ZWJzaXRlX3BvbGljaWVzCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1
bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC04NDcsNiArODUwLDcgQEAgV2ViS2l0UG9s
aWN5RGVjaXNpb24KIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQKIHdlYmtpdF9wb2xp
Y3lfZGVjaXNpb25faWdub3JlCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZQord2Via2l0X3Bv
bGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcwogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4K
IFdlYktpdFBvbGljeURlY2lzaW9uQ2xhc3MKQEAgLTE4NDYsMyArMTg1MCwyNyBAQCBXRUJLSVRf
VVNFUl9NRVNTQUdFX0dFVF9DTEFTUwogV2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlCiB3ZWJraXRf
dXNlcl9tZXNzYWdlX2dldF90eXBlCiA8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2Vi
S2l0V2Vic2l0ZVBvbGljaWVzPC9GSUxFPgorV2ViS2l0V2Vic2l0ZVBvbGljaWVzCit3ZWJraXRf
d2Vic2l0ZV9wb2xpY2llc19uZXcKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3Bv
bGljaWVzCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfYXV0b3BsYXlfcG9saWN5Cit3ZWJr
aXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlfcG9saWN5CisKKzxTVUJTRUNUSU9OIFN0
YW5kYXJkPgorV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MKK1dFQktJVF9JU19XRUJTSVRFX1BP
TElDSUVTCitXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFU19DTEFTUworV0VCS0lUX1RZUEVfV0VC
U0lURV9QT0xJQ0lFUworV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMKK1dFQktJVF9XRUJTSVRFX1BP
TElDSUVTX0NMQVNTCitXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19HRVRfQ0xBU1MKKworPFNVQlNF
Q1RJT04gUHJpdmF0ZT4KK1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUKK3dlYmtpdF93ZWJz
aXRlX3BvbGljaWVzX2dldF90eXBlCis8L1NFQ1RJT04+CisKKwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ3OWQyNjUwZTkzYTA1OGNmMGVlZjc2
MjNiY2QzYzVjMWNkYjBjMDcuLmM5ZWNkYzVkZjM2MGY0NjU2MGQ3MjhlOWIxMWU3YWFhOWJhODBk
YmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMCBAQAorMjAyMC0wNi0wMiAgQ2hhcmxpZSBUdXJuZXIgIDxjdHVybmVyQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gRGlzYWJsZSB2aWRlbyBhdXRvcGxheQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0ODQ1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSB2YXJpb3Vz
IGNhbGxzaXRlcyBmb3IgY29uc3RydWN0aW5nIGEgdmlldyB0byB0YWtlIGludG8KKyAgICAgICAg
YWNjb3VudCB0aGUgZGVmYXVsdCBwb2xpY2llcy4gSSBjaG9zZSB0aGUgZGVmYXVsdCBhcyBhdXRv
cGxheQorICAgICAgICBhbGxvdyB3aXRob3V0IHNvdW5kLCB3aGljaCBpcyBpbiBrZWVwaW5nIHdp
dGggV2ViQ29yZSdzIGNob2ljZS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
VGFiLmM6CisgICAgICAgIChkZWNpZGVQb2xpY3kpOgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgICh3ZWJWaWV3RGVjaWRlUG9saWN5KToKKyAgICAg
ICAgKG5ld1RhYkNhbGxiYWNrKToKKyAgICAgICAgKG9wZW5Qcml2YXRlV2luZG93KToKKyAgICAg
ICAgKGJyb3dzZXJfd2luZG93X2dldF9vcl9jcmVhdGVfd2ViX3ZpZXdfZm9yX2F1dG9tYXRpb24p
OgorICAgICAgICAoYnJvd3Nlcl93aW5kb3dfY3JlYXRlX3dlYl92aWV3X2luX25ld190YWJfZm9y
X2F1dG9tYXRpb24pOgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAg
IChjcmVhdGVCcm93c2VyVGFiKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcDogQWRkCisg
ICAgICAgIGF1dG9wbGF5IHBvbGljeSB0ZXN0cywgYW5kIHVzZSBtb2Rlcm4gY2xhc3MgaW5pdGlh
bGl6ZXJzLgorICAgICAgICAodGVzdEF1dG9wbGF5UG9saWN5KToKKyAgICAgICAgKGJlZm9yZUFs
bCk6CisKIDIwMjAtMDUtMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIFdlYkRyaXZlcjogc3RvcCB1c2luZyBHZGtFdmVudCBBUEkg
aW4gcHJlcGFyYXRpb24gZm9yIEdUSzQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5j
CmluZGV4IDFkZTIxNGNkNDYzYWM5ZDgxMDAxMzMzNTFhMjM1Y2Y4ZDI5ODlkMTEuLmYwYjBmNDMy
ODJmNmI4MWEwZWJiYTI3MjcyOWRhODliMGY1ZDEyYWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jy
b3dzZXJXaW5kb3cuYwpAQCAtNDE4LDYgKzQxOCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3
RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBvbGljeURlY2lzaW9u
CiAgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmll
dyksCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9u
KHdlYlZpZXcpLAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19n
ZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJyb3dz
ZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNTgzLDYgKzU4NCw3IEBAIHN0YXRp
YyB2b2lkIG5ld1RhYkNhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICAgICAgInNl
dHRpbmdzIiwgd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSwKICAgICAgICAg
InVzZXItY29udGVudC1tYW5hZ2VyIiwgd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRf
bWFuYWdlcih3ZWJWaWV3KSwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIs
IHdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCisg
ICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3Bv
bGljaWVzKHdlYlZpZXcpLAogICAgICAgICBOVUxMKSkpOwogICAgIGd0a193aWRnZXRfZ3JhYl9m
b2N1cyh3aW5kb3ctPnVyaUVudHJ5KTsKICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFn
ZShHVEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKQEAgLTYwMiw2ICs2MDQsNyBA
QCBzdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdpbmRvdyhCcm93c2VyV2luZG93ICp3aW5kb3cpCiAg
ICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9j
b250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVyYWwiLCBUUlVFLAog
ICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92aWV3X2lz
X2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKKyAgICAgICAgIndlYnNpdGUtcG9s
aWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldyksCiAg
ICAgICAgIE5VTEwpKTsKICAgICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93
X25ldyhHVEtfV0lORE9XKHdpbmRvdyksIHdpbmRvdy0+d2ViQ29udGV4dCk7CiAgICAgYnJvd3Nl
cl93aW5kb3dfYXBwZW5kX3ZpZXcoQlJPV1NFUl9XSU5ET1cobmV3V2luZG93KSwgbmV3V2ViVmll
dyk7CkBAIC0xMzE1LDYgKzEzMTgsNyBAQCBXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19n
ZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKHZvaWQpCiAgICAgICAgICJzZXR0
aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyksCiAgICAgICAgICJ1
c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21h
bmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBU
UlVFLAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vi
c2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIEd0a1dpZGdldCAq
bmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1cod2luZG93KSwgd2luZG93
LT53ZWJDb250ZXh0KTsKICNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCkBAIC0xMzM5
LDYgKzEzNDMsNyBAQCBXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19jcmVhdGVfd2ViX3Zp
ZXdfaW5fbmV3X3RhYl9mb3JfYXV0b21hdGlvbih2b2lkKQogICAgICAgICAidXNlci1jb250ZW50
LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZp
ZXcpLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgVFJVRSwKICAgICAg
ICAgImF1dG9tYXRpb24tcHJlc2VudGF0aW9uLXR5cGUiLCBXRUJLSVRfQVVUT01BVElPTl9CUk9X
U0lOR19DT05URVhUX1BSRVNFTlRBVElPTl9UQUIsCisgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVz
Iiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAogICAgICAg
ICBOVUxMKSk7CiAgICAgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcod2luZG93LCBuZXdXZWJW
aWV3KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkobmV3V2ViVmlldywgImFib3V0OmJs
YW5rIik7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCAyZmY0NWI5MzhjZmZhYmU5NWZlMTcxMzczOTNi
OGI2YzUwNmQ0OTkzLi5kZDY1YWU4ODJiMzA0MmE4MzVhMDA2ZmVhMzYzZGM1YjBhNGY2NTczIDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9tYWluLmMKQEAgLTc3LDEzICs3NywxNCBAQCBzdGF0aWMgZ2NoYXIgKmFyZ3Vt
ZW50VG9VUkwoY29uc3QgY2hhciAqZmlsZW5hbWUpCiAgICAgcmV0dXJuIGZpbGVVUkw7CiB9CiAK
LXN0YXRpYyBXZWJLaXRXZWJWaWV3ICpjcmVhdGVCcm93c2VyVGFiKEJyb3dzZXJXaW5kb3cgKndp
bmRvdywgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzLCBXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIgKnVzZXJDb250ZW50TWFuYWdlcikKK3N0YXRpYyBXZWJLaXRXZWJWaWV3ICpjcmVhdGVC
cm93c2VyVGFiKEJyb3dzZXJXaW5kb3cgKndpbmRvdywgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNl
dHRpbmdzLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKnVzZXJDb250ZW50TWFuYWdlciwgV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzICpkZWZhdWx0V2Vic2l0ZVBvbGljaWVzKQogewogICAgIFdlYktp
dFdlYlZpZXcgKndlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX1dFQl9WSUVXLAogICAgICAgICAid2ViLWNvbnRleHQiLCBicm93c2VyX3dpbmRvd19nZXRf
d2ViX2NvbnRleHQod2luZG93KSwKICAgICAgICAgInNldHRpbmdzIiwgd2Via2l0U2V0dGluZ3Ms
CiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHVzZXJDb250ZW50TWFuYWdlciwKICAg
ICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIGF1dG9tYXRpb25Nb2RlLAorICAg
ICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIGRlZmF1bHRXZWJzaXRlUG9saWNpZXMsCiAgICAgICAg
IE5VTEwpKTsKIAogICAgIGlmIChlZGl0b3JNb2RlKQpAQCAtNTg2LDYgKzU4NywxMCBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFu
YWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKHVzZXJDb250ZW50TWFuYWdlciwg
ImFib3V0RGF0YSIpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QodXNlckNvbnRlbnRNYW5hZ2VyLCAi
c2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OmFib3V0RGF0YSIsIEdfQ0FMTEJBQ0soYWJvdXREYXRh
U2NyaXB0TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spLCB3ZWJDb250ZXh0KTsKIAorICAgIFdlYktp
dFdlYnNpdGVQb2xpY2llcyAqZGVmYXVsdFdlYnNpdGVQb2xpY2llcyA9IHdlYmtpdF93ZWJzaXRl
X3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzKAorICAgICAgICAiYXV0b3BsYXktcG9saWN5Iiwg
V0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQsCisgICAgICAgIE5VTEwpOworCiAg
ICAgaWYgKGNvbnRlbnRGaWx0ZXIpIHsKICAgICAgICAgR0ZpbGUgKmNvbnRlbnRGaWx0ZXJGaWxl
ID0gZ19maWxlX25ld19mb3JfY29tbWFuZGxpbmVfYXJnKGNvbnRlbnRGaWx0ZXIpOwogCkBAIC02
MzAsNyArNjM1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAg
aW50IGk7CiAKICAgICAgICAgZm9yIChpID0gMDsgdXJpQXJndW1lbnRzW2ldOyBpKyspIHsKLSAg
ICAgICAgICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBjcmVhdGVCcm93c2VyVGFiKG1haW5X
aW5kb3csIHdlYmtpdFNldHRpbmdzLCB1c2VyQ29udGVudE1hbmFnZXIpOworICAgICAgICAgICAg
V2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGNyZWF0ZUJyb3dzZXJUYWIobWFpbldpbmRvdywgd2Vi
a2l0U2V0dGluZ3MsIHVzZXJDb250ZW50TWFuYWdlciwgZGVmYXVsdFdlYnNpdGVQb2xpY2llcyk7
CiAgICAgICAgICAgICBpZiAoIWkpCiAgICAgICAgICAgICAgICAgZmlyc3RUYWIgPSBHVEtfV0lE
R0VUKHdlYlZpZXcpOwogICAgICAgICAgICAgZ2NoYXIgKnVybCA9IGFyZ3VtZW50VG9VUkwodXJp
QXJndW1lbnRzW2ldKTsKQEAgLTYzOCw3ICs2NDMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh
ciAqYXJndltdKQogICAgICAgICAgICAgZ19mcmVlKHVybCk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgewotICAgICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0gY3JlYXRlQnJvd3NlclRhYiht
YWluV2luZG93LCB3ZWJraXRTZXR0aW5ncywgdXNlckNvbnRlbnRNYW5hZ2VyKTsKKyAgICAgICAg
V2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGNyZWF0ZUJyb3dzZXJUYWIobWFpbldpbmRvdywgd2Vi
a2l0U2V0dGluZ3MsIHVzZXJDb250ZW50TWFuYWdlciwgZGVmYXVsdFdlYnNpdGVQb2xpY2llcyk7
CiAgICAgICAgIGZpcnN0VGFiID0gR1RLX1dJREdFVCh3ZWJWaWV3KTsKIAogICAgICAgICBpZiAo
IWVkaXRvck1vZGUpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcAppbmRleCA3NjliY2M4
OTE2YmI5YjFjMWFmZTI5ZDZiYzIwOWRkNDMyODAxNmE2Li5lYjE4NGM0NzhmYjY2OGU3ZjQ3ODAz
NmFhNmFjNzlhZTNlY2M0NzMwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCkBAIC0y
MSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJMb2FkVHJhY2tpbmdUZXN0LmgiCiAjaW5jbHVkZSAi
V2ViS2l0VGVzdFNlcnZlci5oIgorI2luY2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llcy5oIgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKQEAgLTMyLDYgKzMzLDcgQEAgcHVibGljOgogCiAgICAgZW51bSBQb2xpY3lEZWNpc2lv
blJlc3BvbnNlIHsKICAgICAgICAgVXNlLAorICAgICAgICBVc2VXaXRoUG9saWN5LAogICAgICAg
ICBJZ25vcmUsCiAgICAgICAgIERvd25sb2FkLAogICAgICAgICBOb25lCkBAIC0zOSwxMiArNDEs
MjEgQEAgcHVibGljOgogCiAgICAgUG9saWN5Q2xpZW50VGVzdCgpCiAgICAgICAgIDogTG9hZFRy
YWNraW5nVGVzdCgpCi0gICAgICAgICwgbV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlKE5vbmUpCi0g
ICAgICAgICwgbV9wb2xpY3lEZWNpc2lvblR5cGVGaWx0ZXIoMCkKLSAgICAgICAgLCBtX3Jlc3Bv
bmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkoZmFsc2UpCi0gICAgICAgICwgbV9oYWx0
TWFpbkxvb3BBZnRlck1ha2luZ0RlY2lzaW9uKGZhbHNlKQogICAgIHsKICAgICAgICAgZ19zaWdu
YWxfY29ubmVjdChtX3dlYlZpZXcsICJkZWNpZGUtcG9saWN5IiwgR19DQUxMQkFDSyhkZWNpZGVQ
b2xpY3lDYWxsYmFjayksIHRoaXMpOworICAgICAgICB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcihtX3VzZXJDb250ZW50TWFuYWdlci5n
ZXQoKSwgInRlc3RIYW5kbGVyIik7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV91c2VyQ29u
dGVudE1hbmFnZXIuZ2V0KCksICJzY3JpcHQtbWVzc2FnZS1yZWNlaXZlZDo6dGVzdEhhbmRsZXIi
LCBHX0NBTExCQUNLKHRlc3RIYW5kbGVyTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spLCB0aGlzKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB0ZXN0SGFuZGxlck1lc3NhZ2VSZWNlaXZlZENhbGxi
YWNrKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0LCBQb2xpY3lDbGllbnRUZXN0KiB0ZXN0
KQorICAgIHsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJWaWV3VGVz
dDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgICAg
IGlmIChnX3N0cl9lcXVhbCh2YWx1ZVN0cmluZy5nZXQoKSwgImF1dG9wbGF5ZWQiKSkKKyAgICAg
ICAgICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKGdfc3Ry
X2VxdWFsKHZhbHVlU3RyaW5nLmdldCgpLCAiZGlkLW5vdC1wbGF5IikpCisgICAgICAgICAgICB0
ZXN0LT5tX2F1dG9wbGF5ZWQgPSBmYWxzZTsKKworICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRl
c3QtPm1fbWFpbkxvb3ApOwogICAgIH0KIAogICAgIHN0YXRpYyBnYm9vbGVhbiBxdWl0TWFpbkxv
b3BMYXRlcihHTWFpbkxvb3AqIGxvb3ApCkBAIC01OSw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBVc2U6CiAgICAgICAgICAgICB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZShkZWNp
c2lvbik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVc2VXaXRoUG9saWN5Ogor
ICAgICAgICAgICAgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcyhkZWNp
c2lvbiwgdGVzdC0+bV93ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgSWdub3JlOgogICAgICAgICAgICAgd2Via2l0X3BvbGljeV9kZWNpc2lv
bl9pZ25vcmUoZGVjaXNpb24pOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05OCwxMyArMTEyLDEz
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKLSAgICBQb2xpY3lE
ZWNpc2lvblJlc3BvbnNlIG1fcG9saWN5RGVjaXNpb25SZXNwb25zZTsKLSAgICBpbnQgbV9wb2xp
Y3lEZWNpc2lvblR5cGVGaWx0ZXI7Ci0gICAgYm9vbCBtX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9u
QXN5bmNocm9ub3VzbHk7Ci0gICAgYm9vbCBtX2hhbHRNYWluTG9vcEFmdGVyTWFraW5nRGVjaXNp
b247CisgICAgYm9vbCBkaWRBdXRvcGxheSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9hdXRv
cGxheWVkICYmICptX2F1dG9wbGF5ZWQ7CisgICAgfQorCisgICAgUG9saWN5RGVjaXNpb25SZXNw
b25zZSBtX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgeyBOb25lIH07CisgICAgaW50IG1fcG9saWN5
RGVjaXNpb25UeXBlRmlsdGVyIHsgMCB9OworICAgIGJvb2wgbV9yZXNwb25kVG9Qb2xpY3lEZWNp
c2lvbkFzeW5jaHJvbm91c2x5IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFsdE1haW5Mb29wQWZ0
ZXJNYWtpbmdEZWNpc2lvbiB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9hdXRvcGxh
eWVkOwogICAgIEdSZWZQdHI8V2ViS2l0UG9saWN5RGVjaXNpb24+IG1fcHJldmlvdXNQb2xpY3lE
ZWNpc2lvbjsKKyAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVQb2xpY2llcz4gbV93ZWJzaXRlUG9s
aWNpZXM7CiB9OwogCitzdGF0aWMgdm9pZCB0ZXN0QXV0b3BsYXlQb2xpY3koUG9saWN5Q2xpZW50
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyNpZiBQTEFURk9STShHVEspCisgICAgLy8g
VGhlIHdlYiB2aWV3IG11c3QgYmUgcmVhbGl6ZWQgZm9yIHRoZSB2aWRlbyB0byBzdGFydCBwbGF5
YmFjay4KKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR1RLX1dJTkRP
V19UT1BMRVZFTCk7CisjZW5kaWYKKworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25UeXBlRmls
dGVyID0gV0VCS0lUX1BPTElDWV9ERUNJU0lPTl9UWVBFX05BVklHQVRJT05fQUNUSU9OOworICAg
IHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBvbGljeUNsaWVudFRlc3Q6OlVzZVdp
dGhQb2xpY3k7CisgICAgdGVzdC0+bV93ZWJzaXRlUG9saWNpZXMgPSB3ZWJraXRfd2Vic2l0ZV9w
b2xpY2llc19uZXdfd2l0aF9wb2xpY2llcygiYXV0b3BsYXktcG9saWN5IiwgV0VCS0lUX0FVVE9Q
TEFZX0RFTlksIG51bGxwdHIpOworCisgICAgY29uc3QgY2hhciogcmVzb3VyY2VOYW1lID0gImF1
dG9wbGF5LWNoZWNrLmh0bWwiOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VQYXRoKGdf
YnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKFRlc3Q6OldlYktpdDJSZXNvdXJj
ZXMpLmRhdGEoKSwgcmVzb3VyY2VOYW1lLCBudWxscHRyKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFy
PiByZXNvdXJjZVVSTChnX2ZpbGVuYW1lX3RvX3VyaShyZXNvdXJjZVBhdGguZ2V0KCksIG51bGxw
dHIsIG51bGxwdHIpKTsKKworICAgIC8vIFRlc3Qgd2l0aCBERU5ZIHBvbGljeQorICAgIHRlc3Qt
PmxvYWRVUkkocmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIC8vIFJ1biB1bnRpbCB0aGUgdXNlciBj
b250ZW50IG1lc3NhZ2VzIGNvbWUgYmFjayBmcm9tIGF1dG9wbGF5LWNoZWNrLmh0bWwKKyAgICBn
X21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVz
dC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBBc3luYyB0ZXN0CisgICAgdGVzdC0+bV9hdXRv
cGxheWVkID0gV1RGOjpudWxsb3B0OworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25z
ZSA9IFBvbGljeUNsaWVudFRlc3Q6OlVzZVdpdGhQb2xpY3k7CisgICAgdGVzdC0+bV9yZXNwb25k
VG9Qb2xpY3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5ID0gdHJ1ZTsKKyAgICB0ZXN0LT5sb2FkVVJJ
KHJlc291cmNlVVJMLmdldCgpKTsKKyAgICAvLyBSdW4gdW50aWwgdGhlIHVzZXIgY29udGVudCBt
ZXNzYWdlcyBjb21lIGJhY2sgZnJvbSBhdXRvcGxheS1jaGVjay5odG1sCisgICAgZ19tYWluX2xv
b3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmRpZEF1
dG9wbGF5KCkpOworCisgICAgLy8gVGVzdCB3aXRoIEFMTE9XIHBvbGljeQorICAgIHdlYmtpdF93
ZWJzaXRlX3BvbGljaWVzX3NldF9hdXRvcGxheV9wb2xpY3kodGVzdC0+bV93ZWJzaXRlUG9saWNp
ZXMuZ2V0KCksIFdFQktJVF9BVVRPUExBWV9BTExPVyk7CisgICAgdGVzdC0+bV9hdXRvcGxheWVk
ID0gV1RGOjpudWxsb3B0OworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBv
bGljeUNsaWVudFRlc3Q6OlVzZVdpdGhQb2xpY3k7CisgICAgdGVzdC0+bV9yZXNwb25kVG9Qb2xp
Y3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5ID0gZmFsc2U7CisKKyAgICB0ZXN0LT5sb2FkVVJJKHJl
c291cmNlVVJMLmdldCgpKTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7
CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIFRlc3Qg
d2l0aCBBTExPV19XSVRIT1VUX1NPVU5EIHBvbGljeQorICAgIHdlYmtpdF93ZWJzaXRlX3BvbGlj
aWVzX3NldF9hdXRvcGxheV9wb2xpY3kodGVzdC0+bV93ZWJzaXRlUG9saWNpZXMuZ2V0KCksIFdF
QktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EKTsKKyAgICB0ZXN0LT5tX2F1dG9wbGF5
ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0g
UG9saWN5Q2xpZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1Bv
bGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKworICAgIHRlc3QtPmxvYWRVUkko
cmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29w
KTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIE5v
dyBjaGVjayBkeW5hbWljYWxseSB1cGRhdGluZyB0aGUgbG9hZGVyIHBvbGljaWVzCisgICAgd2Vi
a2l0X3dlYnNpdGVfcG9saWNpZXNfc2V0X2F1dG9wbGF5X3BvbGljeSh0ZXN0LT5tX3dlYnNpdGVQ
b2xpY2llcy5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZX0RFTlkpOworICAgIHRlc3QtPm1fYXV0b3Bs
YXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2Ug
PSBQb2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1fcmVzcG9uZFRv
UG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IGZhbHNlOworCisgICAgdGVzdC0+bG9hZFVS
SShyZXNvdXJjZVVSTC5nZXQoKSk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxv
b3ApOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworCisgICAgLy8g
Q2hlY2sgdGhhdCBKUyBjYW4gbm90IHNpZGUtc3RlcCB0aGUgYWN0aXZlIHBvbGljeQorICAgIHRl
c3QtPm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoInBsYXlWaWRlbygpOyIsIG51bGxwdHIpOworICAgIC8vIFNw
aW4gdW50aWwgYXV0b3BsYXkgc3RhdHVzIGlzIHJlcG9ydGVkLCB0aGUgcnVuIEpTIEFQSSBjYW4K
KyAgICAvLyBjb21wbGV0ZSBpdHMgbWFpbiBsb29wIGJlZm9yZSB0aGUgcHJvbWlzZXMgaW4gYXV0
b3BsYXktY2hlY2sgZmlyZS4KKyAgICB3aGlsZSAoIXRlc3QtPm1fYXV0b3BsYXllZC5oYXNWYWx1
ZSgpKQorICAgICAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAgZ19h
c3NlcnRfZmFsc2UodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBOb3cgdXBkYXRlIHRo
ZSBwb2xpY3kgdG8gYWxsb3cgYXV0b3BsYXksIGFuZCB1c2UgSlMgdG8gcmVzdW1lIHRoZSB2aWRl
by4KKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgd2Via2l0X3dl
YnNpdGVfcG9saWNpZXNfc2V0X2F1dG9wbGF5X3BvbGljeSh0ZXN0LT5tX3dlYnNpdGVQb2xpY2ll
cy5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfdXBk
YXRlX3dlYnNpdGVfcG9saWNpZXModGVzdC0+bV93ZWJWaWV3LCB0ZXN0LT5tX3dlYnNpdGVQb2xp
Y2llcy5nZXQoKSk7CisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVk
KCJwbGF5VmlkZW8oKTsiLCBudWxscHRyKTsKKyAgICAvLyBTcGluIHVudGlsIGF1dG9wbGF5IHN0
YXR1cyBpcyByZXBvcnRlZCwgdGhlIHJ1biBKUyBBUEkgY2FuCisgICAgLy8gY29tcGxldGUgaXRz
IG1haW4gbG9vcCBiZWZvcmUgdGhlIHByb21pc2VzIGluIGF1dG9wbGF5LWNoZWNrIGZpcmUuCisg
ICAgd2hpbGUgKCF0ZXN0LT5tX2F1dG9wbGF5ZWQuaGFzVmFsdWUoKSkKKyAgICAgICAgZ19tYWlu
X2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+ZGlk
QXV0b3BsYXkoKSk7CisKKyAgICAvLyBTaWxlbnQgYXVkaW8gdHJhY2sgdGVzdHMKKyAgICByZXNv
dXJjZU5hbWUgPSAiYXV0b3BsYXktbm8tYXVkaW8tY2hlY2suaHRtbCI7CisgICAgcmVzb3VyY2VQ
YXRoLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKFRlc3Q6Oldl
YktpdDJSZXNvdXJjZXMpLmRhdGEoKSwgcmVzb3VyY2VOYW1lLCBudWxscHRyKSk7CisgICAgcmVz
b3VyY2VVUkwucmVzZXQoZ19maWxlbmFtZV90b191cmkocmVzb3VyY2VQYXRoLmdldCgpLCBudWxs
cHRyLCBudWxscHRyKSk7CisKKyAgICAvLyBERU5ZIHBvbGljeQorICAgIHdlYmtpdF93ZWJzaXRl
X3BvbGljaWVzX3NldF9hdXRvcGxheV9wb2xpY3kodGVzdC0+bV93ZWJzaXRlUG9saWNpZXMuZ2V0
KCksIFdFQktJVF9BVVRPUExBWV9ERU5ZKTsKKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6
Om51bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xp
ZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lz
aW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKworICAgIHRlc3QtPmxvYWRVUkkocmVzb3VyY2VV
UkwuZ2V0KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBn
X2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIEFMTE9XCisgICAg
d2Via2l0X3dlYnNpdGVfcG9saWNpZXNfc2V0X2F1dG9wbGF5X3BvbGljeSh0ZXN0LT5tX3dlYnNp
dGVQb2xpY2llcy5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XKTsKKyAgICB0ZXN0LT5tX2F1
dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3Bv
bnNlID0gUG9saWN5Q2xpZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0LT5tX3Jlc3Bv
bmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKworICAgIHRlc3QtPmxv
YWRVUkkocmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21h
aW5Mb29wKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworCisgICAg
Ly8gQUxMT1dfV0lUSE9VVF9TT1VORAorICAgIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX3NldF9h
dXRvcGxheV9wb2xpY3kodGVzdC0+bV93ZWJzaXRlUG9saWNpZXMuZ2V0KCksIFdFQktJVF9BVVRP
UExBWV9BTExPV19XSVRIT1VUX1NPVU5EKTsKKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6
Om51bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xp
ZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lz
aW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKworICAgIHRlc3QtPmxvYWRVUkkocmVzb3VyY2VV
UkwuZ2V0KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBn
X2Fzc2VydF90cnVlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0
TmF2aWdhdGlvblBvbGljeShQb2xpY3lDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ewogICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25UeXBlRmlsdGVyID0gV0VCS0lUX1BPTElDWV9E
RUNJU0lPTl9UWVBFX05BVklHQVRJT05fQUNUSU9OOwpAQCAtMjc2LDYgKzQxMyw4IEBAIHZvaWQg
YmVmb3JlQWxsKCkKIAogICAgIFBvbGljeUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0UG9saWN5Q2xp
ZW50IiwgIm5hdmlnYXRpb24tcG9saWN5IiwgdGVzdE5hdmlnYXRpb25Qb2xpY3kpOwogICAgIFBv
bGljeUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0UG9saWN5Q2xpZW50IiwgInJlc3BvbnNlLXBvbGlj
eSIsIHRlc3RSZXNwb25zZVBvbGljeSk7CisgICAgUG9saWN5Q2xpZW50VGVzdDo6YWRkKCJXZWJL
aXRQb2xpY3lDbGllbnQiLCAiYXV0b3BsYXktcG9saWN5IiwgdGVzdEF1dG9wbGF5UG9saWN5KTsK
KyAgICAvLyBNYWtlIHN1cmUgdGhpcyB0ZXN0IGlzIGxhc3QsIGl0J3MgcmFjZXkgb3RoZXJ3aXNl
IQogICAgIFBvbGljeUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0UG9saWN5Q2xpZW50IiwgIm5ldy13
aW5kb3ctcG9saWN5IiwgdGVzdE5ld1dpbmRvd1BvbGljeSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401347</attachid>
            <date>2020-06-08 09:37:00 -0700</date>
            <delta_ts>2020-06-08 09:44:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20200608173658.patch</filename>
            <type>text/plain</type>
            <size>44420</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQ0N2Y3MWQwMGQ5ZWU0
OWQxOTEwOTZlZGNiZmE1N2UzOWRjZWQwMy4uMjFmZjNjMGJhNjVjZjM4NmE0ODE0MTgzYTQxODgy
MDVmYzBmNzQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA2LTA4ICBDaGFy
bGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBEaXNhYmxl
IHZpZGVvIGF1dG9wbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ4NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3VyLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UpOiBNb2Rlcm5pemUgc3R5bGUuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRvcGxheSk6IEFk
ZCBhIG5vdGUgdG8KKyAgICAgICAgcmVmYWN0b3IgYmVoYXZpb3VyIHJlc3RyaWN0aW9uIGxvZ2lj
IGludG8gTWVkaWFFbGVtZW50U2Vzc2lvbgorCiAyMDIwLTA2LTA1ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZCBzdXBwb3J0IGZvciBtZWRpYS1zb3VyY2Ug
c3RhdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggOGM4NjY5MzAwMGMyNmU0Mjc1YjUyMGJkNjRhN2YyNWIyYmIzM2U4
OC4uNTlmNjFlMDQ4MjI2ZTk5MTgwNWYwNjE2YTFmN2IwNmU2Y2VmM2FjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0OSBAQAorMjAyMC0wNi0wOCAgQ2hhcmxpZSBUdXJuZXIgIDxjdHVybmVyQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gRGlzYWJsZSB2aWRlbyBhdXRvcGxheQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0ODQ1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwOgorICAgICAgICAod2Via2l0X3BvbGljeV9kZWNp
c2lvbl91c2Vfd2l0aF9wb2xpY2llcyk6IEFkZCBhbiBBUEkgdG8gcmVzcG9uZAorICAgICAgICB0
byBuYXZpZ2F0aW9uIGRlY2lzaW9ucyB3aXRoIHBvbGljaWVzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRl
eHRDcmVhdGVQYWdlRm9yV2ViVmlldyk6IFBsdW1iIGluIHRoZSBkZWZhdWx0CisgICAgICAgIHdl
YnNpdGUgcG9saWNpZXMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSB3ZWIgdmlldy4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6IEFkZCBhIGNvbnN0
cnVjdCBvbmx5CisgICAgICAgIGRlZmF1bHQgd2Vic2l0ZSBwb2xpY3kgZmllbGQgdG8gdGhlIHZp
ZXcuIFRoaXMgd2lsbCBiZSB1c2VkIHdoZW4KKyAgICAgICAgY3JlYXRpbmcgd2ViIHZpZXdzIGlu
IHRoZSB3ZWIgY29udGV4dC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2ViVmll
d0dldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdEaXNwb3NlKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19y
dW5famF2YXNjcmlwdCk6IEZhY3RvciBvdXQKKyAgICAgICAgUnVuSmF2c1NjcmlwdFBhcmFtZXRl
cnMgaW50byBhIGxvY2FsIHZhcmlhYmxlLCBzaW5jZSBpdCB3YXMKKyAgICAgICAgZ2V0dGluZyB0
b28gaGFyZCB0byByZWFkLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0
X3dpdGhvdXRfZm9yY2VkX3VzZXJfZ2VzdHVyZXMpOiBBZGQKKyAgICAgICAgYSBuZXcgQVBJIHRv
IHJ1biBKUyB3aXRob3V0IHVzZXIgZ2VzdHVyZXMgZm9yY2VkIG9uLiBBIG5ldyBBUEkgaXMKKyAg
ICAgICAgYWRkZWQgc2luY2Ugb2xkIHRlc3RzIGFuZCBwb3RlbnRpYWxseSB1c2VyIGNvZGUgcmVs
aWVzIG9uIHRoZQorICAgICAgICB3ZWlyZCBiZWhhdmlvdXIgaW4gd2Via2l0X3dlYl92aWV3X3J1
bl9qYXZhc2NyaXB0LiBJdCBkaWRuJ3Qgc2VlbQorICAgICAgICBuZWNlc3NhcnkgdG8gZXhwb3Nl
IHRoZSBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB0byB0aGUgQVBJLCBzaW5jZQorICAgICAgICBJ
IGRpZG4ndCBmZWVsIGFueSBvZiB0aGUgb3RoZXIgcGFyYW1ldGVycyB3ZXJlIG9mIGludGVyZXN0
LgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV93ZWJzaXRlX3BvbGljaWVzKTogQWRk
IGFuIEFQSSB0byB1cGRhdGUKKyAgICAgICAgdGhlIHZpZXcncyBhY3RpdmUgcG9saWNpZXMgZHlu
YW1pY2FsbHkuIFlvdSBtdXN0IGJlIGNhcmVmdWwgdG8KKyAgICAgICAgY2FsbCB0aGlzIGFmdGVy
IGNvbW1pdHRhbCBhbmQgYmVmb3JlIGxvYWQsIG90aGVyd2lzZSBpdCB3b24ndAorICAgICAgICBz
dGljay4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KTogQ29weSBvdmVyIHRoZSBkZWZhdWx0CisgICAgICAg
IHdlYnNpdGUgcG9saWNpZXMgYXMgd2VsbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0OgorCiAyMDIwLTA2LTA1ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIy
NjIxODQpOiBbR1RLXSBUd28gZmFzdC9mb3JtcyB0ZXN0cyBhcmUgY3Jhc2hpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGJiNzUzN2RiNGNmZDJhMTJhMWYz
ODA5OTc3ZDQ1YWI4ZmZjYTg5ZGIuLjE4ZDVhMWM2ZTI1Yjk2ZDZkZGI2OWVhODYzYjZlYTVhZjIy
ZDU2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzcx
NSw3ICs3NzE1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYWdlTXV0ZWRTdGF0ZURpZENo
YW5nZSgpCiB7CiAgICAgdXBkYXRlVm9sdW1lKCk7CiAKLSAgICBpZiAoUGFnZSogcGFnZSA9IGRv
Y3VtZW50KCkucGFnZSgpKSB7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2Uo
KSkgewogICAgICAgICBpZiAoaGFzQXVkaW8oKSAmJiAhbXV0ZWQoKSAmJiBwYWdlLT5pc0F1ZGlv
TXV0ZWQoKSkKICAgICAgICAgICAgIHVzZXJEaWRJbnRlcmZlcmVXaXRoQXV0b3BsYXkoKTsKICAg
ICB9CkBAIC03ODg3LDYgKzc4ODcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNo
b3VsZEF1dG9wbGF5KCkKICAgICBpZiAoIWF1dG9wbGF5KCkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIC8vIEZJWE1FOiBBbGwgdGhpcyBpcyBtZWRpYSBzZXNzaW9uIHNwZWNpZmljLCBwdXQgaXQg
aW4gdGhhdCBjbGFzcyBpbnN0ZWFkLgogICAgIGlmICghbV9tZWRpYVNlc3Npb24tPmhhc0JlaGF2
aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6SW52aXNpYmxlQXV0b3BsYXlOb3RQ
ZXJtaXR0ZWQpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4
IGI5NDUyMmM4ZmNhMGFmODg2ZmVmZDJjZTRjOTgyZTQwNzcxNWQ1NmIuLmZkOTQzZmY1YTVmZWEw
Njk1YzQ0ZGJmOThkZGZhZDA0MGYzZWMyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
MTQwLDYgKzE0MCw3IEBAIHNldChXZWJLaXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YS5oCiAgICAgJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaAog
ICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2luZG93UHJvcGVydGll
cy5oCisgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlUG9s
aWNpZXMuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCiAp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IDJkNWFhYzk1M2FiZWYyM2VhNWQwMjMzYWQwYTViZTlh
YTU5ODViOGUuLjFjZjI3N2M5NTU5MmIxNzM4MTllOTQyYTc5OWU3NmE4ZDEwMWQ4ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzR1RLLnR4dApAQCAtMTkyLDYgKzE5Miw3IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJzaXRlRGF0YS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXaW5kb3dQcm9wZXJ0aWVzLmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlUG9saWNpZXMuY3BwIEBuby11bmlmeQogCiBVSVByb2Nlc3MvQVBJL2d0ay9EcmFn
U291cmNlR3RrMy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3Rr
NC5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRQb2xpY3lEZWNpc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRQb2xpY3lEZWNpc2lvbi5jcHAKaW5kZXggYTM1NzQ3OTNjNjllZDA3Njgz
YTYwM2U2MjlmNDA5MTFmNzViY2EzYS4uZGI0ZDM1MDhkNDE0OWU1ZDQ0ZmM5ZTEyYmVmZWQ1ZWIy
OWU3NGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0UG9saWN5RGVjaXNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcApAQCAtMjAsOCArMjAsMTEgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRQb2xpY3lEZWNpc2lvbi5oIgogCisjaW5jbHVk
ZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9saWN5RGVjaXNpb25Qcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZVBv
bGljaWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKICNpbmNs
dWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogCkBAIC04NCw2ICs4NywzMyBAQCB2b2lkIHdlYmtp
dF9wb2xpY3lfZGVjaXNpb25fdXNlKFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKICAg
ICBsaXN0ZW5lci0+dXNlKCk7CiB9CiAKKy8qKgorICogd2Via2l0X3BvbGljeV9kZWNpc2lvbl91
c2Vfd2l0aF9wb2xpY2llczoKKyAqIEBkZWNpc2lvbjogYSAjV2ViS2l0UG9saWN5RGVjaXNpb24K
KyAqIEBwb2xpY2llczogYSAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKgorICogQWNjZXB0IHRo
ZSBhY3Rpb24gd2hpY2ggdHJpZ2dlcmVkIHRoaXMgZGVjaXNpb24sIGFuZCBjb250aW51ZSB3aXRo
CisgKiBAcG9saWNpZXMgYWZmZWN0aW5nIGFsbCBzdWJzZXF1ZW50IGxvYWRzIG9mIHJlc291cmNl
cyBpbiB0aGUKKyAqIGN1cnJlbnQgb3JpZ2luLgorICoKKyAqIEZvciBleGFtcGxlLCBhIG5hdmln
YXRpb24gZGVjaXNpb24gdG8gYSB2aWRlbyBzaGFyaW5nIHdlYnNpdGUgbWF5CisgKiBiZSBhY2Nl
cHRlZCB1bmRlciB0aGUgcHJpdmlzbyBubyBtb3ZpZXMgYXJlIGFsbG93ZWQgdG8gYXV0b3BsYXku
IFRoZQorICogYXV0b3BsYXkgcG9saWN5IGluIHRoaXMgY2FzZSB3b3VsZCBiZSBzZXQgaW4gdGhl
IEBwb2xpY2llcy4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit2b2lkIHdlYmtpdF9wb2xpY3lf
ZGVjaXNpb25fdXNlX3dpdGhfcG9saWNpZXMoV2ViS2l0UG9saWN5RGVjaXNpb24qIGRlY2lzaW9u
LCBXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbikpOworCisgICAgaWYgKCFkZWNp
c2lvbi0+cHJpdi0+bGlzdGVuZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbGlzdGVu
ZXIgPSBzdGQ6OmV4Y2hhbmdlKGRlY2lzaW9uLT5wcml2LT5saXN0ZW5lciwgbnVsbHB0cik7CisK
KyAgICBsaXN0ZW5lci0+dXNlKHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFdlYnNpdGVQb2xpY2ll
cyhwb2xpY2llcykpOworfQorCiAvKioKICAqIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3Jl
OgogICogQGRlY2lzaW9uOiBhICNXZWJLaXRQb2xpY3lEZWNpc2lvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAw
NDFiZmI1NDVjNmFmNjIyMGE4MjY2ZDM1NmFjMTlkOTA3OTFjYjgzLi5jNGM3ZDBmNmMxMjYxYjUx
ZDAyMDcxYTY1MmFhMDkzZDFhYTNiOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNTMsNiArNTMsNyBAQAog
I2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlld1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRl
LmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKQEAgLTE4OTcsNyArMTg5
OCw3IEBAIFdlYlByb2Nlc3NQb29sJiB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2woV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCkKICAgICByZXR1cm4gKmNvbnRleHQtPnByaXYtPnByb2Nl
c3NQb29sOwogfQogCi12b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXIqIHVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0V2ViVmlldyogcmVs
YXRlZFZpZXcpCit2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIqIHVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0V2ViVmlldyogcmVsYXRl
ZFZpZXcsIFdlYktpdFdlYnNpdGVQb2xpY2llcyogZGVmYXVsdFdlYnNpdGVQb2xpY2llcykKIHsK
ICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKGNvbnRleHQtPnBy
aXYtPnByb2Nlc3NQb29sLmdldCgpKTsKQEAgLTE5MTAsNiArMTkxMSw3IEBAIHZvaWQgd2Via2l0
V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQs
IFdlYktpdFdlYlZpCiAgICAgaWYgKCFtYW5hZ2VyKQogICAgICAgICBtYW5hZ2VyID0gY29udGV4
dC0+cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpOwogICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5zZXRXZWJzaXRlRGF0YVN0b3JlKCZ3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3Rv
cmUobWFuYWdlcikpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXREZWZhdWx0V2Vic2l0ZVBv
bGljaWVzKHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFdlYnNpdGVQb2xpY2llcyhkZWZhdWx0V2Vi
c2l0ZVBvbGljaWVzKSk7CiAgICAgd2Via2l0V2ViVmlld0NyZWF0ZVBhZ2Uod2ViVmlldywgV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgYXV0byYgcGFnZSA9IHdlYmtpdFdlYlZp
ZXdHZXRQYWdlKHdlYlZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKaW5kZXggZDg1NjljODU5YmFi
ZmUxMTY5YzY4MmViNjg2MzY2ZTNkMDY5YjlhZC4uNzhkMTU3OGY5NDc5M2U5ZTU5YTNkNGQyYjMz
ZTc5ZWE4NTMwZmEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFu
YWdlci5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKQEAgLTM2LDcgKzM3LDcgQEAgV2ViS2l0RG93
bmxvYWQqIHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKFdlYktpdDo6RG93bmxv
YWRQcm94eSopOwogV2ViS2l0RG93bmxvYWQqIHdlYmtpdFdlYkNvbnRleHRTdGFydERvd25sb2Fk
KFdlYktpdFdlYkNvbnRleHQqLCBjb25zdCBjaGFyKiB1cmksIFdlYktpdDo6V2ViUGFnZVByb3h5
Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRSZW1vdmVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2Fk
UHJveHkqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dERvd25sb2FkU3RhcnRlZChXZWJLaXRXZWJD
b250ZXh0KiwgV2ViS2l0RG93bmxvYWQqKTsKLXZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBh
Z2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3KiwgV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyKiwgV2ViS2l0V2ViVmlldyopOwordm9pZCB3ZWJraXRXZWJDb250ZXh0
Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2Vic2l0ZVBv
bGljaWVzKik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRXZWJWaWV3RGVzdHJveWVkKFdlYktpdFdl
YkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3Kik7CiBXZWJLaXRXZWJWaWV3KiB3ZWJraXRXZWJDb250
ZXh0R2V0V2ViVmlld0ZvclBhZ2UoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZVBy
b3h5Kik7CiBHVmFyaWFudCogd2Via2l0V2ViQ29udGV4dEluaXRpYWxpemVXZWJFeHRlbnNpb25z
KFdlYktpdFdlYkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZTQwNDVjMzY3MDY1NzVjYzdkYjlmOTg3MTFl
ZmQ2OTAwNGEyYTNmMC4uMjAxNmM4MDY3NWJlMmE2ZGIzM2FlODM1NTM0ODNmMDRmYzM1OWQ3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGVQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdl
YnNpdGVQb2xpY2llc1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXaW5kb3dQcm9wZXJ0aWVz
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0FQSUNhc3QuaD4KQEAgLTIwMCw3ICsyMDEsOCBAQCBlbnVtIHsKICAgICBQUk9Q
X0FVVE9NQVRJT05fUFJFU0VOVEFUSU9OX1RZUEUsCiAgICAgUFJPUF9FRElUQUJMRSwKICAgICBQ
Uk9QX1BBR0VfSUQsCi0gICAgUFJPUF9JU19NVVRFRAorICAgIFBST1BfSVNfTVVURUQsCisgICAg
UFJPUF9XRUJTSVRFX1BPTElDSUVTCiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEdS
ZWZQdHI8V2ViS2l0V2ViUmVzb3VyY2U+ID4gTG9hZGluZ1Jlc291cmNlc01hcDsKQEAgLTMwMiw2
ICszMDQsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICBHUmVmUHRyPFdl
YktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdD4gYXV0aGVudGljYXRpb25SZXF1ZXN0OwogCiAgICAg
R1JlZlB0cjxXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI+IHdlYnNpdGVEYXRhTWFuYWdlcjsKKyAg
ICBHUmVmUHRyPFdlYktpdFdlYnNpdGVQb2xpY2llcz4gd2Vic2l0ZVBvbGljaWVzOwogfTsKIAog
c3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtNzU1LDcgKzc1
OCwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2Jq
ZWN0KQogICAgICAgICB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJBZGRQcm9jZXNzUG9vbChwcml2
LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCksIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9v
bChwcml2LT5jb250ZXh0LmdldCgpKSk7CiAgICAgfQogCi0gICAgd2Via2l0V2ViQ29udGV4dENy
ZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQuZ2V0KCksIHdlYlZpZXcsIHByaXYtPnVz
ZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcpOworICAgIGlmICghcHJp
di0+d2Vic2l0ZVBvbGljaWVzKQorICAgICAgICBwcml2LT53ZWJzaXRlUG9saWNpZXMgPSBhZG9w
dEdSZWYod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3KCkpOworCisgICAgd2Via2l0V2ViQ29u
dGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQuZ2V0KCksIHdlYlZpZXcsIHBy
aXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcsIHByaXYtPndl
YnNpdGVQb2xpY2llcy5nZXQoKSk7CiAKICAgICBwcml2LT5sb2FkT2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7CiAgICAgZ2V0UGFnZSh3ZWJWaWV3
KS5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKnByaXYtPmxvYWRPYnNlcnZlcik7CkBAIC04
MzgsNiArODQ0LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUKICAgICBjYXNlIFBST1BfSVNf
TVVURUQ6CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfaXNfbXV0ZWQod2ViVmlldywgZ192
YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
V0VCU0lURV9QT0xJQ0lFUzoKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVz
ID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZVBvbGljaWVzKj4oZ192YWx1ZV9nZXRfb2JqZWN0
KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNU
X1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKICAg
ICB9CkBAIC05MDMsNiArOTEyLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0dldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHUKICAgICBjYXNl
IFBST1BfSVNfTVVURUQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF93ZWJfdmlld19nZXRfaXNfbXV0ZWQod2ViVmlldykpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfV0VCU0lURV9QT0xJQ0lFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZh
bHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldykpOworICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURf
UFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtMTI5MCw2
ICsxMzAyLDIzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktp
dFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgRkFMU0UsCiAgICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRX
ZWJWaWV3OndlYnNpdGUtcG9saWNpZXM6CisgICAgICoKKyAgICAgKiBUaGUgI1dlYktpdFdlYnNp
dGVQb2xpY2llcyBmb3IgdGhlIHZpZXcuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zMAorICAg
ICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmpl
Y3RDbGFzcywKKyAgICAgICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTLAorICAgICAgICBnX3BhcmFt
X3NwZWNfb2JqZWN0KAorICAgICAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLAorICAgICAgICAg
ICAgXygiRGVmYXVsdCBXZWJzaXRlIFBvbGljaWVzIiksCisgICAgICAgICAgICBfKCJUaGUgZGVm
YXVsdCBwb2xpY3kgb2JqZWN0IGZvciBzaXRlcyBsb2FkZWQgaW4gdGhpcyB2aWV3IiksCisgICAg
ICAgICAgICBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLAorICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNU
UlVDVF9PTkxZKSkpOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6bG9hZC1jaGFu
Z2VkOgogICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBz
aWduYWwgaXMgZW1pdHRlZApAQCAtMzczMyw2ICszNzYyLDE4IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHdrU2VyCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF91bnJlZikpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
UnVuSmF2YVNjcmlwdFdpdGhQYXJhbXMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2No
YXIqIHNjcmlwdCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbXMsIEdDYW5jZWxsYWJs
ZSogY2FuY2VsbGFibGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVz
ZXJEYXRhKQoreworICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25l
dyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7CisKKyAgICBnZXRQ
YWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXVEZNb3ZlKHBhcmFtcyksIFt0
YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0
aW9uRGV0YWlsczsKKyAgICAgICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICBleGNlcHRpb25E
ZXRhaWxzID0gKmRldGFpbHM7CisgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2Fs
bGJhY2soc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgp
KTsKKyAgICB9KTsKK30KKwogLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQ6
CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKQEAgLTM3NTIsMTMgKzM3OTMsMzcgQEAg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgY29uc3QgZ2NoYXIqIHNjcmlwdCwKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCi0gICAg
R1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNl
bGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZSh7IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgVVJMIHsgfSwg
ZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4
Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewot
ICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7Ci0gICAgICAgIGlmIChk
ZXRhaWxzKQotICAgICAgICAgICAgZXhjZXB0aW9uRGV0YWlscyA9ICpkZXRhaWxzOwotICAgICAg
ICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNrKHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7Ci0gICAgfSk7CisgICAgLy8gRm9yIGhp
c3RvcmljYWwgcmVhc29ucywgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIHRoaXMgQVBJIGlzIHRv
CisgICAgLy8gaW50ZXJwcmV0IEphdmFTY3JpcHQgYXNzdW1pbmcgdXNlciBnZXN0dXJlcyBhcmUg
YWN0aXZlLgorICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtcyA9IHsgU3RyaW5nOjpm
cm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH07Cisg
ICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRXaXRoUGFyYW1zKHdlYlZpZXcsIHNjcmlwdCwg
V1RGTW92ZShwYXJhbXMpLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfd2l0aG91dF9mb3JjZWRfdXNl
cl9nZXN0dXJlczoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHNjcmlwdDog
dGhlIHNjcmlwdCB0byBydW4KKyAqIEBjYW5jZWxsYWJsZTogKGFsbG93LW5vbmUpOiBhICNHQ2Fu
Y2VsbGFibGUgb3IgJU5VTEwgdG8gaWdub3JlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6
IGEgI0dBc3luY1JlYWR5Q2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBzY3JpcHQgZmluaXNoZWQK
KyAqIEB1c2VyX2RhdGE6IChjbG9zdXJlKTogdGhlIGRhdGEgdG8gcGFzcyB0byBjYWxsYmFjayBm
dW5jdGlvbgorICoKKyAqIEFzeW5jaHJvbm91c2x5IHJ1biBAc2NyaXB0IGluIHRoZSBjb250ZXh0
IG9mIHRoZSBjdXJyZW50IHBhZ2UgaW4gQHdlYl92aWV3LiBJZgorICogV2ViS2l0U2V0dGluZ3M6
ZW5hYmxlLWphdmFzY3JpcHQgaXMgRkFMU0UsIHRoaXMgbWV0aG9kIHdpbGwgZG8gbm90aGluZy4K
KyAqCisgKiBXaGlsZSBydW5uaW5nIHRoZSBzY3JpcHQsIHVzZXIgZ2VzdHVyZXMgd2lsbCBiZSBh
c3N1bWVkCisgKiBpbmFjdGl2ZS4gVGhpcyBtZWFucyBiZWhhdmlvdXJzIGFzc29jaWF0ZWQgd2l0
aCB1c2VyIGdlc3R1cmVzLCBzdWNoCisgKiBhcyBhdXRvcGxheSwgYXJlIG5vdCBvdmVycmlkZW4g
d2hpbGUgaW50ZXJwcmV0aW5nIHRoZSBAc2NyaXB0LgorICoKKyAqIFdoZW4gdGhlIG9wZXJhdGlv
biBpcyBmaW5pc2hlZCwgQGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLiBZb3UgY2FuIHRoZW4gY2Fs
bAorICogd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2ZpbmlzaCgpIHRvIGdldCB0aGUg
cmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uCisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9q
YXZhc2NyaXB0X3dpdGhvdXRfZm9yY2VkX3VzZXJfZ2VzdHVyZXMoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgZ2NoYXIqIHNjcmlwdCwgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0Fz
eW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoc2NyaXB0KTsKKworICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtcyA9
IHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0
LCBmYWxzZSB9OworICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0V2l0aFBhcmFtcyh3ZWJW
aWV3LCBzY3JpcHQsIFdURk1vdmUocGFyYW1zKSwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2Vy
RGF0YSk7CiB9CiAKIC8qKgpAQCAtNDYxNywzICs0NjgyLDQxIEBAIFdlYktpdElucHV0TWV0aG9k
Q29udGV4dCogd2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9tZXRob2RfY29udGV4dChXZWJLaXRX
ZWJWaWV3CiAjZW5kaWYKIAogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld191cGRhdGVfd2Vi
c2l0ZV9wb2xpY2llczoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHBvbGlj
aWVzOiBUaGUgI1dlYktpdFdlYnNpdGVQb2xpY2llcyB0byBhcHBseSB0byB0aGUgcGFnZS4KKyAq
CisgKiBVcGRhdGVzIHRoZSB3ZWJzaXRlIHBvbGljaWVzIGFzc29jaWF0ZWQgd2l0aCBAd2ViX3Zp
ZXcuCisgKgorICogTm90ZSwgaXQgb25seSBtYWtlcyBzZW5zZSB0byBjYWxsIHRoaXMgQVBJIGFm
dGVyICVXRUJLSVRfTE9BRF9DT01NSVRURUQKKyAqIGFuZCBiZWZvcmUgJVdFQktJVF9MT0FEX0ZJ
TklTSEVELgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3Vw
ZGF0ZV93ZWJzaXRlX3BvbGljaWVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYnNp
dGVQb2xpY2llcyogcG9saWNpZXMpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQlNJ
VEVfUE9MSUNJRVMocG9saWNpZXMpKTsKKworICAgIGF1dG8gcG9saWNpZXNEYXRhID0gd2Via2l0
V2Vic2l0ZVBvbGljaWVzR2V0UG9saWNpZXNEYXRhKHBvbGljaWVzKTsKKyAgICBnZXRQYWdlKHdl
YlZpZXcpLnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXVEZNb3ZlKHBvbGljaWVzRGF0YSkpOworfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llczoKKyAqIEB3ZWJf
dmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldHMgdGhlIHdlYnNpdGUgcG9saWNpZXMg
YXNzb2NpYXRlZCB3aXRoIEB3ZWJfdmlldy4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9u
ZSk6IHRoZSAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmlldwor
ICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK1dlYktpdFdlYnNpdGVQb2xpY2llcyogd2Via2l0X3dl
Yl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBudWxs
cHRyKTsKKworICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT53ZWJzaXRlUG9saWNpZXMuZ2V0KCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBv
bGljeURlY2lzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBv
bGljeURlY2lzaW9uLmgKaW5kZXggZjE5MmExZDM3OWRjNjQyMWRmNzYwNDc0ZDIwNjQ5ZTQ1ZmYw
YzhjYi4uMGZmODllNDljNzYzZDM2ZjVlNGFlM2JkMWMxMTdkNjMxYzEzMmU4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNp
b24uaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdl
YnNpdGVQb2xpY2llcy5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKQEAgLTYyLDYgKzYzLDEwIEBAIHdl
YmtpdF9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5cGUgKHZvaWQpOwogV0VCS0lUX0FQSSB2b2lkCiB3
ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZSAgICAgIChXZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVj
aXNpb24pOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dp
dGhfcG9saWNpZXMgIChXZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICpw
b2xpY2llcyk7CisKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3BvbGljeV9kZWNpc2lvbl9pZ25v
cmUgICAoV2ViS2l0UG9saWN5RGVjaXNpb24gKmRlY2lzaW9uKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCAxMzEzNjBjM2RkMGVi
ZmNhMTFjNmU3MTQ4NmU2MTE2ZDdkZjEwYmNmLi43ODk1YzkzZjMxZjMwZmE4Mzg2YjY5YTU2NTg1
MjA5NDM3NzcwM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViSW5zcGVjdG9yLmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJSZXNvdXJjZS5oPgorI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0V2Vic2l0ZVBvbGljaWVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3
QmFzZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZS5oPgog
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2luZG93UHJvcGVydGllcy5oPgpAQCAtNDUyLDYgKzQ1
MywxMyBAQCB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdB
c3luY1JlYWR5Q2FsbGJhY2sgICAgICAgIGNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICAg
ICAgdXNlcl9kYXRhKTsKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3J1bl9qYXZh
c2NyaXB0X3dpdGhvdXRfZm9yY2VkX3VzZXJfZ2VzdHVyZXMgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAqc2NyaXB0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Fz
eW5jUmVhZHlDYWxsYmFjayAgICAgICAgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAg
ICAgICAgICAgIHVzZXJfZGF0YSk7CisKIFdFQktJVF9BUEkgV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCAqCiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZmluaXNoICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAg
ICAgICAgKnJlc3VsdCwKQEAgLTU4NCw2ICs1OTIsMTUgQEAgd2Via2l0X3dlYl92aWV3X3NldF9p
bnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldwogV0VCS0lUX0FQ
SSBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgKgogd2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9t
ZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOwogCisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3VwZGF0ZV93ZWJz
aXRlX3BvbGljaWVzICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2Vi
X3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMgICAgICpwb2xpY2llcyk7CisKK1dFQktJVF9BUEkg
V2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKK3dlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xp
Y2llcyAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3
KTsKKworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCmluZGV4IDljZjBlNmU1ZTUzNGVh
NTUwMWNmMzRhOGEzNWJhY2I3ZjAwZDE0NzUuLmJlYTU1MGFiNmYyZTNjMTM5NWU2YTVkNzZkNjU0
MGYxZGU2MDAyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3R3RrLmNwcApAQCAtMzAyLDggKzMwMiw4IEBAIEd0a1dpZGdldCogd2Vi
a2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkK
ICAqIFlvdSBjYW4gYWxzbyB1c2UgdGhpcyBtZXRob2QgdG8gaW1wbGVtZW50IG90aGVyIHByb2Nl
c3MgbW9kZWxzIGJhc2VkIG9uICVXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRB
UllfUFJPQ0VTU0VTLAogICogbGlrZSBmb3IgZXhhbXBsZSwgc2hhcmluZyB0aGUgc2FtZSB3ZWIg
cHJvY2VzcyBmb3IgYWxsIHRoZSB2aWV3cyBpbiB0aGUgc2FtZSBzZWN1cml0eSBkb21haW4uCiAg
KgotICogVGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYlZpZXcgd2lsbCBhbHNvIGhhdmUgdGhl
IHNhbWUgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlcgotICogYW5kICNXZWJLaXRTZXR0aW5ncyBh
cyBAd2ViX3ZpZXcuCisgKiBUaGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWxsIGFs
c28gaGF2ZSB0aGUgc2FtZSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLAorICogI1dlYktpdFNl
dHRpbmdzLCBhbmQgI1dlYktpdFdlYnNpdGVQb2xpY2llcyBhcyBAd2ViX3ZpZXcuCiAgKgogICog
UmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBUaGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmll
dyB3aWRnZXQKICAqCkBAIC0zMTcsNiArMzE3LDcgQEAgR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAg
ICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50
X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19n
ZXRfc2V0dGluZ3Mod2ViVmlldyksCiAgICAgICAgICJyZWxhdGVkLXZpZXciLCB3ZWJWaWV3LAor
ICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9w
b2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgbnVsbHB0cikpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlv
bnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
NC4wLXNlY3Rpb25zLnR4dAppbmRleCA0ODJiMDZjZWNmYTE3YmJkMzk5Y2I4OGQ4NGQxMWFkM2Q5
NDVhZWEwLi5hMmZiODliOTdmZjM3ZTE4NDZjZDJhZTBjZmM5OWNkY2M5ODQ2ZDg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAt
c2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTE5OCw2ICsxOTgsNyBAQCBXZWJLaXRJbnNl
Y3VyZUNvbnRlbnRFdmVudAogV2ViS2l0U25hcHNob3RPcHRpb25zCiBXZWJLaXRTbmFwc2hvdFJl
Z2lvbgogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uCitXZWJLaXRBdXRvcGxheVBv
bGljeQogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1hbmRzPgogV0VCS0lUX0VESVRJTkdfQ09N
TUFORF9DVVQKQEAgLTI2Miw2ICsyNjMsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ZpbmRfY29u
dHJvbGxlcgogd2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3IKIHdlYmtpdF93ZWJfdmlld19n
ZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dAogd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2Ny
aXB0Cit3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfd2l0aG91dF9mb3JjZWRfdXNlcl9n
ZXN0dXJlcwogd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2ZpbmlzaAogd2Via2l0X3dl
Yl92aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dvcmxkCiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFz
Y3JpcHRfaW5fd29ybGRfZmluaXNoCkBAIC0yODgsNiArMjkwLDggQEAgd2Via2l0X3dlYl92aWV3
X3NlbmRfbWVzc2FnZV90b19wYWdlCiB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3Bh
Z2VfZmluaXNoCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lucHV0X21ldGhvZF9jb250ZXh0CiB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0Cit3ZWJraXRfd2ViX3ZpZXdfdXBk
YXRlX3dlYnNpdGVfcG9saWNpZXMKK3dlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2ll
cwogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdApAQCAtODQ3LDYgKzg1MSw3IEBAIFdlYktpdFBvbGljeURlY2lzaW9uCiB3ZWJraXRf
cG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2lnbm9yZQog
d2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UKK3dlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dp
dGhfcG9saWNpZXMKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRQb2xpY3lEZWNpc2lv
bkNsYXNzCkBAIC0xODQ2LDMgKzE4NTEsMjcgQEAgV0VCS0lUX1VTRVJfTUVTU0FHRV9HRVRfQ0xB
U1MKIFdlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZQogd2Via2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlw
ZQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPldlYktpdFdlYnNpdGVQb2xpY2llczwv
RklMRT4KK1dlYktpdFdlYnNpdGVQb2xpY2llcword2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3
Cit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcword2Via2l0X3dlYnNp
dGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeQord2Via2l0X3dlYnNpdGVfcG9saWNpZXNf
c2V0X2F1dG9wbGF5X3BvbGljeQorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdFdlYnNp
dGVQb2xpY2llc0NsYXNzCitXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFUworV0VCS0lUX0lTX1dF
QlNJVEVfUE9MSUNJRVNfQ0xBU1MKK1dFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMKK1dFQktJ
VF9XRUJTSVRFX1BPTElDSUVTCitXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19DTEFTUworV0VCS0lU
X1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJL
aXRXZWJzaXRlUG9saWNpZXNQcml2YXRlCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfdHlw
ZQorPC9TRUNUSU9OPgorCisKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAyMGQyYjQzNDAwNGFlM2M0MmViM2U5ZjM4ZWQ4MGU1N2VkMDFiZGQ0Li5j
MWI0NTVlZmNmZTMxOWY2YTBhZTBhZmQxM2Y5YWNiM2FiYjkzN2YwIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAt
MDYtMDggIENoYXJsaWUgVHVybmVyICA8Y3R1cm5lckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdIERpc2FibGUgdmlkZW8gYXV0b3BsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NDg0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgdmFyaW91cyBjYWxsc2l0ZXMgZm9yIGNvbnN0
cnVjdGluZyBhIHZpZXcgdG8gdGFrZSBpbnRvCisgICAgICAgIGFjY291bnQgdGhlIGRlZmF1bHQg
cG9saWNpZXMuIEkgY2hvc2UgdGhlIGRlZmF1bHQgYXMgYXV0b3BsYXkKKyAgICAgICAgYWxsb3cg
d2l0aG91dCBzb3VuZCwgd2hpY2ggaXMgaW4ga2VlcGluZyB3aXRoIFdlYkNvcmUncyBjaG9pY2Uu
CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgorICAgICAgICAo
d2ViVmlld0RlY2lkZVBvbGljeSk6CisgICAgICAgIChuZXdUYWJDYWxsYmFjayk6CisgICAgICAg
IChvcGVuUHJpdmF0ZVdpbmRvdyk6CisgICAgICAgIChicm93c2VyX3dpbmRvd19nZXRfb3JfY3Jl
YXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKToKKyAgICAgICAgKGJyb3dzZXJfd2luZG93X2Ny
ZWF0ZV93ZWJfdmlld19pbl9uZXdfdGFiX2Zvcl9hdXRvbWF0aW9uKToKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAoY3JlYXRlQnJvd3NlclRhYik6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdl
YktpdFBvbGljeUNsaWVudC5jcHA6IEFkZAorICAgICAgICBhdXRvcGxheSBwb2xpY3kgdGVzdHMs
IGFuZCB1c2UgbW9kZXJuIGNsYXNzIGluaXRpYWxpemVycy4KKyAgICAgICAgKHRlc3RBdXRvcGxh
eVBvbGljeSk6CisgICAgICAgIChiZWZvcmVBbGwpOgorCiAyMDIwLTA2LTA1ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBNaW5pQnJv
d3NlcjogdXNlIEdBY3Rpb24gQVBJIGZvciBhY3Rpb25zIGFuZCBzaG9ydGN1dHMgaW4gcHJlcGFy
YXRpb24gZm9yIEdUSzQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
V2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IDU4
ZDFjMDQxMmJkMmE5N2NhYmYwNjFkZjE4Yjk2MWJkZGU1Nzc0MGUuLjEzNzI4ZjQ4NjI3NGM5ZmZl
OTgxYmZjZGE0NzM5OGM0MjY2M2E4ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuYwpAQCAtNDE1LDYgKzQxNSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RGVjaWRlUG9s
aWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBvbGljeURlY2lzaW9uCiAgICAgICAg
ICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyksCiAgICAg
ICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250
ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRp
b24iLCB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcp
LAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0
ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJyb3dzZXJfd2luZG93
X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0X3dlYl92aWV3X2xv
YWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3JlcXVl
c3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNTc5LDYgKzU4MCw3IEBAIHN0YXRpYyB2b2lkIG5l
d1RhYkNhbGxiYWNrKEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBhcmFtZXRlciwg
Z3BvaW50ZXIKICAgICAgICAgInNldHRpbmdzIiwgd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5n
cyh3ZWJWaWV3KSwKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgd2Via2l0X3dlYl92
aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSwKICAgICAgICAgImlzLWNvbnRy
b2xsZWQtYnktYXV0b21hdGlvbiIsIHdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1
dG9tYXRpb24od2ViVmlldyksCisgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgd2Via2l0X3dl
Yl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAogICAgICAgICBOVUxMKSkpOwog
ICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyh3aW5kb3ctPnVyaUVudHJ5KTsKICAgICBndGtfbm90
ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShHVEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9vayksIC0x
KTsKQEAgLTU5OSw2ICs2MDEsNyBAQCBzdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdpbmRvdyhHU2lt
cGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludAogICAgICAgICAi
dXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9t
YW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtZXBoZW1lcmFsIiwgVFJVRSwKICAgICAgICAg
ImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdlYmtpdF93ZWJfdmlld19pc19jb250cm9s
bGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCisgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwg
d2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAogICAgICAgICBO
VUxMKSk7CiAgICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoR1RL
X1dJTkRPVyh3aW5kb3cpLCB3aW5kb3ctPndlYkNvbnRleHQpOwogICAgIGd0a193aW5kb3dfc2V0
X2FwcGxpY2F0aW9uKEdUS19XSU5ET1cobmV3V2luZG93KSwgZ3RrX3dpbmRvd19nZXRfYXBwbGlj
YXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpKSk7CkBAIC0xMjU2LDYgKzEyNTksNyBAQCBXZWJLaXRX
ZWJWaWV3ICpicm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0
aW9uKEJyb3dzZXJXaW5kbwogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAi
aXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgVFJVRSwKKyAgICAgICAgIndlYnNpdGUtcG9s
aWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldyksCiAg
ICAgICAgIE5VTEwpKTsKICAgICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93
X25ldyhHVEtfV0lORE9XKHdpbmRvdyksIHdpbmRvdy0+d2ViQ29udGV4dCk7CiAgICAgZ3RrX3dp
bmRvd19zZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyhuZXdXaW5kb3cpLCBndGtfd2luZG93X2dl
dF9hcHBsaWNhdGlvbihHVEtfV0lORE9XKHdpbmRvdykpKTsKQEAgLTEyNzcsNiArMTI4MSw3IEBA
IFdlYktpdFdlYlZpZXcgKmJyb3dzZXJfd2luZG93X2NyZWF0ZV93ZWJfdmlld19pbl9uZXdfdGFi
X2Zvcl9hdXRvbWF0aW9uKEJyb3dzZXJXCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIs
IHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAg
ICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBUUlVFLAogICAgICAgICAiYXV0b21h
dGlvbi1wcmVzZW50YXRpb24tdHlwZSIsIFdFQktJVF9BVVRPTUFUSU9OX0JST1dTSU5HX0NPTlRF
WFRfUFJFU0VOVEFUSU9OX1RBQiwKKyAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldyksCiAgICAgICAgIE5VTEwpKTsK
ICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRfdmlldyh3aW5kb3csIG5ld1dlYlZpZXcpOwogICAg
IHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaShuZXdXZWJWaWV3LCAiYWJvdXQ6YmxhbmsiKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvbWFpbi5jCmluZGV4IDBiMjM2NjIwZDljNzBiNGI5NGUyODBjYTUwODExM2M4NTdkNzU4
MzIuLmQ3M2FjMGRkYWI2NzA3NWFhYTY3MmI3Y2E4MDdjZTJjMTQyNDQxNmIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L21haW4uYwpAQCAtNzYsMTMgKzc2LDE0IEBAIHN0YXRpYyBnY2hhciAqYXJndW1lbnRUb1VSTChj
b25zdCBjaGFyICpmaWxlbmFtZSkKICAgICByZXR1cm4gZmlsZVVSTDsKIH0KIAotc3RhdGljIFdl
YktpdFdlYlZpZXcgKmNyZWF0ZUJyb3dzZXJUYWIoQnJvd3NlcldpbmRvdyAqd2luZG93LCBXZWJL
aXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqdXNl
ckNvbnRlbnRNYW5hZ2VyKQorc3RhdGljIFdlYktpdFdlYlZpZXcgKmNyZWF0ZUJyb3dzZXJUYWIo
QnJvd3NlcldpbmRvdyAqd2luZG93LCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MsIFdl
YktpdFVzZXJDb250ZW50TWFuYWdlciAqdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJzaXRl
UG9saWNpZXMgKmRlZmF1bHRXZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgV2ViS2l0V2ViVmlldyAq
d2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJ
RVcsCiAgICAgICAgICJ3ZWItY29udGV4dCIsIGJyb3dzZXJfd2luZG93X2dldF93ZWJfY29udGV4
dCh3aW5kb3cpLAogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRTZXR0aW5ncywKICAgICAgICAg
InVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLAogICAgICAgICAiaXMt
Y29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgYXV0b21hdGlvbk1vZGUsCisgICAgICAgICJ3ZWJz
aXRlLXBvbGljaWVzIiwgZGVmYXVsdFdlYnNpdGVQb2xpY2llcywKICAgICAgICAgTlVMTCkpOwog
CiAgICAgaWYgKGVkaXRvck1vZGUpCkBAIC01NjgsNiArNTY5LDEwIEBAIHN0YXRpYyB2b2lkIGFj
dGl2YXRlKEdBcHBsaWNhdGlvbiAqYXBwbGljYXRpb24sIFdlYktpdFNldHRpbmdzICp3ZWJraXRT
ZXR0aW5ncykKICAgICB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0
X21lc3NhZ2VfaGFuZGxlcih1c2VyQ29udGVudE1hbmFnZXIsICJhYm91dERhdGEiKTsKICAgICBn
X3NpZ25hbF9jb25uZWN0KHVzZXJDb250ZW50TWFuYWdlciwgInNjcmlwdC1tZXNzYWdlLXJlY2Vp
dmVkOjphYm91dERhdGEiLCBHX0NBTExCQUNLKGFib3V0RGF0YVNjcmlwdE1lc3NhZ2VSZWNlaXZl
ZENhbGxiYWNrKSwgd2ViQ29udGV4dCk7CiAKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKmRl
ZmF1bHRXZWJzaXRlUG9saWNpZXMgPSB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9w
b2xpY2llcygKKyAgICAgICAgImF1dG9wbGF5LXBvbGljeSIsIFdFQktJVF9BVVRPUExBWV9BTExP
V19XSVRIT1VUX1NPVU5ELAorICAgICAgICBOVUxMKTsKKwogICAgIGlmIChjb250ZW50RmlsdGVy
KSB7CiAgICAgICAgIEdGaWxlICpjb250ZW50RmlsdGVyRmlsZSA9IGdfZmlsZV9uZXdfZm9yX2Nv
bW1hbmRsaW5lX2FyZyhjb250ZW50RmlsdGVyKTsKIApAQCAtNjEzLDcgKzYxOCw3IEBAIHN0YXRp
YyB2b2lkIGFjdGl2YXRlKEdBcHBsaWNhdGlvbiAqYXBwbGljYXRpb24sIFdlYktpdFNldHRpbmdz
ICp3ZWJraXRTZXR0aW5ncykKICAgICAgICAgaW50IGk7CiAKICAgICAgICAgZm9yIChpID0gMDsg
dXJpQXJndW1lbnRzW2ldOyBpKyspIHsKLSAgICAgICAgICAgIFdlYktpdFdlYlZpZXcgKndlYlZp
ZXcgPSBjcmVhdGVCcm93c2VyVGFiKG1haW5XaW5kb3csIHdlYmtpdFNldHRpbmdzLCB1c2VyQ29u
dGVudE1hbmFnZXIpOworICAgICAgICAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGNyZWF0
ZUJyb3dzZXJUYWIobWFpbldpbmRvdywgd2Via2l0U2V0dGluZ3MsIHVzZXJDb250ZW50TWFuYWdl
ciwgZGVmYXVsdFdlYnNpdGVQb2xpY2llcyk7CiAgICAgICAgICAgICBpZiAoIWkpCiAgICAgICAg
ICAgICAgICAgZmlyc3RUYWIgPSBHVEtfV0lER0VUKHdlYlZpZXcpOwogICAgICAgICAgICAgZ2No
YXIgKnVybCA9IGFyZ3VtZW50VG9VUkwodXJpQXJndW1lbnRzW2ldKTsKQEAgLTYyMSw3ICs2MjYs
NyBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZShHQXBwbGljYXRpb24gKmFwcGxpY2F0aW9uLCBXZWJL
aXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MpCiAgICAgICAgICAgICBnX2ZyZWUodXJsKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBj
cmVhdGVCcm93c2VyVGFiKG1haW5XaW5kb3csIHdlYmtpdFNldHRpbmdzLCB1c2VyQ29udGVudE1h
bmFnZXIpOworICAgICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0gY3JlYXRlQnJvd3NlclRh
YihtYWluV2luZG93LCB3ZWJraXRTZXR0aW5ncywgdXNlckNvbnRlbnRNYW5hZ2VyLCBkZWZhdWx0
V2Vic2l0ZVBvbGljaWVzKTsKICAgICAgICAgZmlyc3RUYWIgPSBHVEtfV0lER0VUKHdlYlZpZXcp
OwogCiAgICAgICAgIGlmICghZWRpdG9yTW9kZSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQu
Y3BwCmluZGV4IDc2OWJjYzg5MTZiYjliMWMxYWZlMjlkNmJjMjA5ZGQ0MzI4MDE2YTYuLjA2OTU1
OTQ4ZjBjODUxODhmMjkzYjdlMjQ5N2EwY2M1YjI1ZWI1ZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGlj
eUNsaWVudC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2luY2x1ZGUgIkxvYWRUcmFja2luZ1Rl
c3QuaCIKICNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vi
c2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtMzIsMTkgKzMzLDIxIEBAIHB1YmxpYzoKIAogICAg
IGVudW0gUG9saWN5RGVjaXNpb25SZXNwb25zZSB7CiAgICAgICAgIFVzZSwKKyAgICAgICAgVXNl
V2l0aFBvbGljeSwKICAgICAgICAgSWdub3JlLAogICAgICAgICBEb3dubG9hZCwKICAgICAgICAg
Tm9uZQogICAgIH07CiAKLSAgICBQb2xpY3lDbGllbnRUZXN0KCkKLSAgICAgICAgOiBMb2FkVHJh
Y2tpbmdUZXN0KCkKLSAgICAgICAgLCBtX3BvbGljeURlY2lzaW9uUmVzcG9uc2UoTm9uZSkKLSAg
ICAgICAgLCBtX3BvbGljeURlY2lzaW9uVHlwZUZpbHRlcigwKQotICAgICAgICAsIG1fcmVzcG9u
ZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseShmYWxzZSkKLSAgICAgICAgLCBtX2hhbHRN
YWluTG9vcEFmdGVyTWFraW5nRGVjaXNpb24oZmFsc2UpCisgICAgc3RhdGljIHZvaWQgdGVzdEhh
bmRsZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayhXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIHVz
ZXJDb250ZW50TWFuYWdlciwgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3Vs
dCwgUG9saWN5Q2xpZW50VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV93ZWJWaWV3LCAiZGVjaWRlLXBvbGljeSIsIEdfQ0FMTEJBQ0soZGVjaWRlUG9saWN5Q2Fs
bGJhY2spLCB0aGlzKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7Cisg
ICAgICAgIGlmIChnX3N0cl9lcXVhbCh2YWx1ZVN0cmluZy5nZXQoKSwgImF1dG9wbGF5ZWQiKSkK
KyAgICAgICAgICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYg
KGdfc3RyX2VxdWFsKHZhbHVlU3RyaW5nLmdldCgpLCAiZGlkLW5vdC1wbGF5IikpCisgICAgICAg
ICAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBmYWxzZTsKKworICAgICAgICBnX21haW5fbG9vcF9x
dWl0KHRlc3QtPm1fbWFpbkxvb3ApOwogICAgIH0KIAogICAgIHN0YXRpYyBnYm9vbGVhbiBxdWl0
TWFpbkxvb3BMYXRlcihHTWFpbkxvb3AqIGxvb3ApCkBAIC01OSw2ICs2Miw5IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBVc2U6CiAgICAgICAgICAgICB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3Vz
ZShkZWNpc2lvbik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVc2VXaXRoUG9s
aWN5OgorICAgICAgICAgICAgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2ll
cyhkZWNpc2lvbiwgdGVzdC0+bV93ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgSWdub3JlOgogICAgICAgICAgICAgd2Via2l0X3BvbGljeV9k
ZWNpc2lvbl9pZ25vcmUoZGVjaXNpb24pOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05OCwxMSAr
MTA0LDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KIAotICAgIFBv
bGljeURlY2lzaW9uUmVzcG9uc2UgbV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlOwotICAgIGludCBt
X3BvbGljeURlY2lzaW9uVHlwZUZpbHRlcjsKLSAgICBib29sIG1fcmVzcG9uZFRvUG9saWN5RGVj
aXNpb25Bc3luY2hyb25vdXNseTsKLSAgICBib29sIG1faGFsdE1haW5Mb29wQWZ0ZXJNYWtpbmdE
ZWNpc2lvbjsKKyAgICBQb2xpY3lDbGllbnRUZXN0KCkKKyAgICAgICAgOiBMb2FkVHJhY2tpbmdU
ZXN0KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiZGVjaWRl
LXBvbGljeSIsIEdfQ0FMTEJBQ0soZGVjaWRlUG9saWN5Q2FsbGJhY2spLCB0aGlzKTsKKyAgICAg
ICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hh
bmRsZXIobV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksICJ0ZXN0SGFuZGxlciIpOworICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0KG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCAic2NyaXB0LW1l
c3NhZ2UtcmVjZWl2ZWQ6OnRlc3RIYW5kbGVyIiwgR19DQUxMQkFDSyh0ZXN0SGFuZGxlck1lc3Nh
Z2VSZWNlaXZlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgfQorCisgICAgYm9vbCBkaWRBdXRvcGxh
eSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9hdXRvcGxheWVkICYmICptX2F1dG9wbGF5ZWQ7
CisgICAgfQorCisgICAgUG9saWN5RGVjaXNpb25SZXNwb25zZSBtX3BvbGljeURlY2lzaW9uUmVz
cG9uc2UgeyBOb25lIH07CisgICAgaW50IG1fcG9saWN5RGVjaXNpb25UeXBlRmlsdGVyIHsgMCB9
OworICAgIGJvb2wgbV9yZXNwb25kVG9Qb2xpY3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5IHsgZmFs
c2UgfTsKKyAgICBib29sIG1faGFsdE1haW5Mb29wQWZ0ZXJNYWtpbmdEZWNpc2lvbiB7IGZhbHNl
IH07CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9hdXRvcGxheWVkOwogICAgIEdSZWZQdHI8V2ViS2l0
UG9saWN5RGVjaXNpb24+IG1fcHJldmlvdXNQb2xpY3lEZWNpc2lvbjsKKyAgICBHUmVmUHRyPFdl
YktpdFdlYnNpdGVQb2xpY2llcz4gbV93ZWJzaXRlUG9saWNpZXM7CiB9OwogCiBzdGF0aWMgdm9p
ZCB0ZXN0TmF2aWdhdGlvblBvbGljeShQb2xpY3lDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQpAQCAtMjY5LDYgKzI5MCwxMjIgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291
cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAgICAg
ICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5E
KTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdEF1dG9wbGF5UG9saWN5KFBvbGljeUNsaWVudFRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIC8vIFRoZSB3
ZWIgdmlldyBtdXN0IGJlIHJlYWxpemVkIGZvciB0aGUgdmlkZW8gdG8gc3RhcnQgcGxheWJhY2su
CisgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEdUS19XSU5ET1dfVE9Q
TEVWRUwpOworI2VuZGlmCisKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uVHlwZUZpbHRlciA9
IFdFQktJVF9QT0xJQ1lfREVDSVNJT05fVFlQRV9OQVZJR0FUSU9OX0FDVElPTjsKKyAgICB0ZXN0
LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9s
aWN5OworICAgIHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzID0gd2Via2l0X3dlYnNpdGVfcG9saWNp
ZXNfbmV3X3dpdGhfcG9saWNpZXMoImF1dG9wbGF5LXBvbGljeSIsIFdFQktJVF9BVVRPUExBWV9E
RU5ZLCBudWxscHRyKTsKKworICAgIGNvbnN0IGNoYXIqIHJlc291cmNlTmFtZSA9ICJhdXRvcGxh
eS1jaGVjay5odG1sIjsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlUGF0aChnX2J1aWxk
X2ZpbGVuYW1lKFRlc3Q6OmdldFJlc291cmNlc0RpcihUZXN0OjpXZWJLaXQyUmVzb3VyY2VzKS5k
YXRhKCksIHJlc291cmNlTmFtZSwgbnVsbHB0cikpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVz
b3VyY2VVUkwoZ19maWxlbmFtZV90b191cmkocmVzb3VyY2VQYXRoLmdldCgpLCBudWxscHRyLCBu
dWxscHRyKSk7CisKKyAgICAvLyBUZXN0IHdpdGggREVOWSBwb2xpY3kKKyAgICB0ZXN0LT5sb2Fk
VVJJKHJlc291cmNlVVJMLmdldCgpKTsKKyAgICAvLyBSdW4gdW50aWwgdGhlIHVzZXIgY29udGVu
dCBtZXNzYWdlcyBjb21lIGJhY2sgZnJvbSBhdXRvcGxheS1jaGVjay5odG1sCisgICAgZ19tYWlu
X2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmRp
ZEF1dG9wbGF5KCkpOworCisgICAgLy8gQXN5bmMgdGVzdAorICAgIHRlc3QtPm1fYXV0b3BsYXll
ZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQ
b2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9s
aWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IHRydWU7CisgICAgdGVzdC0+bG9hZFVSSShyZXNv
dXJjZVVSTC5nZXQoKSk7CisgICAgLy8gUnVuIHVudGlsIHRoZSB1c2VyIGNvbnRlbnQgbWVzc2Fn
ZXMgY29tZSBiYWNrIGZyb20gYXV0b3BsYXktY2hlY2suaHRtbAorICAgIGdfbWFpbl9sb29wX3J1
bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxh
eSgpKTsKKworICAgIC8vIFRlc3Qgd2l0aCBBTExPVyBwb2xpY3kKKyAgICB3ZWJraXRfd2Vic2l0
ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlfcG9saWN5KHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdl
dCgpLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1cpOworICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IFdU
Rjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lD
bGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9saWN5RGVj
aXNpb25Bc3luY2hyb25vdXNseSA9IGZhbHNlOworCisgICAgdGVzdC0+bG9hZFVSSShyZXNvdXJj
ZVVSTC5nZXQoKSk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAg
IGdfYXNzZXJ0X3RydWUodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBUZXN0IHdpdGgg
QUxMT1dfV0lUSE9VVF9TT1VORCBwb2xpY3kKKyAgICB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19z
ZXRfYXV0b3BsYXlfcG9saWN5KHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpLCBXRUJLSVRf
QVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCk7CisgICAgdGVzdC0+bV9hdXRvcGxheWVkID0g
V1RGOjpudWxsb3B0OworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBvbGlj
eUNsaWVudFRlc3Q6OlVzZVdpdGhQb2xpY3k7CisgICAgdGVzdC0+bV9yZXNwb25kVG9Qb2xpY3lE
ZWNpc2lvbkFzeW5jaHJvbm91c2x5ID0gZmFsc2U7CisKKyAgICB0ZXN0LT5sb2FkVVJJKHJlc291
cmNlVVJMLmdldCgpKTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7Cisg
ICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBOb3cgY2hl
Y2sgZHluYW1pY2FsbHkgdXBkYXRpbmcgdGhlIGxvYWRlciBwb2xpY2llcworICAgIHdlYmtpdF93
ZWJzaXRlX3BvbGljaWVzX3NldF9hdXRvcGxheV9wb2xpY3kodGVzdC0+bV93ZWJzaXRlUG9saWNp
ZXMuZ2V0KCksIFdFQktJVF9BVVRPUExBWV9ERU5ZKTsKKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQg
PSBXVEY6Om51bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9s
aWN5Q2xpZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGlj
eURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKworICAgIHRlc3QtPmxvYWRVUkkocmVz
b3VyY2VVUkwuZ2V0KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIENoZWNr
IHRoYXQgSlMgY2FuIG5vdCBzaWRlLXN0ZXAgdGhlIGFjdGl2ZSBwb2xpY3kKKyAgICB0ZXN0LT5t
X2F1dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdFdpdGhv
dXRGb3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0VW50aWxGaW5pc2hlZCgicGxheVZpZGVvKCk7Iiwg
bnVsbHB0cik7CisgICAgLy8gU3BpbiB1bnRpbCBhdXRvcGxheSBzdGF0dXMgaXMgcmVwb3J0ZWQs
IHRoZSBydW4gSlMgQVBJIGNhbgorICAgIC8vIGNvbXBsZXRlIGl0cyBtYWluIGxvb3AgYmVmb3Jl
IHRoZSBwcm9taXNlcyBpbiBhdXRvcGxheS1jaGVjayBmaXJlLgorICAgIHdoaWxlICghdGVzdC0+
bV9hdXRvcGxheWVkLmhhc1ZhbHVlKCkpCisgICAgICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5t
X21haW5Mb29wKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKwor
ICAgIC8vIE5vdyB1cGRhdGUgdGhlIHBvbGljeSB0byBhbGxvdyBhdXRvcGxheSwgYW5kIHVzZSBK
UyB0byByZXN1bWUgdGhlIHZpZGVvLgorICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IFdURjo6bnVs
bG9wdDsKKyAgICB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlfcG9saWN5KHRl
c3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1cpOworICAg
IHdlYmtpdF93ZWJfdmlld191cGRhdGVfd2Vic2l0ZV9wb2xpY2llcyh0ZXN0LT5tX3dlYlZpZXcs
IHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKKyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoInBsYXlWaWRlbygpOyIsIG51bGxwdHIpOworICAgIC8vIFNw
aW4gdW50aWwgYXV0b3BsYXkgc3RhdHVzIGlzIHJlcG9ydGVkLCB0aGUgcnVuIEpTIEFQSSBjYW4K
KyAgICAvLyBjb21wbGV0ZSBpdHMgbWFpbiBsb29wIGJlZm9yZSB0aGUgcHJvbWlzZXMgaW4gYXV0
b3BsYXktY2hlY2sgZmlyZS4KKyAgICB3aGlsZSAoIXRlc3QtPm1fYXV0b3BsYXllZC5oYXNWYWx1
ZSgpKQorICAgICAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIFNpbGVudCBhdWRpbyB0
cmFjayB0ZXN0cworICAgIHJlc291cmNlTmFtZSA9ICJhdXRvcGxheS1uby1hdWRpby1jaGVjay5o
dG1sIjsKKyAgICByZXNvdXJjZVBhdGgucmVzZXQoZ19idWlsZF9maWxlbmFtZShUZXN0OjpnZXRS
ZXNvdXJjZXNEaXIoVGVzdDo6V2ViS2l0MlJlc291cmNlcykuZGF0YSgpLCByZXNvdXJjZU5hbWUs
IG51bGxwdHIpKTsKKyAgICByZXNvdXJjZVVSTC5yZXNldChnX2ZpbGVuYW1lX3RvX3VyaShyZXNv
dXJjZVBhdGguZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKworICAgIC8vIERFTlkgcG9saWN5
CisgICAgd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfc2V0X2F1dG9wbGF5X3BvbGljeSh0ZXN0LT5t
X3dlYnNpdGVQb2xpY2llcy5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZX0RFTlkpOworICAgIHRlc3Qt
Pm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9u
UmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1f
cmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IGZhbHNlOworCisgICAgdGVz
dC0+bG9hZFVSSShyZXNvdXJjZVVSTC5nZXQoKSk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3Qt
Pm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOwor
CisgICAgLy8gQUxMT1cKKyAgICB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlf
cG9saWN5KHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpLCBXRUJLSVRfQVVUT1BMQVlfQUxM
T1cpOworICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5t
X3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5
OworICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IGZh
bHNlOworCisgICAgdGVzdC0+bG9hZFVSSShyZXNvdXJjZVVSTC5nZXQoKSk7CisgICAgZ19tYWlu
X2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+ZGlk
QXV0b3BsYXkoKSk7CisKKyAgICAvLyBBTExPV19XSVRIT1VUX1NPVU5ECisgICAgd2Via2l0X3dl
YnNpdGVfcG9saWNpZXNfc2V0X2F1dG9wbGF5X3BvbGljeSh0ZXN0LT5tX3dlYnNpdGVQb2xpY2ll
cy5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQpOworICAgIHRlc3Qt
Pm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9u
UmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1f
cmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IGZhbHNlOworCisgICAgdGVz
dC0+bG9hZFVSSShyZXNvdXJjZVVSTC5nZXQoKSk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3Qt
Pm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+ZGlkQXV0b3BsYXkoKSk7Cit9
CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2
ZXIoKTsKQEAgLTI3Niw2ICs0MTMsOSBAQCB2b2lkIGJlZm9yZUFsbCgpCiAKICAgICBQb2xpY3lD
bGllbnRUZXN0OjphZGQoIldlYktpdFBvbGljeUNsaWVudCIsICJuYXZpZ2F0aW9uLXBvbGljeSIs
IHRlc3ROYXZpZ2F0aW9uUG9saWN5KTsKICAgICBQb2xpY3lDbGllbnRUZXN0OjphZGQoIldlYktp
dFBvbGljeUNsaWVudCIsICJyZXNwb25zZS1wb2xpY3kiLCB0ZXN0UmVzcG9uc2VQb2xpY3kpOwor
ICAgIFBvbGljeUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0UG9saWN5Q2xpZW50IiwgImF1dG9wbGF5
LXBvbGljeSIsIHRlc3RBdXRvcGxheVBvbGljeSk7CisgICAgLy8gV0FSTklORzogVGhpcyB0ZXN0
IG11c3QgY29tZSBsYXN0LCBpdCB1c2VzIHJhY2V5IGNvbnN0cnVjdHMgdGhhdAorICAgIC8vIGlu
dGVyZmVyZSBub25kZXRlcm1pbmlzaWNhbGx5IHdpdGggYW55IHRlc3QgcnVubmluZyBhZnRlciBp
dC4KICAgICBQb2xpY3lDbGllbnRUZXN0OjphZGQoIldlYktpdFBvbGljeUNsaWVudCIsICJuZXct
d2luZG93LXBvbGljeSIsIHRlc3ROZXdXaW5kb3dQb2xpY3kpOwogfQogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKaW5kZXggOGUz
ZjM0OGQ4YWI1MTRkNDc4M2VjYjFhYWVhM2JiZDIzMDI3YTliZS4uN2FmMDVmMmVmYjJmNmFhYTQ2
ZDJhNDBlOWVmNmFlYTViYThlNTUxZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMjkzLDYgKzI5MywxOCBAQCBXZWJL
aXRKYXZhc2NyaXB0UmVzdWx0KiBXZWJWaWV3VGVzdDo6cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRp
bEZpbmlzaGVkKGNvbnN0IGNoYQogICAgIHJldHVybiBtX2phdmFzY3JpcHRSZXN1bHQ7CiB9CiAK
K1dlYktpdEphdmFzY3JpcHRSZXN1bHQqIFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0V2l0aG91
dEZvcmNlZFVzZXJHZXN0dXJlc0FuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFz
Y3JpcHQsIEdFcnJvcioqIGVycm9yKQoreworICAgIGlmIChtX2phdmFzY3JpcHRSZXN1bHQpCisg
ICAgICAgIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZihtX2phdmFzY3JpcHRSZXN1bHQp
OworICAgIG1famF2YXNjcmlwdFJlc3VsdCA9IDA7CisgICAgbV9qYXZhc2NyaXB0RXJyb3IgPSBl
cnJvcjsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfd2l0aG91dF9mb3JjZWRf
dXNlcl9nZXN0dXJlcyhtX3dlYlZpZXcsIGphdmFzY3JpcHQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0FzeW5jUmVhZHlDYWxsYmFjaz4ocnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2spLCB0aGlzKTsK
KyAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisKKyAgICByZXR1cm4gbV9qYXZhc2Ny
aXB0UmVzdWx0OworfQorCiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBXZWJWaWV3VGVzdDo6cnVu
SmF2YVNjcmlwdEZyb21HUmVzb3VyY2VBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBy
ZXNvdXJjZSwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAgaWYgKG1famF2YXNjcmlwdFJlc3VsdCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdU
ZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5o
CmluZGV4IGMzZmRkOTgyNTg5MTFiNWVjYmYzMTBjOWFlY2U0YmM4NTNhY2Y1MGIuLmRkOWQyMDQw
Y2Q0MWM3MjE3YzgwMjhhZjBjY2IyYmE5MzM5Nzg5M2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApAQCAtNzYsNiArNzYsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3Jp
cHRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKik7
CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdFdpdGhvdXRGb3JjZWRV
c2VyR2VzdHVyZXNBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBH
RXJyb3IqKik7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdEZyb21H
UmVzb3VyY2VBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiByZXNvdXJjZSwgR0Vycm9y
KiopOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRJbldvcmxkQW5k
V2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgY29uc3QgY2hhciogd29y
bGQsIEdFcnJvcioqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401348</attachid>
            <date>2020-06-08 09:44:18 -0700</date>
            <delta_ts>2020-06-12 06:30:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20200608174417.patch</filename>
            <type>text/plain</type>
            <size>58295</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQ0N2Y3MWQwMGQ5ZWU0
OWQxOTEwOTZlZGNiZmE1N2UzOWRjZWQwMy4uMjFmZjNjMGJhNjVjZjM4NmE0ODE0MTgzYTQxODgy
MDVmYzBmNzQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA2LTA4ICBDaGFy
bGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBEaXNhYmxl
IHZpZGVvIGF1dG9wbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ4NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3VyLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UpOiBNb2Rlcm5pemUgc3R5bGUuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRvcGxheSk6IEFk
ZCBhIG5vdGUgdG8KKyAgICAgICAgcmVmYWN0b3IgYmVoYXZpb3VyIHJlc3RyaWN0aW9uIGxvZ2lj
IGludG8gTWVkaWFFbGVtZW50U2Vzc2lvbgorCiAyMDIwLTA2LTA1ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZCBzdXBwb3J0IGZvciBtZWRpYS1zb3VyY2Ug
c3RhdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggOGM4NjY5MzAwMGMyNmU0Mjc1YjUyMGJkNjRhN2YyNWIyYmIzM2U4
OC4uNTlmNjFlMDQ4MjI2ZTk5MTgwNWYwNjE2YTFmN2IwNmU2Y2VmM2FjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0OSBAQAorMjAyMC0wNi0wOCAgQ2hhcmxpZSBUdXJuZXIgIDxjdHVybmVyQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gRGlzYWJsZSB2aWRlbyBhdXRvcGxheQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0ODQ1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwOgorICAgICAgICAod2Via2l0X3BvbGljeV9kZWNp
c2lvbl91c2Vfd2l0aF9wb2xpY2llcyk6IEFkZCBhbiBBUEkgdG8gcmVzcG9uZAorICAgICAgICB0
byBuYXZpZ2F0aW9uIGRlY2lzaW9ucyB3aXRoIHBvbGljaWVzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRl
eHRDcmVhdGVQYWdlRm9yV2ViVmlldyk6IFBsdW1iIGluIHRoZSBkZWZhdWx0CisgICAgICAgIHdl
YnNpdGUgcG9saWNpZXMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSB3ZWIgdmlldy4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6IEFkZCBhIGNvbnN0
cnVjdCBvbmx5CisgICAgICAgIGRlZmF1bHQgd2Vic2l0ZSBwb2xpY3kgZmllbGQgdG8gdGhlIHZp
ZXcuIFRoaXMgd2lsbCBiZSB1c2VkIHdoZW4KKyAgICAgICAgY3JlYXRpbmcgd2ViIHZpZXdzIGlu
IHRoZSB3ZWIgY29udGV4dC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2ViVmll
d0dldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdEaXNwb3NlKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19y
dW5famF2YXNjcmlwdCk6IEZhY3RvciBvdXQKKyAgICAgICAgUnVuSmF2c1NjcmlwdFBhcmFtZXRl
cnMgaW50byBhIGxvY2FsIHZhcmlhYmxlLCBzaW5jZSBpdCB3YXMKKyAgICAgICAgZ2V0dGluZyB0
b28gaGFyZCB0byByZWFkLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0
X3dpdGhvdXRfZm9yY2VkX3VzZXJfZ2VzdHVyZXMpOiBBZGQKKyAgICAgICAgYSBuZXcgQVBJIHRv
IHJ1biBKUyB3aXRob3V0IHVzZXIgZ2VzdHVyZXMgZm9yY2VkIG9uLiBBIG5ldyBBUEkgaXMKKyAg
ICAgICAgYWRkZWQgc2luY2Ugb2xkIHRlc3RzIGFuZCBwb3RlbnRpYWxseSB1c2VyIGNvZGUgcmVs
aWVzIG9uIHRoZQorICAgICAgICB3ZWlyZCBiZWhhdmlvdXIgaW4gd2Via2l0X3dlYl92aWV3X3J1
bl9qYXZhc2NyaXB0LiBJdCBkaWRuJ3Qgc2VlbQorICAgICAgICBuZWNlc3NhcnkgdG8gZXhwb3Nl
IHRoZSBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB0byB0aGUgQVBJLCBzaW5jZQorICAgICAgICBJ
IGRpZG4ndCBmZWVsIGFueSBvZiB0aGUgb3RoZXIgcGFyYW1ldGVycyB3ZXJlIG9mIGludGVyZXN0
LgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV93ZWJzaXRlX3BvbGljaWVzKTogQWRk
IGFuIEFQSSB0byB1cGRhdGUKKyAgICAgICAgdGhlIHZpZXcncyBhY3RpdmUgcG9saWNpZXMgZHlu
YW1pY2FsbHkuIFlvdSBtdXN0IGJlIGNhcmVmdWwgdG8KKyAgICAgICAgY2FsbCB0aGlzIGFmdGVy
IGNvbW1pdHRhbCBhbmQgYmVmb3JlIGxvYWQsIG90aGVyd2lzZSBpdCB3b24ndAorICAgICAgICBz
dGljay4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KTogQ29weSBvdmVyIHRoZSBkZWZhdWx0CisgICAgICAg
IHdlYnNpdGUgcG9saWNpZXMgYXMgd2VsbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0OgorCiAyMDIwLTA2LTA1ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIy
NjIxODQpOiBbR1RLXSBUd28gZmFzdC9mb3JtcyB0ZXN0cyBhcmUgY3Jhc2hpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGJiNzUzN2RiNGNmZDJhMTJhMWYz
ODA5OTc3ZDQ1YWI4ZmZjYTg5ZGIuLjE4ZDVhMWM2ZTI1Yjk2ZDZkZGI2OWVhODYzYjZlYTVhZjIy
ZDU2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzcx
NSw3ICs3NzE1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYWdlTXV0ZWRTdGF0ZURpZENo
YW5nZSgpCiB7CiAgICAgdXBkYXRlVm9sdW1lKCk7CiAKLSAgICBpZiAoUGFnZSogcGFnZSA9IGRv
Y3VtZW50KCkucGFnZSgpKSB7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2Uo
KSkgewogICAgICAgICBpZiAoaGFzQXVkaW8oKSAmJiAhbXV0ZWQoKSAmJiBwYWdlLT5pc0F1ZGlv
TXV0ZWQoKSkKICAgICAgICAgICAgIHVzZXJEaWRJbnRlcmZlcmVXaXRoQXV0b3BsYXkoKTsKICAg
ICB9CkBAIC03ODg3LDYgKzc4ODcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNo
b3VsZEF1dG9wbGF5KCkKICAgICBpZiAoIWF1dG9wbGF5KCkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIC8vIEZJWE1FOiBBbGwgdGhpcyBpcyBtZWRpYSBzZXNzaW9uIHNwZWNpZmljLCBwdXQgaXQg
aW4gdGhhdCBjbGFzcyBpbnN0ZWFkLgogICAgIGlmICghbV9tZWRpYVNlc3Npb24tPmhhc0JlaGF2
aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6SW52aXNpYmxlQXV0b3BsYXlOb3RQ
ZXJtaXR0ZWQpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4
IGI5NDUyMmM4ZmNhMGFmODg2ZmVmZDJjZTRjOTgyZTQwNzcxNWQ1NmIuLmZkOTQzZmY1YTVmZWEw
Njk1YzQ0ZGJmOThkZGZhZDA0MGYzZWMyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
MTQwLDYgKzE0MCw3IEBAIHNldChXZWJLaXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YS5oCiAgICAgJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaAog
ICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2luZG93UHJvcGVydGll
cy5oCisgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlUG9s
aWNpZXMuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCiAp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IDJkNWFhYzk1M2FiZWYyM2VhNWQwMjMzYWQwYTViZTlh
YTU5ODViOGUuLjFjZjI3N2M5NTU5MmIxNzM4MTllOTQyYTc5OWU3NmE4ZDEwMWQ4ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzR1RLLnR4dApAQCAtMTkyLDYgKzE5Miw3IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJzaXRlRGF0YS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXaW5kb3dQcm9wZXJ0aWVzLmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlUG9saWNpZXMuY3BwIEBuby11bmlmeQogCiBVSVByb2Nlc3MvQVBJL2d0ay9EcmFn
U291cmNlR3RrMy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3Rr
NC5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRQb2xpY3lEZWNpc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRQb2xpY3lEZWNpc2lvbi5jcHAKaW5kZXggYTM1NzQ3OTNjNjllZDA3Njgz
YTYwM2U2MjlmNDA5MTFmNzViY2EzYS4uZGI0ZDM1MDhkNDE0OWU1ZDQ0ZmM5ZTEyYmVmZWQ1ZWIy
OWU3NGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0UG9saWN5RGVjaXNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcApAQCAtMjAsOCArMjAsMTEgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRQb2xpY3lEZWNpc2lvbi5oIgogCisjaW5jbHVk
ZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9saWN5RGVjaXNpb25Qcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZVBv
bGljaWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKICNpbmNs
dWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogCkBAIC04NCw2ICs4NywzMyBAQCB2b2lkIHdlYmtp
dF9wb2xpY3lfZGVjaXNpb25fdXNlKFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKICAg
ICBsaXN0ZW5lci0+dXNlKCk7CiB9CiAKKy8qKgorICogd2Via2l0X3BvbGljeV9kZWNpc2lvbl91
c2Vfd2l0aF9wb2xpY2llczoKKyAqIEBkZWNpc2lvbjogYSAjV2ViS2l0UG9saWN5RGVjaXNpb24K
KyAqIEBwb2xpY2llczogYSAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKgorICogQWNjZXB0IHRo
ZSBhY3Rpb24gd2hpY2ggdHJpZ2dlcmVkIHRoaXMgZGVjaXNpb24sIGFuZCBjb250aW51ZSB3aXRo
CisgKiBAcG9saWNpZXMgYWZmZWN0aW5nIGFsbCBzdWJzZXF1ZW50IGxvYWRzIG9mIHJlc291cmNl
cyBpbiB0aGUKKyAqIGN1cnJlbnQgb3JpZ2luLgorICoKKyAqIEZvciBleGFtcGxlLCBhIG5hdmln
YXRpb24gZGVjaXNpb24gdG8gYSB2aWRlbyBzaGFyaW5nIHdlYnNpdGUgbWF5CisgKiBiZSBhY2Nl
cHRlZCB1bmRlciB0aGUgcHJpdmlzbyBubyBtb3ZpZXMgYXJlIGFsbG93ZWQgdG8gYXV0b3BsYXku
IFRoZQorICogYXV0b3BsYXkgcG9saWN5IGluIHRoaXMgY2FzZSB3b3VsZCBiZSBzZXQgaW4gdGhl
IEBwb2xpY2llcy4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit2b2lkIHdlYmtpdF9wb2xpY3lf
ZGVjaXNpb25fdXNlX3dpdGhfcG9saWNpZXMoV2ViS2l0UG9saWN5RGVjaXNpb24qIGRlY2lzaW9u
LCBXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1BPTElDWV9ERUNJU0lPTihkZWNpc2lvbikpOworCisgICAgaWYgKCFkZWNp
c2lvbi0+cHJpdi0+bGlzdGVuZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbGlzdGVu
ZXIgPSBzdGQ6OmV4Y2hhbmdlKGRlY2lzaW9uLT5wcml2LT5saXN0ZW5lciwgbnVsbHB0cik7CisK
KyAgICBsaXN0ZW5lci0+dXNlKHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFdlYnNpdGVQb2xpY2ll
cyhwb2xpY2llcykpOworfQorCiAvKioKICAqIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3Jl
OgogICogQGRlY2lzaW9uOiBhICNXZWJLaXRQb2xpY3lEZWNpc2lvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAw
NDFiZmI1NDVjNmFmNjIyMGE4MjY2ZDM1NmFjMTlkOTA3OTFjYjgzLi5jNGM3ZDBmNmMxMjYxYjUx
ZDAyMDcxYTY1MmFhMDkzZDFhYTNiOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNTMsNiArNTMsNyBAQAog
I2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlld1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRl
LmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKQEAgLTE4OTcsNyArMTg5
OCw3IEBAIFdlYlByb2Nlc3NQb29sJiB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2woV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCkKICAgICByZXR1cm4gKmNvbnRleHQtPnByaXYtPnByb2Nl
c3NQb29sOwogfQogCi12b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXIqIHVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0V2ViVmlldyogcmVs
YXRlZFZpZXcpCit2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIqIHVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0V2ViVmlldyogcmVsYXRl
ZFZpZXcsIFdlYktpdFdlYnNpdGVQb2xpY2llcyogZGVmYXVsdFdlYnNpdGVQb2xpY2llcykKIHsK
ICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKGNvbnRleHQtPnBy
aXYtPnByb2Nlc3NQb29sLmdldCgpKTsKQEAgLTE5MTAsNiArMTkxMSw3IEBAIHZvaWQgd2Via2l0
V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQs
IFdlYktpdFdlYlZpCiAgICAgaWYgKCFtYW5hZ2VyKQogICAgICAgICBtYW5hZ2VyID0gY29udGV4
dC0+cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpOwogICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5zZXRXZWJzaXRlRGF0YVN0b3JlKCZ3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3Rv
cmUobWFuYWdlcikpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXREZWZhdWx0V2Vic2l0ZVBv
bGljaWVzKHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFdlYnNpdGVQb2xpY2llcyhkZWZhdWx0V2Vi
c2l0ZVBvbGljaWVzKSk7CiAgICAgd2Via2l0V2ViVmlld0NyZWF0ZVBhZ2Uod2ViVmlldywgV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgYXV0byYgcGFnZSA9IHdlYmtpdFdlYlZp
ZXdHZXRQYWdlKHdlYlZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKaW5kZXggZDg1NjljODU5YmFi
ZmUxMTY5YzY4MmViNjg2MzY2ZTNkMDY5YjlhZC4uNzhkMTU3OGY5NDc5M2U5ZTU5YTNkNGQyYjMz
ZTc5ZWE4NTMwZmEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFu
YWdlci5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKQEAgLTM2LDcgKzM3LDcgQEAgV2ViS2l0RG93
bmxvYWQqIHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKFdlYktpdDo6RG93bmxv
YWRQcm94eSopOwogV2ViS2l0RG93bmxvYWQqIHdlYmtpdFdlYkNvbnRleHRTdGFydERvd25sb2Fk
KFdlYktpdFdlYkNvbnRleHQqLCBjb25zdCBjaGFyKiB1cmksIFdlYktpdDo6V2ViUGFnZVByb3h5
Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRSZW1vdmVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2Fk
UHJveHkqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dERvd25sb2FkU3RhcnRlZChXZWJLaXRXZWJD
b250ZXh0KiwgV2ViS2l0RG93bmxvYWQqKTsKLXZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBh
Z2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3KiwgV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyKiwgV2ViS2l0V2ViVmlldyopOwordm9pZCB3ZWJraXRXZWJDb250ZXh0
Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2Vic2l0ZVBv
bGljaWVzKik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRXZWJWaWV3RGVzdHJveWVkKFdlYktpdFdl
YkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3Kik7CiBXZWJLaXRXZWJWaWV3KiB3ZWJraXRXZWJDb250
ZXh0R2V0V2ViVmlld0ZvclBhZ2UoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZVBy
b3h5Kik7CiBHVmFyaWFudCogd2Via2l0V2ViQ29udGV4dEluaXRpYWxpemVXZWJFeHRlbnNpb25z
KFdlYktpdFdlYkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZTQwNDVjMzY3MDY1NzVjYzdkYjlmOTg3MTFl
ZmQ2OTAwNGEyYTNmMC4uMjAxNmM4MDY3NWJlMmE2ZGIzM2FlODM1NTM0ODNmMDRmYzM1OWQ3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGVQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdl
YnNpdGVQb2xpY2llc1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXaW5kb3dQcm9wZXJ0aWVz
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0FQSUNhc3QuaD4KQEAgLTIwMCw3ICsyMDEsOCBAQCBlbnVtIHsKICAgICBQUk9Q
X0FVVE9NQVRJT05fUFJFU0VOVEFUSU9OX1RZUEUsCiAgICAgUFJPUF9FRElUQUJMRSwKICAgICBQ
Uk9QX1BBR0VfSUQsCi0gICAgUFJPUF9JU19NVVRFRAorICAgIFBST1BfSVNfTVVURUQsCisgICAg
UFJPUF9XRUJTSVRFX1BPTElDSUVTCiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEdS
ZWZQdHI8V2ViS2l0V2ViUmVzb3VyY2U+ID4gTG9hZGluZ1Jlc291cmNlc01hcDsKQEAgLTMwMiw2
ICszMDQsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICBHUmVmUHRyPFdl
YktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdD4gYXV0aGVudGljYXRpb25SZXF1ZXN0OwogCiAgICAg
R1JlZlB0cjxXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI+IHdlYnNpdGVEYXRhTWFuYWdlcjsKKyAg
ICBHUmVmUHRyPFdlYktpdFdlYnNpdGVQb2xpY2llcz4gd2Vic2l0ZVBvbGljaWVzOwogfTsKIAog
c3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtNzU1LDcgKzc1
OCwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2Jq
ZWN0KQogICAgICAgICB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJBZGRQcm9jZXNzUG9vbChwcml2
LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCksIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9v
bChwcml2LT5jb250ZXh0LmdldCgpKSk7CiAgICAgfQogCi0gICAgd2Via2l0V2ViQ29udGV4dENy
ZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQuZ2V0KCksIHdlYlZpZXcsIHByaXYtPnVz
ZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcpOworICAgIGlmICghcHJp
di0+d2Vic2l0ZVBvbGljaWVzKQorICAgICAgICBwcml2LT53ZWJzaXRlUG9saWNpZXMgPSBhZG9w
dEdSZWYod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3KCkpOworCisgICAgd2Via2l0V2ViQ29u
dGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQuZ2V0KCksIHdlYlZpZXcsIHBy
aXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcsIHByaXYtPndl
YnNpdGVQb2xpY2llcy5nZXQoKSk7CiAKICAgICBwcml2LT5sb2FkT2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7CiAgICAgZ2V0UGFnZSh3ZWJWaWV3
KS5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKnByaXYtPmxvYWRPYnNlcnZlcik7CkBAIC04
MzgsNiArODQ0LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUKICAgICBjYXNlIFBST1BfSVNf
TVVURUQ6CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfaXNfbXV0ZWQod2ViVmlldywgZ192
YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
V0VCU0lURV9QT0xJQ0lFUzoKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVz
ID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZVBvbGljaWVzKj4oZ192YWx1ZV9nZXRfb2JqZWN0
KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNU
X1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKICAg
ICB9CkBAIC05MDMsNiArOTEyLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0dldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHUKICAgICBjYXNl
IFBST1BfSVNfTVVURUQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF93ZWJfdmlld19nZXRfaXNfbXV0ZWQod2ViVmlldykpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfV0VCU0lURV9QT0xJQ0lFUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZh
bHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldykpOworICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURf
UFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtMTI5MCw2
ICsxMzAyLDIzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktp
dFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgRkFMU0UsCiAgICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRX
ZWJWaWV3OndlYnNpdGUtcG9saWNpZXM6CisgICAgICoKKyAgICAgKiBUaGUgI1dlYktpdFdlYnNp
dGVQb2xpY2llcyBmb3IgdGhlIHZpZXcuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zMAorICAg
ICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmpl
Y3RDbGFzcywKKyAgICAgICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTLAorICAgICAgICBnX3BhcmFt
X3NwZWNfb2JqZWN0KAorICAgICAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLAorICAgICAgICAg
ICAgXygiRGVmYXVsdCBXZWJzaXRlIFBvbGljaWVzIiksCisgICAgICAgICAgICBfKCJUaGUgZGVm
YXVsdCBwb2xpY3kgb2JqZWN0IGZvciBzaXRlcyBsb2FkZWQgaW4gdGhpcyB2aWV3IiksCisgICAg
ICAgICAgICBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLAorICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNU
UlVDVF9PTkxZKSkpOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6bG9hZC1jaGFu
Z2VkOgogICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBz
aWduYWwgaXMgZW1pdHRlZApAQCAtMzczMyw2ICszNzYyLDE4IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHdrU2VyCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF91bnJlZikpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
UnVuSmF2YVNjcmlwdFdpdGhQYXJhbXMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2No
YXIqIHNjcmlwdCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbXMsIEdDYW5jZWxsYWJs
ZSogY2FuY2VsbGFibGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVz
ZXJEYXRhKQoreworICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25l
dyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7CisKKyAgICBnZXRQ
YWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXVEZNb3ZlKHBhcmFtcyksIFt0
YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0
aW9uRGV0YWlsczsKKyAgICAgICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICBleGNlcHRpb25E
ZXRhaWxzID0gKmRldGFpbHM7CisgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2Fs
bGJhY2soc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgp
KTsKKyAgICB9KTsKK30KKwogLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQ6
CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKQEAgLTM3NTIsMTMgKzM3OTMsMzcgQEAg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgY29uc3QgZ2NoYXIqIHNjcmlwdCwKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCi0gICAg
R1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNl
bGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZSh7IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgVVJMIHsgfSwg
ZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4
Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewot
ICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7Ci0gICAgICAgIGlmIChk
ZXRhaWxzKQotICAgICAgICAgICAgZXhjZXB0aW9uRGV0YWlscyA9ICpkZXRhaWxzOwotICAgICAg
ICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNrKHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7Ci0gICAgfSk7CisgICAgLy8gRm9yIGhp
c3RvcmljYWwgcmVhc29ucywgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIHRoaXMgQVBJIGlzIHRv
CisgICAgLy8gaW50ZXJwcmV0IEphdmFTY3JpcHQgYXNzdW1pbmcgdXNlciBnZXN0dXJlcyBhcmUg
YWN0aXZlLgorICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtcyA9IHsgU3RyaW5nOjpm
cm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH07Cisg
ICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRXaXRoUGFyYW1zKHdlYlZpZXcsIHNjcmlwdCwg
V1RGTW92ZShwYXJhbXMpLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfd2l0aG91dF9mb3JjZWRfdXNl
cl9nZXN0dXJlczoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHNjcmlwdDog
dGhlIHNjcmlwdCB0byBydW4KKyAqIEBjYW5jZWxsYWJsZTogKGFsbG93LW5vbmUpOiBhICNHQ2Fu
Y2VsbGFibGUgb3IgJU5VTEwgdG8gaWdub3JlCisgKiBAY2FsbGJhY2s6IChzY29wZSBhc3luYyk6
IGEgI0dBc3luY1JlYWR5Q2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBzY3JpcHQgZmluaXNoZWQK
KyAqIEB1c2VyX2RhdGE6IChjbG9zdXJlKTogdGhlIGRhdGEgdG8gcGFzcyB0byBjYWxsYmFjayBm
dW5jdGlvbgorICoKKyAqIEFzeW5jaHJvbm91c2x5IHJ1biBAc2NyaXB0IGluIHRoZSBjb250ZXh0
IG9mIHRoZSBjdXJyZW50IHBhZ2UgaW4gQHdlYl92aWV3LiBJZgorICogV2ViS2l0U2V0dGluZ3M6
ZW5hYmxlLWphdmFzY3JpcHQgaXMgRkFMU0UsIHRoaXMgbWV0aG9kIHdpbGwgZG8gbm90aGluZy4K
KyAqCisgKiBXaGlsZSBydW5uaW5nIHRoZSBzY3JpcHQsIHVzZXIgZ2VzdHVyZXMgd2lsbCBiZSBh
c3N1bWVkCisgKiBpbmFjdGl2ZS4gVGhpcyBtZWFucyBiZWhhdmlvdXJzIGFzc29jaWF0ZWQgd2l0
aCB1c2VyIGdlc3R1cmVzLCBzdWNoCisgKiBhcyBhdXRvcGxheSwgYXJlIG5vdCBvdmVycmlkZW4g
d2hpbGUgaW50ZXJwcmV0aW5nIHRoZSBAc2NyaXB0LgorICoKKyAqIFdoZW4gdGhlIG9wZXJhdGlv
biBpcyBmaW5pc2hlZCwgQGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLiBZb3UgY2FuIHRoZW4gY2Fs
bAorICogd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2ZpbmlzaCgpIHRvIGdldCB0aGUg
cmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uCisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9q
YXZhc2NyaXB0X3dpdGhvdXRfZm9yY2VkX3VzZXJfZ2VzdHVyZXMoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgZ2NoYXIqIHNjcmlwdCwgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0Fz
eW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoc2NyaXB0KTsKKworICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtcyA9
IHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0
LCBmYWxzZSB9OworICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0V2l0aFBhcmFtcyh3ZWJW
aWV3LCBzY3JpcHQsIFdURk1vdmUocGFyYW1zKSwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2Vy
RGF0YSk7CiB9CiAKIC8qKgpAQCAtNDYxNywzICs0NjgyLDQxIEBAIFdlYktpdElucHV0TWV0aG9k
Q29udGV4dCogd2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9tZXRob2RfY29udGV4dChXZWJLaXRX
ZWJWaWV3CiAjZW5kaWYKIAogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld191cGRhdGVfd2Vi
c2l0ZV9wb2xpY2llczoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHBvbGlj
aWVzOiBUaGUgI1dlYktpdFdlYnNpdGVQb2xpY2llcyB0byBhcHBseSB0byB0aGUgcGFnZS4KKyAq
CisgKiBVcGRhdGVzIHRoZSB3ZWJzaXRlIHBvbGljaWVzIGFzc29jaWF0ZWQgd2l0aCBAd2ViX3Zp
ZXcuCisgKgorICogTm90ZSwgaXQgb25seSBtYWtlcyBzZW5zZSB0byBjYWxsIHRoaXMgQVBJIGFm
dGVyICVXRUJLSVRfTE9BRF9DT01NSVRURUQKKyAqIGFuZCBiZWZvcmUgJVdFQktJVF9MT0FEX0ZJ
TklTSEVELgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3Vw
ZGF0ZV93ZWJzaXRlX3BvbGljaWVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYnNp
dGVQb2xpY2llcyogcG9saWNpZXMpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQlNJ
VEVfUE9MSUNJRVMocG9saWNpZXMpKTsKKworICAgIGF1dG8gcG9saWNpZXNEYXRhID0gd2Via2l0
V2Vic2l0ZVBvbGljaWVzR2V0UG9saWNpZXNEYXRhKHBvbGljaWVzKTsKKyAgICBnZXRQYWdlKHdl
YlZpZXcpLnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXVEZNb3ZlKHBvbGljaWVzRGF0YSkpOworfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llczoKKyAqIEB3ZWJf
dmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldHMgdGhlIHdlYnNpdGUgcG9saWNpZXMg
YXNzb2NpYXRlZCB3aXRoIEB3ZWJfdmlldy4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9u
ZSk6IHRoZSAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmlldwor
ICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK1dlYktpdFdlYnNpdGVQb2xpY2llcyogd2Via2l0X3dl
Yl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBudWxs
cHRyKTsKKworICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT53ZWJzaXRlUG9saWNpZXMuZ2V0KCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJzaXRlUG9saWNpZXMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDkzNDAxZDYzYjI1MmI2ODRmOWU1
OTZkZjY4ZGNmZWZjZDQyOWZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmNwcApAQCAtMCwwICsxLDI0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llcy5oIgorCisjaW5jbHVkZSAiQVBJ
V2Vic2l0ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAiV2ViS2l0RW51bVR5cGVzLmgiCisjaW5jbHVk
ZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Cisj
aW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
KworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAqIEBTaG9ydF9kZXNj
cmlwdGlvbjogVmlldyBzcGVjaWZpYyB3ZWJzaXRlIHBvbGljaWVzCisgKiBAVGl0bGU6IFdlYktp
dFdlYnNpdGVQb2xpY2llcworICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldworICoKKyAqIFdl
YktpdFdlYnNpdGVQb2xpY2llcyBhbGxvd3MgeW91IHRvIGNvbmZpZ3VyZSBwZXItcGFnZSBhdXRv
cGxheSBwb2xpY2llcy4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfQVVUT1BMQVlfUE9M
SUNZCit9OworCitzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUgeworICAgIF9X
ZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlKCkKKyAgICAgICAgOiB3ZWJzaXRlUG9saWNpZXMo
QVBJOjpXZWJzaXRlUG9saWNpZXM6OmNyZWF0ZSgpKQorICAgIHsKKyAgICB9CisgICAgUmVmUHRy
PEFQSTo6V2Vic2l0ZVBvbGljaWVzPiB3ZWJzaXRlUG9saWNpZXM7Cit9OworCitXRUJLSVRfREVG
SU5FX1RZUEUoV2ViS2l0V2Vic2l0ZVBvbGljaWVzLCB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llcywg
R19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBhcmFtU3BlYykKK3sKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVz
ID0gV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElE
KSB7CisgICAgY2FzZSBQUk9QX0FVVE9QTEFZX1BPTElDWToKKyAgICAgICAgZ192YWx1ZV9zZXRf
ZW51bSh2YWx1ZSwgd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeShw
b2xpY2llcykpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRlUG9saWNpZXNTZXRQcm9wZXJ0eShH
T2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMg
PSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFUyhvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSUQp
IHsKKyAgICBjYXNlIFBST1BfQVVUT1BMQVlfUE9MSUNZOiB7CisgICAgICAgIHdlYmtpdF93ZWJz
aXRlX3BvbGljaWVzX3NldF9hdXRvcGxheV9wb2xpY3kocG9saWNpZXMsIHN0YXRpY19jYXN0PFdl
YktpdEF1dG9wbGF5UG9saWN5PihnX3ZhbHVlX2dldF9lbnVtKHZhbHVlKSkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOworICAgIH0KK30KKworc3Rh
dGljIHZvaWQgd2Via2l0V2Vic2l0ZVBvbGljaWVzQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0
KQoreworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX3BhcmVudF9j
bGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7Cit9CisKK0FQSTo6V2Vic2l0ZVBvbGljaWVzKiB3
ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRXZWJzaXRlUG9saWNpZXMoV2ViS2l0V2Vic2l0ZVBvbGlj
aWVzKiBwb2xpY2llcykKK3sKKyAgICByZXR1cm4gcG9saWNpZXMtPnByaXYtPndlYnNpdGVQb2xp
Y2llcy5nZXQoKTsKK30KKworV2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJraXRXZWJzaXRlUG9saWNp
ZXNHZXRQb2xpY2llc0RhdGEoV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAg
ICBXZWJzaXRlUG9saWNpZXNEYXRhIHBvbGljaWVzRGF0YSB7IH07CisKKyAgICBzd2l0Y2ggKHdl
YmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRvcGxheV9wb2xpY3kocG9saWNpZXMpKSB7Cisg
ICAgY2FzZSBXZWJLaXRBdXRvcGxheVBvbGljeTo6V0VCS0lUX0FVVE9QTEFZX0FMTE9XOgorICAg
ICAgICBwb2xpY2llc0RhdGEuYXV0b3BsYXlQb2xpY3kgPSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6
OkFsbG93OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYktpdEF1dG9wbGF5UG9saWN5OjpX
RUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORDoKKyAgICAgICAgcG9saWNpZXNEYXRh
LmF1dG9wbGF5UG9saWN5ID0gV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhvdXRTb3Vu
ZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJLaXRBdXRvcGxheVBvbGljeTo6V0VCS0lU
X0FVVE9QTEFZX0RFTlk6CisgICAgICAgIHBvbGljaWVzRGF0YS5hdXRvcGxheVBvbGljeSA9IFdl
YnNpdGVBdXRvcGxheVBvbGljeTo6RGVueTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcG9saWNpZXNEYXRhLmF1dG9wbGF5UG9saWN5ID0gV2Vic2l0ZUF1dG9wbGF5UG9s
aWN5OjpEZWZhdWx0OworICAgIH0KKworICAgIHJldHVybiBwb2xpY2llc0RhdGE7Cit9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2NsYXNzX2luaXQoV2ViS2l0V2Vic2l0
ZVBvbGljaWVzQ2xhc3MqIGZpbmRDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RD
bGFzcyA9IEdfT0JKRUNUX0NMQVNTKGZpbmRDbGFzcyk7CisKKyAgICBnT2JqZWN0Q2xhc3MtPmdl
dF9wcm9wZXJ0eSA9IHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFByb3BlcnR5OworICAgIGdPYmpl
Y3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0V2Vic2l0ZVBvbGljaWVzU2V0UHJvcGVydHk7
CisgICAgZ09iamVjdENsYXNzLT5jb25zdHJ1Y3RlZCA9IHdlYmtpdFdlYnNpdGVQb2xpY2llc0Nv
bnN0cnVjdGVkOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2Vic2l0ZVBvbGljaWVzOmF1dG9w
bGF5LXBvbGljeToKKyAgICAgKgorICAgICAqIFRoZSAjV2ViS2l0QXV0b3BsYXlQb2xpY3kgb2Yg
I1dlYktpdFdlYnNpdGVQb2xpY2llcy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjMwCisgICAg
ICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVj
dENsYXNzLAorICAgICAgICBQUk9QX0FVVE9QTEFZX1BPTElDWSwKKyAgICAgICAgZ19wYXJhbV9z
cGVjX2VudW0oCisgICAgICAgICAgICAiYXV0b3BsYXktcG9saWN5IiwKKyAgICAgICAgICAgICJB
dXRvcGxheSBQb2xpY3kiLAorICAgICAgICAgICAgXygiVGhlIGF1dG9wbGF5IHBvbGljeSB0byB1
c2Ugd2hlbiBkZWNpZGluZyB0byBhdXRvcGxheSBtZWRpYSIpLAorICAgICAgICAgICAgV0VCS0lU
X1RZUEVfQVVUT1BMQVlfUE9MSUNZLAorICAgICAgICAgICAgV0VCS0lUX0FVVE9QTEFZX0FMTE9X
X1dJVEhPVVRfU09VTkQsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VC
S0lUX1BBUkFNX1JFQURXUklURSkpKTsKK30KKworCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX3Bv
bGljaWVzX25ldzoKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IHRoZSBuZXdseSBj
cmVhdGVkICNXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAqCisgKiBTaW5jZTogMi4zMAorICovCitX
ZWJLaXRXZWJzaXRlUG9saWNpZXMqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ldyh2b2lkKQor
eworICAgIHJldHVybiBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFUyhnX29iamVjdF9uZXcoV0VCS0lU
X1RZUEVfV0VCU0lURV9QT0xJQ0lFUywgbnVsbHB0cikpOworfQorCisvKioKKyAqIHdlYmtpdF93
ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzOgorICogQGZpcnN0X3BvbGljeV9uYW1l
OiBuYW1lIG9mIHRoZSBmaXJzdCBwb2xpY3kgdG8gc2V0CisgKiBALi4uOiB2YWx1ZSBvZiBmaXJz
dCBwb2xpY3ksIGZvbGxvd2VkIGJ5IG1vcmUgcG9saWNpZXMsICVOVUxMLXRlcm1pbmF0ZWQKKyAq
CisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IHRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRX
ZWJzaXRlUG9saWNpZXMKKyAqCisgKiA8aW5mb3JtYWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4K
KyAqIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqZGVmYXVsdF93ZWJzaXRlX3BvbGljaWVzID0gd2Vi
a2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMoCisgKiAgICAgImF1dG9wbGF5
LXBvbGljeSIsIFdFQktJVF9BVVRPUExBWV9ERU5ZLAorICogICAgIE5VTEwpOworICogLi4uCisg
KiBXZWJLaXRXZWJWaWV3ICp2aWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJL
SVRfVFlQRV9XRUJfVklFVywKKyAqICAgICAid2ViLWNvbnRleHQiLCBjdHgsCisgKiAgICAgInNl
dHRpbmdzIiwgc2V0dGluZ3MsCisgKiAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgY29udGVu
dF9tYW5hZ2VyLAorICogICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgZGVmYXVsdF93ZWJzaXRlX3Bv
bGljaWVzLAorICogICAgIE5VTEwpKTsKKyAqIC4uLgorICogPC9wcm9ncmFtbGlzdGluZz48L2lu
Zm9ybWFsZXhhbXBsZT4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCitXZWJLaXRXZWJzaXRlUG9s
aWNpZXMqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzKGNvbnN0IGdj
aGFyKiBmaXJzdFBvbGljeU5hbWUsIC4uLikKK3sKKyAgICB2YV9saXN0IGFyZ3M7CisgICAgdmFf
c3RhcnQoYXJncywgZmlyc3RQb2xpY3lOYW1lKTsKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMq
IHBvbGljaWVzID0gV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMoZ19vYmplY3RfbmV3X3ZhbGlzdChX
RUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLCBmaXJzdFBvbGljeU5hbWUsIGFyZ3MpKTsKKyAg
ICB2YV9lbmQoYXJncyk7CisKKyAgICByZXR1cm4gcG9saWNpZXM7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeToKKyAqIEBwb2xpY2llczog
YSAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKgorICogR2V0IHRoZSAjV2ViS2l0V2Vic2l0ZVBv
bGljaWVzOmF1dG9wbGF5LXBvbGljeSBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAjV2ViS2l0
QXV0b3BsYXlQb2xpY3kKKyAqCisgKiBTaW5jZTogMi4zMAorICovCitXZWJLaXRBdXRvcGxheVBv
bGljeSB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfYXV0b3BsYXlfcG9saWN5KFdlYktpdFdl
YnNpdGVQb2xpY2llcyogcG9saWNpZXMpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQlNJVEVfUE9MSUNJRVMocG9saWNpZXMpLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1df
V0lUSE9VVF9TT1VORCk7CisKKyAgICBhdXRvIGFwaUF1dG9wbGF5UG9saWN5VHlwZSA9IHBvbGlj
aWVzLT5wcml2LT53ZWJzaXRlUG9saWNpZXMtPmF1dG9wbGF5UG9saWN5KCk7CisgICAgc3dpdGNo
IChhcGlBdXRvcGxheVBvbGljeVR5cGUpIHsKKyAgICBjYXNlIFdlYktpdDo6V2Vic2l0ZUF1dG9w
bGF5UG9saWN5OjpBbGxvdzoKKyAgICAgICAgcmV0dXJuIFdFQktJVF9BVVRPUExBWV9BTExPVzsK
KyAgICBjYXNlIFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhvdXRTb3Vu
ZDoKKyAgICAgICAgcmV0dXJuIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EOwor
ICAgIGNhc2UgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlbnk6CisgICAgICAgIHJl
dHVybiBXRUJLSVRfQVVUT1BMQVlfREVOWTsKKyAgICBjYXNlIFdlYktpdDo6V2Vic2l0ZUF1dG9w
bGF5UG9saWN5OjpEZWZhdWx0OgorICAgICAgICByZXR1cm4gV0VCS0lUX0FVVE9QTEFZX0FMTE9X
X1dJVEhPVVRfU09VTkQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorfQorCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX3NldF9hdXRv
cGxheV9wb2xpY3k6CisgKiBAcG9saWNpZXM6IHRoZSAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisg
KiBAcG9saWN5OiB0aGUgI1dlYktpdEF1dG9wbGF5UG9saWN5IHRvIHVzZQorICoKKyAqIFNldCB0
aGUgI1dlYktpdFdlYnNpdGVQb2xpY2llczphdXRvcGxheS1wb2xpY3kgcHJvcGVydHkuCisgKgor
ICogU2luY2U6IDIuMzAKKyAqLwordm9pZCB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0
b3BsYXlfcG9saWN5KFdlYktpdFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFdlYktpdEF1dG9w
bGF5UG9saWN5IHBvbGljeSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJT
SVRFX1BPTElDSUVTKHBvbGljaWVzKSk7CisKKyAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgIGNh
c2UgV0VCS0lUX0FVVE9QTEFZX0FMTE9XOgorICAgICAgICBwb2xpY2llcy0+cHJpdi0+d2Vic2l0
ZVBvbGljaWVzLT5zZXRBdXRvcGxheVBvbGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGlj
eTo6QWxsb3cpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9BVVRPUExBWV9BTExP
V19XSVRIT1VUX1NPVU5EOgorICAgICAgICBwb2xpY2llcy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVz
LT5zZXRBdXRvcGxheVBvbGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dX
aXRob3V0U291bmQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9BVVRPUExBWV9E
RU5ZOgorICAgICAgICBwb2xpY2llcy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzLT5zZXRBdXRvcGxh
eVBvbGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVueSk7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YnNpdGVQb2xpY2llc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZmYxZjEyODdlOGQx
YmM1N2Y3ZWJkYzM2Y2I2NjZhMDY1N2RiZWNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZS5oCkBA
IC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJX
ZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgi
CisKK0FQSTo6V2Vic2l0ZVBvbGljaWVzKiB3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRXZWJzaXRl
UG9saWNpZXMoV2ViS2l0V2Vic2l0ZVBvbGljaWVzICopOworV2ViS2l0OjpXZWJzaXRlUG9saWNp
ZXNEYXRhIHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFBvbGljaWVzRGF0YShXZWJLaXRXZWJzaXRl
UG9saWNpZXMgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFBvbGljeURlY2lzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFBvbGljeURlY2lzaW9uLmgKaW5kZXggZjE5MmExZDM3OWRjNjQyMWRmNzYwNDc0ZDIw
NjQ5ZTQ1ZmYwYzhjYi4uMGZmODllNDljNzYzZDM2ZjVlNGFlM2JkMWMxMTdkNjMxYzEzMmU4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lE
ZWNpc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9s
aWN5RGVjaXNpb24uaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFdlYnNpdGVQb2xpY2llcy5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKQEAgLTYyLDYgKzYz
LDEwIEBAIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5cGUgKHZvaWQpOwogV0VCS0lUX0FQ
SSB2b2lkCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZSAgICAgIChXZWJLaXRQb2xpY3lEZWNp
c2lvbiAqZGVjaXNpb24pOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wb2xpY3lfZGVjaXNp
b25fdXNlX3dpdGhfcG9saWNpZXMgIChXZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2Vic2l0ZVBv
bGljaWVzICpwb2xpY2llcyk7CisKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3BvbGljeV9kZWNp
c2lvbl9pZ25vcmUgICAoV2ViS2l0UG9saWN5RGVjaXNpb24gKmRlY2lzaW9uKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCAxMzEz
NjBjM2RkMGViZmNhMTFjNmU3MTQ4NmU2MTE2ZDdkZjEwYmNmLi43ODk1YzkzZjMxZjMwZmE4Mzg2
YjY5YTU2NTg1MjA5NDM3NzcwM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViSW5zcGVj
dG9yLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJSZXNvdXJjZS5oPgorI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRXZWJWaWV3QmFzZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld1Nlc3Npb25T
dGF0ZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2luZG93UHJvcGVydGllcy5oPgpAQCAt
NDUyLDYgKzQ1MywxMyBAQCB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQgICAgICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgICAgICAgICpjYW5j
ZWxsYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgICAgICAgIGNhbGxiYWNrLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAg
ICAgICAgICAgICAgdXNlcl9kYXRhKTsKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3
X3J1bl9qYXZhc2NyaXB0X3dpdGhvdXRfZm9yY2VkX3VzZXJfZ2VzdHVyZXMgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAg
ICAqc2NyaXB0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICAgICAgY2FsbGJhY2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVy
ICAgICAgICAgICAgICAgICAgIHVzZXJfZGF0YSk7CisKIFdFQktJVF9BUEkgV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdCAqCiB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZmluaXNoICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3Vs
dCAgICAgICAgICAgICAgKnJlc3VsdCwKQEAgLTU4NCw2ICs1OTIsMTUgQEAgd2Via2l0X3dlYl92
aWV3X3NldF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldwog
V0VCS0lUX0FQSSBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgKgogd2Via2l0X3dlYl92aWV3X2dl
dF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAqd2ViX3ZpZXcpOwogCisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3Vw
ZGF0ZV93ZWJzaXRlX3BvbGljaWVzICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMgICAgICpwb2xpY2llcyk7CisKK1dF
QktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKK3dlYmtpdF93ZWJfdmlld19nZXRfd2Vi
c2l0ZV9wb2xpY2llcyAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3KTsKKworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCmluZGV4IDljZjBl
NmU1ZTUzNGVhNTUwMWNmMzRhOGEzNWJhY2I3ZjAwZDE0NzUuLmJlYTU1MGFiNmYyZTNjMTM5NWU2
YTVkNzZkNjU0MGYxZGU2MDAyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcApAQCAtMzAyLDggKzMwMiw4IEBAIEd0a1dp
ZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCog
Y29udGV4dCkKICAqIFlvdSBjYW4gYWxzbyB1c2UgdGhpcyBtZXRob2QgdG8gaW1wbGVtZW50IG90
aGVyIHByb2Nlc3MgbW9kZWxzIGJhc2VkIG9uICVXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBM
RV9TRUNPTkRBUllfUFJPQ0VTU0VTLAogICogbGlrZSBmb3IgZXhhbXBsZSwgc2hhcmluZyB0aGUg
c2FtZSB3ZWIgcHJvY2VzcyBmb3IgYWxsIHRoZSB2aWV3cyBpbiB0aGUgc2FtZSBzZWN1cml0eSBk
b21haW4uCiAgKgotICogVGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYlZpZXcgd2lsbCBhbHNv
IGhhdmUgdGhlIHNhbWUgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlcgotICogYW5kICNXZWJLaXRT
ZXR0aW5ncyBhcyBAd2ViX3ZpZXcuCisgKiBUaGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmll
dyB3aWxsIGFsc28gaGF2ZSB0aGUgc2FtZSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLAorICog
I1dlYktpdFNldHRpbmdzLCBhbmQgI1dlYktpdFdlYnNpdGVQb2xpY2llcyBhcyBAd2ViX3ZpZXcu
CiAgKgogICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBUaGUgbmV3bHkgY3JlYXRlZCAjV2Vi
S2l0V2ViVmlldyB3aWRnZXQKICAqCkBAIC0zMTcsNiArMzE3LDcgQEAgR3RrV2lkZ2V0KiB3ZWJr
aXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNl
cl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93
ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyksCiAgICAgICAgICJyZWxhdGVkLXZpZXciLCB3
ZWJWaWV3LAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRf
d2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgbnVsbHB0cikpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVQb2xp
Y2llcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlUG9s
aWNpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMGVmODhjMTAzNmUwM2Q4OGZlYTRkN2UzNmU2MzA1NGNhYzMx
M2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJzaXRlUG9saWNpZXMuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18p
ICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIv
d2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVm
aW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCU0lURV9Q
T0xJQ0lFUyAgICAgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfdHlwZSgpKQor
I2RlZmluZSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFUyhvYmopICAgICAgICAgICAgKEdfVFlQRV9D
SEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLCBX
ZWJLaXRXZWJzaXRlUG9saWNpZXMpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lF
UyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRf
VFlQRV9XRUJTSVRFX1BPTElDSUVTKSkKKyNkZWZpbmUgV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNf
Q0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lU
X1RZUEVfV0VCU0lURV9QT0xJQ0lFUywgV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MpKQorI2Rl
ZmluZSBXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFU19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVD
S19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTKSkKKyNk
ZWZpbmUgV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5T
VEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUywgV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vic2l0
ZVBvbGljaWVzICAgICAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXM7Cit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MgICBXZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzczsK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlIFdlYktpdFdlYnNp
dGVQb2xpY2llc1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGljaWVzIHsKKyAg
ICBHT2JqZWN0IHBhcmVudDsKKworICAgIFdlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUgKnBy
aXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzIHsKKyAgICBHT2Jq
ZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAo
dm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQz
KSAodm9pZCk7Cit9OworCisvKioKKyAqIFdlYktpdEF1dG9wbGF5UG9saWN5OgorICogQFdFQktJ
VF9BVVRPUExBWV9BTExPVzogRG8gbm90IHJlc3RyaWN0IGF1dG9wbGF5LgorICogQFdFQktJVF9B
VVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EOiBBbGxvdyB2aWRlb3MgdG8gYXV0b3BsYXkgaWYK
KyAqIHRoZXkgaGF2ZSBubyBhdWRpbyB0cmFjaywgb3IgaWYgdGhlaXIgYXVkaW8gdHJhY2sgaXMg
bXV0ZWQuCisgKiBAV0VCS0lUX0FVVE9QTEFZX0RFTlk6IE5ldmVyIGFsbG93IGF1dG9wbGF5Lgor
ICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc3BlY2lmeSBhdXRvcGxheSBwb2xpY2llcy4KKyAq
CisgKiBTaW5jZTogMi4zMAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9BVVRPUExB
WV9BTExPVywKKyAgICBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCwKKyAgICBX
RUJLSVRfQVVUT1BMQVlfREVOWQorfSBXZWJLaXRBdXRvcGxheVBvbGljeTsKKworV0VCS0lUX0FQ
SSBHVHlwZQord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X3R5cGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVz
ICoKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ldyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqCit3
ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcyAgICAgICAgICAgICAgICAg
ICAgIChjb25zdCBnY2hhciAgKmZpcnN0X3BvbGljeV9uYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlfcG9saWN5
ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0QXV0b3BsYXlQb2xpY3kgcG9saWN5KTsKKworV0VCS0lUX0FQSSBXZWJLaXRBdXRv
cGxheVBvbGljeQord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeSAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcyk7CisKK0df
RU5EX0RFQ0xTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCA0ODJiMDZjZWNm
YTE3YmJkMzk5Y2I4OGQ4NGQxMWFkM2Q5NDVhZWEwLi5hMmZiODliOTdmZjM3ZTE4NDZjZDJhZTBj
ZmM5OWNkY2M5ODQ2ZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTE5
OCw2ICsxOTgsNyBAQCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudAogV2ViS2l0U25hcHNob3RP
cHRpb25zCiBXZWJLaXRTbmFwc2hvdFJlZ2lvbgogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9u
UmVhc29uCitXZWJLaXRBdXRvcGxheVBvbGljeQogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1h
bmRzPgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQKQEAgLTI2Miw2ICsyNjMsNyBAQCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcgogd2Via2l0X3dlYl92aWV3X2dldF9pbnNw
ZWN0b3IKIHdlYmtpdF93ZWJfdmlld19nZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dAogd2Vi
a2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0Cit3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3Jp
cHRfd2l0aG91dF9mb3JjZWRfdXNlcl9nZXN0dXJlcwogd2Via2l0X3dlYl92aWV3X3J1bl9qYXZh
c2NyaXB0X2ZpbmlzaAogd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dvcmxkCiB3
ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfaW5fd29ybGRfZmluaXNoCkBAIC0yODgsNiAr
MjkwLDggQEAgd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlCiB3ZWJraXRfd2Vi
X3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2VfZmluaXNoCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lu
cHV0X21ldGhvZF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250
ZXh0Cit3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3dlYnNpdGVfcG9saWNpZXMKK3dlYmtpdF93ZWJf
dmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcwogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0
UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApAQCAtODQ3LDYgKzg1MSw3IEBAIFdlYktp
dFBvbGljeURlY2lzaW9uCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkCiB3ZWJraXRf
cG9saWN5X2RlY2lzaW9uX2lnbm9yZQogd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UKK3dlYmtp
dF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhfcG9saWNpZXMKIAogPFNVQlNFQ1RJT04gU3RhbmRh
cmQ+CiBXZWJLaXRQb2xpY3lEZWNpc2lvbkNsYXNzCkBAIC0xODQ2LDMgKzE4NTEsMjcgQEAgV0VC
S0lUX1VTRVJfTUVTU0FHRV9HRVRfQ0xBU1MKIFdlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZQogd2Vi
a2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlwZQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxF
PldlYktpdFdlYnNpdGVQb2xpY2llczwvRklMRT4KK1dlYktpdFdlYnNpdGVQb2xpY2llcword2Vi
a2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3Cit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0
aF9wb2xpY2llcword2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeQor
d2Via2l0X3dlYnNpdGVfcG9saWNpZXNfc2V0X2F1dG9wbGF5X3BvbGljeQorCis8U1VCU0VDVElP
TiBTdGFuZGFyZD4KK1dlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzCitXRUJLSVRfSVNfV0VCU0lU
RV9QT0xJQ0lFUworV0VCS0lUX0lTX1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1MKK1dFQktJVF9UWVBF
X1dFQlNJVEVfUE9MSUNJRVMKK1dFQktJVF9XRUJTSVRFX1BPTElDSUVTCitXRUJLSVRfV0VCU0lU
RV9QT0xJQ0lFU19DTEFTUworV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NMQVNTCisKKzxT
VUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlCit3ZWJraXRf
d2Vic2l0ZV9wb2xpY2llc19nZXRfdHlwZQorPC9TRUNUSU9OPgorCisKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyMGQyYjQzNDAwNGFlM2M0MmVi
M2U5ZjM4ZWQ4MGU1N2VkMDFiZGQ0Li5jMWI0NTVlZmNmZTMxOWY2YTBhZTBhZmQxM2Y5YWNiM2Fi
YjkzN2YwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDYtMDggIENoYXJsaWUgVHVybmVyICA8Y3R1cm5lckBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIERpc2FibGUgdmlkZW8gYXV0b3BsYXkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDg0NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgdmFy
aW91cyBjYWxsc2l0ZXMgZm9yIGNvbnN0cnVjdGluZyBhIHZpZXcgdG8gdGFrZSBpbnRvCisgICAg
ICAgIGFjY291bnQgdGhlIGRlZmF1bHQgcG9saWNpZXMuIEkgY2hvc2UgdGhlIGRlZmF1bHQgYXMg
YXV0b3BsYXkKKyAgICAgICAgYWxsb3cgd2l0aG91dCBzb3VuZCwgd2hpY2ggaXMgaW4ga2VlcGlu
ZyB3aXRoIFdlYkNvcmUncyBjaG9pY2UuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJv
d3NlcldpbmRvdy5jOgorICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6CisgICAgICAgIChu
ZXdUYWJDYWxsYmFjayk6CisgICAgICAgIChvcGVuUHJpdmF0ZVdpbmRvdyk6CisgICAgICAgIChi
cm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKToKKyAg
ICAgICAgKGJyb3dzZXJfd2luZG93X2NyZWF0ZV93ZWJfdmlld19pbl9uZXdfdGFiX2Zvcl9hdXRv
bWF0aW9uKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAoY3Jl
YXRlQnJvd3NlclRhYik6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHA6IEFkZAorICAgICAg
ICBhdXRvcGxheSBwb2xpY3kgdGVzdHMsIGFuZCB1c2UgbW9kZXJuIGNsYXNzIGluaXRpYWxpemVy
cy4KKyAgICAgICAgKHRlc3RBdXRvcGxheVBvbGljeSk6CisgICAgICAgIChiZWZvcmVBbGwpOgor
CiAyMDIwLTA2LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBNaW5pQnJvd3NlcjogdXNlIEdBY3Rpb24gQVBJIGZvciBhY3Rpb25z
IGFuZCBzaG9ydGN1dHMgaW4gcHJlcGFyYXRpb24gZm9yIEdUSzQKZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
QnJvd3NlcldpbmRvdy5jCmluZGV4IDU4ZDFjMDQxMmJkMmE5N2NhYmYwNjFkZjE4Yjk2MWJkZGU1
Nzc0MGUuLjEzNzI4ZjQ4NjI3NGM5ZmZlOTgxYmZjZGE0NzM5OGM0MjY2M2E4ODYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwpAQCAtNDE1LDYgKzQxNSw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiB3ZWJWaWV3RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktp
dFBvbGljeURlY2lzaW9uCiAgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRf
c2V0dGluZ3Mod2ViVmlldyksCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJp
cy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxl
ZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcpLAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdl
YmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVM
TCkpOwogICAgIGJyb3dzZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7
CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2
aWdhdGlvbl9hY3Rpb25fZ2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNTc5LDYg
KzU4MCw3IEBAIHN0YXRpYyB2b2lkIG5ld1RhYkNhbGxiYWNrKEdTaW1wbGVBY3Rpb24gKmFjdGlv
biwgR1ZhcmlhbnQgKnBhcmFtZXRlciwgZ3BvaW50ZXIKICAgICAgICAgInNldHRpbmdzIiwgd2Vi
a2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSwKICAgICAgICAgInVzZXItY29udGVu
dC1tYW5hZ2VyIiwgd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJW
aWV3KSwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdlYmtpdF93ZWJf
dmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCisgICAgICAgICJ3ZWJz
aXRlLXBvbGljaWVzIiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZp
ZXcpLAogICAgICAgICBOVUxMKSkpOwogICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyh3aW5kb3ct
PnVyaUVudHJ5KTsKICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShHVEtfTk9URUJP
T0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKQEAgLTU5OSw2ICs2MDEsNyBAQCBzdGF0aWMgdm9p
ZCBvcGVuUHJpdmF0ZVdpbmRvdyhHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJh
bWV0ZXIsIGdwb2ludAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtZXBo
ZW1lcmFsIiwgVFJVRSwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdl
YmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCisgICAg
ICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGlj
aWVzKHdlYlZpZXcpLAogICAgICAgICBOVUxMKSk7CiAgICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cg
PSBicm93c2VyX3dpbmRvd19uZXcoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aW5kb3ctPndlYkNvbnRl
eHQpOwogICAgIGd0a193aW5kb3dfc2V0X2FwcGxpY2F0aW9uKEdUS19XSU5ET1cobmV3V2luZG93
KSwgZ3RrX3dpbmRvd19nZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpKSk7CkBAIC0x
MjU2LDYgKzEyNTksNyBAQCBXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19nZXRfb3JfY3Jl
YXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKEJyb3dzZXJXaW5kbwogICAgICAgICAic2V0dGlu
Z3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNl
ci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5h
Z2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgVFJV
RSwKKyAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNp
dGVfcG9saWNpZXMod2ViVmlldyksCiAgICAgICAgIE5VTEwpKTsKICAgICBHdGtXaWRnZXQgKm5l
d1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhHVEtfV0lORE9XKHdpbmRvdyksIHdpbmRvdy0+
d2ViQ29udGV4dCk7CiAgICAgZ3RrX3dpbmRvd19zZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyhu
ZXdXaW5kb3cpLCBndGtfd2luZG93X2dldF9hcHBsaWNhdGlvbihHVEtfV0lORE9XKHdpbmRvdykp
KTsKQEAgLTEyNzcsNiArMTI4MSw3IEBAIFdlYktpdFdlYlZpZXcgKmJyb3dzZXJfd2luZG93X2Ny
ZWF0ZV93ZWJfdmlld19pbl9uZXdfdGFiX2Zvcl9hdXRvbWF0aW9uKEJyb3dzZXJXCiAgICAgICAg
ICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50
X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24i
LCBUUlVFLAogICAgICAgICAiYXV0b21hdGlvbi1wcmVzZW50YXRpb24tdHlwZSIsIFdFQktJVF9B
VVRPTUFUSU9OX0JST1dTSU5HX0NPTlRFWFRfUFJFU0VOVEFUSU9OX1RBQiwKKyAgICAgICAgIndl
YnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2Vi
VmlldyksCiAgICAgICAgIE5VTEwpKTsKICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRfdmlldyh3
aW5kb3csIG5ld1dlYlZpZXcpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaShuZXdXZWJW
aWV3LCAiYWJvdXQ6YmxhbmsiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9t
YWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4IDBiMjM2NjIwZDljNzBi
NGI5NGUyODBjYTUwODExM2M4NTdkNzU4MzIuLmQ3M2FjMGRkYWI2NzA3NWFhYTY3MmI3Y2E4MDdj
ZTJjMTQyNDQxNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwpAQCAtNzYsMTMgKzc2LDE0IEBAIHN0YXRp
YyBnY2hhciAqYXJndW1lbnRUb1VSTChjb25zdCBjaGFyICpmaWxlbmFtZSkKICAgICByZXR1cm4g
ZmlsZVVSTDsKIH0KIAotc3RhdGljIFdlYktpdFdlYlZpZXcgKmNyZWF0ZUJyb3dzZXJUYWIoQnJv
d3NlcldpbmRvdyAqd2luZG93LCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MsIFdlYktp
dFVzZXJDb250ZW50TWFuYWdlciAqdXNlckNvbnRlbnRNYW5hZ2VyKQorc3RhdGljIFdlYktpdFdl
YlZpZXcgKmNyZWF0ZUJyb3dzZXJUYWIoQnJvd3NlcldpbmRvdyAqd2luZG93LCBXZWJLaXRTZXR0
aW5ncyAqd2Via2l0U2V0dGluZ3MsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqdXNlckNvbnRl
bnRNYW5hZ2VyLCBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKmRlZmF1bHRXZWJzaXRlUG9saWNpZXMp
CiB7CiAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCiAgICAgICAgICJ3ZWItY29udGV4dCIsIGJyb3dz
ZXJfd2luZG93X2dldF93ZWJfY29udGV4dCh3aW5kb3cpLAogICAgICAgICAic2V0dGluZ3MiLCB3
ZWJraXRTZXR0aW5ncywKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNlckNvbnRl
bnRNYW5hZ2VyLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgYXV0b21h
dGlvbk1vZGUsCisgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgZGVmYXVsdFdlYnNpdGVQb2xp
Y2llcywKICAgICAgICAgTlVMTCkpOwogCiAgICAgaWYgKGVkaXRvck1vZGUpCkBAIC01NjgsNiAr
NTY5LDEwIEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlKEdBcHBsaWNhdGlvbiAqYXBwbGljYXRpb24s
IFdlYktpdFNldHRpbmdzICp3ZWJraXRTZXR0aW5ncykKICAgICB3ZWJraXRfdXNlcl9jb250ZW50
X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcih1c2VyQ29udGVudE1hbmFn
ZXIsICJhYm91dERhdGEiKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHVzZXJDb250ZW50TWFuYWdl
ciwgInNjcmlwdC1tZXNzYWdlLXJlY2VpdmVkOjphYm91dERhdGEiLCBHX0NBTExCQUNLKGFib3V0
RGF0YVNjcmlwdE1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKSwgd2ViQ29udGV4dCk7CiAKKyAgICBX
ZWJLaXRXZWJzaXRlUG9saWNpZXMgKmRlZmF1bHRXZWJzaXRlUG9saWNpZXMgPSB3ZWJraXRfd2Vi
c2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcygKKyAgICAgICAgImF1dG9wbGF5LXBvbGlj
eSIsIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5ELAorICAgICAgICBOVUxMKTsK
KwogICAgIGlmIChjb250ZW50RmlsdGVyKSB7CiAgICAgICAgIEdGaWxlICpjb250ZW50RmlsdGVy
RmlsZSA9IGdfZmlsZV9uZXdfZm9yX2NvbW1hbmRsaW5lX2FyZyhjb250ZW50RmlsdGVyKTsKIApA
QCAtNjEzLDcgKzYxOCw3IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlKEdBcHBsaWNhdGlvbiAqYXBw
bGljYXRpb24sIFdlYktpdFNldHRpbmdzICp3ZWJraXRTZXR0aW5ncykKICAgICAgICAgaW50IGk7
CiAKICAgICAgICAgZm9yIChpID0gMDsgdXJpQXJndW1lbnRzW2ldOyBpKyspIHsKLSAgICAgICAg
ICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBjcmVhdGVCcm93c2VyVGFiKG1haW5XaW5kb3cs
IHdlYmtpdFNldHRpbmdzLCB1c2VyQ29udGVudE1hbmFnZXIpOworICAgICAgICAgICAgV2ViS2l0
V2ViVmlldyAqd2ViVmlldyA9IGNyZWF0ZUJyb3dzZXJUYWIobWFpbldpbmRvdywgd2Via2l0U2V0
dGluZ3MsIHVzZXJDb250ZW50TWFuYWdlciwgZGVmYXVsdFdlYnNpdGVQb2xpY2llcyk7CiAgICAg
ICAgICAgICBpZiAoIWkpCiAgICAgICAgICAgICAgICAgZmlyc3RUYWIgPSBHVEtfV0lER0VUKHdl
YlZpZXcpOwogICAgICAgICAgICAgZ2NoYXIgKnVybCA9IGFyZ3VtZW50VG9VUkwodXJpQXJndW1l
bnRzW2ldKTsKQEAgLTYyMSw3ICs2MjYsNyBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZShHQXBwbGlj
YXRpb24gKmFwcGxpY2F0aW9uLCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MpCiAgICAg
ICAgICAgICBnX2ZyZWUodXJsKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIFdl
YktpdFdlYlZpZXcgKndlYlZpZXcgPSBjcmVhdGVCcm93c2VyVGFiKG1haW5XaW5kb3csIHdlYmtp
dFNldHRpbmdzLCB1c2VyQ29udGVudE1hbmFnZXIpOworICAgICAgICBXZWJLaXRXZWJWaWV3ICp3
ZWJWaWV3ID0gY3JlYXRlQnJvd3NlclRhYihtYWluV2luZG93LCB3ZWJraXRTZXR0aW5ncywgdXNl
ckNvbnRlbnRNYW5hZ2VyLCBkZWZhdWx0V2Vic2l0ZVBvbGljaWVzKTsKICAgICAgICAgZmlyc3RU
YWIgPSBHVEtfV0lER0VUKHdlYlZpZXcpOwogCiAgICAgICAgIGlmICghZWRpdG9yTW9kZSkgewpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJL
aXRQb2xpY3lDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCmluZGV4IDc2OWJjYzg5MTZiYjliMWMxYWZlMjlk
NmJjMjA5ZGQ0MzI4MDE2YTYuLjA2OTU1OTQ4ZjBjODUxODhmMjkzYjdlMjQ5N2EwY2M1YjI1ZWI1
ZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0UG9saWN5Q2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKIAog
I2luY2x1ZGUgIkxvYWRUcmFja2luZ1Rlc3QuaCIKICNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVy
LmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtMzIsMTkg
KzMzLDIxIEBAIHB1YmxpYzoKIAogICAgIGVudW0gUG9saWN5RGVjaXNpb25SZXNwb25zZSB7CiAg
ICAgICAgIFVzZSwKKyAgICAgICAgVXNlV2l0aFBvbGljeSwKICAgICAgICAgSWdub3JlLAogICAg
ICAgICBEb3dubG9hZCwKICAgICAgICAgTm9uZQogICAgIH07CiAKLSAgICBQb2xpY3lDbGllbnRU
ZXN0KCkKLSAgICAgICAgOiBMb2FkVHJhY2tpbmdUZXN0KCkKLSAgICAgICAgLCBtX3BvbGljeURl
Y2lzaW9uUmVzcG9uc2UoTm9uZSkKLSAgICAgICAgLCBtX3BvbGljeURlY2lzaW9uVHlwZUZpbHRl
cigwKQotICAgICAgICAsIG1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseShm
YWxzZSkKLSAgICAgICAgLCBtX2hhbHRNYWluTG9vcEFmdGVyTWFraW5nRGVjaXNpb24oZmFsc2Up
CisgICAgc3RhdGljIHZvaWQgdGVzdEhhbmRsZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayhXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIqIHVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCwgUG9saWN5Q2xpZW50VGVzdCogdGVzdCkKICAgICB7
Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiZGVjaWRlLXBvbGljeSIsIEdf
Q0FMTEJBQ0soZGVjaWRlUG9saWN5Q2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgR1VuaXF1ZVB0
cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmlu
ZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgICAgIGlmIChnX3N0cl9lcXVhbCh2YWx1ZVN0cmlu
Zy5nZXQoKSwgImF1dG9wbGF5ZWQiKSkKKyAgICAgICAgICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9
IHRydWU7CisgICAgICAgIGVsc2UgaWYgKGdfc3RyX2VxdWFsKHZhbHVlU3RyaW5nLmdldCgpLCAi
ZGlkLW5vdC1wbGF5IikpCisgICAgICAgICAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBmYWxzZTsK
KworICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwogICAgIH0KIAog
ICAgIHN0YXRpYyBnYm9vbGVhbiBxdWl0TWFpbkxvb3BMYXRlcihHTWFpbkxvb3AqIGxvb3ApCkBA
IC01OSw2ICs2Miw5IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2U6CiAgICAgICAgICAgICB3
ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZShkZWNpc2lvbik7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBVc2VXaXRoUG9saWN5OgorICAgICAgICAgICAgd2Via2l0X3BvbGljeV9k
ZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcyhkZWNpc2lvbiwgdGVzdC0+bV93ZWJzaXRlUG9saWNp
ZXMuZ2V0KCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSWdub3JlOgogICAg
ICAgICAgICAgd2Via2l0X3BvbGljeV9kZWNpc2lvbl9pZ25vcmUoZGVjaXNpb24pOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC05OCwxMSArMTA0LDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IEZBTFNFOwogICAgIH0KIAotICAgIFBvbGljeURlY2lzaW9uUmVzcG9uc2UgbV9wb2xpY3lEZWNp
c2lvblJlc3BvbnNlOwotICAgIGludCBtX3BvbGljeURlY2lzaW9uVHlwZUZpbHRlcjsKLSAgICBi
b29sIG1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseTsKLSAgICBib29sIG1f
aGFsdE1haW5Mb29wQWZ0ZXJNYWtpbmdEZWNpc2lvbjsKKyAgICBQb2xpY3lDbGllbnRUZXN0KCkK
KyAgICAgICAgOiBMb2FkVHJhY2tpbmdUZXN0KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV93ZWJWaWV3LCAiZGVjaWRlLXBvbGljeSIsIEdfQ0FMTEJBQ0soZGVjaWRlUG9saWN5
Q2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3Jl
Z2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIobV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCks
ICJ0ZXN0SGFuZGxlciIpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fdXNlckNvbnRlbnRN
YW5hZ2VyLmdldCgpLCAic2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OnRlc3RIYW5kbGVyIiwgR19D
QUxMQkFDSyh0ZXN0SGFuZGxlck1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKSwgdGhpcyk7CisgICAg
fQorCisgICAgYm9vbCBkaWRBdXRvcGxheSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9hdXRv
cGxheWVkICYmICptX2F1dG9wbGF5ZWQ7CisgICAgfQorCisgICAgUG9saWN5RGVjaXNpb25SZXNw
b25zZSBtX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgeyBOb25lIH07CisgICAgaW50IG1fcG9saWN5
RGVjaXNpb25UeXBlRmlsdGVyIHsgMCB9OworICAgIGJvb2wgbV9yZXNwb25kVG9Qb2xpY3lEZWNp
c2lvbkFzeW5jaHJvbm91c2x5IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFsdE1haW5Mb29wQWZ0
ZXJNYWtpbmdEZWNpc2lvbiB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9hdXRvcGxh
eWVkOwogICAgIEdSZWZQdHI8V2ViS2l0UG9saWN5RGVjaXNpb24+IG1fcHJldmlvdXNQb2xpY3lE
ZWNpc2lvbjsKKyAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVQb2xpY2llcz4gbV93ZWJzaXRlUG9s
aWNpZXM7CiB9OwogCiBzdGF0aWMgdm9pZCB0ZXN0TmF2aWdhdGlvblBvbGljeShQb2xpY3lDbGll
bnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMjY5LDYgKzI5MCwxMjIgQEAgc3RhdGlj
IHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVz
c2FnZSwgY29uc3QgY2hhcioKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2Fn
ZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdEF1dG9wbGF5
UG9saWN5KFBvbGljeUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisjaWYgUExB
VEZPUk0oR1RLKQorICAgIC8vIFRoZSB3ZWIgdmlldyBtdXN0IGJlIHJlYWxpemVkIGZvciB0aGUg
dmlkZW8gdG8gc3RhcnQgcGxheWJhY2suCisgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVu
dGlsTWFwcGVkKEdUS19XSU5ET1dfVE9QTEVWRUwpOworI2VuZGlmCisKKyAgICB0ZXN0LT5tX3Bv
bGljeURlY2lzaW9uVHlwZUZpbHRlciA9IFdFQktJVF9QT0xJQ1lfREVDSVNJT05fVFlQRV9OQVZJ
R0FUSU9OX0FDVElPTjsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xp
Y3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVz
ID0gd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMoImF1dG9wbGF5LXBv
bGljeSIsIFdFQktJVF9BVVRPUExBWV9ERU5ZLCBudWxscHRyKTsKKworICAgIGNvbnN0IGNoYXIq
IHJlc291cmNlTmFtZSA9ICJhdXRvcGxheS1jaGVjay5odG1sIjsKKyAgICBHVW5pcXVlUHRyPGNo
YXI+IHJlc291cmNlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFJlc291cmNlc0RpcihU
ZXN0OjpXZWJLaXQyUmVzb3VyY2VzKS5kYXRhKCksIHJlc291cmNlTmFtZSwgbnVsbHB0cikpOwor
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VVUkwoZ19maWxlbmFtZV90b191cmkocmVzb3Vy
Y2VQYXRoLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisKKyAgICAvLyBUZXN0IHdpdGggREVO
WSBwb2xpY3kKKyAgICB0ZXN0LT5sb2FkVVJJKHJlc291cmNlVVJMLmdldCgpKTsKKyAgICAvLyBS
dW4gdW50aWwgdGhlIHVzZXIgY29udGVudCBtZXNzYWdlcyBjb21lIGJhY2sgZnJvbSBhdXRvcGxh
eS1jaGVjay5odG1sCisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAg
IGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworCisgICAgLy8gQXN5bmMgdGVz
dAorICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3Bv
bGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5Owor
ICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IHRydWU7
CisgICAgdGVzdC0+bG9hZFVSSShyZXNvdXJjZVVSTC5nZXQoKSk7CisgICAgLy8gUnVuIHVudGls
IHRoZSB1c2VyIGNvbnRlbnQgbWVzc2FnZXMgY29tZSBiYWNrIGZyb20gYXV0b3BsYXktY2hlY2su
aHRtbAorICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2Vy
dF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIFRlc3Qgd2l0aCBBTExPVyBw
b2xpY3kKKyAgICB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlfcG9saWN5KHRl
c3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1cpOworICAg
IHRlc3QtPm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURl
Y2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRl
c3QtPm1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IGZhbHNlOworCisg
ICAgdGVzdC0+bG9hZFVSSShyZXNvdXJjZVVSTC5nZXQoKSk7CisgICAgZ19tYWluX2xvb3BfcnVu
KHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+ZGlkQXV0b3BsYXko
KSk7CisKKyAgICAvLyBUZXN0IHdpdGggQUxMT1dfV0lUSE9VVF9TT1VORCBwb2xpY3kKKyAgICB3
ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlfcG9saWN5KHRlc3QtPm1fd2Vic2l0
ZVBvbGljaWVzLmdldCgpLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCk7Cisg
ICAgdGVzdC0+bV9hdXRvcGxheWVkID0gV1RGOjpudWxsb3B0OworICAgIHRlc3QtPm1fcG9saWN5
RGVjaXNpb25SZXNwb25zZSA9IFBvbGljeUNsaWVudFRlc3Q6OlVzZVdpdGhQb2xpY3k7CisgICAg
dGVzdC0+bV9yZXNwb25kVG9Qb2xpY3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5ID0gZmFsc2U7CisK
KyAgICB0ZXN0LT5sb2FkVVJJKHJlc291cmNlVVJMLmdldCgpKTsKKyAgICBnX21haW5fbG9vcF9y
dW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+ZGlkQXV0b3Bs
YXkoKSk7CisKKyAgICAvLyBOb3cgY2hlY2sgZHluYW1pY2FsbHkgdXBkYXRpbmcgdGhlIGxvYWRl
ciBwb2xpY2llcworICAgIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX3NldF9hdXRvcGxheV9wb2xp
Y3kodGVzdC0+bV93ZWJzaXRlUG9saWNpZXMuZ2V0KCksIFdFQktJVF9BVVRPUExBWV9ERU5ZKTsK
KyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xp
Y3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAg
ICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsK
KworICAgIHRlc3QtPmxvYWRVUkkocmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIGdfbWFpbl9sb29w
X3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRv
cGxheSgpKTsKKworICAgIC8vIENoZWNrIHRoYXQgSlMgY2FuIG5vdCBzaWRlLXN0ZXAgdGhlIGFj
dGl2ZSBwb2xpY3kKKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAg
dGVzdC0+cnVuSmF2YVNjcmlwdFdpdGhvdXRGb3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0VW50aWxG
aW5pc2hlZCgicGxheVZpZGVvKCk7IiwgbnVsbHB0cik7CisgICAgLy8gU3BpbiB1bnRpbCBhdXRv
cGxheSBzdGF0dXMgaXMgcmVwb3J0ZWQsIHRoZSBydW4gSlMgQVBJIGNhbgorICAgIC8vIGNvbXBs
ZXRlIGl0cyBtYWluIGxvb3AgYmVmb3JlIHRoZSBwcm9taXNlcyBpbiBhdXRvcGxheS1jaGVjayBm
aXJlLgorICAgIHdoaWxlICghdGVzdC0+bV9hdXRvcGxheWVkLmhhc1ZhbHVlKCkpCisgICAgICAg
IGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0
ZXN0LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIE5vdyB1cGRhdGUgdGhlIHBvbGljeSB0byBh
bGxvdyBhdXRvcGxheSwgYW5kIHVzZSBKUyB0byByZXN1bWUgdGhlIHZpZGVvLgorICAgIHRlc3Qt
Pm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB3ZWJraXRfd2Vic2l0ZV9wb2xpY2ll
c19zZXRfYXV0b3BsYXlfcG9saWN5KHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpLCBXRUJL
SVRfQVVUT1BMQVlfQUxMT1cpOworICAgIHdlYmtpdF93ZWJfdmlld191cGRhdGVfd2Vic2l0ZV9w
b2xpY2llcyh0ZXN0LT5tX3dlYlZpZXcsIHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsK
KyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoInBsYXlWaWRlbygp
OyIsIG51bGxwdHIpOworICAgIC8vIFNwaW4gdW50aWwgYXV0b3BsYXkgc3RhdHVzIGlzIHJlcG9y
dGVkLCB0aGUgcnVuIEpTIEFQSSBjYW4KKyAgICAvLyBjb21wbGV0ZSBpdHMgbWFpbiBsb29wIGJl
Zm9yZSB0aGUgcHJvbWlzZXMgaW4gYXV0b3BsYXktY2hlY2sgZmlyZS4KKyAgICB3aGlsZSAoIXRl
c3QtPm1fYXV0b3BsYXllZC5oYXNWYWx1ZSgpKQorICAgICAgICBnX21haW5fbG9vcF9ydW4odGVz
dC0+bV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsK
KworICAgIC8vIFNpbGVudCBhdWRpbyB0cmFjayB0ZXN0cworICAgIHJlc291cmNlTmFtZSA9ICJh
dXRvcGxheS1uby1hdWRpby1jaGVjay5odG1sIjsKKyAgICByZXNvdXJjZVBhdGgucmVzZXQoZ19i
dWlsZF9maWxlbmFtZShUZXN0OjpnZXRSZXNvdXJjZXNEaXIoVGVzdDo6V2ViS2l0MlJlc291cmNl
cykuZGF0YSgpLCByZXNvdXJjZU5hbWUsIG51bGxwdHIpKTsKKyAgICByZXNvdXJjZVVSTC5yZXNl
dChnX2ZpbGVuYW1lX3RvX3VyaShyZXNvdXJjZVBhdGguZ2V0KCksIG51bGxwdHIsIG51bGxwdHIp
KTsKKworICAgIC8vIERFTlkgcG9saWN5CisgICAgd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfc2V0
X2F1dG9wbGF5X3BvbGljeSh0ZXN0LT5tX3dlYnNpdGVQb2xpY2llcy5nZXQoKSwgV0VCS0lUX0FV
VE9QTEFZX0RFTlkpOworICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAg
ICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2VX
aXRoUG9saWN5OworICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25v
dXNseSA9IGZhbHNlOworCisgICAgdGVzdC0+bG9hZFVSSShyZXNvdXJjZVVSTC5nZXQoKSk7Cisg
ICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X2ZhbHNl
KHRlc3QtPmRpZEF1dG9wbGF5KCkpOworCisgICAgLy8gQUxMT1cKKyAgICB3ZWJraXRfd2Vic2l0
ZV9wb2xpY2llc19zZXRfYXV0b3BsYXlfcG9saWN5KHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdl
dCgpLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1cpOworICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IFdU
Rjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lD
bGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9saWN5RGVj
aXNpb25Bc3luY2hyb25vdXNseSA9IGZhbHNlOworCisgICAgdGVzdC0+bG9hZFVSSShyZXNvdXJj
ZVVSTC5nZXQoKSk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAg
IGdfYXNzZXJ0X3RydWUodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBBTExPV19XSVRI
T1VUX1NPVU5ECisgICAgd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfc2V0X2F1dG9wbGF5X3BvbGlj
eSh0ZXN0LT5tX3dlYnNpdGVQb2xpY2llcy5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJ
VEhPVVRfU09VTkQpOworICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAg
ICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2VX
aXRoUG9saWN5OworICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25v
dXNseSA9IGZhbHNlOworCisgICAgdGVzdC0+bG9hZFVSSShyZXNvdXJjZVVSTC5nZXQoKSk7Cisg
ICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X3RydWUo
dGVzdC0+ZGlkQXV0b3BsYXkoKSk7Cit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBrU2Vy
dmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKQEAgLTI3Niw2ICs0MTMsOSBAQCB2b2lkIGJl
Zm9yZUFsbCgpCiAKICAgICBQb2xpY3lDbGllbnRUZXN0OjphZGQoIldlYktpdFBvbGljeUNsaWVu
dCIsICJuYXZpZ2F0aW9uLXBvbGljeSIsIHRlc3ROYXZpZ2F0aW9uUG9saWN5KTsKICAgICBQb2xp
Y3lDbGllbnRUZXN0OjphZGQoIldlYktpdFBvbGljeUNsaWVudCIsICJyZXNwb25zZS1wb2xpY3ki
LCB0ZXN0UmVzcG9uc2VQb2xpY3kpOworICAgIFBvbGljeUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0
UG9saWN5Q2xpZW50IiwgImF1dG9wbGF5LXBvbGljeSIsIHRlc3RBdXRvcGxheVBvbGljeSk7Cisg
ICAgLy8gV0FSTklORzogVGhpcyB0ZXN0IG11c3QgY29tZSBsYXN0LCBpdCB1c2VzIHJhY2V5IGNv
bnN0cnVjdHMgdGhhdAorICAgIC8vIGludGVyZmVyZSBub25kZXRlcm1pbmlzaWNhbGx5IHdpdGgg
YW55IHRlc3QgcnVubmluZyBhZnRlciBpdC4KICAgICBQb2xpY3lDbGllbnRUZXN0OjphZGQoIldl
YktpdFBvbGljeUNsaWVudCIsICJuZXctd2luZG93LXBvbGljeSIsIHRlc3ROZXdXaW5kb3dQb2xp
Y3kpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9XZWJWaWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9X
ZWJWaWV3VGVzdC5jcHAKaW5kZXggOGUzZjM0OGQ4YWI1MTRkNDc4M2VjYjFhYWVhM2JiZDIzMDI3
YTliZS4uN2FmMDVmMmVmYjJmNmFhYTQ2ZDJhNDBlOWVmNmFlYTViYThlNTUxZSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApA
QCAtMjkzLDYgKzI5MywxOCBAQCBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBXZWJWaWV3VGVzdDo6
cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYQogICAgIHJldHVybiBt
X2phdmFzY3JpcHRSZXN1bHQ7CiB9CiAKK1dlYktpdEphdmFzY3JpcHRSZXN1bHQqIFdlYlZpZXdU
ZXN0OjpydW5KYXZhU2NyaXB0V2l0aG91dEZvcmNlZFVzZXJHZXN0dXJlc0FuZFdhaXRVbnRpbEZp
bmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqIGVycm9yKQoreworICAgIGlm
IChtX2phdmFzY3JpcHRSZXN1bHQpCisgICAgICAgIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91
bnJlZihtX2phdmFzY3JpcHRSZXN1bHQpOworICAgIG1famF2YXNjcmlwdFJlc3VsdCA9IDA7Cisg
ICAgbV9qYXZhc2NyaXB0RXJyb3IgPSBlcnJvcjsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfd2l0aG91dF9mb3JjZWRfdXNlcl9nZXN0dXJlcyhtX3dlYlZpZXcsIGphdmFzY3Jp
cHQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ocnVuSmF2YVNjcmlw
dFJlYWR5Q2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7
CisKKyAgICByZXR1cm4gbV9qYXZhc2NyaXB0UmVzdWx0OworfQorCiBXZWJLaXRKYXZhc2NyaXB0
UmVzdWx0KiBXZWJWaWV3VGVzdDo6cnVuSmF2YVNjcmlwdEZyb21HUmVzb3VyY2VBbmRXYWl0VW50
aWxGaW5pc2hlZChjb25zdCBjaGFyKiByZXNvdXJjZSwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAg
aWYgKG1famF2YXNjcmlwdFJlc3VsdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCmluZGV4IGMzZmRkOTgyNTg5MTFiNWVjYmYzMTBjOWFl
Y2U0YmM4NTNhY2Y1MGIuLmRkOWQyMDQwY2Q0MWM3MjE3YzgwMjhhZjBjY2IyYmE5MzM5Nzg5M2Eg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdU
ZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rl
c3QuaApAQCAtNzYsNiArNzYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFy
KiBqYXZhc2NyaXB0LCBHRXJyb3IqKik7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVu
SmF2YVNjcmlwdFdpdGhvdXRGb3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0VW50aWxGaW5pc2hlZChj
b25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKik7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdCogcnVuSmF2YVNjcmlwdEZyb21HUmVzb3VyY2VBbmRXYWl0VW50aWxGaW5pc2hlZChjb25z
dCBjaGFyKiByZXNvdXJjZSwgR0Vycm9yKiopOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQq
IHJ1bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2
YXNjcmlwdCwgY29uc3QgY2hhciogd29ybGQsIEdFcnJvcioqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401723</attachid>
            <date>2020-06-12 06:30:06 -0700</date>
            <delta_ts>2020-06-12 08:19:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20200612143005.patch</filename>
            <type>text/plain</type>
            <size>58563</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhhYTRmZTdmNzIzYjk4YTVl
MTJjYTA5NDIwY2RlMTg3NTAxNTcyZDMuLjJjNTUwZGMxZWY5NDUxMDIxOGUyMDA2NjBhODdjMWYy
YTFmMGZkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjAtMDYtMTIgIENoYXJsaWUg
VHVybmVyICA8Y3R1cm5lckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIERpc2FibGUgdmlk
ZW8gYXV0b3BsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDg0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFkZCBuZXcgc291cmNlIGZpbGVzIHRvIHRoZSBidWls
ZC4KKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZTogRGl0dG8uCisgICAgICAgICogU291cmNl
c0dUSy50eHQ6IERpdHRvLgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwOgorICAgICAg
ICAod2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcyk6IDogQWRkIGFuIEFQ
SSB0bworICAgICAgICByZXNwb25kIHRvIG5hdmlnYXRpb24gZGVjaXNpb25zIHdpdGggcG9saWNp
ZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgor
ICAgICAgICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KTogUGx1bWIgaW4g
dGhlIGRlZmF1bHQKKyAgICAgICAgd2Vic2l0ZSBwb2xpY2llcyB0aGF0IGFyZSBhc3NvY2lhdGVk
IHdpdGggdGhlIHdlYiB2aWV3LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6CisgICAgICAg
ICh3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2ViVmlld0dldFBy
b3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llcy5jcHA6IEFkZGVkLgorICAgICAgICAo
X1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGU6Ol9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2
YXRlKToKKyAgICAgICAgKHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFdlYnNpdGVQb2xpY2llcyk6
CisgICAgICAgICh3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRQb2xpY2llc0RhdGEpOgorICAgICAg
ICAod2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2Vi
c2l0ZVBvbGljaWVzU2V0QXV0b3BsYXlQb2xpY3kpOgorICAgICAgICAod2Via2l0V2Vic2l0ZVBv
bGljaWVzU2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfY2xh
c3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcpOgorICAgICAg
ICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMpOgorICAgICAgICAo
d2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisKIDIwMjAtMDYtMTIgIENoYXJsaWUgVHVybmVy
ICA8Y3R1cm5lckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBhbiBpbnRlcm5hbCBB
UEkgdG8gcnVuIGphdmFzY3JpcHQgd2l0aG91dCBmb3JjZWQgdXNlciBnZXN0dXJlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1HVEsuY21ha2UKaW5kZXggYjk0NTIyYzhmY2EwYWY4ODZmZWZkMmNlNGM5ODJlNDA3NzE1
ZDU2Yi4uZmQ5NDNmZjVhNWZlYTA2OTVjNDRkYmY5OGRkZmFkMDQwZjNlYzIyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0xNDAsNiArMTQwLDcgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFM
TEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVEYXRhLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyLmgKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggODMyMGUz
MTBlNmM0NjY5MjRhMDgzZWU0NmFlMzFmNTQ4NjQyMGZjZC4uOWY3NzAyNWE5YjVmOTE2ZjM3ZDQy
MGFkNDhjYTM0OTIyMWFjYzRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQ
RS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNTIsNiAr
MTUyLDcgQEAgc2V0KFdQRV9BUElfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhLmgKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oCiAgICAgJHtXRUJL
SVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmgKKyAgICAk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oCiAg
ICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAogKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
R1RLLnR4dAppbmRleCAyZDVhYWM5NTNhYmVmMjNlYTVkMDIzM2FkMGE1YmU5YWE1OTg1YjhlLi4x
Y2YyNzdjOTU1OTJiMTczODE5ZTk0MmE3OTllNzZhOGQxMDFkODg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50
eHQKQEAgLTE5Miw2ICsxOTIsNyBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1Nl
c3Npb25TdGF0ZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZURhdGEuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2luZG93UHJv
cGVydGllcy5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBv
bGljaWVzLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMu
Y3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwIEBuby11
bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc1dQRS50eHQKaW5kZXggOGI5MzRlODFlNzQ4OTBlYmE2NzRmNWZhYWE2YTVh
ZGUwZjYwNWMxMS4uNDEzMzkxZWUyZmNhNjMwMjU5YTg2MWM0OTgzZDE5OTMyMDE0MmM2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNXUEUudHh0CkBAIC0xODAsNiArMTgwLDcgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVEYXRhLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdpbmRvd1Byb3BlcnRpZXMuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYnNpdGVQb2xpY2llcy5jcHAgQG5vLXVuaWZ5CiAKIFVJUHJvY2Vzcy9BUEkvd3BlL0lu
cHV0TWV0aG9kRmlsdGVyV1BFLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VD
bGllbnRJbXBsLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcAppbmRleCBhMzU3NDc5M2M2
OWVkMDc2ODNhNjAzZTYyOWY0MDkxMWY3NWJjYTNhLi43MmFhYTQwN2YyNjVlOWU1MzkxYzU5Yjk4
YjUwZjU0MTlkZTI3NmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRQb2xpY3lEZWNpc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwCkBAIC0yMCw4ICsyMCwxMSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFBvbGljeURlY2lzaW9uLmgiCiAK
KyNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUu
aCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJzaXRlUG9saWNpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAKQEAgLTg0LDYgKzg3LDM0IEBAIHZv
aWQgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UoV2ViS2l0UG9saWN5RGVjaXNpb24qIGRlY2lz
aW9uKQogICAgIGxpc3RlbmVyLT51c2UoKTsKIH0KIAorLyoqCisgKiB3ZWJraXRfcG9saWN5X2Rl
Y2lzaW9uX3VzZV93aXRoX3BvbGljaWVzOgorICogQGRlY2lzaW9uOiBhICNXZWJLaXRQb2xpY3lE
ZWNpc2lvbgorICogQHBvbGljaWVzOiBhICNXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAqCisgKiBB
Y2NlcHQgdGhlIGFjdGlvbiB3aGljaCB0cmlnZ2VyZWQgdGhpcyBkZWNpc2lvbiwgYW5kIGNvbnRp
bnVlIHdpdGgKKyAqIEBwb2xpY2llcyBhZmZlY3RpbmcgYWxsIHN1YnNlcXVlbnQgbG9hZHMgb2Yg
cmVzb3VyY2VzIGluIHRoZQorICogY3VycmVudCBvcmlnaW4uCisgKgorICogRm9yIGV4YW1wbGUs
IGEgbmF2aWdhdGlvbiBkZWNpc2lvbiB0byBhIHZpZGVvIHNoYXJpbmcgd2Vic2l0ZSBtYXkKKyAq
IGJlIGFjY2VwdGVkIHVuZGVyIHRoZSBwcml2aXNvIG5vIG1vdmllcyBhcmUgYWxsb3dlZCB0byBh
dXRvcGxheS4gVGhlCisgKiBhdXRvcGxheSBwb2xpY3kgaW4gdGhpcyBjYXNlIHdvdWxkIGJlIHNl
dCBpbiB0aGUgQHBvbGljaWVzLgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK3ZvaWQgd2Via2l0
X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcyhXZWJLaXRQb2xpY3lEZWNpc2lvbiog
ZGVjaXNpb24sIFdlYktpdFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMpCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfUE9MSUNZX0RFQ0lTSU9OKGRlY2lzaW9uKSk7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFUyhwb2xpY2llcykpOworCisg
ICAgaWYgKCFkZWNpc2lvbi0+cHJpdi0+bGlzdGVuZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gbGlzdGVuZXIgPSBzdGQ6OmV4Y2hhbmdlKGRlY2lzaW9uLT5wcml2LT5saXN0ZW5lciwg
bnVsbHB0cik7CisKKyAgICBsaXN0ZW5lci0+dXNlKHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFdl
YnNpdGVQb2xpY2llcyhwb2xpY2llcykpOworfQorCiAvKioKICAqIHdlYmtpdF9wb2xpY3lfZGVj
aXNpb25faWdub3JlOgogICogQGRlY2lzaW9uOiBhICNXZWJLaXRQb2xpY3lEZWNpc2lvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0
LmNwcAppbmRleCAwNDFiZmI1NDVjNmFmNjIyMGE4MjY2ZDM1NmFjMTlkOTA3OTFjYjgzLi5jNGM3
ZDBmNmMxMjYxYjUxZDAyMDcxYTY1MmFhMDkzZDFhYTNiOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNTMs
NiArNTMsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKQEAg
LTE4OTcsNyArMTg5OCw3IEBAIFdlYlByb2Nlc3NQb29sJiB3ZWJraXRXZWJDb250ZXh0R2V0UHJv
Y2Vzc1Bvb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKICAgICByZXR1cm4gKmNvbnRleHQt
PnByaXYtPnByb2Nlc3NQb29sOwogfQogCi12b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdl
Rm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIHVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0
V2ViVmlldyogcmVsYXRlZFZpZXcpCit2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9y
V2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIHVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0V2Vi
VmlldyogcmVsYXRlZFZpZXcsIFdlYktpdFdlYnNpdGVQb2xpY2llcyogZGVmYXVsdFdlYnNpdGVQ
b2xpY2llcykKIHsKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29s
KGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLmdldCgpKTsKQEAgLTE5MTAsNiArMTkxMSw3IEBA
IHZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRl
eHQqIGNvbnRleHQsIFdlYktpdFdlYlZpCiAgICAgaWYgKCFtYW5hZ2VyKQogICAgICAgICBtYW5h
Z2VyID0gY29udGV4dC0+cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpOwogICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5zZXRXZWJzaXRlRGF0YVN0b3JlKCZ3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJHZXREYXRhU3RvcmUobWFuYWdlcikpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXREZWZh
dWx0V2Vic2l0ZVBvbGljaWVzKHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFdlYnNpdGVQb2xpY2ll
cyhkZWZhdWx0V2Vic2l0ZVBvbGljaWVzKSk7CiAgICAgd2Via2l0V2ViVmlld0NyZWF0ZVBhZ2Uo
d2ViVmlldywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgYXV0byYgcGFnZSA9
IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKaW5kZXgg
ZDg1NjljODU5YmFiZmUxMTY5YzY4MmViNjg2MzY2ZTNkMDY5YjlhZC4uNzhkMTU3OGY5NDc5M2U5
ZTU5YTNkNGQyYjMzZTc5ZWE4NTMwZmEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIldlYktpdFVz
ZXJDb250ZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKQEAgLTM2LDcgKzM3LDcg
QEAgV2ViS2l0RG93bmxvYWQqIHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKFdl
YktpdDo6RG93bmxvYWRQcm94eSopOwogV2ViS2l0RG93bmxvYWQqIHdlYmtpdFdlYkNvbnRleHRT
dGFydERvd25sb2FkKFdlYktpdFdlYkNvbnRleHQqLCBjb25zdCBjaGFyKiB1cmksIFdlYktpdDo6
V2ViUGFnZVByb3h5Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRSZW1vdmVEb3dubG9hZChXZWJL
aXQ6OkRvd25sb2FkUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dERvd25sb2FkU3RhcnRl
ZChXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0RG93bmxvYWQqKTsKLXZvaWQgd2Via2l0V2ViQ29u
dGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3
KiwgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiwgV2ViS2l0V2ViVmlldyopOwordm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktp
dFdlYlZpZXcqLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRXZWJWaWV3KiwgV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzKik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRXZWJWaWV3RGVzdHJv
eWVkKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3Kik7CiBXZWJLaXRXZWJWaWV3KiB3
ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UoV2ViS2l0V2ViQ29udGV4dCosIFdlYktp
dDo6V2ViUGFnZVByb3h5Kik7CiBHVmFyaWFudCogd2Via2l0V2ViQ29udGV4dEluaXRpYWxpemVX
ZWJFeHRlbnNpb25zKFdlYktpdFdlYkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNTBkZjNmNDQ4YTdkMzhl
MzI4MmU2NjI4MjQ5MGYxNzBmZWViYWFlZC4uMjQ3OWJjYjM5YTJhNGViZDViNWI5ZjhiZDgzMWMx
Njg5ZTUzMWQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJW
aWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGVQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oIgorI2luY2x1
ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXaW5k
b3dQcm9wZXJ0aWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KQEAgLTIwMSw3ICsyMDIsOCBAQCBlbnVt
IHsKICAgICBQUk9QX0FVVE9NQVRJT05fUFJFU0VOVEFUSU9OX1RZUEUsCiAgICAgUFJPUF9FRElU
QUJMRSwKICAgICBQUk9QX1BBR0VfSUQsCi0gICAgUFJPUF9JU19NVVRFRAorICAgIFBST1BfSVNf
TVVURUQsCisgICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTCiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8
dWludDY0X3QsIEdSZWZQdHI8V2ViS2l0V2ViUmVzb3VyY2U+ID4gTG9hZGluZ1Jlc291cmNlc01h
cDsKQEAgLTMwMyw2ICszMDUsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAg
ICBHUmVmUHRyPFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdD4gYXV0aGVudGljYXRpb25SZXF1
ZXN0OwogCiAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI+IHdlYnNpdGVEYXRh
TWFuYWdlcjsKKyAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVQb2xpY2llcz4gd2Vic2l0ZVBvbGlj
aWVzOwogfTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpA
QCAtNzU2LDcgKzc1OSwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQo
R09iamVjdCogb2JqZWN0KQogICAgICAgICB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJBZGRQcm9j
ZXNzUG9vbChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCksIHdlYmtpdFdlYkNvbnRleHRH
ZXRQcm9jZXNzUG9vbChwcml2LT5jb250ZXh0LmdldCgpKSk7CiAgICAgfQogCi0gICAgd2Via2l0
V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQuZ2V0KCksIHdlYlZp
ZXcsIHByaXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcpOwor
ICAgIGlmICghcHJpdi0+d2Vic2l0ZVBvbGljaWVzKQorICAgICAgICBwcml2LT53ZWJzaXRlUG9s
aWNpZXMgPSBhZG9wdEdSZWYod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3KCkpOworCisgICAg
d2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQuZ2V0KCks
IHdlYlZpZXcsIHByaXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZp
ZXcsIHByaXYtPndlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiAKICAgICBwcml2LT5sb2FkT2JzZXJ2
ZXIgPSBtYWtlVW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7CiAgICAgZ2V0
UGFnZSh3ZWJWaWV3KS5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKnByaXYtPmxvYWRPYnNl
cnZlcik7CkBAIC04MzksNiArODQ1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFBy
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUKICAgICBj
YXNlIFBST1BfSVNfTVVURUQ6CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfaXNfbXV0ZWQo
d2ViVmlldywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfV0VCU0lURV9QT0xJQ0lFUzoKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+d2Vi
c2l0ZVBvbGljaWVzID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZVBvbGljaWVzKj4oZ192YWx1
ZV9nZXRfb2JqZWN0KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFy
YW1TcGVjKTsKICAgICB9CkBAIC05MDQsNiArOTEzLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2Vi
Vmlld0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZh
bHUKICAgICBjYXNlIFBST1BfSVNfTVVURUQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4o
dmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfaXNfbXV0ZWQod2ViVmlldykpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfV0VCU0lURV9QT0xJQ0lFUzoKKyAgICAgICAgZ192YWx1ZV9z
ZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2Vi
VmlldykpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAg
fQpAQCAtMTI5MSw2ICsxMzAzLDIzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFz
c19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgRkFM
U0UsCiAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CiAKKyAgICAvKioKKyAg
ICAgKiBXZWJLaXRXZWJWaWV3OndlYnNpdGUtcG9saWNpZXM6CisgICAgICoKKyAgICAgKiBUaGUg
I1dlYktpdFdlYnNpdGVQb2xpY2llcyBmb3IgdGhlIHZpZXcuCisgICAgICoKKyAgICAgKiBTaW5j
ZTogMi4zMAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisg
ICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTLAorICAg
ICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAorICAgICAgICAgICAgIndlYnNpdGUtcG9saWNpZXMi
LAorICAgICAgICAgICAgXygiRGVmYXVsdCBXZWJzaXRlIFBvbGljaWVzIiksCisgICAgICAgICAg
ICBfKCJUaGUgZGVmYXVsdCBwb2xpY3kgb2JqZWN0IGZvciBzaXRlcyBsb2FkZWQgaW4gdGhpcyB2
aWV3IiksCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLAorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBH
X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmll
dzo6bG9hZC1jaGFuZ2VkOgogICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9u
IHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZApAQCAtNDYzNCwzICs0NjYzLDI2IEBAIFdlYktp
dElucHV0TWV0aG9kQ29udGV4dCogd2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9tZXRob2RfY29u
dGV4dChXZWJLaXRXZWJWaWV3CiAjZW5kaWYKIAogfQorCisKKy8qKgorICogd2Via2l0X3dlYl92
aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3
CisgKgorICogR2V0cyB0aGUgZGVmYXVsdCB3ZWJzaXRlIHBvbGljaWVzIHNldCBvbiBjb25zdHJ1
Y3Rpb24gaW4gdGhlCisgKiBAd2ViX3ZpZXcuIFRoZXNlIGNhbiBiZSBvdmVycmlkZGVuIG9uIGEg
cGVyLW9yaWdpbiBiYXNpcyB2aWEgdGhlCisgKiAjV2ViS2l0V2ViVmlldzo6ZGVjaWRlLXBvbGlj
eSBzaWduYWwgaGFuZGxlci4KKyAqCisgKiBTZWUgYWxzbyB3ZWJraXRfcG9saWN5X2RlY2lzaW9u
X3VzZV93aXRoX3BvbGljaWVzKCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0
aGUgZGVmYXVsdCAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKiBhc3NvY2lhdGVkIHdpdGggdGhl
IHZpZXcuCisgKgorICogU2luY2U6IDIuMzAKKyAqLworV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMoV2ViS2l0V2ViVmlldyogd2ViVmll
dykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmll
dyksIG51bGxwdHIpOworCisgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPndlYnNpdGVQb2xpY2ll
cy5nZXQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVQb2xpY2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJzaXRlUG9saWNpZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzN2I3YTZjOWMzM2I0
N2ZhMzMxOGZmYTAzOThhYmYzZGUzODBjMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlUG9saWNpZXMuY3BwCkBAIC0wLDAg
KzEsMjMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgiCisKKyNpbmNs
dWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRFbnVtVHlwZXMuaCIK
KyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1s
aWIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OworCisvKioKKyAqIFNFQ1RJT046IFdlYktpdFdlYnNpdGVQb2xpY2llcworICogQFNo
b3J0X2Rlc2NyaXB0aW9uOiBWaWV3IHNwZWNpZmljIHdlYnNpdGUgcG9saWNpZXMKKyAqIEBUaXRs
ZTogV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3Cisg
KgorICogV2ViS2l0V2Vic2l0ZVBvbGljaWVzIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIHBlci1w
YWdlIHBvbGljaWVzLAorICogY3VycmVudGx5IG9ubHkgYXV0b3BsYXkgcG9saWNpZXMgYXJlIHN1
cHBvcnRlZC4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfQVVUT1BMQVlfUE9MSUNZCit9
OworCitzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUgeworICAgIF9XZWJLaXRX
ZWJzaXRlUG9saWNpZXNQcml2YXRlKCkKKyAgICAgICAgOiB3ZWJzaXRlUG9saWNpZXMoQVBJOjpX
ZWJzaXRlUG9saWNpZXM6OmNyZWF0ZSgpKQorICAgIHsKKyAgICB9CisgICAgUmVmUHRyPEFQSTo6
V2Vic2l0ZVBvbGljaWVzPiB3ZWJzaXRlUG9saWNpZXM7Cit9OworCitXRUJLSVRfREVGSU5FX1RZ
UEUoV2ViS2l0V2Vic2l0ZVBvbGljaWVzLCB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llcywgR19UWVBF
X09CSkVDVCkKKworQVBJOjpXZWJzaXRlUG9saWNpZXMmIHdlYmtpdFdlYnNpdGVQb2xpY2llc0dl
dFdlYnNpdGVQb2xpY2llcyhXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzKQoreworICAg
IHJldHVybiAqcG9saWNpZXMtPnByaXYtPndlYnNpdGVQb2xpY2llcy5nZXQoKTsKK30KKworV2Vi
c2l0ZVBvbGljaWVzRGF0YSB3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRQb2xpY2llc0RhdGEoV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAgICBXZWJzaXRlUG9saWNpZXNEYXRh
IHBvbGljaWVzRGF0YTsKKworICAgIHN3aXRjaCAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0
X2F1dG9wbGF5X3BvbGljeShwb2xpY2llcykpIHsKKyAgICBjYXNlIFdlYktpdEF1dG9wbGF5UG9s
aWN5OjpXRUJLSVRfQVVUT1BMQVlfQUxMT1c6CisgICAgICAgIHBvbGljaWVzRGF0YS5hdXRvcGxh
eVBvbGljeSA9IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3c7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgV2ViS2l0QXV0b3BsYXlQb2xpY3k6OldFQktJVF9BVVRPUExBWV9BTExPV19XSVRI
T1VUX1NPVU5EOgorICAgICAgICBwb2xpY2llc0RhdGEuYXV0b3BsYXlQb2xpY3kgPSBXZWJzaXRl
QXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYktpdEF1dG9wbGF5UG9saWN5OjpXRUJLSVRfQVVUT1BMQVlfREVOWToKKyAgICAgICAg
cG9saWNpZXNEYXRhLmF1dG9wbGF5UG9saWN5ID0gV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZW55
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBwb2xpY2llc0RhdGEuYXV0
b3BsYXlQb2xpY3kgPSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlZmF1bHQ7CisgICAgfQorCisg
ICAgcmV0dXJuIHBvbGljaWVzRGF0YTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2Vic2l0ZVBv
bGljaWVzR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNp
ZXMqIHBvbGljaWVzID0gV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMob2JqZWN0KTsKKworICAgIHN3
aXRjaCAocHJvcElEKSB7CisgICAgY2FzZSBQUk9QX0FVVE9QTEFZX1BPTElDWToKKyAgICAgICAg
Z192YWx1ZV9zZXRfZW51bSh2YWx1ZSwgd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9w
bGF5X3BvbGljeShwb2xpY2llcykpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBh
cmFtU3BlYyk7CisgICAgfQorfQorCit2b2lkIHdlYmtpdFdlYnNpdGVQb2xpY2llc1NldEF1dG9w
bGF5UG9saWN5KFdlYktpdFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFdlYktpdEF1dG9wbGF5
UG9saWN5IHBvbGljeSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRF
X1BPTElDSUVTKHBvbGljaWVzKSk7CisKKyAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgIGNhc2Ug
V0VCS0lUX0FVVE9QTEFZX0FMTE9XOgorICAgICAgICBwb2xpY2llcy0+cHJpdi0+d2Vic2l0ZVBv
bGljaWVzLT5zZXRBdXRvcGxheVBvbGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6
QWxsb3cpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9BVVRPUExBWV9BTExPV19X
SVRIT1VUX1NPVU5EOgorICAgICAgICBwb2xpY2llcy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzLT5z
ZXRBdXRvcGxheVBvbGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRo
b3V0U291bmQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9BVVRPUExBWV9ERU5Z
OgorICAgICAgICBwb2xpY2llcy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzLT5zZXRBdXRvcGxheVBv
bGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVueSk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQgd2Via2l0V2Vic2l0ZVBvbGljaWVzU2V0UHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wSUQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBh
cmFtU3BlYykKK3sKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzID0gV0VCS0lU
X1dFQlNJVEVfUE9MSUNJRVMob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElEKSB7CisgICAg
Y2FzZSBQUk9QX0FVVE9QTEFZX1BPTElDWTogeworICAgICAgICB3ZWJraXRXZWJzaXRlUG9saWNp
ZXNTZXRBdXRvcGxheVBvbGljeShwb2xpY2llcywgc3RhdGljX2Nhc3Q8V2ViS2l0QXV0b3BsYXlQ
b2xpY3k+KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJr
aXRfd2Vic2l0ZV9wb2xpY2llc19jbGFzc19pbml0KFdlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNz
KiBmaW5kQ2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVD
VF9DTEFTUyhmaW5kQ2xhc3MpOworCisgICAgZ09iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3
ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xhc3MtPnNldF9w
cm9wZXJ0eSA9IHdlYmtpdFdlYnNpdGVQb2xpY2llc1NldFByb3BlcnR5OworCisgICAgLyoqCisg
ICAgICogV2ViS2l0V2Vic2l0ZVBvbGljaWVzOmF1dG9wbGF5LXBvbGljeToKKyAgICAgKgorICAg
ICAqIFRoZSAjV2ViS2l0QXV0b3BsYXlQb2xpY3kgb2YgI1dlYktpdFdlYnNpdGVQb2xpY2llcy4K
KyAgICAgKgorICAgICAqIFNpbmNlOiAyLjMwCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0FV
VE9QTEFZX1BPTElDWSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX2VudW0oCisgICAgICAgICAgICAi
YXV0b3BsYXktcG9saWN5IiwKKyAgICAgICAgICAgICJBdXRvcGxheSBQb2xpY3kiLAorICAgICAg
ICAgICAgXygiVGhlIGF1dG9wbGF5IHBvbGljeSB0byB1c2Ugd2hlbiBkZWNpZGluZyB0byBhdXRv
cGxheSBtZWRpYSIpLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfQVVUT1BMQVlfUE9MSUNZLAor
ICAgICAgICAgICAgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQsCisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdf
UEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYnNpdGVfcG9s
aWNpZXNfbmV3OgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogdGhlIG5ld2x5IGNy
ZWF0ZWQgI1dlYktpdFdlYnNpdGVQb2xpY2llcworICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK1dl
YktpdFdlYnNpdGVQb2xpY2llcyogd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3KHZvaWQpCit7
CisgICAgcmV0dXJuIFdFQktJVF9XRUJTSVRFX1BPTElDSUVTKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJTSVRFX1BPTElDSUVTLCBudWxscHRyKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dl
YnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXM6CisgKiBAZmlyc3RfcG9saWN5X25hbWU6
IG5hbWUgb2YgdGhlIGZpcnN0IHBvbGljeSB0byBzZXQKKyAqIEAuLi46IHZhbHVlIG9mIGZpcnN0
IHBvbGljeSwgZm9sbG93ZWQgYnkgbW9yZSBwb2xpY2llcywgJU5VTEwtdGVybWluYXRlZAorICoK
KyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogdGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdl
YnNpdGVQb2xpY2llcworICoKKyAqIDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgor
ICogV2ViS2l0V2Vic2l0ZVBvbGljaWVzICpkZWZhdWx0X3dlYnNpdGVfcG9saWNpZXMgPSB3ZWJr
aXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcygKKyAqICAgICAiYXV0b3BsYXkt
cG9saWN5IiwgV0VCS0lUX0FVVE9QTEFZX0RFTlksCisgKiAgICAgTlVMTCk7CisgKiAuLi4KKyAq
IFdlYktpdFdlYlZpZXcgKnZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX1dFQl9WSUVXLAorICogICAgICJ3ZWItY29udGV4dCIsIGN0eCwKKyAqICAgICAic2V0
dGluZ3MiLCBzZXR0aW5ncywKKyAqICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCBjb250ZW50
X21hbmFnZXIsCisgKiAgICAgIndlYnNpdGUtcG9saWNpZXMiLCBkZWZhdWx0X3dlYnNpdGVfcG9s
aWNpZXMsCisgKiAgICAgTlVMTCkpOworICogLi4uCisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5m
b3JtYWxleGFtcGxlPgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK1dlYktpdFdlYnNpdGVQb2xp
Y2llcyogd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMoY29uc3QgZ2No
YXIqIGZpcnN0UG9saWN5TmFtZSwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnczsKKyAgICB2YV9z
dGFydChhcmdzLCBmaXJzdFBvbGljeU5hbWUpOworICAgIFdlYktpdFdlYnNpdGVQb2xpY2llcyog
cG9saWNpZXMgPSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFUyhnX29iamVjdF9uZXdfdmFsaXN0KFdF
QktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsIGZpcnN0UG9saWN5TmFtZSwgYXJncykpOworICAg
IHZhX2VuZChhcmdzKTsKKworICAgIHJldHVybiBwb2xpY2llczsKK30KKworLyoqCisgKiB3ZWJr
aXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfYXV0b3BsYXlfcG9saWN5OgorICogQHBvbGljaWVzOiBh
ICNXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRXZWJzaXRlUG9s
aWNpZXM6YXV0b3BsYXktcG9saWN5IHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6ICNXZWJLaXRB
dXRvcGxheVBvbGljeQorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK1dlYktpdEF1dG9wbGF5UG9s
aWN5IHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRvcGxheV9wb2xpY3koV2ViS2l0V2Vi
c2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCU0lURV9QT0xJQ0lFUyhwb2xpY2llcyksIFdFQktJVF9BVVRPUExBWV9BTExPV19X
SVRIT1VUX1NPVU5EKTsKKworICAgIGF1dG8gYXBpQXV0b3BsYXlQb2xpY3lUeXBlID0gcG9saWNp
ZXMtPnByaXYtPndlYnNpdGVQb2xpY2llcy0+YXV0b3BsYXlQb2xpY3koKTsKKyAgICBzd2l0Y2gg
KGFwaUF1dG9wbGF5UG9saWN5VHlwZSkgeworICAgIGNhc2UgV2ViS2l0OjpXZWJzaXRlQXV0b3Bs
YXlQb2xpY3k6OkFsbG93OgorICAgICAgICByZXR1cm4gV0VCS0lUX0FVVE9QTEFZX0FMTE9XOwor
ICAgIGNhc2UgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5k
OgorICAgICAgICByZXR1cm4gV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ7Cisg
ICAgY2FzZSBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVueToKKyAgICAgICAgcmV0
dXJuIFdFQktJVF9BVVRPUExBWV9ERU5ZOworICAgIGNhc2UgV2ViS2l0OjpXZWJzaXRlQXV0b3Bs
YXlQb2xpY3k6OkRlZmF1bHQ6CisgICAgICAgIHJldHVybiBXRUJLSVRfQVVUT1BMQVlfQUxMT1df
V0lUSE9VVF9TT1VORDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ZmYxZjEyODdlOGQxYmM1N2Y3ZWJkYzM2Y2I2NjZhMDY1N2RiZWNlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBvbGljaWVz
UHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdh
bGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIK
KyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9s
aWNpZXNEYXRhLmgiCisKK0FQSTo6V2Vic2l0ZVBvbGljaWVzKiB3ZWJraXRXZWJzaXRlUG9saWNp
ZXNHZXRXZWJzaXRlUG9saWNpZXMoV2ViS2l0V2Vic2l0ZVBvbGljaWVzICopOworV2ViS2l0OjpX
ZWJzaXRlUG9saWNpZXNEYXRhIHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFBvbGljaWVzRGF0YShX
ZWJLaXRXZWJzaXRlUG9saWNpZXMgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmgKaW5kZXggZjE5MmExZDM3OWRjNjQy
MWRmNzYwNDc0ZDIwNjQ5ZTQ1ZmYwYzhjYi4uMGZmODllNDljNzYzZDM2ZjVlNGFlM2JkMWMxMTdk
NjMxYzEzMmU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRQb2xpY3lEZWNpc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKyNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oPgogCiBHX0JFR0lOX0RFQ0xTCiAK
QEAgLTYyLDYgKzYzLDEwIEBAIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5cGUgKHZvaWQp
OwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZSAgICAgIChXZWJL
aXRQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24pOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9w
b2xpY3lfZGVjaXNpb25fdXNlX3dpdGhfcG9saWNpZXMgIChXZWJLaXRQb2xpY3lEZWNpc2lvbiAq
ZGVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzICpwb2xpY2llcyk7CisKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0
X3BvbGljeV9kZWNpc2lvbl9pZ25vcmUgICAoV2ViS2l0UG9saWN5RGVjaXNpb24gKmRlY2lzaW9u
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aAppbmRleCAxMzEzNjBjM2RkMGViZmNhMTFjNmU3MTQ4NmU2MTE2ZDdkZjEwYmNmLi5hYzUxNjgz
YjY3NWQ1YTk4YjY2NTUzMjNmOWE1MWM0OWU3NjIzYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtNTQsNiArNTQsNyBAQAogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0V2ViSW5zcGVjdG9yLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJSZXNvdXJjZS5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRXZWJWaWV3QmFzZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2Vi
Vmlld1Nlc3Npb25TdGF0ZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2luZG93UHJvcGVy
dGllcy5oPgpAQCAtNTg0LDYgKzU4NSwxMSBAQCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lucHV0X21l
dGhvZF9jb250ZXh0ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3CiBXRUJLSVRfQVBJIFdlYktp
dElucHV0TWV0aG9kQ29udGV4dCAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9j
b250ZXh0ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7
CiAKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKgord2Via2l0X3dlYl92aWV3
X2dldF93ZWJzaXRlX3BvbGljaWVzICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAqd2ViX3ZpZXcpOworCisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKaW5k
ZXggNTJkNWYzZTVmYThjYzM3ZDE4ZjdmNmZmYzc3MzQwYTk0NGIzMjI3Zi4uOWI5OTI3NWIyNGVm
YzRhY2M3YWYwMTU1MGMxZWYzZjc3OGUwNGUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCkBAIC0zMzcsOCArMzM3LDgg
QEAgR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dChXZWJLaXRXZWJD
b250ZXh0KiBjb250ZXh0KQogICogWW91IGNhbiBhbHNvIHVzZSB0aGlzIG1ldGhvZCB0byBpbXBs
ZW1lbnQgb3RoZXIgcHJvY2VzcyBtb2RlbHMgYmFzZWQgb24gJVdFQktJVF9QUk9DRVNTX01PREVM
X01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVMsCiAgKiBsaWtlIGZvciBleGFtcGxlLCBzaGFy
aW5nIHRoZSBzYW1lIHdlYiBwcm9jZXNzIGZvciBhbGwgdGhlIHZpZXdzIGluIHRoZSBzYW1lIHNl
Y3VyaXR5IGRvbWFpbi4KICAqCi0gKiBUaGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3
aWxsIGFsc28gaGF2ZSB0aGUgc2FtZSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCi0gKiBhbmQg
I1dlYktpdFNldHRpbmdzIGFzIEB3ZWJfdmlldy4KKyAqIFRoZSBuZXdseSBjcmVhdGVkICNXZWJL
aXRXZWJWaWV3IHdpbGwgYWxzbyBoYXZlIHRoZSBzYW1lICNXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIsCisgKiAjV2ViS2l0U2V0dGluZ3MsIGFuZCAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzIGFzIEB3
ZWJfdmlldy4KICAqCiAgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IFRoZSBuZXdseSBjcmVh
dGVkICNXZWJLaXRXZWJWaWV3IHdpZGdldAogICoKQEAgLTM1Miw2ICszNTIsNyBAQCBHdGtXaWRn
ZXQqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9yZWxhdGVkX3ZpZXcoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgd2Via2l0X3dlYl92aWV3
X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSwKICAgICAgICAgInNldHRpbmdzIiwg
d2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSwKICAgICAgICAgInJlbGF0ZWQt
dmlldyIsIHdlYlZpZXcsCisgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgd2Via2l0X3dlYl92
aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAogICAgICAgICBudWxscHRyKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
c2l0ZVBvbGljaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVQb2xpY2llcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljNzU0N2Q1NWVlNTQ3MGZjYWNjN2E3Nzc5MTU4
YmJhZGI2YjQ5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9J
TlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8
d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9X
RUJTSVRFX1BPTElDSUVTICAgICAgICAgICAgKHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF90
eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJTSVRFX1BPTElDSUVTKG9iaikgICAgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9M
SUNJRVMsIFdlYktpdFdlYnNpdGVQb2xpY2llcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJTSVRF
X1BPTElDSUVTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiks
IFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMpKQorI2RlZmluZSBXRUJLSVRfV0VCU0lURV9Q
T0xJQ0lFU19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyks
ICBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLCBXZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFz
cykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTX0NMQVNTKGtsYXNzKSAoR19U
WVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJ
RVMpKQorI2RlZmluZSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19HRVRfQ0xBU1Mob2JqKSAgKEdf
VFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElD
SUVTLCBXZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJzaXRlUG9saWNpZXMgICAgICAgIFdlYktpdFdlYnNpdGVQb2xpY2llczsKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcyAgIFdlYktpdFdlYnNpdGVQb2xpY2ll
c0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUgV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNp
ZXMgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJp
dmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3Mgewor
ICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDMpICh2b2lkKTsKK307CisKKy8qKgorICogV2ViS2l0QXV0b3BsYXlQb2xpY3k6Cisg
KiBAV0VCS0lUX0FVVE9QTEFZX0FMTE9XOiBEbyBub3QgcmVzdHJpY3QgYXV0b3BsYXkuCisgKiBA
V0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ6IEFsbG93IHZpZGVvcyB0byBhdXRv
cGxheSBpZgorICogdGhleSBoYXZlIG5vIGF1ZGlvIHRyYWNrLCBvciBpZiB0aGVpciBhdWRpbyB0
cmFjayBpcyBtdXRlZC4KKyAqIEBXRUJLSVRfQVVUT1BMQVlfREVOWTogTmV2ZXIgYWxsb3cgYXV0
b3BsYXkuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IGF1dG9wbGF5IHBvbGlj
aWVzLgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lU
X0FVVE9QTEFZX0FMTE9XLAorICAgIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5E
LAorICAgIFdFQktJVF9BVVRPUExBWV9ERU5ZCit9IFdlYktpdEF1dG9wbGF5UG9saWN5OworCitX
RUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfdHlwZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJzaXRl
UG9saWNpZXMgKgord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGlj
aWVzICoKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzICAgICAgICAg
ICAgICAgICAgICAgKGNvbnN0IGdjaGFyICAqZmlyc3RfcG9saWN5X25hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4p
OworCitXRUJLSVRfQVBJIFdlYktpdEF1dG9wbGF5UG9saWN5Cit3ZWJraXRfd2Vic2l0ZV9wb2xp
Y2llc19nZXRfYXV0b3BsYXlfcG9saWN5ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRl
UG9saWNpZXMqIHBvbGljaWVzKTsKKworR19FTkRfREVDTFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0CmluZGV4IDQ4MmIwNmNlY2ZhMTdiYmQzOTljYjg4ZDg0ZDExYWQzZDk0NWFlYTAu
LjgwNWVhMDc2MmY4MTI5NGQwZDI5NDI1YjkzN2I3NDBlNGE5MjhkY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9u
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTk4LDYgKzE5OCw3IEBAIFdlYktpdEluc2VjdXJlQ29u
dGVudEV2ZW50CiBXZWJLaXRTbmFwc2hvdE9wdGlvbnMKIFdlYktpdFNuYXBzaG90UmVnaW9uCiBX
ZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb24KK1dlYktpdEF1dG9wbGF5UG9saWN5CiAK
IDxTVUJTRUNUSU9OIEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NV
VApAQCAtMjg4LDYgKzI4OSw3IEBAIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFn
ZQogd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaAogd2Via2l0X3dl
Yl92aWV3X3NldF9pbnB1dF9tZXRob2RfY29udGV4dAogd2Via2l0X3dlYl92aWV3X2dldF9pbnB1
dF9tZXRob2RfY29udGV4dAord2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzCiAK
IDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0CkBAIC04NDcsNiArODQ5LDcgQEAgV2ViS2l0UG9saWN5RGVjaXNpb24KIHdlYmtpdF9wb2xp
Y3lfZGVjaXNpb25fZG93bmxvYWQKIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3JlCiB3ZWJr
aXRfcG9saWN5X2RlY2lzaW9uX3VzZQord2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9w
b2xpY2llcwogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFBvbGljeURlY2lzaW9uQ2xh
c3MKQEAgLTE4NDYsMyArMTg0OSwyNiBAQCBXRUJLSVRfVVNFUl9NRVNTQUdFX0dFVF9DTEFTUwog
V2ViS2l0VXNlck1lc3NhZ2VQcml2YXRlCiB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF90eXBlCiA8
L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0V2Vic2l0ZVBvbGljaWVzPC9GSUxF
PgorV2ViS2l0V2Vic2l0ZVBvbGljaWVzCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcKK3dl
YmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzCit3ZWJraXRfd2Vic2l0ZV9w
b2xpY2llc19nZXRfYXV0b3BsYXlfcG9saWN5CisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MKK1dFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTCitXRUJL
SVRfSVNfV0VCU0lURV9QT0xJQ0lFU19DTEFTUworV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lF
UworV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMKK1dFQktJVF9XRUJTSVRFX1BPTElDSUVTX0NMQVNT
CitXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0
ZT4KK1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVz
X2dldF90eXBlCis8L1NFQ1RJT04+CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oCmluZGV4IGJmZmZlZDFjNzRiMTU0
ODU0MjMzM2ZmMWJjYjE1Mzk0NjQ2MTZjMDkuLmZmMDNhMGY1YjhlOGMzZmY4ZjNhMDhiMjU1YTYz
NGU2MjMwMDBmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0UG9saWN5RGVjaXNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdFBvbGljeURlY2lzaW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRl
IDx3cGUvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmg+CiAKIEdfQkVHSU5fREVDTFMKIApAQCAtNjIs
NiArNjMsMTAgQEAgd2Via2l0X3BvbGljeV9kZWNpc2lvbl9nZXRfdHlwZSAodm9pZCk7CiBXRUJL
SVRfQVBJIHZvaWQKIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlICAgICAgKFdlYktpdFBvbGlj
eURlY2lzaW9uICpkZWNpc2lvbik7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3BvbGljeV9k
ZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcyAgKFdlYktpdFBvbGljeURlY2lzaW9uICpkZWNpc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJz
aXRlUG9saWNpZXMgKnBvbGljaWVzKTsKKwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX2lnbm9yZSAgIChXZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4
IDI2NGZlNjhjZjJkZjUwY2ZhNTZhOWY3MjM1YzhjYzFkNTUwN2QzZWQuLjIzMTQ5YjBiZjc0YWQw
YjY2ODM5MWZmOWQ2Y2YxZDk4ZmJjMTU4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8
d3BlL1dlYktpdFVzZXJNZXNzYWdlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYkNvbnRleHQu
aD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViUmVzb3VyY2UuaD4KKyNpbmNsdWRlIDx3cGUvV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdCYWNrZW5k
Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuaD4KICNpbmNsdWRl
IDx3cGUvV2ViS2l0V2luZG93UHJvcGVydGllcy5oPgpAQCAtNTYxLDYgKzU2Miw5IEBAIHdlYmtp
dF93ZWJfdmlld19zZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQgICAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcKIFdFQktJVF9BUEkgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0ICoKIHdlYmtpdF93ZWJf
dmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJIFdlYktpdFdlYnNpdGVQb2xp
Y2llcyAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKIEdfRU5EX0RFQ0xT
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRXZWJzaXRlUG9saWNpZXMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U3ZmJkNTVhZTU1NTkyYmI5YzU1
YjQ1YzAyNzdmNGJlNDM5MjdjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgKQEAgLTAsMCArMSw4NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VC
S0lUX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3Ig
Ik9ubHkgPHdwZS93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYK
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d3BlL1dl
YktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dF
QlNJVEVfUE9MSUNJRVMgICAgICAgICAgICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X3R5
cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMob2JqKSAgICAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJ
Q0lFUywgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQlNJVEVf
UE9MSUNJRVMob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUykpCisjZGVmaW5lIFdFQktJVF9XRUJTSVRFX1BP
TElDSUVTX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwg
IFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsIFdlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNz
KSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1Moa2xhc3MpIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lF
UykpCisjZGVmaW5lIFdFQktJVF9XRUJTSVRFX1BPTElDSUVTX0dFVF9DTEFTUyhvYmopICAoR19U
WVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJ
RVMsIFdlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFdlYnNpdGVQb2xpY2llcyAgICAgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzOwordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVz
Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZSBXZWJL
aXRXZWJzaXRlUG9saWNpZXNQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2ll
cyB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2
YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcyB7Cisg
ICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAg
IHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jl
c2VydmVkMykgKHZvaWQpOworfTsKKworLyoqCisgKiBXZWJLaXRBdXRvcGxheVBvbGljeToKKyAq
IEBXRUJLSVRfQVVUT1BMQVlfQUxMT1c6IERvIG5vdCByZXN0cmljdCBhdXRvcGxheS4KKyAqIEBX
RUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORDogQWxsb3cgdmlkZW9zIHRvIGF1dG9w
bGF5IGlmCisgKiB0aGV5IGhhdmUgbm8gYXVkaW8gdHJhY2ssIG9yIGlmIHRoZWlyIGF1ZGlvIHRy
YWNrIGlzIG11dGVkLgorICogQFdFQktJVF9BVVRPUExBWV9ERU5ZOiBOZXZlciBhbGxvdyBhdXRv
cGxheS4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNpZnkgYXV0b3BsYXkgcG9saWNp
ZXMuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRf
QVVUT1BMQVlfQUxMT1csCisgICAgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQs
CisgICAgV0VCS0lUX0FVVE9QTEFZX0RFTlkKK30gV2ViS2l0QXV0b3BsYXlQb2xpY3k7CisKK1dF
QktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF90eXBlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYnNpdGVQ
b2xpY2llcyAqCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJzaXRlUG9saWNp
ZXMgKgord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMgICAgICAgICAg
ICAgICAgICAgICAoY29uc3QgZ2NoYXIgICpmaXJzdF9wb2xpY3lfbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7
CisKK1dFQktJVF9BUEkgV2ViS2l0QXV0b3BsYXlQb2xpY3kKK3dlYmtpdF93ZWJzaXRlX3BvbGlj
aWVzX2dldF9hdXRvcGxheV9wb2xpY3kgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVQ
b2xpY2llcyogcG9saWNpZXMpOworCitHX0VORF9ERUNMUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CmluZGV4
IDAyZjQ5YWRkMDU5YzBkMjgyZTc1MWE3ZWU2OTgxMDI3NzExMjM4MWQuLmRhMDJmNTg2MDliMTJj
MGJlNDVmZjE3OGEyMWM0NGM3NDA5OGM4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKQEAgLTI2MCw2
ICsyNjAsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2UKIHdlYmtpdF93
ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19zZXRf
aW5wdXRfbWV0aG9kX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2Nv
bnRleHQKK3dlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcwogCiA8U1VCU0VDVElP
TiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApAQCAtODUx
LDYgKzg1Miw3IEBAIFdlYktpdFBvbGljeURlY2lzaW9uCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9u
X2Rvd25sb2FkCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2lnbm9yZQogd2Via2l0X3BvbGljeV9k
ZWNpc2lvbl91c2UKK3dlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhfcG9saWNpZXMKIAog
PFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRQb2xpY3lEZWNpc2lvbkNsYXNzCkBAIC0xNTQ1
LDMgKzE1NDcsMjQgQEAgV0VCS0lUX1RZUEVfSU5QVVRfTUVUSE9EX1VOREVSTElORQogPEZJTEU+
V2ViS2l0VVJJVXRpbGl0aWVzPC9GSUxFPgogd2Via2l0X3VyaV9mb3JfZGlzcGxheQogPC9TRUNU
SU9OPgorCis8U0VDVElPTj4KKzxGSUxFPldlYktpdFdlYnNpdGVQb2xpY2llczwvRklMRT4KK1dl
YktpdFdlYnNpdGVQb2xpY2llcword2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3Cit3ZWJraXRf
d2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcword2Via2l0X3dlYnNpdGVfcG9saWNp
ZXNfZ2V0X2F1dG9wbGF5X3BvbGljeQorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdFdl
YnNpdGVQb2xpY2llc0NsYXNzCitXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFUworV0VCS0lUX0lT
X1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1MKK1dFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMKK1dF
QktJVF9XRUJTSVRFX1BPTElDSUVTCitXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19DTEFTUworV0VC
S0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitX
ZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRf
dHlwZQorPC9TRUNUSU9OPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGE5ZjFmYmYzMWRkMzA2ZjlkOWViM2VkOTUzZTRiNmY0MTY1NWU5Y2QuLmRj
ODQ5Y2I3M2JjZTI4ZjM2ODNhNTVhNDZlZTEzY2VmYmQ1NGViM2EgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0w
Ni0wOCAgQ2hhcmxpZSBUdXJuZXIgIDxjdHVybmVyQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dU
S10gRGlzYWJsZSB2aWRlbyBhdXRvcGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSB2YXJpb3VzIGNhbGxzaXRlcyBmb3IgY29uc3Ry
dWN0aW5nIGEgdmlldyB0byB0YWtlIGludG8KKyAgICAgICAgYWNjb3VudCB0aGUgZGVmYXVsdCBw
b2xpY2llcy4gSSBjaG9zZSB0aGUgZGVmYXVsdCBhcyBhdXRvcGxheQorICAgICAgICBhbGxvdyB3
aXRob3V0IHNvdW5kLCB3aGljaCBpcyBpbiBrZWVwaW5nIHdpdGggV2ViQ29yZSdzIGNob2ljZS4K
KworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgICh3
ZWJWaWV3RGVjaWRlUG9saWN5KToKKyAgICAgICAgKG5ld1RhYkNhbGxiYWNrKToKKyAgICAgICAg
KG9wZW5Qcml2YXRlV2luZG93KToKKyAgICAgICAgKGJyb3dzZXJfd2luZG93X2dldF9vcl9jcmVh
dGVfd2ViX3ZpZXdfZm9yX2F1dG9tYXRpb24pOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3dfY3Jl
YXRlX3dlYl92aWV3X2luX25ld190YWJfZm9yX2F1dG9tYXRpb24pOgorICAgICAgICAqIE1pbmlC
cm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93c2VyVGFiKToKKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
S2l0UG9saWN5Q2xpZW50LmNwcDogQWRkCisgICAgICAgIGF1dG9wbGF5IHBvbGljeSB0ZXN0cywg
YW5kIHVzZSBtb2Rlcm4gY2xhc3MgaW5pdGlhbGl6ZXJzLgorICAgICAgICAodGVzdEF1dG9wbGF5
UG9saWN5KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisKIDIwMjAtMDYtMTIgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEs0XSBHZXQgTWlu
aUJyb3dzZXIgcmVhZHkgZm9yIEdUSzQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5j
CmluZGV4IGJjY2VlY2UzM2FkMzY1YTg0MDc4NTc1OTQyMzYzMDg2ODNmZGYwMGIuLjhmYWE5MjEz
Njk5MTcxNjhkMWVjZjc1Njk5NThhNDA0MGY1ZGY0OWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jy
b3dzZXJXaW5kb3cuYwpAQCAtNDQ2LDYgKzQ0Niw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3
RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBvbGljeURlY2lzaW9u
CiAgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmll
dyksCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9u
KHdlYlZpZXcpLAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19n
ZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJyb3dz
ZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25f
Z2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNjMxLDYgKzYzMiw3IEBAIHN0YXRp
YyB2b2lkIG5ld1RhYkNhbGxiYWNrKEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBh
cmFtZXRlciwgZ3BvaW50ZXIKICAgICAgICAgInNldHRpbmdzIiwgd2Via2l0X3dlYl92aWV3X2dl
dF9zZXR0aW5ncyh3ZWJWaWV3KSwKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgd2Vi
a2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSwKICAgICAgICAg
ImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdlYmtpdF93ZWJfdmlld19pc19jb250cm9s
bGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCisgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwg
d2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAogICAgICAgICBO
VUxMKSkpOwogICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyh3aW5kb3ctPnVyaUVudHJ5KTsKICAg
ICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShHVEtfTk9URUJPT0sod2luZG93LT5ub3Rl
Ym9vayksIC0xKTsKQEAgLTY1MSw2ICs2NTMsNyBAQCBzdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdp
bmRvdyhHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludAog
ICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJf
Y29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtZXBoZW1lcmFsIiwgVFJVRSwK
ICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdlYmtpdF93ZWJfdmlld19p
c19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCisgICAgICAgICJ3ZWJzaXRlLXBv
bGljaWVzIiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAog
ICAgICAgICBOVUxMKSk7CiAgICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRv
d19uZXcoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aW5kb3ctPndlYkNvbnRleHQpOwogICAgIGd0a193
aW5kb3dfc2V0X2FwcGxpY2F0aW9uKEdUS19XSU5ET1cobmV3V2luZG93KSwgZ3RrX3dpbmRvd19n
ZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpKSk7CkBAIC0xNDUxLDYgKzE0NTQsNyBA
QCBXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zv
cl9hdXRvbWF0aW9uKEJyb3dzZXJXaW5kbwogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFn
ZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAog
ICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgVFJVRSwKKyAgICAgICAgIndl
YnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2Vi
VmlldyksCiAgICAgICAgIE5VTEwpKTsKICAgICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dz
ZXJfd2luZG93X25ldyhHVEtfV0lORE9XKHdpbmRvdyksIHdpbmRvdy0+d2ViQ29udGV4dCk7CiAg
ICAgZ3RrX3dpbmRvd19zZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyhuZXdXaW5kb3cpLCBndGtf
d2luZG93X2dldF9hcHBsaWNhdGlvbihHVEtfV0lORE9XKHdpbmRvdykpKTsKQEAgLTE0NzIsNiAr
MTQ3Niw3IEBAIFdlYktpdFdlYlZpZXcgKmJyb3dzZXJfd2luZG93X2NyZWF0ZV93ZWJfdmlld19p
bl9uZXdfdGFiX2Zvcl9hdXRvbWF0aW9uKEJyb3dzZXJXCiAgICAgICAgICJ1c2VyLWNvbnRlbnQt
bWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmll
dyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBUUlVFLAogICAgICAg
ICAiYXV0b21hdGlvbi1wcmVzZW50YXRpb24tdHlwZSIsIFdFQktJVF9BVVRPTUFUSU9OX0JST1dT
SU5HX0NPTlRFWFRfUFJFU0VOVEFUSU9OX1RBQiwKKyAgICAgICAgIndlYnNpdGUtcG9saWNpZXMi
LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldyksCiAgICAgICAg
IE5VTEwpKTsKICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRfdmlldyh3aW5kb3csIG5ld1dlYlZp
ZXcpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaShuZXdXZWJWaWV3LCAiYWJvdXQ6Ymxh
bmsiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4IDBiMjM2NjIwZDljNzBiNGI5NGUyODBjYTUwODEx
M2M4NTdkNzU4MzIuLmViNTAzYzI4NTE1Mzc2YTk2NmY4NzBjYWU2YWVlZDBiZDIwMjk0YjIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL21haW4uYwpAQCAtNzYsMTMgKzc2LDE0IEBAIHN0YXRpYyBnY2hhciAqYXJndW1l
bnRUb1VSTChjb25zdCBjaGFyICpmaWxlbmFtZSkKICAgICByZXR1cm4gZmlsZVVSTDsKIH0KIAot
c3RhdGljIFdlYktpdFdlYlZpZXcgKmNyZWF0ZUJyb3dzZXJUYWIoQnJvd3NlcldpbmRvdyAqd2lu
ZG93LCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MsIFdlYktpdFVzZXJDb250ZW50TWFu
YWdlciAqdXNlckNvbnRlbnRNYW5hZ2VyKQorc3RhdGljIFdlYktpdFdlYlZpZXcgKmNyZWF0ZUJy
b3dzZXJUYWIoQnJvd3NlcldpbmRvdyAqd2luZG93LCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0
dGluZ3MsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJL
aXRXZWJzaXRlUG9saWNpZXMgKmRlZmF1bHRXZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgV2ViS2l0
V2ViVmlldyAqd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfV0VCX1ZJRVcsCiAgICAgICAgICJ3ZWItY29udGV4dCIsIGJyb3dzZXJfd2luZG93X2dldF93
ZWJfY29udGV4dCh3aW5kb3cpLAogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRTZXR0aW5ncywK
ICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLAogICAg
ICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgYXV0b21hdGlvbk1vZGUsCisgICAg
ICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgZGVmYXVsdFdlYnNpdGVQb2xpY2llcywKICAgICAgICAg
TlVMTCkpOwogCiAgICAgaWYgKGVkaXRvck1vZGUpCkBAIC01NjgsNiArNTY5LDEwIEBAIHN0YXRp
YyB2b2lkIGFjdGl2YXRlKEdBcHBsaWNhdGlvbiAqYXBwbGljYXRpb24sIFdlYktpdFNldHRpbmdz
ICp3ZWJraXRTZXR0aW5ncykKICAgICB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0
ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcih1c2VyQ29udGVudE1hbmFnZXIsICJhYm91dERhdGEi
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHVzZXJDb250ZW50TWFuYWdlciwgInNjcmlwdC1tZXNz
YWdlLXJlY2VpdmVkOjphYm91dERhdGEiLCBHX0NBTExCQUNLKGFib3V0RGF0YVNjcmlwdE1lc3Nh
Z2VSZWNlaXZlZENhbGxiYWNrKSwgd2ViQ29udGV4dCk7CiAKKyAgICBXZWJLaXRXZWJzaXRlUG9s
aWNpZXMgKmRlZmF1bHRXZWJzaXRlUG9saWNpZXMgPSB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19u
ZXdfd2l0aF9wb2xpY2llcygKKyAgICAgICAgImF1dG9wbGF5LXBvbGljeSIsIFdFQktJVF9BVVRP
UExBWV9BTExPV19XSVRIT1VUX1NPVU5ELAorICAgICAgICBOVUxMKTsKKwogICAgIGlmIChjb250
ZW50RmlsdGVyKSB7CiAgICAgICAgIEdGaWxlICpjb250ZW50RmlsdGVyRmlsZSA9IGdfZmlsZV9u
ZXdfZm9yX2NvbW1hbmRsaW5lX2FyZyhjb250ZW50RmlsdGVyKTsKIApAQCAtNjEzLDcgKzYxOCw3
IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlKEdBcHBsaWNhdGlvbiAqYXBwbGljYXRpb24sIFdlYktp
dFNldHRpbmdzICp3ZWJraXRTZXR0aW5ncykKICAgICAgICAgaW50IGk7CiAKICAgICAgICAgZm9y
IChpID0gMDsgdXJpQXJndW1lbnRzW2ldOyBpKyspIHsKLSAgICAgICAgICAgIFdlYktpdFdlYlZp
ZXcgKndlYlZpZXcgPSBjcmVhdGVCcm93c2VyVGFiKG1haW5XaW5kb3csIHdlYmtpdFNldHRpbmdz
LCB1c2VyQ29udGVudE1hbmFnZXIpOworICAgICAgICAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmll
dyA9IGNyZWF0ZUJyb3dzZXJUYWIobWFpbldpbmRvdywgd2Via2l0U2V0dGluZ3MsIHVzZXJDb250
ZW50TWFuYWdlciwgZGVmYXVsdFdlYnNpdGVQb2xpY2llcyk7CiAgICAgICAgICAgICBpZiAoIWkp
CiAgICAgICAgICAgICAgICAgZmlyc3RUYWIgPSBHVEtfV0lER0VUKHdlYlZpZXcpOwogICAgICAg
ICAgICAgZ2NoYXIgKnVybCA9IGFyZ3VtZW50VG9VUkwodXJpQXJndW1lbnRzW2ldKTsKQEAgLTYy
MSw3ICs2MjYsNyBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZShHQXBwbGljYXRpb24gKmFwcGxpY2F0
aW9uLCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MpCiAgICAgICAgICAgICBnX2ZyZWUo
dXJsKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIFdlYktpdFdlYlZpZXcgKndl
YlZpZXcgPSBjcmVhdGVCcm93c2VyVGFiKG1haW5XaW5kb3csIHdlYmtpdFNldHRpbmdzLCB1c2Vy
Q29udGVudE1hbmFnZXIpOworICAgICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0gY3JlYXRl
QnJvd3NlclRhYihtYWluV2luZG93LCB3ZWJraXRTZXR0aW5ncywgdXNlckNvbnRlbnRNYW5hZ2Vy
LCBkZWZhdWx0V2Vic2l0ZVBvbGljaWVzKTsKICAgICAgICAgZmlyc3RUYWIgPSBHVEtfV0lER0VU
KHdlYlZpZXcpOwogCiAgICAgICAgIGlmICghZWRpdG9yTW9kZSkgewpAQCAtNjM0LDYgKzYzOSw4
IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlKEdBcHBsaWNhdGlvbiAqYXBwbGljYXRpb24sIFdlYktp
dFNldHRpbmdzICp3ZWJraXRTZXR0aW5ncykKIAogICAgIGdfY2xlYXJfb2JqZWN0KCZ3ZWJraXRT
ZXR0aW5ncyk7CiAgICAgZ19vYmplY3RfdW5yZWYod2ViQ29udGV4dCk7CisgICAgZ19vYmplY3Rf
dW5yZWYodXNlckNvbnRlbnRNYW5hZ2VyKTsKKyAgICBnX29iamVjdF91bnJlZihkZWZhdWx0V2Vi
c2l0ZVBvbGljaWVzKTsKIAogICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyhmaXJzdFRhYik7CiAg
ICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQobWFpbldpbmRvdykpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGll
bnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQ
b2xpY3lDbGllbnQuY3BwCmluZGV4IDc2OWJjYzg5MTZiYjliMWMxYWZlMjlkNmJjMjA5ZGQ0MzI4
MDE2YTYuLjhmYzFiYmE2ZmEwNWQ0YjQ1ZjcyYzliMGQzOTVhMjdjODQ2YjVkOTEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5
Q2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYktpdFBvbGljeUNsaWVudC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2luY2x1ZGUgIkxv
YWRUcmFja2luZ1Rlc3QuaCIKICNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCisjaW5jbHVk
ZSAiV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtMzIsMTkgKzMzLDIxIEBAIHB1
YmxpYzoKIAogICAgIGVudW0gUG9saWN5RGVjaXNpb25SZXNwb25zZSB7CiAgICAgICAgIFVzZSwK
KyAgICAgICAgVXNlV2l0aFBvbGljeSwKICAgICAgICAgSWdub3JlLAogICAgICAgICBEb3dubG9h
ZCwKICAgICAgICAgTm9uZQogICAgIH07CiAKLSAgICBQb2xpY3lDbGllbnRUZXN0KCkKLSAgICAg
ICAgOiBMb2FkVHJhY2tpbmdUZXN0KCkKLSAgICAgICAgLCBtX3BvbGljeURlY2lzaW9uUmVzcG9u
c2UoTm9uZSkKLSAgICAgICAgLCBtX3BvbGljeURlY2lzaW9uVHlwZUZpbHRlcigwKQotICAgICAg
ICAsIG1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseShmYWxzZSkKLSAgICAg
ICAgLCBtX2hhbHRNYWluTG9vcEFmdGVyTWFraW5nRGVjaXNpb24oZmFsc2UpCisgICAgc3RhdGlj
IHZvaWQgdGVzdEhhbmRsZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayhXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIqIHVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2
YXNjcmlwdFJlc3VsdCwgUG9saWN5Q2xpZW50VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiZGVjaWRlLXBvbGljeSIsIEdfQ0FMTEJBQ0soZGVj
aWRlUG9saWN5Q2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiB2YWx1
ZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0
UmVzdWx0KSk7CisgICAgICAgIGlmIChnX3N0cl9lcXVhbCh2YWx1ZVN0cmluZy5nZXQoKSwgImF1
dG9wbGF5ZWQiKSkKKyAgICAgICAgICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IHRydWU7CisgICAg
ICAgIGVsc2UgaWYgKGdfc3RyX2VxdWFsKHZhbHVlU3RyaW5nLmdldCgpLCAiZGlkLW5vdC1wbGF5
IikpCisgICAgICAgICAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBmYWxzZTsKKworICAgICAgICBn
X21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwogICAgIH0KIAogICAgIHN0YXRpYyBn
Ym9vbGVhbiBxdWl0TWFpbkxvb3BMYXRlcihHTWFpbkxvb3AqIGxvb3ApCkBAIC01OSw2ICs2Miw5
IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2U6CiAgICAgICAgICAgICB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX3VzZShkZWNpc2lvbik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBVc2VXaXRoUG9saWN5OgorICAgICAgICAgICAgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vf
d2l0aF9wb2xpY2llcyhkZWNpc2lvbiwgdGVzdC0+bV93ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSWdub3JlOgogICAgICAgICAgICAgd2Vi
a2l0X3BvbGljeV9kZWNpc2lvbl9pZ25vcmUoZGVjaXNpb24pOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC05OCwxMSArMTA0LDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAg
IH0KIAotICAgIFBvbGljeURlY2lzaW9uUmVzcG9uc2UgbV9wb2xpY3lEZWNpc2lvblJlc3BvbnNl
OwotICAgIGludCBtX3BvbGljeURlY2lzaW9uVHlwZUZpbHRlcjsKLSAgICBib29sIG1fcmVzcG9u
ZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseTsKLSAgICBib29sIG1faGFsdE1haW5Mb29w
QWZ0ZXJNYWtpbmdEZWNpc2lvbjsKKyAgICBQb2xpY3lDbGllbnRUZXN0KCkKKyAgICAgICAgOiBM
b2FkVHJhY2tpbmdUZXN0KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJW
aWV3LCAiZGVjaWRlLXBvbGljeSIsIEdfQ0FMTEJBQ0soZGVjaWRlUG9saWN5Q2FsbGJhY2spLCB0
aGlzKTsKKyAgICAgICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3Njcmlw
dF9tZXNzYWdlX2hhbmRsZXIobV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksICJ0ZXN0SGFuZGxl
ciIpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgp
LCAic2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OnRlc3RIYW5kbGVyIiwgR19DQUxMQkFDSyh0ZXN0
SGFuZGxlck1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgfQorCisgICAgYm9v
bCBkaWRBdXRvcGxheSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9hdXRvcGxheWVkICYmICpt
X2F1dG9wbGF5ZWQ7CisgICAgfQorCisgICAgUG9saWN5RGVjaXNpb25SZXNwb25zZSBtX3BvbGlj
eURlY2lzaW9uUmVzcG9uc2UgeyBOb25lIH07CisgICAgaW50IG1fcG9saWN5RGVjaXNpb25UeXBl
RmlsdGVyIHsgMCB9OworICAgIGJvb2wgbV9yZXNwb25kVG9Qb2xpY3lEZWNpc2lvbkFzeW5jaHJv
bm91c2x5IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFsdE1haW5Mb29wQWZ0ZXJNYWtpbmdEZWNp
c2lvbiB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9hdXRvcGxheWVkOwogICAgIEdS
ZWZQdHI8V2ViS2l0UG9saWN5RGVjaXNpb24+IG1fcHJldmlvdXNQb2xpY3lEZWNpc2lvbjsKKyAg
ICBHUmVmUHRyPFdlYktpdFdlYnNpdGVQb2xpY2llcz4gbV93ZWJzaXRlUG9saWNpZXM7CiB9Owog
CiBzdGF0aWMgdm9pZCB0ZXN0TmF2aWdhdGlvblBvbGljeShQb2xpY3lDbGllbnRUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQpAQCAtMjY5LDYgKzI5MCwxMTEgQEAgc3RhdGljIHZvaWQgc2VydmVy
Q2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3Qg
Y2hhcioKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFU
VVNfTk9UX0ZPVU5EKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdEF1dG9wbGF5UG9saWN5KFBvbGlj
eUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisjaWYgUExBVEZPUk0oR1RLKQor
ICAgIC8vIFRoZSB3ZWIgdmlldyBtdXN0IGJlIHJlYWxpemVkIGZvciB0aGUgdmlkZW8gdG8gc3Rh
cnQgcGxheWJhY2suCisgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEdU
S19XSU5ET1dfVE9QTEVWRUwpOworI2VuZGlmCisKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9u
VHlwZUZpbHRlciA9IFdFQktJVF9QT0xJQ1lfREVDSVNJT05fVFlQRV9OQVZJR0FUSU9OX0FDVElP
TjsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0
OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzID0gd2Via2l0X3dl
YnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMoImF1dG9wbGF5LXBvbGljeSIsIFdFQktJ
VF9BVVRPUExBWV9ERU5ZLCBudWxscHRyKTsKKworICAgIGNvbnN0IGNoYXIqIHJlc291cmNlTmFt
ZSA9ICJhdXRvcGxheS1jaGVjay5odG1sIjsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNl
UGF0aChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFJlc291cmNlc0RpcihUZXN0OjpXZWJLaXQy
UmVzb3VyY2VzKS5kYXRhKCksIHJlc291cmNlTmFtZSwgbnVsbHB0cikpOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gcmVzb3VyY2VVUkwoZ19maWxlbmFtZV90b191cmkocmVzb3VyY2VQYXRoLmdldCgp
LCBudWxscHRyLCBudWxscHRyKSk7CisKKyAgICAvLyBUZXN0IHdpdGggREVOWSBwb2xpY3kKKyAg
ICB0ZXN0LT5sb2FkVVJJKHJlc291cmNlVVJMLmdldCgpKTsKKyAgICAvLyBSdW4gdW50aWwgdGhl
IHVzZXIgY29udGVudCBtZXNzYWdlcyBjb21lIGJhY2sgZnJvbSBhdXRvcGxheS1jaGVjay5odG1s
CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X2Zh
bHNlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworCisgICAgLy8gQXN5bmMgdGVzdAorICAgIHRlc3Qt
Pm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9u
UmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1f
cmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IHRydWU7CisgICAgdGVzdC0+
bG9hZFVSSShyZXNvdXJjZVVSTC5nZXQoKSk7CisgICAgLy8gUnVuIHVudGlsIHRoZSB1c2VyIGNv
bnRlbnQgbWVzc2FnZXMgY29tZSBiYWNrIGZyb20gYXV0b3BsYXktY2hlY2suaHRtbAorICAgIGdf
bWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0
LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIFRlc3Qgd2l0aCBBTExPVyBwb2xpY3kKKyAgICB0
ZXN0LT5tX3dlYnNpdGVQb2xpY2llcyA9IHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRo
X3BvbGljaWVzKCJhdXRvcGxheS1wb2xpY3kiLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1csIG51bGxw
dHIpOworICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5t
X3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5
OworICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IGZh
bHNlOworCisgICAgdGVzdC0+bG9hZFVSSShyZXNvdXJjZVVSTC5nZXQoKSk7CisgICAgZ19tYWlu
X2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+ZGlk
QXV0b3BsYXkoKSk7CisKKyAgICAvLyBUZXN0IHdpdGggQUxMT1dfV0lUSE9VVF9TT1VORCBwb2xp
Y3kKKyAgICB0ZXN0LT5tX3dlYnNpdGVQb2xpY2llcyA9IHdlYmtpdF93ZWJzaXRlX3BvbGljaWVz
X25ld193aXRoX3BvbGljaWVzKCJhdXRvcGxheS1wb2xpY3kiLCBXRUJLSVRfQVVUT1BMQVlfQUxM
T1dfV0lUSE9VVF9TT1VORCwgbnVsbHB0cik7CisgICAgdGVzdC0+bV9hdXRvcGxheWVkID0gV1RG
OjpudWxsb3B0OworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBvbGljeUNs
aWVudFRlc3Q6OlVzZVdpdGhQb2xpY3k7CisgICAgdGVzdC0+bV9yZXNwb25kVG9Qb2xpY3lEZWNp
c2lvbkFzeW5jaHJvbm91c2x5ID0gZmFsc2U7CisKKyAgICB0ZXN0LT5sb2FkVVJJKHJlc291cmNl
VVJMLmdldCgpKTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAg
Z19hc3NlcnRfZmFsc2UodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBOb3cgY2hlY2sg
ZHluYW1pY2FsbHkgdXBkYXRpbmcgdGhlIGxvYWRlciBwb2xpY2llcworICAgIHRlc3QtPm1fd2Vi
c2l0ZVBvbGljaWVzID0gd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMo
ImF1dG9wbGF5LXBvbGljeSIsIFdFQktJVF9BVVRPUExBWV9ERU5ZLCBudWxscHRyKTsKKyAgICB0
ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNp
c2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0
LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKworICAg
IHRlc3QtPmxvYWRVUkkocmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0
ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgp
KTsKKworICAgIC8vIENoZWNrIHRoYXQgSlMgY2FuIG5vdCBzaWRlLXN0ZXAgdGhlIGFjdGl2ZSBw
b2xpY3kKKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgdGVzdC0+
cnVuSmF2YVNjcmlwdFdpdGhvdXRGb3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0VW50aWxGaW5pc2hl
ZCgicGxheVZpZGVvKCk7IiwgbnVsbHB0cik7CisgICAgLy8gU3BpbiB1bnRpbCBhdXRvcGxheSBz
dGF0dXMgaXMgcmVwb3J0ZWQsIHRoZSBydW4gSlMgQVBJIGNhbgorICAgIC8vIGNvbXBsZXRlIGl0
cyBtYWluIGxvb3AgYmVmb3JlIHRoZSBwcm9taXNlcyBpbiBhdXRvcGxheS1jaGVjayBmaXJlLgor
ICAgIHdoaWxlICghdGVzdC0+bV9hdXRvcGxheWVkLmhhc1ZhbHVlKCkpCisgICAgICAgIGdfbWFp
bl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5k
aWRBdXRvcGxheSgpKTsKKworICAgIC8vIFNpbGVudCBhdWRpbyB0cmFjayB0ZXN0cworICAgIHJl
c291cmNlTmFtZSA9ICJhdXRvcGxheS1uby1hdWRpby1jaGVjay5odG1sIjsKKyAgICByZXNvdXJj
ZVBhdGgucmVzZXQoZ19idWlsZF9maWxlbmFtZShUZXN0OjpnZXRSZXNvdXJjZXNEaXIoVGVzdDo6
V2ViS2l0MlJlc291cmNlcykuZGF0YSgpLCByZXNvdXJjZU5hbWUsIG51bGxwdHIpKTsKKyAgICBy
ZXNvdXJjZVVSTC5yZXNldChnX2ZpbGVuYW1lX3RvX3VyaShyZXNvdXJjZVBhdGguZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIpKTsKKworICAgIC8vIERFTlkgcG9saWN5CisgICAgdGVzdC0+bV93ZWJz
aXRlUG9saWNpZXMgPSB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcygi
YXV0b3BsYXktcG9saWN5IiwgV0VCS0lUX0FVVE9QTEFZX0RFTlksIG51bGxwdHIpOworICAgIHRl
c3QtPm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lz
aW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3Qt
Pm1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IGZhbHNlOworCisgICAg
dGVzdC0+bG9hZFVSSShyZXNvdXJjZVVSTC5nZXQoKSk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRl
c3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmRpZEF1dG9wbGF5KCkp
OworCisgICAgLy8gQUxMT1cKKyAgICB0ZXN0LT5tX3dlYnNpdGVQb2xpY2llcyA9IHdlYmtpdF93
ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzKCJhdXRvcGxheS1wb2xpY3kiLCBXRUJL
SVRfQVVUT1BMQVlfQUxMT1csIG51bGxwdHIpOworICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IFdU
Rjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lD
bGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9saWN5RGVj
aXNpb25Bc3luY2hyb25vdXNseSA9IGZhbHNlOworCisgICAgdGVzdC0+bG9hZFVSSShyZXNvdXJj
ZVVSTC5nZXQoKSk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAg
IGdfYXNzZXJ0X3RydWUodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBBTExPV19XSVRI
T1VUX1NPVU5ECisgICAgdGVzdC0+bV93ZWJzaXRlUG9saWNpZXMgPSB3ZWJraXRfd2Vic2l0ZV9w
b2xpY2llc19uZXdfd2l0aF9wb2xpY2llcygiYXV0b3BsYXktcG9saWN5IiwgV0VCS0lUX0FVVE9Q
TEFZX0FMTE9XX1dJVEhPVVRfU09VTkQsIG51bGxwdHIpOworICAgIHRlc3QtPm1fYXV0b3BsYXll
ZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgPSBQ
b2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5OworICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9s
aWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IGZhbHNlOworCisgICAgdGVzdC0+bG9hZFVSSShy
ZXNvdXJjZVVSTC5nZXQoKSk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3Ap
OworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+ZGlkQXV0b3BsYXkoKSk7Cit9CisKIHZvaWQgYmVm
b3JlQWxsKCkKIHsKICAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKQEAgLTI3
Niw2ICs0MDIsOSBAQCB2b2lkIGJlZm9yZUFsbCgpCiAKICAgICBQb2xpY3lDbGllbnRUZXN0Ojph
ZGQoIldlYktpdFBvbGljeUNsaWVudCIsICJuYXZpZ2F0aW9uLXBvbGljeSIsIHRlc3ROYXZpZ2F0
aW9uUG9saWN5KTsKICAgICBQb2xpY3lDbGllbnRUZXN0OjphZGQoIldlYktpdFBvbGljeUNsaWVu
dCIsICJyZXNwb25zZS1wb2xpY3kiLCB0ZXN0UmVzcG9uc2VQb2xpY3kpOworICAgIFBvbGljeUNs
aWVudFRlc3Q6OmFkZCgiV2ViS2l0UG9saWN5Q2xpZW50IiwgImF1dG9wbGF5LXBvbGljeSIsIHRl
c3RBdXRvcGxheVBvbGljeSk7CisgICAgLy8gV0FSTklORzogVGhpcyB0ZXN0IG11c3QgY29tZSBs
YXN0LCBpdCB1c2VzIHJhY2V5IGNvbnN0cnVjdHMgdGhhdAorICAgIC8vIGludGVyZmVyZSBub25k
ZXRlcm1pbmlzaWNhbGx5IHdpdGggYW55IHRlc3QgcnVubmluZyBhZnRlciBpdC4KICAgICBQb2xp
Y3lDbGllbnRUZXN0OjphZGQoIldlYktpdFBvbGljeUNsaWVudCIsICJuZXctd2luZG93LXBvbGlj
eSIsIHRlc3ROZXdXaW5kb3dQb2xpY3kpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKaW5kZXggOGUzZjM0OGQ4YWI1MTRk
NDc4M2VjYjFhYWVhM2JiZDIzMDI3YTliZS4uMTgyYTI0ZjhlMTQxZjg1MDlkYzRlZWFhMDI1ODI0
NWU2NWZhZDkyZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3SW50
ZXJuYWwuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAKQEAg
LTMxNyw2ICszMTgsMTggQEAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogV2ViVmlld1Rlc3Q6OnJ1
bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoY28KICAgICByZXR1cm4gbV9q
YXZhc2NyaXB0UmVzdWx0OwogfQogCitXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBXZWJWaWV3VGVz
dDo6cnVuSmF2YVNjcmlwdFdpdGhvdXRGb3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0VW50aWxGaW5p
c2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBpZiAo
bV9qYXZhc2NyaXB0UmVzdWx0KQorICAgICAgICB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5y
ZWYobV9qYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBtX2phdmFzY3JpcHRSZXN1bHQgPSAwOworICAg
IG1famF2YXNjcmlwdEVycm9yID0gZXJyb3I7CisgICAgd2Via2l0V2ViVmlld1J1bkphdmFzY3Jp
cHRXaXRob3V0Rm9yY2VkVXNlckdlc3R1cmVzKG1fd2ViVmlldywgamF2YXNjcmlwdCwgMCwgcmVp
bnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihydW5KYXZhU2NyaXB0UmVhZHlDYWxs
YmFjayksIHRoaXMpOworICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKworICAgIHJl
dHVybiBtX2phdmFzY3JpcHRSZXN1bHQ7Cit9CisKIGNoYXIqIFdlYlZpZXdUZXN0OjpqYXZhc2Ny
aXB0UmVzdWx0VG9DU3RyaW5nKFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1
bHQpCiB7CiAgICAgYXV0byogdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pz
X3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKaW5kZXggYzNmZGQ5ODI1ODkxMWI1ZWNiZjMxMGM5
YWVjZTRiYzg1M2FjZjUwYi4uYmIwNzA4ODAxOWM4ODgxN2ViYjY0ZDE5YWJiODI5ZDU0NzZjYjQ3
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmll
d1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3
VGVzdC5oCkBAIC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0KiBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNj
cmlwdCwgR0Vycm9yKiopOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3Jp
cHRGcm9tR1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogcmVzb3VyY2Us
IEdFcnJvcioqKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0SW5X
b3JsZEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIGNvbnN0IGNo
YXIqIHdvcmxkLCBHRXJyb3IqKik7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2
YVNjcmlwdFdpdGhvdXRGb3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0VW50aWxGaW5pc2hlZChjb25z
dCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKik7CiAKICAgICAvLyBKYXZhc2NyaXB0IHJlc3Vs
dCBoZWxwZXJzLgogICAgIHN0YXRpYyBjaGFyKiBqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKFdl
YktpdEphdmFzY3JpcHRSZXN1bHQqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401730</attachid>
            <date>2020-06-12 08:19:36 -0700</date>
            <delta_ts>2020-06-15 05:40:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20200612161934.patch</filename>
            <type>text/plain</type>
            <size>58822</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhhYTRmZTdmNzIzYjk4YTVl
MTJjYTA5NDIwY2RlMTg3NTAxNTcyZDMuLjJjNTUwZGMxZWY5NDUxMDIxOGUyMDA2NjBhODdjMWYy
YTFmMGZkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjAtMDYtMTIgIENoYXJsaWUg
VHVybmVyICA8Y3R1cm5lckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIERpc2FibGUgdmlk
ZW8gYXV0b3BsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDg0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFkZCBuZXcgc291cmNlIGZpbGVzIHRvIHRoZSBidWls
ZC4KKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZTogRGl0dG8uCisgICAgICAgICogU291cmNl
c0dUSy50eHQ6IERpdHRvLgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwOgorICAgICAg
ICAod2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcyk6IDogQWRkIGFuIEFQ
SSB0bworICAgICAgICByZXNwb25kIHRvIG5hdmlnYXRpb24gZGVjaXNpb25zIHdpdGggcG9saWNp
ZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgor
ICAgICAgICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KTogUGx1bWIgaW4g
dGhlIGRlZmF1bHQKKyAgICAgICAgd2Vic2l0ZSBwb2xpY2llcyB0aGF0IGFyZSBhc3NvY2lhdGVk
IHdpdGggdGhlIHdlYiB2aWV3LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6CisgICAgICAg
ICh3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2ViVmlld0dldFBy
b3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llcy5jcHA6IEFkZGVkLgorICAgICAgICAo
X1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGU6Ol9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2
YXRlKToKKyAgICAgICAgKHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFdlYnNpdGVQb2xpY2llcyk6
CisgICAgICAgICh3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRQb2xpY2llc0RhdGEpOgorICAgICAg
ICAod2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2Vi
c2l0ZVBvbGljaWVzU2V0QXV0b3BsYXlQb2xpY3kpOgorICAgICAgICAod2Via2l0V2Vic2l0ZVBv
bGljaWVzU2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfY2xh
c3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcpOgorICAgICAg
ICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMpOgorICAgICAgICAo
d2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisKIDIwMjAtMDYtMTIgIENoYXJsaWUgVHVybmVy
ICA8Y3R1cm5lckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBhbiBpbnRlcm5hbCBB
UEkgdG8gcnVuIGphdmFzY3JpcHQgd2l0aG91dCBmb3JjZWQgdXNlciBnZXN0dXJlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1HVEsuY21ha2UKaW5kZXggYjk0NTIyYzhmY2EwYWY4ODZmZWZkMmNlNGM5ODJlNDA3NzE1
ZDU2Yi4uZmQ5NDNmZjVhNWZlYTA2OTVjNDRkYmY5OGRkZmFkMDQwZjNlYzIyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0xNDAsNiArMTQwLDcgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFM
TEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVEYXRhLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyLmgKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggODMyMGUz
MTBlNmM0NjY5MjRhMDgzZWU0NmFlMzFmNTQ4NjQyMGZjZC4uOWY3NzAyNWE5YjVmOTE2ZjM3ZDQy
MGFkNDhjYTM0OTIyMWFjYzRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQ
RS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNTIsNiAr
MTUyLDcgQEAgc2V0KFdQRV9BUElfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhLmgKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oCiAgICAgJHtXRUJL
SVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmgKKyAgICAk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oCiAg
ICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAogKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
R1RLLnR4dAppbmRleCAyZDVhYWM5NTNhYmVmMjNlYTVkMDIzM2FkMGE1YmU5YWE1OTg1YjhlLi4x
Y2YyNzdjOTU1OTJiMTczODE5ZTk0MmE3OTllNzZhOGQxMDFkODg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50
eHQKQEAgLTE5Miw2ICsxOTIsNyBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1Nl
c3Npb25TdGF0ZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZURhdGEuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2luZG93UHJv
cGVydGllcy5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBv
bGljaWVzLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMu
Y3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwIEBuby11
bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc1dQRS50eHQKaW5kZXggOGI5MzRlODFlNzQ4OTBlYmE2NzRmNWZhYWE2YTVh
ZGUwZjYwNWMxMS4uNDEzMzkxZWUyZmNhNjMwMjU5YTg2MWM0OTgzZDE5OTMyMDE0MmM2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNXUEUudHh0CkBAIC0xODAsNiArMTgwLDcgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVEYXRhLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdpbmRvd1Byb3BlcnRpZXMuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYnNpdGVQb2xpY2llcy5jcHAgQG5vLXVuaWZ5CiAKIFVJUHJvY2Vzcy9BUEkvd3BlL0lu
cHV0TWV0aG9kRmlsdGVyV1BFLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VD
bGllbnRJbXBsLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcAppbmRleCBhMzU3NDc5M2M2
OWVkMDc2ODNhNjAzZTYyOWY0MDkxMWY3NWJjYTNhLi5jYjI4MWI4NzU2N2ZlYzM4N2Y5NWZhMmNm
NmExOTAzYmNjZTIwZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRQb2xpY3lEZWNpc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwCkBAIC0yMCw4ICsyMCwxMSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFBvbGljeURlY2lzaW9uLmgiCiAK
KyNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUu
aCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJzaXRlUG9saWNpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAKQEAgLTg0LDYgKzg3LDM0IEBAIHZv
aWQgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UoV2ViS2l0UG9saWN5RGVjaXNpb24qIGRlY2lz
aW9uKQogICAgIGxpc3RlbmVyLT51c2UoKTsKIH0KIAorLyoqCisgKiB3ZWJraXRfcG9saWN5X2Rl
Y2lzaW9uX3VzZV93aXRoX3BvbGljaWVzOgorICogQGRlY2lzaW9uOiBhICNXZWJLaXRQb2xpY3lE
ZWNpc2lvbgorICogQHBvbGljaWVzOiBhICNXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAqCisgKiBB
Y2NlcHQgdGhlIG5hdmlnYXRpb24gYWN0aW9uIHdoaWNoIHRyaWdnZXJlZCB0aGlzIGRlY2lzaW9u
LCBhbmQKKyAqIGNvbnRpbnVlIHdpdGggQHBvbGljaWVzIGFmZmVjdGluZyBhbGwgc3Vic2VxdWVu
dCBsb2FkcyBvZiByZXNvdXJjZXMKKyAqIGluIHRoZSBvcmlnaW4gYXNzb2NpYXRlZCB3aXRoIHRo
ZSBhY2NlcHRlZCBuYXZpZ2F0aW9uIGFjdGlvbi4KKyAqCisgKiBGb3IgZXhhbXBsZSwgYSBuYXZp
Z2F0aW9uIGRlY2lzaW9uIHRvIGEgdmlkZW8gc2hhcmluZyB3ZWJzaXRlIG1heQorICogYmUgYWNj
ZXB0ZWQgdW5kZXIgdGhlIHByaXZpc28gbm8gbW92aWVzIGFyZSBhbGxvd2VkIHRvIGF1dG9wbGF5
LiBUaGUKKyAqIGF1dG9wbGF5IHBvbGljeSBpbiB0aGlzIGNhc2Ugd291bGQgYmUgc2V0IGluIHRo
ZSBAcG9saWNpZXMuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwordm9pZCB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX3VzZV93aXRoX3BvbGljaWVzKFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lv
biwgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTKHBvbGljaWVzKSk7CisKKyAgICBpZiAo
IWRlY2lzaW9uLT5wcml2LT5saXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBs
aXN0ZW5lciA9IHN0ZDo6ZXhjaGFuZ2UoZGVjaXNpb24tPnByaXYtPmxpc3RlbmVyLCBudWxscHRy
KTsKKworICAgIGxpc3RlbmVyLT51c2Uod2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0V2Vic2l0ZVBv
bGljaWVzKHBvbGljaWVzKSk7Cit9CisKIC8qKgogICogd2Via2l0X3BvbGljeV9kZWNpc2lvbl9p
Z25vcmU6CiAgKiBAZGVjaXNpb246IGEgI1dlYktpdFBvbGljeURlY2lzaW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmlu
ZGV4IDA0MWJmYjU0NWM2YWY2MjIwYTgyNjZkMzU2YWMxOWQ5MDc5MWNiODMuLmM0YzdkMGY2YzEy
NjFiNTFkMDIwNzFhNjUyYWEwOTNkMWFhM2I5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC01Myw2ICs1Myw3
IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhTWFuYWdlclBy
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgpAQCAtMTg5Nyw3
ICsxODk4LDcgQEAgV2ViUHJvY2Vzc1Bvb2wmIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9v
bChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIHJldHVybiAqY29udGV4dC0+cHJpdi0+
cHJvY2Vzc1Bvb2w7CiB9CiAKLXZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJW
aWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3
KiByZWxhdGVkVmlldykKK3ZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3KiBy
ZWxhdGVkVmlldywgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBkZWZhdWx0V2Vic2l0ZVBvbGljaWVz
KQogewogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9u
OjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woY29udGV4
dC0+cHJpdi0+cHJvY2Vzc1Bvb2wuZ2V0KCkpOwpAQCAtMTkxMCw2ICsxOTExLDcgQEAgdm9pZCB3
ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgV2ViS2l0V2ViVmkKICAgICBpZiAoIW1hbmFnZXIpCiAgICAgICAgIG1hbmFnZXIgPSBj
b250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCk7CiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnNldFdlYnNpdGVEYXRhU3RvcmUoJndlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERh
dGFTdG9yZShtYW5hZ2VyKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldERlZmF1bHRXZWJz
aXRlUG9saWNpZXMod2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0V2Vic2l0ZVBvbGljaWVzKGRlZmF1
bHRXZWJzaXRlUG9saWNpZXMpKTsKICAgICB3ZWJraXRXZWJWaWV3Q3JlYXRlUGFnZSh3ZWJWaWV3
LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBhdXRvJiBwYWdlID0gd2Via2l0
V2ViVmlld0dldFBhZ2Uod2ViVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAppbmRleCBkODU2OWM4
NTliYWJmZTExNjljNjgyZWI2ODYzNjZlM2QwNjliOWFkLi43OGQxNTc4Zjk0NzkzZTllNTlhM2Q0
ZDJiMzNlNzllYTg1MzBmYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YktpdFdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIApAQCAtMzYsNyArMzcsNyBAQCBXZWJL
aXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoV2ViS2l0OjpE
b3dubG9hZFByb3h5Kik7CiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dFN0YXJ0RG93
bmxvYWQoV2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqIHVyaSwgV2ViS2l0OjpXZWJQYWdl
UHJveHkqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKFdlYktpdDo6RG93
bmxvYWRQcm94eSopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0RG93bmxvYWRTdGFydGVkKFdlYktp
dFdlYkNvbnRleHQqLCBXZWJLaXREb3dubG9hZCopOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3Jl
YXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdlYkNv
bnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2ViVmll
dyosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJz
aXRlUG9saWNpZXMqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95ZWQoV2Vi
S2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqKTsKIFdlYktpdFdlYlZpZXcqIHdlYmtpdFdl
YkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQ
YWdlUHJveHkqKTsKIEdWYXJpYW50KiB3ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6ZVdlYkV4dGVu
c2lvbnMoV2ViS2l0V2ViQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA1MGRmM2Y0NDhhN2QzOGUzMjgyZTY2
MjgyNDkwZjE3MGZlZWJhYWVkLi40MmZmM2Y2MTRlZjAyYjM5ZmExMDI5MGE4Mzg1Y2NiZmZlODUz
YjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZVByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdpbmRvd1Byb3Bl
cnRpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpAQCAtMjAxLDcgKzIwMiw4IEBAIGVudW0gewogICAg
IFBST1BfQVVUT01BVElPTl9QUkVTRU5UQVRJT05fVFlQRSwKICAgICBQUk9QX0VESVRBQkxFLAog
ICAgIFBST1BfUEFHRV9JRCwKLSAgICBQUk9QX0lTX01VVEVECisgICAgUFJPUF9JU19NVVRFRCwK
KyAgICBQUk9QX1dFQlNJVEVfUE9MSUNJRVMKIH07CiAKIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRf
dCwgR1JlZlB0cjxXZWJLaXRXZWJSZXNvdXJjZT4gPiBMb2FkaW5nUmVzb3VyY2VzTWFwOwpAQCAt
MzAzLDYgKzMwNSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIEdSZWZQ
dHI8V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0PiBhdXRoZW50aWNhdGlvblJlcXVlc3Q7CiAK
ICAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5hZ2Vy
OworICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZVBvbGljaWVzPiB3ZWJzaXRlUG9saWNpZXM7CiB9
OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC03NTYs
NyArNzU5LDEwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgICAgIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29s
KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwgd2Via2l0V2ViQ29udGV4dEdldFByb2Nl
c3NQb29sKHByaXYtPmNvbnRleHQuZ2V0KCkpKTsKICAgICB9CiAKLSAgICB3ZWJraXRXZWJDb250
ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dC5nZXQoKSwgd2ViVmlldywgcHJp
di0+dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBwcml2LT5yZWxhdGVkVmlldyk7CisgICAgaWYg
KCFwcml2LT53ZWJzaXRlUG9saWNpZXMpCisgICAgICAgIHByaXYtPndlYnNpdGVQb2xpY2llcyA9
IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcoKSk7CisKKyAgICB3ZWJraXRX
ZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dC5nZXQoKSwgd2ViVmll
dywgcHJpdi0+dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBwcml2LT5yZWxhdGVkVmlldywgcHJp
di0+d2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKIAogICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IG1h
a2VVbmlxdWU8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKICAgICBnZXRQYWdlKHdl
YlZpZXcpLnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqcHJpdi0+bG9hZE9ic2VydmVyKTsK
QEAgLTgzOSw2ICs4NDUsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZQogICAgIGNhc2UgUFJP
UF9JU19NVVRFRDoKICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9pc19tdXRlZCh3ZWJWaWV3
LCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9XRUJTSVRFX1BPTElDSUVTOgorICAgICAgICB3ZWJWaWV3LT5wcml2LT53ZWJzaXRlUG9s
aWNpZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlUG9saWNpZXMqPihnX3ZhbHVlX2dldF9v
YmplY3QodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMp
OwogICAgIH0KQEAgLTkwNCw2ICs5MTMsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0
UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAg
IGNhc2UgUFJPUF9JU19NVVRFRDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwg
d2Via2l0X3dlYl92aWV3X2dldF9pc19tdXRlZCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9XRUJTSVRFX1BPTElDSUVTOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmpl
Y3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSk7
CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0x
MjkxLDYgKzEzMDMsMjMgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQo
V2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICBGQUxTRSwKICAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKIAorICAgIC8qKgorICAgICAqIFdl
YktpdFdlYlZpZXc6d2Vic2l0ZS1wb2xpY2llczoKKyAgICAgKgorICAgICAqIFRoZSAjV2ViS2l0
V2Vic2l0ZVBvbGljaWVzIGZvciB0aGUgdmlldy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjMw
CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAg
Z09iamVjdENsYXNzLAorICAgICAgICBQUk9QX1dFQlNJVEVfUE9MSUNJRVMsCisgICAgICAgIGdf
cGFyYW1fc3BlY19vYmplY3QoCisgICAgICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsCisgICAg
ICAgICAgICBfKCJEZWZhdWx0IFdlYnNpdGUgUG9saWNpZXMiKSwKKyAgICAgICAgICAgIF8oIlRo
ZSBkZWZhdWx0IHBvbGljeSBvYmplY3QgZm9yIHNpdGVzIGxvYWRlZCBpbiB0aGlzIHZpZXciKSwK
KyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsCisgICAgICAgICAgICBz
dGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1f
Q09OU1RSVUNUX09OTFkpKSk7CisKICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3Ojpsb2Fk
LWNoYW5nZWQ6CiAgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2gg
dGhlIHNpZ25hbCBpcyBlbWl0dGVkCkBAIC00NjM0LDMgKzQ2NjMsMjUgQEAgV2ViS2l0SW5wdXRN
ZXRob2RDb250ZXh0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0KFdl
YktpdFdlYlZpZXcKICNlbmRpZgogCiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF93
ZWJzaXRlX3BvbGljaWVzOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICog
R2V0cyB0aGUgZGVmYXVsdCB3ZWJzaXRlIHBvbGljaWVzIHNldCBvbiBjb25zdHJ1Y3Rpb24gaW4g
dGhlCisgKiBAd2ViX3ZpZXcuIFRoZXNlIGNhbiBiZSBvdmVycmlkZGVuIG9uIGEgcGVyLW9yaWdp
biBiYXNpcyB2aWEgdGhlCisgKiAjV2ViS2l0V2ViVmlldzo6ZGVjaWRlLXBvbGljeSBzaWduYWwg
aGFuZGxlci4KKyAqCisgKiBTZWUgYWxzbyB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZV93aXRo
X3BvbGljaWVzKCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgZGVmYXVs
dCAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKiBhc3NvY2lhdGVkIHdpdGggdGhlIHZpZXcuCisg
KgorICogU2luY2U6IDIuMzAKKyAqLworV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIG51bGxw
dHIpOworCisgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPndlYnNpdGVQb2xpY2llcy5nZXQoKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YnNpdGVQb2xpY2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlUG9saWNpZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzN2I3YTZjOWMzM2I0N2ZhMzMxOGZm
YTAzOThhYmYzZGUzODBjMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlUG9saWNpZXMuY3BwCkBAIC0wLDAgKzEsMjMyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgiCisKKyNpbmNsdWRlICJBUElX
ZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRFbnVtVHlwZXMuaCIKKyNpbmNsdWRl
ICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNp
bmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
CisvKioKKyAqIFNFQ1RJT046IFdlYktpdFdlYnNpdGVQb2xpY2llcworICogQFNob3J0X2Rlc2Ny
aXB0aW9uOiBWaWV3IHNwZWNpZmljIHdlYnNpdGUgcG9saWNpZXMKKyAqIEBUaXRsZTogV2ViS2l0
V2Vic2l0ZVBvbGljaWVzCisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3CisgKgorICogV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIHBlci1wYWdlIHBvbGlj
aWVzLAorICogY3VycmVudGx5IG9ubHkgYXV0b3BsYXkgcG9saWNpZXMgYXJlIHN1cHBvcnRlZC4K
KyAqCisgKiBTaW5jZTogMi4zMAorICovCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2Vu
dW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfQVVUT1BMQVlfUE9MSUNZCit9OworCitzdHJ1
Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUgeworICAgIF9XZWJLaXRXZWJzaXRlUG9s
aWNpZXNQcml2YXRlKCkKKyAgICAgICAgOiB3ZWJzaXRlUG9saWNpZXMoQVBJOjpXZWJzaXRlUG9s
aWNpZXM6OmNyZWF0ZSgpKQorICAgIHsKKyAgICB9CisgICAgUmVmUHRyPEFQSTo6V2Vic2l0ZVBv
bGljaWVzPiB3ZWJzaXRlUG9saWNpZXM7Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0
V2Vic2l0ZVBvbGljaWVzLCB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llcywgR19UWVBFX09CSkVDVCkK
KworQVBJOjpXZWJzaXRlUG9saWNpZXMmIHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFdlYnNpdGVQ
b2xpY2llcyhXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzKQoreworICAgIHJldHVybiAq
cG9saWNpZXMtPnByaXYtPndlYnNpdGVQb2xpY2llcy5nZXQoKTsKK30KKworV2Vic2l0ZVBvbGlj
aWVzRGF0YSB3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRQb2xpY2llc0RhdGEoV2ViS2l0V2Vic2l0
ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAgICBXZWJzaXRlUG9saWNpZXNEYXRhIHBvbGljaWVz
RGF0YTsKKworICAgIHN3aXRjaCAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5
X3BvbGljeShwb2xpY2llcykpIHsKKyAgICBjYXNlIFdlYktpdEF1dG9wbGF5UG9saWN5OjpXRUJL
SVRfQVVUT1BMQVlfQUxMT1c6CisgICAgICAgIHBvbGljaWVzRGF0YS5hdXRvcGxheVBvbGljeSA9
IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3c7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2ViS2l0QXV0b3BsYXlQb2xpY3k6OldFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5E
OgorICAgICAgICBwb2xpY2llc0RhdGEuYXV0b3BsYXlQb2xpY3kgPSBXZWJzaXRlQXV0b3BsYXlQ
b2xpY3k6OkFsbG93V2l0aG91dFNvdW5kOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYktp
dEF1dG9wbGF5UG9saWN5OjpXRUJLSVRfQVVUT1BMQVlfREVOWToKKyAgICAgICAgcG9saWNpZXNE
YXRhLmF1dG9wbGF5UG9saWN5ID0gV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZW55OworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBwb2xpY2llc0RhdGEuYXV0b3BsYXlQb2xp
Y3kgPSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlZmF1bHQ7CisgICAgfQorCisgICAgcmV0dXJu
IHBvbGljaWVzRGF0YTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0
UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSogdmFsdWUsIEdQ
YXJhbVNwZWMqIHBhcmFtU3BlYykKK3sKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGlj
aWVzID0gV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJv
cElEKSB7CisgICAgY2FzZSBQUk9QX0FVVE9QTEFZX1BPTElDWToKKyAgICAgICAgZ192YWx1ZV9z
ZXRfZW51bSh2YWx1ZSwgd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGlj
eShwb2xpY2llcykpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09C
SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7
CisgICAgfQorfQorCit2b2lkIHdlYmtpdFdlYnNpdGVQb2xpY2llc1NldEF1dG9wbGF5UG9saWN5
KFdlYktpdFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFdlYktpdEF1dG9wbGF5UG9saWN5IHBv
bGljeSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX1BPTElDSUVT
KHBvbGljaWVzKSk7CisKKyAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgIGNhc2UgV0VCS0lUX0FV
VE9QTEFZX0FMTE9XOgorICAgICAgICBwb2xpY2llcy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzLT5z
ZXRBdXRvcGxheVBvbGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3cpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NP
VU5EOgorICAgICAgICBwb2xpY2llcy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzLT5zZXRBdXRvcGxh
eVBvbGljeShXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9BVVRPUExBWV9ERU5ZOgorICAgICAg
ICBwb2xpY2llcy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzLT5zZXRBdXRvcGxheVBvbGljeShXZWJL
aXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVueSk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworc3RhdGlj
IHZvaWQgd2Via2l0V2Vic2l0ZVBvbGljaWVzU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wSUQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykK
K3sKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzID0gV0VCS0lUX1dFQlNJVEVf
UE9MSUNJRVMob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElEKSB7CisgICAgY2FzZSBQUk9Q
X0FVVE9QTEFZX1BPTElDWTogeworICAgICAgICB3ZWJraXRXZWJzaXRlUG9saWNpZXNTZXRBdXRv
cGxheVBvbGljeShwb2xpY2llcywgc3RhdGljX2Nhc3Q8V2ViS2l0QXV0b3BsYXlQb2xpY3k+KGdf
dmFsdWVfZ2V0X2VudW0odmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZh
dWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wSUQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2Vic2l0
ZV9wb2xpY2llc19jbGFzc19pbml0KFdlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzKiBmaW5kQ2xh
c3MpCit7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhm
aW5kQ2xhc3MpOworCisgICAgZ09iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRXZWJz
aXRlUG9saWNpZXNHZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9
IHdlYmtpdFdlYnNpdGVQb2xpY2llc1NldFByb3BlcnR5OworCisgICAgLyoqCisgICAgICogV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzOmF1dG9wbGF5LXBvbGljeToKKyAgICAgKgorICAgICAqIFRoZSAj
V2ViS2l0QXV0b3BsYXlQb2xpY3kgb2YgI1dlYktpdFdlYnNpdGVQb2xpY2llcy4KKyAgICAgKgor
ICAgICAqIFNpbmNlOiAyLjMwCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0FVVE9QTEFZX1BP
TElDWSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX2VudW0oCisgICAgICAgICAgICAiYXV0b3BsYXkt
cG9saWN5IiwKKyAgICAgICAgICAgICJBdXRvcGxheSBQb2xpY3kiLAorICAgICAgICAgICAgXygi
VGhlIGF1dG9wbGF5IHBvbGljeSB0byB1c2Ugd2hlbiBkZWNpZGluZyB0byBhdXRvcGxheSBtZWRp
YSIpLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfQVVUT1BMQVlfUE9MSUNZLAorICAgICAgICAg
ICAgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQsCisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09O
U1RSVUNUX09OTFkpKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3
OgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogdGhlIG5ld2x5IGNyZWF0ZWQgI1dl
YktpdFdlYnNpdGVQb2xpY2llcworICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK1dlYktpdFdlYnNp
dGVQb2xpY2llcyogd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3KHZvaWQpCit7CisgICAgcmV0
dXJuIFdFQktJVF9XRUJTSVRFX1BPTElDSUVTKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJT
SVRFX1BPTElDSUVTLCBudWxscHRyKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYnNpdGVfcG9s
aWNpZXNfbmV3X3dpdGhfcG9saWNpZXM6CisgKiBAZmlyc3RfcG9saWN5X25hbWU6IG5hbWUgb2Yg
dGhlIGZpcnN0IHBvbGljeSB0byBzZXQKKyAqIEAuLi46IHZhbHVlIG9mIGZpcnN0IHBvbGljeSwg
Zm9sbG93ZWQgYnkgbW9yZSBwb2xpY2llcywgJU5VTEwtdGVybWluYXRlZAorICoKKyAqIFJldHVy
bnM6ICh0cmFuc2ZlciBmdWxsKTogdGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYnNpdGVQb2xp
Y2llcworICoKKyAqIDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgorICogV2ViS2l0
V2Vic2l0ZVBvbGljaWVzICpkZWZhdWx0X3dlYnNpdGVfcG9saWNpZXMgPSB3ZWJraXRfd2Vic2l0
ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcygKKyAqICAgICAiYXV0b3BsYXktcG9saWN5Iiwg
V0VCS0lUX0FVVE9QTEFZX0RFTlksCisgKiAgICAgTlVMTCk7CisgKiAuLi4KKyAqIFdlYktpdFdl
YlZpZXcgKnZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dF
Ql9WSUVXLAorICogICAgICJ3ZWItY29udGV4dCIsIGN0eCwKKyAqICAgICAic2V0dGluZ3MiLCBz
ZXR0aW5ncywKKyAqICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCBjb250ZW50X21hbmFnZXIs
CisgKiAgICAgIndlYnNpdGUtcG9saWNpZXMiLCBkZWZhdWx0X3dlYnNpdGVfcG9saWNpZXMsCisg
KiAgICAgTlVMTCkpOworICogLi4uCisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFt
cGxlPgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK1dlYktpdFdlYnNpdGVQb2xpY2llcyogd2Vi
a2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMoY29uc3QgZ2NoYXIqIGZpcnN0
UG9saWN5TmFtZSwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnczsKKyAgICB2YV9zdGFydChhcmdz
LCBmaXJzdFBvbGljeU5hbWUpOworICAgIFdlYktpdFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMg
PSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFUyhnX29iamVjdF9uZXdfdmFsaXN0KFdFQktJVF9UWVBF
X1dFQlNJVEVfUE9MSUNJRVMsIGZpcnN0UG9saWN5TmFtZSwgYXJncykpOworICAgIHZhX2VuZChh
cmdzKTsKKworICAgIHJldHVybiBwb2xpY2llczsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vic2l0
ZV9wb2xpY2llc19nZXRfYXV0b3BsYXlfcG9saWN5OgorICogQHBvbGljaWVzOiBhICNXZWJLaXRX
ZWJzaXRlUG9saWNpZXMKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRXZWJzaXRlUG9saWNpZXM6YXV0
b3BsYXktcG9saWN5IHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6ICNXZWJLaXRBdXRvcGxheVBv
bGljeQorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK1dlYktpdEF1dG9wbGF5UG9saWN5IHdlYmtp
dF93ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRvcGxheV9wb2xpY3koV2ViS2l0V2Vic2l0ZVBvbGlj
aWVzKiBwb2xpY2llcykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
U0lURV9QT0xJQ0lFUyhwb2xpY2llcyksIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NP
VU5EKTsKKworICAgIGF1dG8gYXBpQXV0b3BsYXlQb2xpY3lUeXBlID0gcG9saWNpZXMtPnByaXYt
PndlYnNpdGVQb2xpY2llcy0+YXV0b3BsYXlQb2xpY3koKTsKKyAgICBzd2l0Y2ggKGFwaUF1dG9w
bGF5UG9saWN5VHlwZSkgeworICAgIGNhc2UgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6
OkFsbG93OgorICAgICAgICByZXR1cm4gV0VCS0lUX0FVVE9QTEFZX0FMTE9XOworICAgIGNhc2Ug
V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kOgorICAgICAg
ICByZXR1cm4gV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ7CisgICAgY2FzZSBX
ZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVueToKKyAgICAgICAgcmV0dXJuIFdFQktJ
VF9BVVRPUExBWV9ERU5ZOworICAgIGNhc2UgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3k6
OkRlZmF1bHQ6CisgICAgICAgIHJldHVybiBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9T
T1VORDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZmYxZjEyODdl
OGQxYmM1N2Y3ZWJkYzM2Y2I2NjZhMDY1N2RiZWNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZS5o
CkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRl
ICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRh
LmgiCisKK0FQSTo6V2Vic2l0ZVBvbGljaWVzKiB3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRXZWJz
aXRlUG9saWNpZXMoV2ViS2l0V2Vic2l0ZVBvbGljaWVzICopOworV2ViS2l0OjpXZWJzaXRlUG9s
aWNpZXNEYXRhIHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFBvbGljaWVzRGF0YShXZWJLaXRXZWJz
aXRlUG9saWNpZXMgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmgKaW5kZXggZjE5MmExZDM3OWRjNjQyMWRmNzYwNDc0
ZDIwNjQ5ZTQ1ZmYwYzhjYi4uMGZmODllNDljNzYzZDM2ZjVlNGFlM2JkMWMxMTdkNjMxYzEzMmU4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xp
Y3lEZWNpc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UG9saWN5RGVjaXNpb24uaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8Z2xpYi1vYmpl
Y3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKQEAgLTYyLDYg
KzYzLDEwIEBAIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5cGUgKHZvaWQpOwogV0VCS0lU
X0FQSSB2b2lkCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZSAgICAgIChXZWJLaXRQb2xpY3lE
ZWNpc2lvbiAqZGVjaXNpb24pOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wb2xpY3lfZGVj
aXNpb25fdXNlX3dpdGhfcG9saWNpZXMgIChXZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2Vic2l0
ZVBvbGljaWVzICpwb2xpY2llcyk7CisKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3BvbGljeV9k
ZWNpc2lvbl9pZ25vcmUgICAoV2ViS2l0UG9saWN5RGVjaXNpb24gKmRlY2lzaW9uKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCAx
MzEzNjBjM2RkMGViZmNhMTFjNmU3MTQ4NmU2MTE2ZDdkZjEwYmNmLi5hYzUxNjgzYjY3NWQ1YTk4
YjY2NTUzMjNmOWE1MWM0OWU3NjIzYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViSW5z
cGVjdG9yLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJSZXNvdXJjZS5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRXZWJWaWV3QmFzZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld1Nlc3Np
b25TdGF0ZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2luZG93UHJvcGVydGllcy5oPgpA
QCAtNTg0LDYgKzU4NSwxMSBAQCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lucHV0X21ldGhvZF9jb250
ZXh0ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3CiBXRUJLSVRfQVBJIFdlYktpdElucHV0TWV0
aG9kQ29udGV4dCAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0ICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKKworV0VC
S0lUX0FQSSBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKgord2Via2l0X3dlYl92aWV3X2dldF93ZWJz
aXRlX3BvbGljaWVzICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAq
d2ViX3ZpZXcpOworCisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKaW5kZXggNTJkNWYz
ZTVmYThjYzM3ZDE4ZjdmNmZmYzc3MzQwYTk0NGIzMjI3Zi4uOWI5OTI3NWIyNGVmYzRhY2M3YWYw
MTU1MGMxZWYzZjc3OGUwNGUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCkBAIC0zMzcsOCArMzM3LDggQEAgR3RrV2lk
Z2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dChXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0KQogICogWW91IGNhbiBhbHNvIHVzZSB0aGlzIG1ldGhvZCB0byBpbXBsZW1lbnQgb3Ro
ZXIgcHJvY2VzcyBtb2RlbHMgYmFzZWQgb24gJVdFQktJVF9QUk9DRVNTX01PREVMX01VTFRJUExF
X1NFQ09OREFSWV9QUk9DRVNTRVMsCiAgKiBsaWtlIGZvciBleGFtcGxlLCBzaGFyaW5nIHRoZSBz
YW1lIHdlYiBwcm9jZXNzIGZvciBhbGwgdGhlIHZpZXdzIGluIHRoZSBzYW1lIHNlY3VyaXR5IGRv
bWFpbi4KICAqCi0gKiBUaGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWxsIGFsc28g
aGF2ZSB0aGUgc2FtZSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCi0gKiBhbmQgI1dlYktpdFNl
dHRpbmdzIGFzIEB3ZWJfdmlldy4KKyAqIFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3
IHdpbGwgYWxzbyBoYXZlIHRoZSBzYW1lICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIsCisgKiAj
V2ViS2l0U2V0dGluZ3MsIGFuZCAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzIGFzIEB3ZWJfdmlldy4K
ICAqCiAgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IFRoZSBuZXdseSBjcmVhdGVkICNXZWJL
aXRXZWJWaWV3IHdpZGdldAogICoKQEAgLTM1Miw2ICszNTIsNyBAQCBHdGtXaWRnZXQqIHdlYmtp
dF93ZWJfdmlld19uZXdfd2l0aF9yZWxhdGVkX3ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgd2Via2l0X3dlYl92aWV3X2dldF91c2Vy
X2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSwKICAgICAgICAgInNldHRpbmdzIiwgd2Via2l0X3dl
Yl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSwKICAgICAgICAgInJlbGF0ZWQtdmlldyIsIHdl
YlZpZXcsCisgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgd2Via2l0X3dlYl92aWV3X2dldF93
ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAogICAgICAgICBudWxscHRyKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZVBvbGlj
aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVQb2xp
Y2llcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjljNzU0N2Q1NWVlNTQ3MGZjYWNjN2E3Nzc5MTU4YmJhZGI2YjQ5
NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYnNpdGVQb2xpY2llcy5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykg
JiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93
ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZp
bmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJTSVRFX1BP
TElDSUVTICAgICAgICAgICAgKHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF90eXBlKCkpCisj
ZGVmaW5lIFdFQktJVF9XRUJTSVRFX1BPTElDSUVTKG9iaikgICAgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsIFdl
YktpdFdlYnNpdGVQb2xpY2llcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJTSVRFX1BPTElDSUVT
KG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9U
WVBFX1dFQlNJVEVfUE9MSUNJRVMpKQorI2RlZmluZSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19D
TEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRf
VFlQRV9XRUJTSVRFX1BPTElDSUVTLCBXZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcykpCisjZGVm
aW5lIFdFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNL
X0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMpKQorI2Rl
ZmluZSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNU
QU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLCBXZWJL
aXRXZWJzaXRlUG9saWNpZXNDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRl
UG9saWNpZXMgICAgICAgIFdlYktpdFdlYnNpdGVQb2xpY2llczsKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcyAgIFdlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzOwor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUgV2ViS2l0V2Vic2l0
ZVBvbGljaWVzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXMgeworICAg
IEdPYmplY3QgcGFyZW50OworCisgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZSAqcHJp
djsKK307CisKK3N0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MgeworICAgIEdPYmpl
Y3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2
b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgq
X3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMp
ICh2b2lkKTsKK307CisKKy8qKgorICogV2ViS2l0QXV0b3BsYXlQb2xpY3k6CisgKiBAV0VCS0lU
X0FVVE9QTEFZX0FMTE9XOiBEbyBub3QgcmVzdHJpY3QgYXV0b3BsYXkuCisgKiBAV0VCS0lUX0FV
VE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ6IEFsbG93IHZpZGVvcyB0byBhdXRvcGxheSBpZgor
ICogdGhleSBoYXZlIG5vIGF1ZGlvIHRyYWNrLCBvciBpZiB0aGVpciBhdWRpbyB0cmFjayBpcyBt
dXRlZC4KKyAqIEBXRUJLSVRfQVVUT1BMQVlfREVOWTogTmV2ZXIgYWxsb3cgYXV0b3BsYXkuCisg
KgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IGF1dG9wbGF5IHBvbGljaWVzLgorICoK
KyAqIFNpbmNlOiAyLjMwCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0FVVE9QTEFZ
X0FMTE9XLAorICAgIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5ELAorICAgIFdF
QktJVF9BVVRPUExBWV9ERU5ZCit9IFdlYktpdEF1dG9wbGF5UG9saWN5OworCitXRUJLSVRfQVBJ
IEdUeXBlCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfdHlwZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJzaXRlUG9saWNpZXMg
Kgord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKK3dl
YmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzICAgICAgICAgICAgICAgICAg
ICAgKGNvbnN0IGdjaGFyICAqZmlyc3RfcG9saWN5X25hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworCitXRUJL
SVRfQVBJIFdlYktpdEF1dG9wbGF5UG9saWN5Cit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRf
YXV0b3BsYXlfcG9saWN5ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlUG9saWNpZXMq
IHBvbGljaWVzKTsKKworR19FTkRfREVDTFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0
CmluZGV4IDQ4MmIwNmNlY2ZhMTdiYmQzOTljYjg4ZDg0ZDExYWQzZDk0NWFlYTAuLjgwNWVhMDc2
MmY4MTI5NGQwZDI5NDI1YjkzN2I3NDBlNGE5MjhkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNl
Y3Rpb25zLnR4dApAQCAtMTk4LDYgKzE5OCw3IEBAIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50
CiBXZWJLaXRTbmFwc2hvdE9wdGlvbnMKIFdlYktpdFNuYXBzaG90UmVnaW9uCiBXZWJLaXRXZWJQ
cm9jZXNzVGVybWluYXRpb25SZWFzb24KK1dlYktpdEF1dG9wbGF5UG9saWN5CiAKIDxTVUJTRUNU
SU9OIEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVApAQCAtMjg4
LDYgKzI4OSw3IEBAIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZQogd2Via2l0
X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaAogd2Via2l0X3dlYl92aWV3X3Nl
dF9pbnB1dF9tZXRob2RfY29udGV4dAogd2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9tZXRob2Rf
Y29udGV4dAord2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzCiAKIDxTVUJTRUNU
SU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC04
NDcsNiArODQ5LDcgQEAgV2ViS2l0UG9saWN5RGVjaXNpb24KIHdlYmtpdF9wb2xpY3lfZGVjaXNp
b25fZG93bmxvYWQKIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3JlCiB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX3VzZQord2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcwog
CiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFBvbGljeURlY2lzaW9uQ2xhc3MKQEAgLTE4
NDYsMyArMTg0OSwyNiBAQCBXRUJLSVRfVVNFUl9NRVNTQUdFX0dFVF9DTEFTUwogV2ViS2l0VXNl
ck1lc3NhZ2VQcml2YXRlCiB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF90eXBlCiA8L1NFQ1RJT04+
CisKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0V2Vic2l0ZVBvbGljaWVzPC9GSUxFPgorV2ViS2l0
V2Vic2l0ZVBvbGljaWVzCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcKK3dlYmtpdF93ZWJz
aXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19n
ZXRfYXV0b3BsYXlfcG9saWN5CisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0V2Vic2l0
ZVBvbGljaWVzQ2xhc3MKK1dFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTCitXRUJLSVRfSVNfV0VC
U0lURV9QT0xJQ0lFU19DTEFTUworV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUworV0VCS0lU
X1dFQlNJVEVfUE9MSUNJRVMKK1dFQktJVF9XRUJTSVRFX1BPTElDSUVTX0NMQVNTCitXRUJLSVRf
V0VCU0lURV9QT0xJQ0lFU19HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktp
dFdlYnNpdGVQb2xpY2llc1ByaXZhdGUKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF90eXBl
Cis8L1NFQ1RJT04+CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oCmluZGV4IGJmZmZlZDFjNzRiMTU0ODU0MjMzM2Zm
MWJjYjE1Mzk0NjQ2MTZjMDkuLmZmMDNhMGY1YjhlOGMzZmY4ZjNhMDhiMjU1YTYzNGU2MjMwMDBm
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9s
aWN5RGVjaXNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFBvbGljeURlY2lzaW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3cGUvV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzLmg+CiAKIEdfQkVHSU5fREVDTFMKIApAQCAtNjIsNiArNjMsMTAg
QEAgd2Via2l0X3BvbGljeV9kZWNpc2lvbl9nZXRfdHlwZSAodm9pZCk7CiBXRUJLSVRfQVBJIHZv
aWQKIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlICAgICAgKFdlYktpdFBvbGljeURlY2lzaW9u
ICpkZWNpc2lvbik7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3BvbGljeV9kZWNpc2lvbl91
c2Vfd2l0aF9wb2xpY2llcyAgKFdlYktpdFBvbGljeURlY2lzaW9uICpkZWNpc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJzaXRlUG9saWNp
ZXMgKnBvbGljaWVzKTsKKwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9u
X2lnbm9yZSAgIChXZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IDI2NGZlNjhj
ZjJkZjUwY2ZhNTZhOWY3MjM1YzhjYzFkNTUwN2QzZWQuLjIzMTQ5YjBiZjc0YWQwYjY2ODM5MWZm
OWQ2Y2YxZDk4ZmJjMTU4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2ViVmlldy5oCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktp
dFVzZXJNZXNzYWdlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNs
dWRlIDx3cGUvV2ViS2l0V2ViUmVzb3VyY2UuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0V2Vic2l0
ZVBvbGljaWVzLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdCYWNrZW5kLmg+CiAjaW5j
bHVkZSA8d3BlL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuaD4KICNpbmNsdWRlIDx3cGUvV2Vi
S2l0V2luZG93UHJvcGVydGllcy5oPgpAQCAtNTYxLDYgKzU2Miw5IEBAIHdlYmtpdF93ZWJfdmll
d19zZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcKIFdF
QktJVF9BUEkgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0ICoKIHdlYmtpdF93ZWJfdmlld19nZXRf
aW5wdXRfbWV0aG9kX2NvbnRleHQgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqCit3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMgICAgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJz
aXRlUG9saWNpZXMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
c2l0ZVBvbGljaWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U3ZmJkNTVhZTU1NTkyYmI5YzU1YjQ1YzAyNzdm
NGJlNDM5MjdjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5T
SURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdw
ZS93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdERlZmlu
ZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9M
SUNJRVMgICAgICAgICAgICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X3R5cGUoKSkKKyNk
ZWZpbmUgV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUywgV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQlNJVEVfUE9MSUNJRVMo
b2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZ
UEVfV0VCU0lURV9QT0xJQ0lFUykpCisjZGVmaW5lIFdFQktJVF9XRUJTSVRFX1BPTElDSUVTX0NM
QVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9U
WVBFX1dFQlNJVEVfUE9MSUNJRVMsIFdlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzKSkKKyNkZWZp
bmUgV0VCS0lUX0lTX1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUykpCisjZGVm
aW5lIFdFQktJVF9XRUJTSVRFX1BPTElDSUVTX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RB
TkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsIFdlYktp
dFdlYnNpdGVQb2xpY2llc0NsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQ
b2xpY2llcyAgICAgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzOwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYnNpdGVQb2xpY2llc0NsYXNzICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3M7Cit0
eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZSBXZWJLaXRXZWJzaXRl
UG9saWNpZXNQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llcyB7CisgICAg
R09iamVjdCBwYXJlbnQ7CisKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlICpwcml2
OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcyB7CisgICAgR09iamVj
dENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZv
aWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpf
d2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykg
KHZvaWQpOworfTsKKworLyoqCisgKiBXZWJLaXRBdXRvcGxheVBvbGljeToKKyAqIEBXRUJLSVRf
QVVUT1BMQVlfQUxMT1c6IERvIG5vdCByZXN0cmljdCBhdXRvcGxheS4KKyAqIEBXRUJLSVRfQVVU
T1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORDogQWxsb3cgdmlkZW9zIHRvIGF1dG9wbGF5IGlmCisg
KiB0aGV5IGhhdmUgbm8gYXVkaW8gdHJhY2ssIG9yIGlmIHRoZWlyIGF1ZGlvIHRyYWNrIGlzIG11
dGVkLgorICogQFdFQktJVF9BVVRPUExBWV9ERU5ZOiBOZXZlciBhbGxvdyBhdXRvcGxheS4KKyAq
CisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNpZnkgYXV0b3BsYXkgcG9saWNpZXMuCisgKgor
ICogU2luY2U6IDIuMzAKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfQVVUT1BMQVlf
QUxMT1csCisgICAgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQsCisgICAgV0VC
S0lUX0FVVE9QTEFZX0RFTlkKK30gV2ViS2l0QXV0b3BsYXlQb2xpY3k7CisKK1dFQktJVF9BUEkg
R1R5cGUKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF90eXBlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYnNpdGVQb2xpY2llcyAq
Cit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKgord2Vi
a2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMgICAgICAgICAgICAgICAgICAg
ICAoY29uc3QgZ2NoYXIgICpmaXJzdF9wb2xpY3lfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CisKK1dFQktJ
VF9BUEkgV2ViS2l0QXV0b3BsYXlQb2xpY3kKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF9h
dXRvcGxheV9wb2xpY3kgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVQb2xpY2llcyog
cG9saWNpZXMpOworCitHX0VORF9ERUNMUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CmluZGV4IDAyZjQ5YWRk
MDU5YzBkMjgyZTc1MWE3ZWU2OTgxMDI3NzExMjM4MWQuLjRiYjVkZGFkMGM2ODQzNjFiZWZkN2Uy
NjZmZmI4YzhmY2ZiNjAwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKQEAgLTE3Miw2ICsxNzIsNyBA
QCBXZWJLaXRTYXZlTW9kZQogV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQKIFdlYktpdFdlYlBy
b2Nlc3NUZXJtaW5hdGlvblJlYXNvbgogV2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFjaworV2Vi
S2l0QXV0b3BsYXlQb2xpY3kKIAogPFNVQlNFQ1RJT04gRWRpdGluZyBDb21tYW5kcz4KIFdFQktJ
VF9FRElUSU5HX0NPTU1BTkRfQ1VUCkBAIC0yNjAsNiArMjYxLDcgQEAgd2Via2l0X3dlYl92aWV3
X3NlbmRfbWVzc2FnZV90b19wYWdlCiB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3Bh
Z2VfZmluaXNoCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lucHV0X21ldGhvZF9jb250ZXh0CiB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3dlYnNpdGVfcG9saWNpZXMKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4K
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQKQEAgLTg1MSw2ICs4NTMsNyBAQCBXZWJLaXRQb2xpY3lE
ZWNpc2lvbgogd2Via2l0X3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZAogd2Via2l0X3BvbGljeV9k
ZWNpc2lvbl9pZ25vcmUKIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlCit3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX3VzZV93aXRoX3BvbGljaWVzCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2Vi
S2l0UG9saWN5RGVjaXNpb25DbGFzcwpAQCAtMTU0NSwzICsxNTQ4LDI0IEBAIFdFQktJVF9UWVBF
X0lOUFVUX01FVEhPRF9VTkRFUkxJTkUKIDxGSUxFPldlYktpdFVSSVV0aWxpdGllczwvRklMRT4K
IHdlYmtpdF91cmlfZm9yX2Rpc3BsYXkKIDwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5X
ZWJLaXRXZWJzaXRlUG9saWNpZXM8L0ZJTEU+CitXZWJLaXRXZWJzaXRlUG9saWNpZXMKK3dlYmtp
dF93ZWJzaXRlX3BvbGljaWVzX25ldword2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhf
cG9saWNpZXMKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRvcGxheV9wb2xpY3kKKwor
PFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcworV0VCS0lU
X0lTX1dFQlNJVEVfUE9MSUNJRVMKK1dFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTX0NMQVNTCitX
RUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTCitXRUJLSVRfV0VCU0lURV9QT0xJQ0lFUworV0VC
S0lUX1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1MKK1dFQktJVF9XRUJTSVRFX1BPTElDSUVTX0dFVF9D
TEFTUworCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0
ZQord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X3R5cGUKKzwvU0VDVElPTj4KZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhOWYxZmJmMzFkZDMw
NmY5ZDllYjNlZDk1M2U0YjZmNDE2NTVlOWNkLi5kYzg0OWNiNzNiY2UyOGYzNjgzYTU1YTQ2ZWUx
M2NlZmJkNTRlYjNhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDYtMDggIENoYXJsaWUgVHVybmVyICA8Y3R1
cm5lckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIERpc2FibGUgdmlkZW8gYXV0b3BsYXkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDg0NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0
aGUgdmFyaW91cyBjYWxsc2l0ZXMgZm9yIGNvbnN0cnVjdGluZyBhIHZpZXcgdG8gdGFrZSBpbnRv
CisgICAgICAgIGFjY291bnQgdGhlIGRlZmF1bHQgcG9saWNpZXMuIEkgY2hvc2UgdGhlIGRlZmF1
bHQgYXMgYXV0b3BsYXkKKyAgICAgICAgYWxsb3cgd2l0aG91dCBzb3VuZCwgd2hpY2ggaXMgaW4g
a2VlcGluZyB3aXRoIFdlYkNvcmUncyBjaG9pY2UuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9n
dGsvQnJvd3NlcldpbmRvdy5jOgorICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6CisgICAg
ICAgIChuZXdUYWJDYWxsYmFjayk6CisgICAgICAgIChvcGVuUHJpdmF0ZVdpbmRvdyk6CisgICAg
ICAgIChicm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9u
KToKKyAgICAgICAgKGJyb3dzZXJfd2luZG93X2NyZWF0ZV93ZWJfdmlld19pbl9uZXdfdGFiX2Zv
cl9hdXRvbWF0aW9uKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAg
ICAoY3JlYXRlQnJvd3NlclRhYik6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHA6IEFkZAor
ICAgICAgICBhdXRvcGxheSBwb2xpY3kgdGVzdHMsIGFuZCB1c2UgbW9kZXJuIGNsYXNzIGluaXRp
YWxpemVycy4KKyAgICAgICAgKHRlc3RBdXRvcGxheVBvbGljeSk6CisgICAgICAgIChiZWZvcmVB
bGwpOgorCiAyMDIwLTA2LTEyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLNF0gR2V0IE1pbmlCcm93c2VyIHJlYWR5IGZvciBHVEs0CmRp
ZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jIGIvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwppbmRleCBiY2NlZWNlMzNhZDM2NWE4NDA3
ODU3NTk0MjM2MzA4NjgzZmRmMDBiLi44ZmFhOTIxMzY5OTE3MTY4ZDFlY2Y3NTY5OTU4YTQwNDBm
NWRmNDllIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5j
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKQEAgLTQ0Niw2ICs0
NDYsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0RlY2lkZVBvbGljeShXZWJLaXRXZWJWaWV3
ICp3ZWJWaWV3LCBXZWJLaXRQb2xpY3lEZWNpc2lvbgogICAgICAgICAic2V0dGluZ3MiLCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNlci1jb250ZW50
LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZp
ZXcpLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Via2l0X3dlYl92
aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKKyAgICAgICAgIndlYnNp
dGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmll
dyksCiAgICAgICAgIE5VTEwpKTsKICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRfdmlldyh3aW5k
b3csIG5ld1dlYlZpZXcpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3JlcXVlc3QobmV3V2Vi
Vmlldywgd2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2dldF9yZXF1ZXN0KG5hdmlnYXRpb25BY3Rp
b24pKTsKQEAgLTYzMSw2ICs2MzIsNyBAQCBzdGF0aWMgdm9pZCBuZXdUYWJDYWxsYmFjayhHU2lt
cGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludGVyCiAgICAgICAg
ICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyksCiAgICAg
ICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250
ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRp
b24iLCB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcp
LAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0
ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpKTsKICAgICBndGtfd2lkZ2V0X2dy
YWJfZm9jdXMod2luZG93LT51cmlFbnRyeSk7CiAgICAgZ3RrX25vdGVib29rX3NldF9jdXJyZW50
X3BhZ2UoR1RLX05PVEVCT09LKHdpbmRvdy0+bm90ZWJvb2spLCAtMSk7CkBAIC02NTEsNiArNjUz
LDcgQEAgc3RhdGljIHZvaWQgb3BlblByaXZhdGVXaW5kb3coR1NpbXBsZUFjdGlvbiAqYWN0aW9u
LCBHVmFyaWFudCAqcGFyYW1ldGVyLCBncG9pbnQKICAgICAgICAgInVzZXItY29udGVudC1tYW5h
Z2VyIiwgd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSwK
ICAgICAgICAgImlzLWVwaGVtZXJhbCIsIFRSVUUsCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9u
KHdlYlZpZXcpLAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19n
ZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIEd0a1dp
ZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1cod2luZG93KSwg
d2luZG93LT53ZWJDb250ZXh0KTsKICAgICBndGtfd2luZG93X3NldF9hcHBsaWNhdGlvbihHVEtf
V0lORE9XKG5ld1dpbmRvdyksIGd0a193aW5kb3dfZ2V0X2FwcGxpY2F0aW9uKEdUS19XSU5ET1co
d2luZG93KSkpOwpAQCAtMTQ1MSw2ICsxNDU0LDcgQEAgV2ViS2l0V2ViVmlldyAqYnJvd3Nlcl93
aW5kb3dfZ2V0X29yX2NyZWF0ZV93ZWJfdmlld19mb3JfYXV0b21hdGlvbihCcm93c2VyV2luZG8K
ICAgICAgICAgInNldHRpbmdzIiwgd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3
KSwKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgd2Via2l0X3dlYl92aWV3X2dldF91
c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnkt
YXV0b21hdGlvbiIsIFRSVUUsCisgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgd2Via2l0X3dl
Yl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAogICAgICAgICBOVUxMKSk7CiAg
ICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoR1RLX1dJTkRPVyh3
aW5kb3cpLCB3aW5kb3ctPndlYkNvbnRleHQpOwogICAgIGd0a193aW5kb3dfc2V0X2FwcGxpY2F0
aW9uKEdUS19XSU5ET1cobmV3V2luZG93KSwgZ3RrX3dpbmRvd19nZXRfYXBwbGljYXRpb24oR1RL
X1dJTkRPVyh3aW5kb3cpKSk7CkBAIC0xNDcyLDYgKzE0NzYsNyBAQCBXZWJLaXRXZWJWaWV3ICpi
cm93c2VyX3dpbmRvd19jcmVhdGVfd2ViX3ZpZXdfaW5fbmV3X3RhYl9mb3JfYXV0b21hdGlvbihC
cm93c2VyVwogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtY29udHJvbGxl
ZC1ieS1hdXRvbWF0aW9uIiwgVFJVRSwKICAgICAgICAgImF1dG9tYXRpb24tcHJlc2VudGF0aW9u
LXR5cGUiLCBXRUJLSVRfQVVUT01BVElPTl9CUk9XU0lOR19DT05URVhUX1BSRVNFTlRBVElPTl9U
QUIsCisgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJz
aXRlX3BvbGljaWVzKHdlYlZpZXcpLAogICAgICAgICBOVUxMKSk7CiAgICAgYnJvd3Nlcl93aW5k
b3dfYXBwZW5kX3ZpZXcod2luZG93LCBuZXdXZWJWaWV3KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdf
bG9hZF91cmkobmV3V2ViVmlldywgImFib3V0OmJsYW5rIik7CmRpZmYgLS1naXQgYS9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRl
eCAwYjIzNjYyMGQ5YzcwYjRiOTRlMjgwY2E1MDgxMTNjODU3ZDc1ODMyLi5lYjUwM2MyODUxNTM3
NmE5NjZmODcwY2FlNmFlZWQwYmQyMDI5NGIyIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTc2LDEz
ICs3NiwxNCBAQCBzdGF0aWMgZ2NoYXIgKmFyZ3VtZW50VG9VUkwoY29uc3QgY2hhciAqZmlsZW5h
bWUpCiAgICAgcmV0dXJuIGZpbGVVUkw7CiB9CiAKLXN0YXRpYyBXZWJLaXRXZWJWaWV3ICpjcmVh
dGVCcm93c2VyVGFiKEJyb3dzZXJXaW5kb3cgKndpbmRvdywgV2ViS2l0U2V0dGluZ3MgKndlYmtp
dFNldHRpbmdzLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKnVzZXJDb250ZW50TWFuYWdlcikK
K3N0YXRpYyBXZWJLaXRXZWJWaWV3ICpjcmVhdGVCcm93c2VyVGFiKEJyb3dzZXJXaW5kb3cgKndp
bmRvdywgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzLCBXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIgKnVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICpkZWZhdWx0
V2Vic2l0ZVBvbGljaWVzKQogewogICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBXRUJLSVRf
V0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAogICAgICAgICAid2Vi
LWNvbnRleHQiLCBicm93c2VyX3dpbmRvd19nZXRfd2ViX2NvbnRleHQod2luZG93KSwKICAgICAg
ICAgInNldHRpbmdzIiwgd2Via2l0U2V0dGluZ3MsCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFu
YWdlciIsIHVzZXJDb250ZW50TWFuYWdlciwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0
b21hdGlvbiIsIGF1dG9tYXRpb25Nb2RlLAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIGRl
ZmF1bHRXZWJzaXRlUG9saWNpZXMsCiAgICAgICAgIE5VTEwpKTsKIAogICAgIGlmIChlZGl0b3JN
b2RlKQpAQCAtNTY4LDYgKzU2OSwxMCBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZShHQXBwbGljYXRp
b24gKmFwcGxpY2F0aW9uLCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MpCiAgICAgd2Vi
a2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIo
dXNlckNvbnRlbnRNYW5hZ2VyLCAiYWJvdXREYXRhIik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh1
c2VyQ29udGVudE1hbmFnZXIsICJzY3JpcHQtbWVzc2FnZS1yZWNlaXZlZDo6YWJvdXREYXRhIiwg
R19DQUxMQkFDSyhhYm91dERhdGFTY3JpcHRNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayksIHdlYkNv
bnRleHQpOwogCisgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICpkZWZhdWx0V2Vic2l0ZVBvbGlj
aWVzID0gd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMoCisgICAgICAg
ICJhdXRvcGxheS1wb2xpY3kiLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCwK
KyAgICAgICAgTlVMTCk7CisKICAgICBpZiAoY29udGVudEZpbHRlcikgewogICAgICAgICBHRmls
ZSAqY29udGVudEZpbHRlckZpbGUgPSBnX2ZpbGVfbmV3X2Zvcl9jb21tYW5kbGluZV9hcmcoY29u
dGVudEZpbHRlcik7CiAKQEAgLTYxMyw3ICs2MTgsNyBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZShH
QXBwbGljYXRpb24gKmFwcGxpY2F0aW9uLCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3Mp
CiAgICAgICAgIGludCBpOwogCiAgICAgICAgIGZvciAoaSA9IDA7IHVyaUFyZ3VtZW50c1tpXTsg
aSsrKSB7Ci0gICAgICAgICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0gY3JlYXRlQnJvd3Nl
clRhYihtYWluV2luZG93LCB3ZWJraXRTZXR0aW5ncywgdXNlckNvbnRlbnRNYW5hZ2VyKTsKKyAg
ICAgICAgICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBjcmVhdGVCcm93c2VyVGFiKG1haW5X
aW5kb3csIHdlYmtpdFNldHRpbmdzLCB1c2VyQ29udGVudE1hbmFnZXIsIGRlZmF1bHRXZWJzaXRl
UG9saWNpZXMpOwogICAgICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgIGZpcnN0VGFi
ID0gR1RLX1dJREdFVCh3ZWJWaWV3KTsKICAgICAgICAgICAgIGdjaGFyICp1cmwgPSBhcmd1bWVu
dFRvVVJMKHVyaUFyZ3VtZW50c1tpXSk7CkBAIC02MjEsNyArNjI2LDcgQEAgc3RhdGljIHZvaWQg
YWN0aXZhdGUoR0FwcGxpY2F0aW9uICphcHBsaWNhdGlvbiwgV2ViS2l0U2V0dGluZ3MgKndlYmtp
dFNldHRpbmdzKQogICAgICAgICAgICAgZ19mcmVlKHVybCk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgewotICAgICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0gY3JlYXRlQnJvd3NlclRhYiht
YWluV2luZG93LCB3ZWJraXRTZXR0aW5ncywgdXNlckNvbnRlbnRNYW5hZ2VyKTsKKyAgICAgICAg
V2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGNyZWF0ZUJyb3dzZXJUYWIobWFpbldpbmRvdywgd2Vi
a2l0U2V0dGluZ3MsIHVzZXJDb250ZW50TWFuYWdlciwgZGVmYXVsdFdlYnNpdGVQb2xpY2llcyk7
CiAgICAgICAgIGZpcnN0VGFiID0gR1RLX1dJREdFVCh3ZWJWaWV3KTsKIAogICAgICAgICBpZiAo
IWVkaXRvck1vZGUpIHsKQEAgLTYzNCw2ICs2MzksOCBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZShH
QXBwbGljYXRpb24gKmFwcGxpY2F0aW9uLCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3Mp
CiAKICAgICBnX2NsZWFyX29iamVjdCgmd2Via2l0U2V0dGluZ3MpOwogICAgIGdfb2JqZWN0X3Vu
cmVmKHdlYkNvbnRleHQpOworICAgIGdfb2JqZWN0X3VucmVmKHVzZXJDb250ZW50TWFuYWdlcik7
CisgICAgZ19vYmplY3RfdW5yZWYoZGVmYXVsdFdlYnNpdGVQb2xpY2llcyk7CiAKICAgICBndGtf
d2lkZ2V0X2dyYWJfZm9jdXMoZmlyc3RUYWIpOwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lE
R0VUKG1haW5XaW5kb3cpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcAppbmRleCA3Njli
Y2M4OTE2YmI5YjFjMWFmZTI5ZDZiYzIwOWRkNDMyODAxNmE2Li44ZmMxYmJhNmZhMDVkNGI0NWY3
MmM5YjBkMzk1YTI3Yzg0NmI1ZDkxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCkBA
IC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJMb2FkVHJhY2tpbmdUZXN0LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0VGVzdFNlcnZlci5oIgorI2luY2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llcy5o
IgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKQEAgLTMyLDE5ICszMywyMSBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFBvbGljeURl
Y2lzaW9uUmVzcG9uc2UgewogICAgICAgICBVc2UsCisgICAgICAgIFVzZVdpdGhQb2xpY3ksCiAg
ICAgICAgIElnbm9yZSwKICAgICAgICAgRG93bmxvYWQsCiAgICAgICAgIE5vbmUKICAgICB9Owog
Ci0gICAgUG9saWN5Q2xpZW50VGVzdCgpCi0gICAgICAgIDogTG9hZFRyYWNraW5nVGVzdCgpCi0g
ICAgICAgICwgbV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlKE5vbmUpCi0gICAgICAgICwgbV9wb2xp
Y3lEZWNpc2lvblR5cGVGaWx0ZXIoMCkKLSAgICAgICAgLCBtX3Jlc3BvbmRUb1BvbGljeURlY2lz
aW9uQXN5bmNocm9ub3VzbHkoZmFsc2UpCi0gICAgICAgICwgbV9oYWx0TWFpbkxvb3BBZnRlck1h
a2luZ0RlY2lzaW9uKGZhbHNlKQorICAgIHN0YXRpYyB2b2lkIHRlc3RIYW5kbGVyTWVzc2FnZVJl
Y2VpdmVkQ2FsbGJhY2soV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB1c2VyQ29udGVudE1hbmFn
ZXIsIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQsIFBvbGljeUNsaWVu
dFRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywg
ImRlY2lkZS1wb2xpY3kiLCBHX0NBTExCQUNLKGRlY2lkZVBvbGljeUNhbGxiYWNrKSwgdGhpcyk7
CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFz
Y3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgICAgICBpZiAoZ19z
dHJfZXF1YWwodmFsdWVTdHJpbmcuZ2V0KCksICJhdXRvcGxheWVkIikpCisgICAgICAgICAgICB0
ZXN0LT5tX2F1dG9wbGF5ZWQgPSB0cnVlOworICAgICAgICBlbHNlIGlmIChnX3N0cl9lcXVhbCh2
YWx1ZVN0cmluZy5nZXQoKSwgImRpZC1ub3QtcGxheSIpKQorICAgICAgICAgICAgdGVzdC0+bV9h
dXRvcGxheWVkID0gZmFsc2U7CisKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21h
aW5Mb29wKTsKICAgICB9CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gcXVpdE1haW5Mb29wTGF0ZXIo
R01haW5Mb29wKiBsb29wKQpAQCAtNTksNiArNjIsOSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
VXNlOgogICAgICAgICAgICAgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UoZGVjaXNpb24pOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVXNlV2l0aFBvbGljeToKKyAgICAgICAg
ICAgIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhfcG9saWNpZXMoZGVjaXNpb24sIHRl
c3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIElnbm9yZToKICAgICAgICAgICAgIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3Jl
KGRlY2lzaW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTEgKzEwNCwyNiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKLSAgICBQb2xpY3lEZWNpc2lvblJl
c3BvbnNlIG1fcG9saWN5RGVjaXNpb25SZXNwb25zZTsKLSAgICBpbnQgbV9wb2xpY3lEZWNpc2lv
blR5cGVGaWx0ZXI7Ci0gICAgYm9vbCBtX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9u
b3VzbHk7Ci0gICAgYm9vbCBtX2hhbHRNYWluTG9vcEFmdGVyTWFraW5nRGVjaXNpb247CisgICAg
UG9saWN5Q2xpZW50VGVzdCgpCisgICAgICAgIDogTG9hZFRyYWNraW5nVGVzdCgpCisgICAgewor
ICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImRlY2lkZS1wb2xpY3kiLCBHX0NB
TExCQUNLKGRlY2lkZVBvbGljeUNhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgIHdlYmtpdF91c2Vy
X2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKG1fdXNlckNv
bnRlbnRNYW5hZ2VyLmdldCgpLCAidGVzdEhhbmRsZXIiKTsKKyAgICAgICAgZ19zaWduYWxfY29u
bmVjdChtX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgInNjcmlwdC1tZXNzYWdlLXJlY2VpdmVk
Ojp0ZXN0SGFuZGxlciIsIEdfQ0FMTEJBQ0sodGVzdEhhbmRsZXJNZXNzYWdlUmVjZWl2ZWRDYWxs
YmFjayksIHRoaXMpOworICAgIH0KKworICAgIGJvb2wgZGlkQXV0b3BsYXkoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYXV0b3BsYXllZCAmJiAqbV9hdXRvcGxheWVkOworICAgIH0KKworICAg
IFBvbGljeURlY2lzaW9uUmVzcG9uc2UgbV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlIHsgTm9uZSB9
OworICAgIGludCBtX3BvbGljeURlY2lzaW9uVHlwZUZpbHRlciB7IDAgfTsKKyAgICBib29sIG1f
cmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2hhbHRNYWluTG9vcEFmdGVyTWFraW5nRGVjaXNpb24geyBmYWxzZSB9OworICAgIE9wdGlv
bmFsPGJvb2w+IG1fYXV0b3BsYXllZDsKICAgICBHUmVmUHRyPFdlYktpdFBvbGljeURlY2lzaW9u
PiBtX3ByZXZpb3VzUG9saWN5RGVjaXNpb247CisgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlUG9s
aWNpZXM+IG1fd2Vic2l0ZVBvbGljaWVzOwogfTsKIAogc3RhdGljIHZvaWQgdGVzdE5hdmlnYXRp
b25Qb2xpY3koUG9saWN5Q2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTI2OSw2
ICsyOTAsMTExIEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZl
ciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgICAgIHNvdXBfbWVzc2Fn
ZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCk7CiB9CiAKK3N0YXRp
YyB2b2lkIHRlc3RBdXRvcGxheVBvbGljeShQb2xpY3lDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQoreworI2lmIFBMQVRGT1JNKEdUSykKKyAgICAvLyBUaGUgd2ViIHZpZXcgbXVzdCBi
ZSByZWFsaXplZCBmb3IgdGhlIHZpZGVvIHRvIHN0YXJ0IHBsYXliYWNrLgorICAgIHRlc3QtPnNo
b3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZChHVEtfV0lORE9XX1RPUExFVkVMKTsKKyNlbmRp
ZgorCisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblR5cGVGaWx0ZXIgPSBXRUJLSVRfUE9MSUNZ
X0RFQ0lTSU9OX1RZUEVfTkFWSUdBVElPTl9BQ1RJT047CisgICAgdGVzdC0+bV9wb2xpY3lEZWNp
c2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0
LT5tX3dlYnNpdGVQb2xpY2llcyA9IHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3Bv
bGljaWVzKCJhdXRvcGxheS1wb2xpY3kiLCBXRUJLSVRfQVVUT1BMQVlfREVOWSwgbnVsbHB0cik7
CisKKyAgICBjb25zdCBjaGFyKiByZXNvdXJjZU5hbWUgPSAiYXV0b3BsYXktY2hlY2suaHRtbCI7
CisgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNvdXJjZVBhdGgoZ19idWlsZF9maWxlbmFtZShUZXN0
OjpnZXRSZXNvdXJjZXNEaXIoVGVzdDo6V2ViS2l0MlJlc291cmNlcykuZGF0YSgpLCByZXNvdXJj
ZU5hbWUsIG51bGxwdHIpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlVVJMKGdfZmls
ZW5hbWVfdG9fdXJpKHJlc291cmNlUGF0aC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworCisg
ICAgLy8gVGVzdCB3aXRoIERFTlkgcG9saWN5CisgICAgdGVzdC0+bG9hZFVSSShyZXNvdXJjZVVS
TC5nZXQoKSk7CisgICAgLy8gUnVuIHVudGlsIHRoZSB1c2VyIGNvbnRlbnQgbWVzc2FnZXMgY29t
ZSBiYWNrIGZyb20gYXV0b3BsYXktY2hlY2suaHRtbAorICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0
LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsK
KworICAgIC8vIEFzeW5jIHRlc3QKKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6Om51bGxv
cHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50VGVz
dDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5
bmNocm9ub3VzbHkgPSB0cnVlOworICAgIHRlc3QtPmxvYWRVUkkocmVzb3VyY2VVUkwuZ2V0KCkp
OworICAgIC8vIFJ1biB1bnRpbCB0aGUgdXNlciBjb250ZW50IG1lc3NhZ2VzIGNvbWUgYmFjayBm
cm9tIGF1dG9wbGF5LWNoZWNrLmh0bWwKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWlu
TG9vcCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAv
LyBUZXN0IHdpdGggQUxMT1cgcG9saWN5CisgICAgdGVzdC0+bV93ZWJzaXRlUG9saWNpZXMgPSB3
ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcygiYXV0b3BsYXktcG9saWN5
IiwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XLCBudWxscHRyKTsKKyAgICB0ZXN0LT5tX2F1dG9wbGF5
ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0g
UG9saWN5Q2xpZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1Bv
bGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKworICAgIHRlc3QtPmxvYWRVUkko
cmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29w
KTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmRpZEF1dG9wbGF5KCkpOworCisgICAgLy8gVGVz
dCB3aXRoIEFMTE9XX1dJVEhPVVRfU09VTkQgcG9saWN5CisgICAgdGVzdC0+bV93ZWJzaXRlUG9s
aWNpZXMgPSB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcygiYXV0b3Bs
YXktcG9saWN5IiwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQsIG51bGxwdHIp
OworICAgIHRlc3QtPm1fYXV0b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICB0ZXN0LT5tX3Bv
bGljeURlY2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2VXaXRoUG9saWN5Owor
ICAgIHRlc3QtPm1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IGZhbHNl
OworCisgICAgdGVzdC0+bG9hZFVSSShyZXNvdXJjZVVSTC5nZXQoKSk7CisgICAgZ19tYWluX2xv
b3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmRpZEF1
dG9wbGF5KCkpOworCisgICAgLy8gTm93IGNoZWNrIGR5bmFtaWNhbGx5IHVwZGF0aW5nIHRoZSBs
b2FkZXIgcG9saWNpZXMKKyAgICB0ZXN0LT5tX3dlYnNpdGVQb2xpY2llcyA9IHdlYmtpdF93ZWJz
aXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzKCJhdXRvcGxheS1wb2xpY3kiLCBXRUJLSVRf
QVVUT1BMQVlfREVOWSwgbnVsbHB0cik7CisgICAgdGVzdC0+bV9hdXRvcGxheWVkID0gV1RGOjpu
dWxsb3B0OworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBvbGljeUNsaWVu
dFRlc3Q6OlVzZVdpdGhQb2xpY3k7CisgICAgdGVzdC0+bV9yZXNwb25kVG9Qb2xpY3lEZWNpc2lv
bkFzeW5jaHJvbm91c2x5ID0gZmFsc2U7CisKKyAgICB0ZXN0LT5sb2FkVVJJKHJlc291cmNlVVJM
LmdldCgpKTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAgZ19h
c3NlcnRfZmFsc2UodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBDaGVjayB0aGF0IEpT
IGNhbiBub3Qgc2lkZS1zdGVwIHRoZSBhY3RpdmUgcG9saWN5CisgICAgdGVzdC0+bV9hdXRvcGxh
eWVkID0gV1RGOjpudWxsb3B0OworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRXaXRob3V0Rm9yY2Vk
VXNlckdlc3R1cmVzQW5kV2FpdFVudGlsRmluaXNoZWQoInBsYXlWaWRlbygpOyIsIG51bGxwdHIp
OworICAgIC8vIFNwaW4gdW50aWwgYXV0b3BsYXkgc3RhdHVzIGlzIHJlcG9ydGVkLCB0aGUgcnVu
IEpTIEFQSSBjYW4KKyAgICAvLyBjb21wbGV0ZSBpdHMgbWFpbiBsb29wIGJlZm9yZSB0aGUgcHJv
bWlzZXMgaW4gYXV0b3BsYXktY2hlY2sgZmlyZS4KKyAgICB3aGlsZSAoIXRlc3QtPm1fYXV0b3Bs
YXllZC5oYXNWYWx1ZSgpKQorICAgICAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9v
cCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+ZGlkQXV0b3BsYXkoKSk7CisKKyAgICAvLyBT
aWxlbnQgYXVkaW8gdHJhY2sgdGVzdHMKKyAgICByZXNvdXJjZU5hbWUgPSAiYXV0b3BsYXktbm8t
YXVkaW8tY2hlY2suaHRtbCI7CisgICAgcmVzb3VyY2VQYXRoLnJlc2V0KGdfYnVpbGRfZmlsZW5h
bWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKFRlc3Q6OldlYktpdDJSZXNvdXJjZXMpLmRhdGEoKSwg
cmVzb3VyY2VOYW1lLCBudWxscHRyKSk7CisgICAgcmVzb3VyY2VVUkwucmVzZXQoZ19maWxlbmFt
ZV90b191cmkocmVzb3VyY2VQYXRoLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisKKyAgICAv
LyBERU5ZIHBvbGljeQorICAgIHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzID0gd2Via2l0X3dlYnNp
dGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMoImF1dG9wbGF5LXBvbGljeSIsIFdFQktJVF9B
VVRPUExBWV9ERU5ZLCBudWxscHRyKTsKKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6Om51
bGxvcHQ7CisgICAgdGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50
VGVzdDo6VXNlV2l0aFBvbGljeTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9u
QXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKworICAgIHRlc3QtPmxvYWRVUkkocmVzb3VyY2VVUkwu
Z2V0KCkpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fz
c2VydF9mYWxzZSh0ZXN0LT5kaWRBdXRvcGxheSgpKTsKKworICAgIC8vIEFMTE9XCisgICAgdGVz
dC0+bV93ZWJzaXRlUG9saWNpZXMgPSB3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9w
b2xpY2llcygiYXV0b3BsYXktcG9saWN5IiwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XLCBudWxscHRy
KTsKKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgdGVzdC0+bV9w
b2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50VGVzdDo6VXNlV2l0aFBvbGljeTsK
KyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSBmYWxz
ZTsKKworICAgIHRlc3QtPmxvYWRVUkkocmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIGdfbWFpbl9s
b29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmRpZEF1
dG9wbGF5KCkpOworCisgICAgLy8gQUxMT1dfV0lUSE9VVF9TT1VORAorICAgIHRlc3QtPm1fd2Vi
c2l0ZVBvbGljaWVzID0gd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMo
ImF1dG9wbGF5LXBvbGljeSIsIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5ELCBu
dWxscHRyKTsKKyAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgdGVz
dC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50VGVzdDo6VXNlV2l0aFBv
bGljeTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkg
PSBmYWxzZTsKKworICAgIHRlc3QtPmxvYWRVUkkocmVzb3VyY2VVUkwuZ2V0KCkpOworICAgIGdf
bWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3Qt
PmRpZEF1dG9wbGF5KCkpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAga1NlcnZlciA9
IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7CkBAIC0yNzYsNiArNDAyLDkgQEAgdm9pZCBiZWZvcmVB
bGwoKQogCiAgICAgUG9saWN5Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRQb2xpY3lDbGllbnQiLCAi
bmF2aWdhdGlvbi1wb2xpY3kiLCB0ZXN0TmF2aWdhdGlvblBvbGljeSk7CiAgICAgUG9saWN5Q2xp
ZW50VGVzdDo6YWRkKCJXZWJLaXRQb2xpY3lDbGllbnQiLCAicmVzcG9uc2UtcG9saWN5IiwgdGVz
dFJlc3BvbnNlUG9saWN5KTsKKyAgICBQb2xpY3lDbGllbnRUZXN0OjphZGQoIldlYktpdFBvbGlj
eUNsaWVudCIsICJhdXRvcGxheS1wb2xpY3kiLCB0ZXN0QXV0b3BsYXlQb2xpY3kpOworICAgIC8v
IFdBUk5JTkc6IFRoaXMgdGVzdCBtdXN0IGNvbWUgbGFzdCwgaXQgdXNlcyByYWNleSBjb25zdHJ1
Y3RzIHRoYXQKKyAgICAvLyBpbnRlcmZlcmUgbm9uZGV0ZXJtaW5pc2ljYWxseSB3aXRoIGFueSB0
ZXN0IHJ1bm5pbmcgYWZ0ZXIgaXQuCiAgICAgUG9saWN5Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRQ
b2xpY3lDbGllbnQiLCAibmV3LXdpbmRvdy1wb2xpY3kiLCB0ZXN0TmV3V2luZG93UG9saWN5KTsK
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2Vi
Vmlld1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmll
d1Rlc3QuY3BwCmluZGV4IDhlM2YzNDhkOGFiNTE0ZDQ3ODNlY2IxYWFlYTNiYmQyMzAyN2E5YmUu
LjE4MmEyNGY4ZTE0MWY4NTA5ZGM0ZWVhYTAyNTgyNDVlNjVmYWQ5MmYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKQEAgLTIw
LDYgKzIwLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlZpZXdUZXN0
LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0ludGVybmFsLmgiCiAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogCkBAIC0zMTcsNiArMzE4LDE4IEBAIFdlYktpdEph
dmFzY3JpcHRSZXN1bHQqIFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0SW5Xb3JsZEFuZFdhaXRV
bnRpbEZpbmlzaGVkKGNvCiAgICAgcmV0dXJuIG1famF2YXNjcmlwdFJlc3VsdDsKIH0KIAorV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdCogV2ViVmlld1Rlc3Q6OnJ1bkphdmFTY3JpcHRXaXRob3V0Rm9y
Y2VkVXNlckdlc3R1cmVzQW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlw
dCwgR0Vycm9yKiogZXJyb3IpCit7CisgICAgaWYgKG1famF2YXNjcmlwdFJlc3VsdCkKKyAgICAg
ICAgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKG1famF2YXNjcmlwdFJlc3VsdCk7Cisg
ICAgbV9qYXZhc2NyaXB0UmVzdWx0ID0gMDsKKyAgICBtX2phdmFzY3JpcHRFcnJvciA9IGVycm9y
OworICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhc2NyaXB0V2l0aG91dEZvcmNlZFVzZXJHZXN0dXJl
cyhtX3dlYlZpZXcsIGphdmFzY3JpcHQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlD
YWxsYmFjaz4ocnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX21haW5f
bG9vcF9ydW4obV9tYWluTG9vcCk7CisKKyAgICByZXR1cm4gbV9qYXZhc2NyaXB0UmVzdWx0Owor
fQorCiBjaGFyKiBXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0KQogewogICAgIGF1dG8qIHZhbHVlID0g
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdU
ZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5o
CmluZGV4IGMzZmRkOTgyNTg5MTFiNWVjYmYzMTBjOWFlY2U0YmM4NTNhY2Y1MGIuLmJiMDcwODgw
MTljODg4MTdlYmI2NGQxOWFiYjgyOWQ1NDc2Y2I0N2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApAQCAtNzgsNiArNzgsNyBAQCBw
dWJsaWM6CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqKTsKICAgICBXZWJL
aXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRVbnRp
bEZpbmlzaGVkKGNvbnN0IGNoYXIqIHJlc291cmNlLCBHRXJyb3IqKik7CiAgICAgV2ViS2l0SmF2
YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdEluV29ybGRBbmRXYWl0VW50aWxGaW5pc2hlZChj
b25zdCBjaGFyKiBqYXZhc2NyaXB0LCBjb25zdCBjaGFyKiB3b3JsZCwgR0Vycm9yKiopOworICAg
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRXaXRob3V0Rm9yY2VkVXNlckdl
c3R1cmVzQW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgR0Vycm9y
KiopOwogCiAgICAgLy8gSmF2YXNjcmlwdCByZXN1bHQgaGVscGVycy4KICAgICBzdGF0aWMgY2hh
ciogamF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhXZWJLaXRKYXZhc2NyaXB0UmVzdWx0Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401891</attachid>
            <date>2020-06-15 05:40:17 -0700</date>
            <delta_ts>2020-06-16 08:53:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20200615134015.patch</filename>
            <type>text/plain</type>
            <size>59823</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhhYTRmZTdmNzIzYjk4YTVl
MTJjYTA5NDIwY2RlMTg3NTAxNTcyZDMuLjJjNTUwZGMxZWY5NDUxMDIxOGUyMDA2NjBhODdjMWYy
YTFmMGZkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjAtMDYtMTIgIENoYXJsaWUg
VHVybmVyICA8Y3R1cm5lckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIERpc2FibGUgdmlk
ZW8gYXV0b3BsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDg0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFkZCBuZXcgc291cmNlIGZpbGVzIHRvIHRoZSBidWls
ZC4KKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZTogRGl0dG8uCisgICAgICAgICogU291cmNl
c0dUSy50eHQ6IERpdHRvLgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwOgorICAgICAg
ICAod2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcyk6IDogQWRkIGFuIEFQ
SSB0bworICAgICAgICByZXNwb25kIHRvIG5hdmlnYXRpb24gZGVjaXNpb25zIHdpdGggcG9saWNp
ZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgor
ICAgICAgICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KTogUGx1bWIgaW4g
dGhlIGRlZmF1bHQKKyAgICAgICAgd2Vic2l0ZSBwb2xpY2llcyB0aGF0IGFyZSBhc3NvY2lhdGVk
IHdpdGggdGhlIHdlYiB2aWV3LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6CisgICAgICAg
ICh3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2ViVmlld0dldFBy
b3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llcy5jcHA6IEFkZGVkLgorICAgICAgICAo
X1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGU6Ol9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2
YXRlKToKKyAgICAgICAgKHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFdlYnNpdGVQb2xpY2llcyk6
CisgICAgICAgICh3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRQb2xpY2llc0RhdGEpOgorICAgICAg
ICAod2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2Vi
c2l0ZVBvbGljaWVzU2V0QXV0b3BsYXlQb2xpY3kpOgorICAgICAgICAod2Via2l0V2Vic2l0ZVBv
bGljaWVzU2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfY2xh
c3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcpOgorICAgICAg
ICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMpOgorICAgICAgICAo
d2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisKIDIwMjAtMDYtMTIgIENoYXJsaWUgVHVybmVy
ICA8Y3R1cm5lckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBhbiBpbnRlcm5hbCBB
UEkgdG8gcnVuIGphdmFzY3JpcHQgd2l0aG91dCBmb3JjZWQgdXNlciBnZXN0dXJlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1HVEsuY21ha2UKaW5kZXggYjk0NTIyYzhmY2EwYWY4ODZmZWZkMmNlNGM5ODJlNDA3NzE1
ZDU2Yi4uZmQ5NDNmZjVhNWZlYTA2OTVjNDRkYmY5OGRkZmFkMDQwZjNlYzIyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0xNDAsNiArMTQwLDcgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFM
TEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVEYXRhLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyLmgKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggODMyMGUz
MTBlNmM0NjY5MjRhMDgzZWU0NmFlMzFmNTQ4NjQyMGZjZC4uOWY3NzAyNWE5YjVmOTE2ZjM3ZDQy
MGFkNDhjYTM0OTIyMWFjYzRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQ
RS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNTIsNiAr
MTUyLDcgQEAgc2V0KFdQRV9BUElfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhLmgKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oCiAgICAgJHtXRUJL
SVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmgKKyAgICAk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oCiAg
ICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAogKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
R1RLLnR4dAppbmRleCAyZDVhYWM5NTNhYmVmMjNlYTVkMDIzM2FkMGE1YmU5YWE1OTg1YjhlLi4x
Y2YyNzdjOTU1OTJiMTczODE5ZTk0MmE3OTllNzZhOGQxMDFkODg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50
eHQKQEAgLTE5Miw2ICsxOTIsNyBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1Nl
c3Npb25TdGF0ZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZURhdGEuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2luZG93UHJv
cGVydGllcy5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBv
bGljaWVzLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMu
Y3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwIEBuby11
bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc1dQRS50eHQKaW5kZXggOGI5MzRlODFlNzQ4OTBlYmE2NzRmNWZhYWE2YTVh
ZGUwZjYwNWMxMS4uNDEzMzkxZWUyZmNhNjMwMjU5YTg2MWM0OTgzZDE5OTMyMDE0MmM2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNXUEUudHh0CkBAIC0xODAsNiArMTgwLDcgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVEYXRhLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdpbmRvd1Byb3BlcnRpZXMuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYnNpdGVQb2xpY2llcy5jcHAgQG5vLXVuaWZ5CiAKIFVJUHJvY2Vzcy9BUEkvd3BlL0lu
cHV0TWV0aG9kRmlsdGVyV1BFLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VD
bGllbnRJbXBsLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcAppbmRleCBhMzU3NDc5M2M2
OWVkMDc2ODNhNjAzZTYyOWY0MDkxMWY3NWJjYTNhLi5jYjI4MWI4NzU2N2ZlYzM4N2Y5NWZhMmNm
NmExOTAzYmNjZTIwZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRQb2xpY3lEZWNpc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwCkBAIC0yMCw4ICsyMCwxMSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFBvbGljeURlY2lzaW9uLmgiCiAK
KyNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUu
aCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJzaXRlUG9saWNpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAKQEAgLTg0LDYgKzg3LDM0IEBAIHZv
aWQgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UoV2ViS2l0UG9saWN5RGVjaXNpb24qIGRlY2lz
aW9uKQogICAgIGxpc3RlbmVyLT51c2UoKTsKIH0KIAorLyoqCisgKiB3ZWJraXRfcG9saWN5X2Rl
Y2lzaW9uX3VzZV93aXRoX3BvbGljaWVzOgorICogQGRlY2lzaW9uOiBhICNXZWJLaXRQb2xpY3lE
ZWNpc2lvbgorICogQHBvbGljaWVzOiBhICNXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAqCisgKiBB
Y2NlcHQgdGhlIG5hdmlnYXRpb24gYWN0aW9uIHdoaWNoIHRyaWdnZXJlZCB0aGlzIGRlY2lzaW9u
LCBhbmQKKyAqIGNvbnRpbnVlIHdpdGggQHBvbGljaWVzIGFmZmVjdGluZyBhbGwgc3Vic2VxdWVu
dCBsb2FkcyBvZiByZXNvdXJjZXMKKyAqIGluIHRoZSBvcmlnaW4gYXNzb2NpYXRlZCB3aXRoIHRo
ZSBhY2NlcHRlZCBuYXZpZ2F0aW9uIGFjdGlvbi4KKyAqCisgKiBGb3IgZXhhbXBsZSwgYSBuYXZp
Z2F0aW9uIGRlY2lzaW9uIHRvIGEgdmlkZW8gc2hhcmluZyB3ZWJzaXRlIG1heQorICogYmUgYWNj
ZXB0ZWQgdW5kZXIgdGhlIHByaXZpc28gbm8gbW92aWVzIGFyZSBhbGxvd2VkIHRvIGF1dG9wbGF5
LiBUaGUKKyAqIGF1dG9wbGF5IHBvbGljeSBpbiB0aGlzIGNhc2Ugd291bGQgYmUgc2V0IGluIHRo
ZSBAcG9saWNpZXMuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwordm9pZCB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX3VzZV93aXRoX3BvbGljaWVzKFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lv
biwgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTKHBvbGljaWVzKSk7CisKKyAgICBpZiAo
IWRlY2lzaW9uLT5wcml2LT5saXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBs
aXN0ZW5lciA9IHN0ZDo6ZXhjaGFuZ2UoZGVjaXNpb24tPnByaXYtPmxpc3RlbmVyLCBudWxscHRy
KTsKKworICAgIGxpc3RlbmVyLT51c2Uod2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0V2Vic2l0ZVBv
bGljaWVzKHBvbGljaWVzKSk7Cit9CisKIC8qKgogICogd2Via2l0X3BvbGljeV9kZWNpc2lvbl9p
Z25vcmU6CiAgKiBAZGVjaXNpb246IGEgI1dlYktpdFBvbGljeURlY2lzaW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmlu
ZGV4IDA0MWJmYjU0NWM2YWY2MjIwYTgyNjZkMzU2YWMxOWQ5MDc5MWNiODMuLmM0YzdkMGY2YzEy
NjFiNTFkMDIwNzFhNjUyYWEwOTNkMWFhM2I5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC01Myw2ICs1Myw3
IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhTWFuYWdlclBy
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgpAQCAtMTg5Nyw3
ICsxODk4LDcgQEAgV2ViUHJvY2Vzc1Bvb2wmIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9v
bChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIHJldHVybiAqY29udGV4dC0+cHJpdi0+
cHJvY2Vzc1Bvb2w7CiB9CiAKLXZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJW
aWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3
KiByZWxhdGVkVmlldykKK3ZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3KiBy
ZWxhdGVkVmlldywgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBkZWZhdWx0V2Vic2l0ZVBvbGljaWVz
KQogewogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9u
OjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woY29udGV4
dC0+cHJpdi0+cHJvY2Vzc1Bvb2wuZ2V0KCkpOwpAQCAtMTkxMCw2ICsxOTExLDcgQEAgdm9pZCB3
ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgV2ViS2l0V2ViVmkKICAgICBpZiAoIW1hbmFnZXIpCiAgICAgICAgIG1hbmFnZXIgPSBj
b250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCk7CiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnNldFdlYnNpdGVEYXRhU3RvcmUoJndlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERh
dGFTdG9yZShtYW5hZ2VyKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldERlZmF1bHRXZWJz
aXRlUG9saWNpZXMod2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0V2Vic2l0ZVBvbGljaWVzKGRlZmF1
bHRXZWJzaXRlUG9saWNpZXMpKTsKICAgICB3ZWJraXRXZWJWaWV3Q3JlYXRlUGFnZSh3ZWJWaWV3
LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBhdXRvJiBwYWdlID0gd2Via2l0
V2ViVmlld0dldFBhZ2Uod2ViVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAppbmRleCBkODU2OWM4
NTliYWJmZTExNjljNjgyZWI2ODYzNjZlM2QwNjliOWFkLi43OGQxNTc4Zjk0NzkzZTllNTlhM2Q0
ZDJiMzNlNzllYTg1MzBmYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YktpdFdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIApAQCAtMzYsNyArMzcsNyBAQCBXZWJL
aXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoV2ViS2l0OjpE
b3dubG9hZFByb3h5Kik7CiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dFN0YXJ0RG93
bmxvYWQoV2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqIHVyaSwgV2ViS2l0OjpXZWJQYWdl
UHJveHkqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKFdlYktpdDo6RG93
bmxvYWRQcm94eSopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0RG93bmxvYWRTdGFydGVkKFdlYktp
dFdlYkNvbnRleHQqLCBXZWJLaXREb3dubG9hZCopOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3Jl
YXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdlYkNv
bnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2ViVmll
dyosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJz
aXRlUG9saWNpZXMqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95ZWQoV2Vi
S2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqKTsKIFdlYktpdFdlYlZpZXcqIHdlYmtpdFdl
YkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQ
YWdlUHJveHkqKTsKIEdWYXJpYW50KiB3ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6ZVdlYkV4dGVu
c2lvbnMoV2ViS2l0V2ViQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA1MGRmM2Y0NDhhN2QzOGUzMjgyZTY2
MjgyNDkwZjE3MGZlZWJhYWVkLi43Yjg3YzQzNjQ3NTkyYzIxMzZjZWI4ZjIxYWI1MTUyYjJjZWY5
ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZVByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdpbmRvd1Byb3Bl
cnRpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpAQCAtMjAxLDcgKzIwMiw4IEBAIGVudW0gewogICAg
IFBST1BfQVVUT01BVElPTl9QUkVTRU5UQVRJT05fVFlQRSwKICAgICBQUk9QX0VESVRBQkxFLAog
ICAgIFBST1BfUEFHRV9JRCwKLSAgICBQUk9QX0lTX01VVEVECisgICAgUFJPUF9JU19NVVRFRCwK
KyAgICBQUk9QX1dFQlNJVEVfUE9MSUNJRVMKIH07CiAKIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRf
dCwgR1JlZlB0cjxXZWJLaXRXZWJSZXNvdXJjZT4gPiBMb2FkaW5nUmVzb3VyY2VzTWFwOwpAQCAt
MzAzLDYgKzMwNSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIEdSZWZQ
dHI8V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0PiBhdXRoZW50aWNhdGlvblJlcXVlc3Q7CiAK
ICAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5hZ2Vy
OworICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZVBvbGljaWVzPiB3ZWJzaXRlUG9saWNpZXM7CiB9
OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC03NTYs
NyArNzU5LDEwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgICAgIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29s
KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwgd2Via2l0V2ViQ29udGV4dEdldFByb2Nl
c3NQb29sKHByaXYtPmNvbnRleHQuZ2V0KCkpKTsKICAgICB9CiAKLSAgICB3ZWJraXRXZWJDb250
ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dC5nZXQoKSwgd2ViVmlldywgcHJp
di0+dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBwcml2LT5yZWxhdGVkVmlldyk7CisgICAgaWYg
KCFwcml2LT53ZWJzaXRlUG9saWNpZXMpCisgICAgICAgIHByaXYtPndlYnNpdGVQb2xpY2llcyA9
IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcoKSk7CisKKyAgICB3ZWJraXRX
ZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dC5nZXQoKSwgd2ViVmll
dywgcHJpdi0+dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBwcml2LT5yZWxhdGVkVmlldywgcHJp
di0+d2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKIAogICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IG1h
a2VVbmlxdWU8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKICAgICBnZXRQYWdlKHdl
YlZpZXcpLnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqcHJpdi0+bG9hZE9ic2VydmVyKTsK
QEAgLTgzOSw2ICs4NDUsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZQogICAgIGNhc2UgUFJP
UF9JU19NVVRFRDoKICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9pc19tdXRlZCh3ZWJWaWV3
LCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9XRUJTSVRFX1BPTElDSUVTOgorICAgICAgICB3ZWJWaWV3LT5wcml2LT53ZWJzaXRlUG9s
aWNpZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlUG9saWNpZXMqPihnX3ZhbHVlX2dldF9v
YmplY3QodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMp
OwogICAgIH0KQEAgLTkwNCw2ICs5MTMsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0
UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAg
IGNhc2UgUFJPUF9JU19NVVRFRDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwg
d2Via2l0X3dlYl92aWV3X2dldF9pc19tdXRlZCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9XRUJTSVRFX1BPTElDSUVTOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmpl
Y3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSk7
CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0x
MjkxLDYgKzEzMDMsMjMgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQo
V2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICBGQUxTRSwKICAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKIAorICAgIC8qKgorICAgICAqIFdl
YktpdFdlYlZpZXc6d2Vic2l0ZS1wb2xpY2llczoKKyAgICAgKgorICAgICAqIFRoZSAjV2ViS2l0
V2Vic2l0ZVBvbGljaWVzIGZvciB0aGUgdmlldy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjMw
CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAg
Z09iamVjdENsYXNzLAorICAgICAgICBQUk9QX1dFQlNJVEVfUE9MSUNJRVMsCisgICAgICAgIGdf
cGFyYW1fc3BlY19vYmplY3QoCisgICAgICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsCisgICAg
ICAgICAgICBfKCJEZWZhdWx0IFdlYnNpdGUgUG9saWNpZXMiKSwKKyAgICAgICAgICAgIF8oIlRo
ZSBkZWZhdWx0IHBvbGljeSBvYmplY3QgZm9yIHNpdGVzIGxvYWRlZCBpbiB0aGlzIHZpZXciKSwK
KyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsCisgICAgICAgICAgICBz
dGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1f
Q09OU1RSVUNUX09OTFkpKSk7CisKICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3Ojpsb2Fk
LWNoYW5nZWQ6CiAgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2gg
dGhlIHNpZ25hbCBpcyBlbWl0dGVkCkBAIC00NjM0LDMgKzQ2NjMsMjUgQEAgV2ViS2l0SW5wdXRN
ZXRob2RDb250ZXh0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0KFdl
YktpdFdlYlZpZXcKICNlbmRpZgogCiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF93
ZWJzaXRlX3BvbGljaWVzOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICog
R2V0cyB0aGUgZGVmYXVsdCB3ZWJzaXRlIHBvbGljaWVzIHNldCBvbiBjb25zdHJ1Y3Rpb24gaW4g
dGhlCisgKiBAd2ViX3ZpZXcuIFRoZXNlIGNhbiBiZSBvdmVycmlkZGVuIG9uIGEgcGVyLW9yaWdp
biBiYXNpcyB2aWEgdGhlCisgKiAjV2ViS2l0V2ViVmlldzo6ZGVjaWRlLXBvbGljeSBzaWduYWwg
aGFuZGxlci4KKyAqCisgKiBTZWUgYWxzbyB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZV93aXRo
X3BvbGljaWVzKCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgZGVmYXVs
dCAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKiAgICAgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3
LgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK1dlYktpdFdlYnNpdGVQb2xpY2llcyogd2Via2l0
X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBu
dWxscHRyKTsKKworICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT53ZWJzaXRlUG9saWNpZXMuZ2V0
KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlUG9saWNpZXMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2Vic2l0ZVBvbGljaWVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzUwMDJlYjYwOTU5ODExODgw
OWVjNmM3Nzk0NDk3MTc1Y2I1ZjVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmNwcApAQCAtMCwwICsxLDIz
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llcy5oIgorCisjaW5jbHVkZSAi
QVBJV2Vic2l0ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAiV2ViS2l0RW51bVR5cGVzLmgiCisjaW5j
bHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CisjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAqIEBTaG9ydF9k
ZXNjcmlwdGlvbjogVmlldyBzcGVjaWZpYyB3ZWJzaXRlIHBvbGljaWVzCisgKiBAVGl0bGU6IFdl
YktpdFdlYnNpdGVQb2xpY2llcworICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldworICoKKyAq
IFdlYktpdFdlYnNpdGVQb2xpY2llcyBhbGxvd3MgeW91IHRvIGNvbmZpZ3VyZSBwZXItcGFnZSBw
b2xpY2llcywKKyAqIGN1cnJlbnRseSBvbmx5IGF1dG9wbGF5IHBvbGljaWVzIGFyZSBzdXBwb3J0
ZWQuCisgKgorICogU2luY2U6IDIuMzAKKyAqLworCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
CitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX0FVVE9QTEFZX1BPTElDWQorfTsKKwor
c3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlIHsKKyAgICBfV2ViS2l0V2Vic2l0
ZVBvbGljaWVzUHJpdmF0ZSgpCisgICAgICAgIDogd2Vic2l0ZVBvbGljaWVzKEFQSTo6V2Vic2l0
ZVBvbGljaWVzOjpjcmVhdGUoKSkKKyAgICB7CisgICAgfQorICAgIFJlZlB0cjxBUEk6OldlYnNp
dGVQb2xpY2llcz4gd2Vic2l0ZVBvbGljaWVzOworfTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdl
YktpdFdlYnNpdGVQb2xpY2llcywgd2Via2l0X3dlYnNpdGVfcG9saWNpZXMsIEdfVFlQRV9PQkpF
Q1QpCisKK0FQSTo6V2Vic2l0ZVBvbGljaWVzJiB3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRXZWJz
aXRlUG9saWNpZXMoV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAgICByZXR1
cm4gKnBvbGljaWVzLT5wcml2LT53ZWJzaXRlUG9saWNpZXMuZ2V0KCk7Cit9CisKK1dlYnNpdGVQ
b2xpY2llc0RhdGEgd2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UG9saWNpZXNEYXRhKFdlYktpdFdl
YnNpdGVQb2xpY2llcyogcG9saWNpZXMpCit7CisgICAgV2Vic2l0ZVBvbGljaWVzRGF0YSBwb2xp
Y2llc0RhdGE7CisKKyAgICBzd2l0Y2ggKHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRv
cGxheV9wb2xpY3kocG9saWNpZXMpKSB7CisgICAgY2FzZSBXZWJLaXRBdXRvcGxheVBvbGljeTo6
V0VCS0lUX0FVVE9QTEFZX0FMTE9XOgorICAgICAgICBwb2xpY2llc0RhdGEuYXV0b3BsYXlQb2xp
Y3kgPSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYktpdEF1dG9wbGF5UG9saWN5OjpXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9T
T1VORDoKKyAgICAgICAgcG9saWNpZXNEYXRhLmF1dG9wbGF5UG9saWN5ID0gV2Vic2l0ZUF1dG9w
bGF5UG9saWN5OjpBbGxvd1dpdGhvdXRTb3VuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
ZWJLaXRBdXRvcGxheVBvbGljeTo6V0VCS0lUX0FVVE9QTEFZX0RFTlk6CisgICAgICAgIHBvbGlj
aWVzRGF0YS5hdXRvcGxheVBvbGljeSA9IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVueTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcG9saWNpZXNEYXRhLmF1dG9wbGF5
UG9saWN5ID0gV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZWZhdWx0OworICAgIH0KKworICAgIHJl
dHVybiBwb2xpY2llc0RhdGE7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVQb2xpY2ll
c0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBw
b2xpY2llcyA9IFdFQktJVF9XRUJTSVRFX1BPTElDSUVTKG9iamVjdCk7CisKKyAgICBzd2l0Y2gg
KHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9BVVRPUExBWV9QT0xJQ1k6CisgICAgICAgIGdfdmFs
dWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRvcGxheV9w
b2xpY3kocG9saWNpZXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
R19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNw
ZWMpOworICAgIH0KK30KKwordm9pZCB3ZWJraXRXZWJzaXRlUG9saWNpZXNTZXRBdXRvcGxheVBv
bGljeShXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBXZWJLaXRBdXRvcGxheVBvbGlj
eSBwb2xpY3kpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCU0lURV9QT0xJ
Q0lFUyhwb2xpY2llcykpOworCisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIFdFQktJ
VF9BVVRPUExBWV9BTExPVzoKKyAgICAgICAgcG9saWNpZXMtPnByaXYtPndlYnNpdGVQb2xpY2ll
cy0+c2V0QXV0b3BsYXlQb2xpY3koV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvdyk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ6
CisgICAgICAgIHBvbGljaWVzLT5wcml2LT53ZWJzaXRlUG9saWNpZXMtPnNldEF1dG9wbGF5UG9s
aWN5KFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFdFQktJVF9BVVRPUExBWV9ERU5ZOgorICAgICAgICBwb2xpY2llcy0+
cHJpdi0+d2Vic2l0ZVBvbGljaWVzLT5zZXRBdXRvcGxheVBvbGljeShXZWJzaXRlQXV0b3BsYXlQ
b2xpY3k6OkRlbnkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdl
YmtpdFdlYnNpdGVQb2xpY2llc1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElELCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAg
V2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcyA9IFdFQktJVF9XRUJTSVRFX1BPTElDSUVT
KG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9BVVRPUExB
WV9QT0xJQ1k6CisgICAgICAgIHdlYmtpdFdlYnNpdGVQb2xpY2llc1NldEF1dG9wbGF5UG9saWN5
KHBvbGljaWVzLCBzdGF0aWNfY2FzdDxXZWJLaXRBdXRvcGxheVBvbGljeT4oZ192YWx1ZV9nZXRf
ZW51bSh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMp
OworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfY2xhc3Nf
aW5pdChXZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcyogZmluZENsYXNzKQoreworICAgIEdPYmpl
Y3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoZmluZENsYXNzKTsKKworICAg
IGdPYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UHJv
cGVydHk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRXZWJzaXRlUG9s
aWNpZXNTZXRQcm9wZXJ0eTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYnNpdGVQb2xpY2ll
czphdXRvcGxheS1wb2xpY3k6CisgICAgICoKKyAgICAgKiBUaGUgI1dlYktpdEF1dG9wbGF5UG9s
aWN5IG9mICNXZWJLaXRXZWJzaXRlUG9saWNpZXMuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4z
MAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAg
IGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9BVVRPUExBWV9QT0xJQ1ksCisgICAgICAgIGdf
cGFyYW1fc3BlY19lbnVtKAorICAgICAgICAgICAgImF1dG9wbGF5LXBvbGljeSIsCisgICAgICAg
ICAgICAiQXV0b3BsYXkgUG9saWN5IiwKKyAgICAgICAgICAgIF8oIlRoZSBhdXRvcGxheSBwb2xp
Y3kgdG8gdXNlIHdoZW4gZGVjaWRpbmcgdG8gYXV0b3BsYXkgbWVkaWEiKSwKKyAgICAgICAgICAg
IFdFQktJVF9UWVBFX0FVVE9QTEFZX1BPTElDWSwKKyAgICAgICAgICAgIFdFQktJVF9BVVRPUExB
WV9BTExPV19XSVRIT1VUX1NPVU5ELAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxh
Z3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ldzoKKyAqCisgKiBDcmVhdGUg
YSBuZXcgI1dlYktpdFdlYnNpdGVQb2xpY2llcworICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBm
dWxsKTogdGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYnNpdGVQb2xpY2llcworICoKKyAqIFNp
bmNlOiAyLjMwCisgKi8KK1dlYktpdFdlYnNpdGVQb2xpY2llcyogd2Via2l0X3dlYnNpdGVfcG9s
aWNpZXNfbmV3KHZvaWQpCit7CisgICAgcmV0dXJuIFdFQktJVF9XRUJTSVRFX1BPTElDSUVTKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLCBudWxscHRyKSk7Cit9CisK
Ky8qKgorICogd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXM6CisgKiBA
Zmlyc3RfcG9saWN5X25hbWU6IG5hbWUgb2YgdGhlIGZpcnN0IHBvbGljeSB0byBzZXQKKyAqIEAu
Li46IHZhbHVlIG9mIGZpcnN0IHBvbGljeSwgZm9sbG93ZWQgYnkgbW9yZSBwb2xpY2llcywgJU5V
TEwtdGVybWluYXRlZAorICoKKyAqIENyZWF0ZSBhIG5ldyAjV2ViS2l0V2Vic2l0ZVBvbGljaWVz
IHdpdGggcG9saWNpZXMgZ2l2ZW4gYXMgdmFyaWFkaWMKKyAqIGFyZ3VtZW50cy4KKyAqCisgKiBS
ZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IHRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJzaXRl
UG9saWNpZXMKKyAqCisgKiA8aW5mb3JtYWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4KKyAqIFdl
YktpdFdlYnNpdGVQb2xpY2llcyAqZGVmYXVsdF93ZWJzaXRlX3BvbGljaWVzID0gd2Via2l0X3dl
YnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMoCisgKiAgICAgImF1dG9wbGF5LXBvbGlj
eSIsIFdFQktJVF9BVVRPUExBWV9ERU5ZLAorICogICAgIE5VTEwpOworICogLi4uCisgKiBXZWJL
aXRXZWJWaWV3ICp2aWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfVklFVywKKyAqICAgICAid2ViLWNvbnRleHQiLCBjdHgsCisgKiAgICAgInNldHRpbmdz
Iiwgc2V0dGluZ3MsCisgKiAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgY29udGVudF9tYW5h
Z2VyLAorICogICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgZGVmYXVsdF93ZWJzaXRlX3BvbGljaWVz
LAorICogICAgIE5VTEwpKTsKKyAqIC4uLgorICogPC9wcm9ncmFtbGlzdGluZz48L2luZm9ybWFs
ZXhhbXBsZT4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCitXZWJLaXRXZWJzaXRlUG9saWNpZXMq
IHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzKGNvbnN0IGdjaGFyKiBm
aXJzdFBvbGljeU5hbWUsIC4uLikKK3sKKyAgICB2YV9saXN0IGFyZ3M7CisgICAgdmFfc3RhcnQo
YXJncywgZmlyc3RQb2xpY3lOYW1lKTsKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGlj
aWVzID0gV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMoZ19vYmplY3RfbmV3X3ZhbGlzdChXRUJLSVRf
VFlQRV9XRUJTSVRFX1BPTElDSUVTLCBmaXJzdFBvbGljeU5hbWUsIGFyZ3MpKTsKKyAgICB2YV9l
bmQoYXJncyk7CisKKyAgICByZXR1cm4gcG9saWNpZXM7Cit9CisKKy8qKgorICogd2Via2l0X3dl
YnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeToKKyAqIEBwb2xpY2llczogYSAjV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzCisgKgorICogR2V0IHRoZSAjV2ViS2l0V2Vic2l0ZVBvbGljaWVz
OmF1dG9wbGF5LXBvbGljeSBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAjV2ViS2l0QXV0b3Bs
YXlQb2xpY3kKKyAqCisgKiBTaW5jZTogMi4zMAorICovCitXZWJLaXRBdXRvcGxheVBvbGljeSB3
ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfYXV0b3BsYXlfcG9saWN5KFdlYktpdFdlYnNpdGVQ
b2xpY2llcyogcG9saWNpZXMpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQlNJVEVfUE9MSUNJRVMocG9saWNpZXMpLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9V
VF9TT1VORCk7CisKKyAgICBhdXRvIGFwaUF1dG9wbGF5UG9saWN5VHlwZSA9IHBvbGljaWVzLT5w
cml2LT53ZWJzaXRlUG9saWNpZXMtPmF1dG9wbGF5UG9saWN5KCk7CisgICAgc3dpdGNoIChhcGlB
dXRvcGxheVBvbGljeVR5cGUpIHsKKyAgICBjYXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxs
b3c6CisgICAgICAgIHJldHVybiBXRUJLSVRfQVVUT1BMQVlfQUxMT1c7CisgICAgY2FzZSBXZWJz
aXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kOgorICAgICAgICByZXR1cm4gV0VC
S0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ7CisgICAgY2FzZSBXZWJzaXRlQXV0b3Bs
YXlQb2xpY3k6OkRlbnk6CisgICAgICAgIHJldHVybiBXRUJLSVRfQVVUT1BMQVlfREVOWTsKKyAg
ICBjYXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFdF
QktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EOworICAgIH0KK30KKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBvbGljaWVz
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZVBvbGljaWVzUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmZjFmMTI4N2U4ZDFiYzU3ZjdlYmRjMzZj
YjY2NmEwNjU3ZGJlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlLmgKQEAgLTAsMCArMSwyNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgorI2luY2x1ZGUgIldlYktpdFdlYnNpdGVQ
b2xpY2llcy5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKKworQVBJOjpXZWJz
aXRlUG9saWNpZXMqIHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFdlYnNpdGVQb2xpY2llcyhXZWJL
aXRXZWJzaXRlUG9saWNpZXMgKik7CitXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGEgd2Via2l0
V2Vic2l0ZVBvbGljaWVzR2V0UG9saWNpZXNEYXRhKFdlYktpdFdlYnNpdGVQb2xpY2llcyAqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5
RGVjaXNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5
RGVjaXNpb24uaAppbmRleCBmMTkyYTFkMzc5ZGM2NDIxZGY3NjA0NzRkMjA2NDllNDVmZjBjOGNi
Li4wZmY4OWU0OWM3NjNkMzZmNWU0YWUzYmQxYzExN2Q2MzFjMTMyZTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lvbi5o
CkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2Vic2l0
ZVBvbGljaWVzLmg+CiAKIEdfQkVHSU5fREVDTFMKIApAQCAtNjIsNiArNjMsMTAgQEAgd2Via2l0
X3BvbGljeV9kZWNpc2lvbl9nZXRfdHlwZSAodm9pZCk7CiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtp
dF9wb2xpY3lfZGVjaXNpb25fdXNlICAgICAgKFdlYktpdFBvbGljeURlY2lzaW9uICpkZWNpc2lv
bik7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9w
b2xpY2llcyAgKFdlYktpdFBvbGljeURlY2lzaW9uICpkZWNpc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKnBvbGlj
aWVzKTsKKwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2lnbm9yZSAg
IChXZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IDEzMTM2MGMzZGQwZWJmY2Ex
MWM2ZTcxNDg2ZTYxMTZkN2RmMTBiY2YuLmFjNTE2ODNiNjc1ZDVhOThiNjY1NTMyM2Y5YTUxYzQ5
ZTc2MjNhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5oCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJD
b250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJJbnNwZWN0b3IuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFdlYlJlc291cmNlLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRXZWJzaXRlUG9saWNpZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXdCYXNl
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmg+CkBAIC01ODQsNiArNTg1LDEx
IEBAIHdlYmtpdF93ZWJfdmlld19zZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcKIFdFQktJVF9BUEkgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0ICoKIHdl
YmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAorCitXRUJLSVRfQVBJIFdlYktpdFdl
YnNpdGVQb2xpY2llcyAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKKwog
R19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcAppbmRleCA1MmQ1ZjNlNWZhOGNjMzdkMThmN2Y2
ZmZjNzczNDBhOTQ0YjMyMjdmLi45Yjk5Mjc1YjI0ZWZjNGFjYzdhZjAxNTUwYzFlZjNmNzc4ZTA0
ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0d0ay5jcHAKQEAgLTMzNyw4ICszMzcsOCBAQCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF9jb250ZXh0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiAgKiBZb3Ug
Y2FuIGFsc28gdXNlIHRoaXMgbWV0aG9kIHRvIGltcGxlbWVudCBvdGhlciBwcm9jZXNzIG1vZGVs
cyBiYXNlZCBvbiAlV0VCS0lUX1BST0NFU1NfTU9ERUxfTVVMVElQTEVfU0VDT05EQVJZX1BST0NF
U1NFUywKICAqIGxpa2UgZm9yIGV4YW1wbGUsIHNoYXJpbmcgdGhlIHNhbWUgd2ViIHByb2Nlc3Mg
Zm9yIGFsbCB0aGUgdmlld3MgaW4gdGhlIHNhbWUgc2VjdXJpdHkgZG9tYWluLgogICoKLSAqIFRo
ZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3IHdpbGwgYWxzbyBoYXZlIHRoZSBzYW1lICNX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIKLSAqIGFuZCAjV2ViS2l0U2V0dGluZ3MgYXMgQHdlYl92
aWV3LgorICogVGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYlZpZXcgd2lsbCBhbHNvIGhhdmUg
dGhlIHNhbWUgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlciwKKyAqICNXZWJLaXRTZXR0aW5ncywg
YW5kICNXZWJLaXRXZWJzaXRlUG9saWNpZXMgYXMgQHdlYl92aWV3LgogICoKICAqIFJldHVybnM6
ICh0cmFuc2ZlciBmdWxsKTogVGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYlZpZXcgd2lkZ2V0
CiAgKgpAQCAtMzUyLDYgKzM1Miw3IEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193
aXRoX3JlbGF0ZWRfdmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICAidXNlci1j
b250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2Vy
KHdlYlZpZXcpLAogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRp
bmdzKHdlYlZpZXcpLAogICAgICAgICAicmVsYXRlZC12aWV3Iiwgd2ViVmlldywKKyAgICAgICAg
IndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMo
d2ViVmlldyksCiAgICAgICAgIG51bGxwdHIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDc1ZGEwMjE0OWQ4ZDIzM2QwZTMwNDI3NjgxMzM4NTE4YmNiMzQ0YQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZVBvbGlj
aWVzLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJL
SVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJl
IGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PGdpby9naW8uaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJ
Tl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMgICAgICAgICAg
ICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dF
QlNJVEVfUE9MSUNJRVMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FT
VCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUywgV2ViS2l0V2Vic2l0ZVBvbGlj
aWVzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQlNJVEVfUE9MSUNJRVMob2JqKSAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJ
Q0lFUykpCisjZGVmaW5lIFdFQktJVF9XRUJTSVRFX1BPTElDSUVTX0NMQVNTKGtsYXNzKSAgICAo
R19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9M
SUNJRVMsIFdlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dF
QlNJVEVfUE9MSUNJRVNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xh
c3MpLCAgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUykpCisjZGVmaW5lIFdFQktJVF9XRUJT
SVRFX1BPTElDSUVTX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygo
b2JqKSwgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsIFdlYktpdFdlYnNpdGVQb2xpY2ll
c0NsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llcyAgICAgICAg
V2ViS2l0V2Vic2l0ZVBvbGljaWVzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xp
Y2llc0NsYXNzICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZSBXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRl
OworCitzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llcyB7CisgICAgR09iamVjdCBwYXJlbnQ7
CisKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlICpwcml2OworfTsKKworc3RydWN0
IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9j
bGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQg
KCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
MikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsKKwor
LyoqCisgKiBXZWJLaXRBdXRvcGxheVBvbGljeToKKyAqIEBXRUJLSVRfQVVUT1BMQVlfQUxMT1c6
IERvIG5vdCByZXN0cmljdCBhdXRvcGxheS4KKyAqIEBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lU
SE9VVF9TT1VORDogQWxsb3cgdmlkZW9zIHRvIGF1dG9wbGF5IGlmCisgKiAgICAgdGhleSBoYXZl
IG5vIGF1ZGlvIHRyYWNrLCBvciBpZiB0aGVpciBhdWRpbyB0cmFjayBpcyBtdXRlZC4KKyAqIEBX
RUJLSVRfQVVUT1BMQVlfREVOWTogTmV2ZXIgYWxsb3cgYXV0b3BsYXkuCisgKgorICogRW51bSB2
YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IGF1dG9wbGF5IHBvbGljaWVzLgorICoKKyAqIFNpbmNlOiAy
LjMwCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0FVVE9QTEFZX0FMTE9XLAorICAg
IFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5ELAorICAgIFdFQktJVF9BVVRPUExB
WV9ERU5ZCit9IFdlYktpdEF1dG9wbGF5UG9saWN5OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJr
aXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKgord2Via2l0X3dl
YnNpdGVfcG9saWNpZXNfbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9p
ZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKK3dlYmtpdF93ZWJzaXRl
X3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGdj
aGFyICAqZmlyc3RfcG9saWN5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworCitXRUJLSVRfQVBJIFdlYktp
dEF1dG9wbGF5UG9saWN5Cit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfYXV0b3BsYXlfcG9s
aWN5ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzKTsK
KworR19FTkRfREVDTFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDQ4MmIw
NmNlY2ZhMTdiYmQzOTljYjg4ZDg0ZDExYWQzZDk0NWFlYTAuLjgwNWVhMDc2MmY4MTI5NGQwZDI5
NDI1YjkzN2I3NDBlNGE5MjhkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApA
QCAtMTk4LDYgKzE5OCw3IEBAIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50CiBXZWJLaXRTbmFw
c2hvdE9wdGlvbnMKIFdlYktpdFNuYXBzaG90UmVnaW9uCiBXZWJLaXRXZWJQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24KK1dlYktpdEF1dG9wbGF5UG9saWN5CiAKIDxTVUJTRUNUSU9OIEVkaXRpbmcg
Q29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVApAQCAtMjg4LDYgKzI4OSw3IEBA
IHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZQogd2Via2l0X3dlYl92aWV3X3Nl
bmRfbWVzc2FnZV90b19wYWdlX2ZpbmlzaAogd2Via2l0X3dlYl92aWV3X3NldF9pbnB1dF9tZXRo
b2RfY29udGV4dAogd2Via2l0X3dlYl92aWV3X2dldF9pbnB1dF9tZXRob2RfY29udGV4dAord2Vi
a2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzCiAKIDxTVUJTRUNUSU9OIFdlYktpdEph
dmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC04NDcsNiArODQ5LDcg
QEAgV2ViS2l0UG9saWN5RGVjaXNpb24KIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQK
IHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3JlCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3Vz
ZQord2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcwogCiA8U1VCU0VDVElP
TiBTdGFuZGFyZD4KIFdlYktpdFBvbGljeURlY2lzaW9uQ2xhc3MKQEAgLTE4NDYsMyArMTg0OSwy
NiBAQCBXRUJLSVRfVVNFUl9NRVNTQUdFX0dFVF9DTEFTUwogV2ViS2l0VXNlck1lc3NhZ2VQcml2
YXRlCiB3ZWJraXRfdXNlcl9tZXNzYWdlX2dldF90eXBlCiA8L1NFQ1RJT04+CisKKzxTRUNUSU9O
PgorPEZJTEU+V2ViS2l0V2Vic2l0ZVBvbGljaWVzPC9GSUxFPgorV2ViS2l0V2Vic2l0ZVBvbGlj
aWVzCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVz
X25ld193aXRoX3BvbGljaWVzCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfYXV0b3BsYXlf
cG9saWN5CisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xh
c3MKK1dFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTCitXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lF
U19DTEFTUworV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUworV0VCS0lUX1dFQlNJVEVfUE9M
SUNJRVMKK1dFQktJVF9XRUJTSVRFX1BPTElDSUVTX0NMQVNTCitXRUJLSVRfV0VCU0lURV9QT0xJ
Q0lFU19HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFdlYnNpdGVQb2xp
Y2llc1ByaXZhdGUKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF90eXBlCis8L1NFQ1RJT04+
CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRQ
b2xpY3lEZWNpc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRQ
b2xpY3lEZWNpc2lvbi5oCmluZGV4IGJmZmZlZDFjNzRiMTU0ODU0MjMzM2ZmMWJjYjE1Mzk0NjQ2
MTZjMDkuLmZmMDNhMGY1YjhlOGMzZmY4ZjNhMDhiMjU1YTYzNGU2MjMwMDBmMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9saWN5RGVjaXNpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFBvbGljeURlY2lz
aW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5j
bHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0V2Vic2l0ZVBv
bGljaWVzLmg+CiAKIEdfQkVHSU5fREVDTFMKIApAQCAtNjIsNiArNjMsMTAgQEAgd2Via2l0X3Bv
bGljeV9kZWNpc2lvbl9nZXRfdHlwZSAodm9pZCk7CiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9w
b2xpY3lfZGVjaXNpb25fdXNlICAgICAgKFdlYktpdFBvbGljeURlY2lzaW9uICpkZWNpc2lvbik7
CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xp
Y2llcyAgKFdlYktpdFBvbGljeURlY2lzaW9uICpkZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKnBvbGljaWVz
KTsKKwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2lnbm9yZSAgIChX
ZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IDI2NGZlNjhjZjJkZjUwY2ZhNTZh
OWY3MjM1YzhjYzFkNTUwN2QzZWQuLjIzMTQ5YjBiZjc0YWQwYjY2ODM5MWZmOWQ2Y2YxZDk4ZmJj
MTU4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
Vmlldy5oCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktpdFVzZXJNZXNzYWdl
Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3cGUvV2Vi
S2l0V2ViUmVzb3VyY2UuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmg+
CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdCYWNrZW5kLmg+CiAjaW5jbHVkZSA8d3BlL1dl
YktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2luZG93UHJv
cGVydGllcy5oPgpAQCAtNTYxLDYgKzU2Miw5IEBAIHdlYmtpdF93ZWJfdmlld19zZXRfaW5wdXRf
bWV0aG9kX2NvbnRleHQgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcKIFdFQktJVF9BUEkgV2Vi
S2l0SW5wdXRNZXRob2RDb250ZXh0ICoKIHdlYmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9k
X2NvbnRleHQgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3Zp
ZXcpOwogCitXRUJLSVRfQVBJIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqCit3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICp3ZWJfdmlldyk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlUG9saWNpZXMu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZVBvbGljaWVz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTg3NjY1ZjU0M2U3ODkxMjk3NWEzNDc3YzMxMGZjMzczYWEzZjg3ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
V2Vic2l0ZVBvbGljaWVzLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
LDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5TSURFX18pICYmICFk
ZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdwZS93ZWJraXQyLmg+
IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KKworR19C
RUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMgICAgICAg
ICAgICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lU
X1dFQlNJVEVfUE9MSUNJRVMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
Q0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUywgV2ViS2l0V2Vic2l0ZVBv
bGljaWVzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQlNJVEVfUE9MSUNJRVMob2JqKSAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCU0lURV9Q
T0xJQ0lFUykpCisjZGVmaW5lIFdFQktJVF9XRUJTSVRFX1BPTElDSUVTX0NMQVNTKGtsYXNzKSAg
ICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQlNJVEVf
UE9MSUNJRVMsIFdlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lT
X1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUykpCisjZGVmaW5lIFdFQktJVF9X
RUJTSVRFX1BPTElDSUVTX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFT
Uygob2JqKSwgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsIFdlYktpdFdlYnNpdGVQb2xp
Y2llc0NsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llcyAgICAg
ICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQ
b2xpY2llc0NsYXNzICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3M7Cit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZSBXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2
YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xpY2llcyB7CisgICAgR09iamVjdCBwYXJl
bnQ7CisKKyAgICBXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlICpwcml2OworfTsKKworc3Ry
dWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVu
dF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsK
KworLyoqCisgKiBXZWJLaXRBdXRvcGxheVBvbGljeToKKyAqIEBXRUJLSVRfQVVUT1BMQVlfQUxM
T1c6IERvIG5vdCByZXN0cmljdCBhdXRvcGxheS4KKyAqIEBXRUJLSVRfQVVUT1BMQVlfQUxMT1df
V0lUSE9VVF9TT1VORDogQWxsb3cgdmlkZW9zIHRvIGF1dG9wbGF5IGlmCisgKiAgICAgdGhleSBo
YXZlIG5vIGF1ZGlvIHRyYWNrLCBvciBpZiB0aGVpciBhdWRpbyB0cmFjayBpcyBtdXRlZC4KKyAq
IEBXRUJLSVRfQVVUT1BMQVlfREVOWTogTmV2ZXIgYWxsb3cgYXV0b3BsYXkuCisgKgorICogRW51
bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IGF1dG9wbGF5IHBvbGljaWVzLgorICoKKyAqIFNpbmNl
OiAyLjMwCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0FVVE9QTEFZX0FMTE9XLAor
ICAgIFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5ELAorICAgIFdFQktJVF9BVVRP
UExBWV9ERU5ZCit9IFdlYktpdEF1dG9wbGF5UG9saWN5OworCitXRUJLSVRfQVBJIEdUeXBlCit3
ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKgord2Via2l0
X3dlYnNpdGVfcG9saWNpZXNfbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
dm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKK3dlYmtpdF93ZWJz
aXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzICAgICAgICAgICAgICAgICAgICAgKGNvbnN0
IGdjaGFyICAqZmlyc3RfcG9saWN5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworCitXRUJLSVRfQVBJIFdl
YktpdEF1dG9wbGF5UG9saWN5Cit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfYXV0b3BsYXlf
cG9saWN5ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVz
KTsKKworR19FTkRfREVDTFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCAwMmY0OWFkZDA1OWMwZDI4
MmU3NTFhN2VlNjk4MTAyNzcxMTIzODFkLi40YmI1ZGRhZDBjNjg0MzYxYmVmZDdlMjY2ZmZiOGM4
ZmNmYjYwMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2Rv
Y3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0xNzIsNiArMTcyLDcgQEAgV2ViS2l0
U2F2ZU1vZGUKIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50CiBXZWJLaXRXZWJQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24KIFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJhY2sKK1dlYktpdEF1dG9w
bGF5UG9saWN5CiAKIDxTVUJTRUNUSU9OIEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElO
R19DT01NQU5EX0NVVApAQCAtMjYwLDYgKzI2MSw3IEBAIHdlYmtpdF93ZWJfdmlld19zZW5kX21l
c3NhZ2VfdG9fcGFnZQogd2Via2l0X3dlYl92aWV3X3NlbmRfbWVzc2FnZV90b19wYWdlX2Zpbmlz
aAogd2Via2l0X3dlYl92aWV3X3NldF9pbnB1dF9tZXRob2RfY29udGV4dAogd2Via2l0X3dlYl92
aWV3X2dldF9pbnB1dF9tZXRob2RfY29udGV4dAord2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRl
X3BvbGljaWVzCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0CkBAIC04NTEsNiArODUzLDcgQEAgV2ViS2l0UG9saWN5RGVjaXNpb24K
IHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQKIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25f
aWdub3JlCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZQord2Via2l0X3BvbGljeV9kZWNpc2lv
bl91c2Vfd2l0aF9wb2xpY2llcwogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFBvbGlj
eURlY2lzaW9uQ2xhc3MKQEAgLTE1NDUsMyArMTU0OCwyNCBAQCBXRUJLSVRfVFlQRV9JTlBVVF9N
RVRIT0RfVU5ERVJMSU5FCiA8RklMRT5XZWJLaXRVUklVdGlsaXRpZXM8L0ZJTEU+CiB3ZWJraXRf
dXJpX2Zvcl9kaXNwbGF5CiA8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0V2Vi
c2l0ZVBvbGljaWVzPC9GSUxFPgorV2ViS2l0V2Vic2l0ZVBvbGljaWVzCit3ZWJraXRfd2Vic2l0
ZV9wb2xpY2llc19uZXcKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVz
Cit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfYXV0b3BsYXlfcG9saWN5CisKKzxTVUJTRUNU
SU9OIFN0YW5kYXJkPgorV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MKK1dFQktJVF9JU19XRUJT
SVRFX1BPTElDSUVTCitXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFU19DTEFTUworV0VCS0lUX1RZ
UEVfV0VCU0lURV9QT0xJQ0lFUworV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMKK1dFQktJVF9XRUJT
SVRFX1BPTElDSUVTX0NMQVNTCitXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19HRVRfQ0xBU1MKKwor
PFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUKK3dlYmtp
dF93ZWJzaXRlX3BvbGljaWVzX2dldF90eXBlCis8L1NFQ1RJT04+CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTlmMWZiZjMxZGQzMDZmOWQ5ZWIz
ZWQ5NTNlNGI2ZjQxNjU1ZTljZC4uZGM4NDljYjczYmNlMjhmMzY4M2E1NWE0NmVlMTNjZWZiZDU0
ZWIzYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI4IEBACisyMDIwLTA2LTA4ICBDaGFybGllIFR1cm5lciAgPGN0dXJuZXJAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1RLXSBEaXNhYmxlIHZpZGVvIGF1dG9wbGF5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ4NDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIHZhcmlv
dXMgY2FsbHNpdGVzIGZvciBjb25zdHJ1Y3RpbmcgYSB2aWV3IHRvIHRha2UgaW50bworICAgICAg
ICBhY2NvdW50IHRoZSBkZWZhdWx0IHBvbGljaWVzLiBJIGNob3NlIHRoZSBkZWZhdWx0IGFzIGF1
dG9wbGF5CisgICAgICAgIGFsbG93IHdpdGhvdXQgc291bmQsIHdoaWNoIGlzIGluIGtlZXBpbmcg
d2l0aCBXZWJDb3JlJ3MgY2hvaWNlLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJXaW5kb3cuYzoKKyAgICAgICAgKHdlYlZpZXdEZWNpZGVQb2xpY3kpOgorICAgICAgICAobmV3
VGFiQ2FsbGJhY2spOgorICAgICAgICAob3BlblByaXZhdGVXaW5kb3cpOgorICAgICAgICAoYnJv
d3Nlcl93aW5kb3dfZ2V0X29yX2NyZWF0ZV93ZWJfdmlld19mb3JfYXV0b21hdGlvbik6CisgICAg
ICAgIChicm93c2VyX3dpbmRvd19jcmVhdGVfd2ViX3ZpZXdfaW5fbmV3X3RhYl9mb3JfYXV0b21h
dGlvbik6CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAgKGNyZWF0
ZUJyb3dzZXJUYWIpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwOiBBZGQKKyAgICAgICAg
YXV0b3BsYXkgcG9saWN5IHRlc3RzLCBhbmQgdXNlIG1vZGVybiBjbGFzcyBpbml0aWFsaXplcnMu
CisgICAgICAgICh0ZXN0QXV0b3BsYXlQb2xpY3kpOgorICAgICAgICAoYmVmb3JlQWxsKToKKwog
MjAyMC0wNi0xMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUSzRdIEdldCBNaW5pQnJvd3NlciByZWFkeSBmb3IgR1RLNApkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggYmNjZWVjZTMzYWQzNjVhODQwNzg1NzU5NDIz
NjMwODY4M2ZkZjAwYi4uOGZhYTkyMTM2OTkxNzE2OGQxZWNmNzU2OTk1OGE0MDQwZjVkZjQ5ZSAx
MDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC00NDYsNiArNDQ2LDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmll
dywgV2ViS2l0UG9saWN5RGVjaXNpb24KICAgICAgICAgInNldHRpbmdzIiwgd2Via2l0X3dlYl92
aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSwKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2Vy
Iiwgd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSwKICAg
ICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdlYmtpdF93ZWJfdmlld19pc19j
b250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCisgICAgICAgICJ3ZWJzaXRlLXBvbGlj
aWVzIiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAogICAg
ICAgICBOVUxMKSk7CiAgICAgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcod2luZG93LCBuZXdX
ZWJWaWV3KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0KG5ld1dlYlZpZXcsIHdl
YmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcmVxdWVzdChuYXZpZ2F0aW9uQWN0aW9uKSk7CkBA
IC02MzEsNiArNjMyLDcgQEAgc3RhdGljIHZvaWQgbmV3VGFiQ2FsbGJhY2soR1NpbXBsZUFjdGlv
biAqYWN0aW9uLCBHVmFyaWFudCAqcGFyYW1ldGVyLCBncG9pbnRlcgogICAgICAgICAic2V0dGlu
Z3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNl
ci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5h
Z2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgd2Vi
a2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwKKyAgICAg
ICAgIndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNp
ZXMod2ViVmlldyksCiAgICAgICAgIE5VTEwpKSk7CiAgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3Vz
KHdpbmRvdy0+dXJpRW50cnkpOwogICAgIGd0a19ub3RlYm9va19zZXRfY3VycmVudF9wYWdlKEdU
S19OT1RFQk9PSyh3aW5kb3ctPm5vdGVib29rKSwgLTEpOwpAQCAtNjUxLDYgKzY1Myw3IEBAIHN0
YXRpYyB2b2lkIG9wZW5Qcml2YXRlV2luZG93KEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwgR1Zhcmlh
bnQgKnBhcmFtZXRlciwgZ3BvaW50CiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdl
YmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAg
ICJpcy1lcGhlbWVyYWwiLCBUUlVFLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0
aW9uIiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3
KSwKKyAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNp
dGVfcG9saWNpZXMod2ViVmlldyksCiAgICAgICAgIE5VTEwpKTsKICAgICBHdGtXaWRnZXQgKm5l
d1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhHVEtfV0lORE9XKHdpbmRvdyksIHdpbmRvdy0+
d2ViQ29udGV4dCk7CiAgICAgZ3RrX3dpbmRvd19zZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyhu
ZXdXaW5kb3cpLCBndGtfd2luZG93X2dldF9hcHBsaWNhdGlvbihHVEtfV0lORE9XKHdpbmRvdykp
KTsKQEAgLTE0NTEsNiArMTQ1NCw3IEBAIFdlYktpdFdlYlZpZXcgKmJyb3dzZXJfd2luZG93X2dl
dF9vcl9jcmVhdGVfd2ViX3ZpZXdfZm9yX2F1dG9tYXRpb24oQnJvd3NlcldpbmRvCiAgICAgICAg
ICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyksCiAgICAg
ICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250
ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRp
b24iLCBUUlVFLAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19n
ZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIEd0a1dp
ZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1cod2luZG93KSwg
d2luZG93LT53ZWJDb250ZXh0KTsKICAgICBndGtfd2luZG93X3NldF9hcHBsaWNhdGlvbihHVEtf
V0lORE9XKG5ld1dpbmRvdyksIGd0a193aW5kb3dfZ2V0X2FwcGxpY2F0aW9uKEdUS19XSU5ET1co
d2luZG93KSkpOwpAQCAtMTQ3Miw2ICsxNDc2LDcgQEAgV2ViS2l0V2ViVmlldyAqYnJvd3Nlcl93
aW5kb3dfY3JlYXRlX3dlYl92aWV3X2luX25ld190YWJfZm9yX2F1dG9tYXRpb24oQnJvd3NlclcK
ICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgd2Via2l0X3dlYl92aWV3X2dldF91c2Vy
X2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0
b21hdGlvbiIsIFRSVUUsCiAgICAgICAgICJhdXRvbWF0aW9uLXByZXNlbnRhdGlvbi10eXBlIiwg
V0VCS0lUX0FVVE9NQVRJT05fQlJPV1NJTkdfQ09OVEVYVF9QUkVTRU5UQVRJT05fVEFCLAorICAg
ICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xp
Y2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJyb3dzZXJfd2luZG93X2FwcGVu
ZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJp
KG5ld1dlYlZpZXcsICJhYm91dDpibGFuayIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggMGIyMzY2
MjBkOWM3MGI0Yjk0ZTI4MGNhNTA4MTEzYzg1N2Q3NTgzMi4uMGE5OGFjNmYwYTk5ZDM3ODc2Yjdk
MjE5ZDRkNDIxNGE5YjllNzQwZCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21h
aW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00MCw2ICs0MCw3IEBA
CiAKIHN0YXRpYyBjb25zdCBnY2hhciAqKnVyaUFyZ3VtZW50cyA9IE5VTEw7CiBzdGF0aWMgY29u
c3QgZ2NoYXIgKippZ25vcmVIb3N0cyA9IE5VTEw7CitzdGF0aWMgV2ViS2l0QXV0b3BsYXlQb2xp
Y3kgYXV0b3BsYXlQb2xpY3kgPSBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORDsK
IHN0YXRpYyBHZGtSR0JBICpiYWNrZ3JvdW5kQ29sb3I7CiBzdGF0aWMgZ2Jvb2xlYW4gZWRpdG9y
TW9kZTsKIHN0YXRpYyBjb25zdCBjaGFyICpzZXNzaW9uRmlsZTsKQEAgLTc2LDEzICs3NywxNCBA
QCBzdGF0aWMgZ2NoYXIgKmFyZ3VtZW50VG9VUkwoY29uc3QgY2hhciAqZmlsZW5hbWUpCiAgICAg
cmV0dXJuIGZpbGVVUkw7CiB9CiAKLXN0YXRpYyBXZWJLaXRXZWJWaWV3ICpjcmVhdGVCcm93c2Vy
VGFiKEJyb3dzZXJXaW5kb3cgKndpbmRvdywgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdz
LCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKnVzZXJDb250ZW50TWFuYWdlcikKK3N0YXRpYyBX
ZWJLaXRXZWJWaWV3ICpjcmVhdGVCcm93c2VyVGFiKEJyb3dzZXJXaW5kb3cgKndpbmRvdywgV2Vi
S2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKnVz
ZXJDb250ZW50TWFuYWdlciwgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICpkZWZhdWx0V2Vic2l0ZVBv
bGljaWVzKQogewogICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVco
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAogICAgICAgICAid2ViLWNvbnRleHQi
LCBicm93c2VyX3dpbmRvd19nZXRfd2ViX2NvbnRleHQod2luZG93KSwKICAgICAgICAgInNldHRp
bmdzIiwgd2Via2l0U2V0dGluZ3MsCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHVz
ZXJDb250ZW50TWFuYWdlciwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIs
IGF1dG9tYXRpb25Nb2RlLAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIGRlZmF1bHRXZWJz
aXRlUG9saWNpZXMsCiAgICAgICAgIE5VTEwpKTsKIAogICAgIGlmIChlZGl0b3JNb2RlKQpAQCAt
OTIsNiArOTQsMjcgQEAgc3RhdGljIFdlYktpdFdlYlZpZXcgKmNyZWF0ZUJyb3dzZXJUYWIoQnJv
d3NlcldpbmRvdyAqd2luZG93LCBXZWJLaXRTZXR0aW5ncyAqd2UKICAgICByZXR1cm4gd2ViVmll
dzsKIH0KIAorc3RhdGljIGdib29sZWFuIHBhcnNlQXV0b3BsYXlQb2xpY3koY29uc3QgY2hhciAq
b3B0aW9uTmFtZSwgY29uc3QgY2hhciAqdmFsdWUsIGdwb2ludGVyIGRhdGEsIEdFcnJvciAqKmVy
cm9yKQoreworICAgIGlmICghZ19zdHJjbXAwKHZhbHVlLCAiYWxsb3ciKSkgeworICAgICAgICBh
dXRvcGxheVBvbGljeSA9IFdFQktJVF9BVVRPUExBWV9BTExPVzsKKyAgICAgICAgcmV0dXJuIFRS
VUU7CisgICAgfQorCisgICAgaWYgKCFnX3N0cmNtcDAodmFsdWUsICJhbGxvdy13aXRob3V0LXNv
dW5kIikpIHsKKyAgICAgICAgYXV0b3BsYXlQb2xpY3kgPSBXRUJLSVRfQVVUT1BMQVlfQUxMT1df
V0lUSE9VVF9TT1VORDsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaWYgKCFn
X3N0cmNtcDAodmFsdWUsICJkZW55IikpIHsKKyAgICAgICAgYXV0b3BsYXlQb2xpY3kgPSBXRUJL
SVRfQVVUT1BMQVlfREVOWTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgZ19z
ZXRfZXJyb3IoZXJyb3IsIEdfT1BUSU9OX0VSUk9SLCBHX09QVElPTl9FUlJPUl9GQUlMRUQsICJG
YWlsZWQgdG8gcGFyc2UgJyVzJyBhcyBhbiBhdXRvcGxheSBwb2xpY3ksIHZhbGlkIG9wdGlvbnMg
YXJlIGFsbG93LCBhbGxvdy13aXRob3V0LXNvdW5kLCBhbmQgZGVueSIsIHZhbHVlKTsKKyAgICBy
ZXR1cm4gRkFMU0U7Cit9CisKIHN0YXRpYyBnYm9vbGVhbiBwYXJzZUJhY2tncm91bmRDb2xvcihj
b25zdCBjaGFyICpvcHRpb25OYW1lLCBjb25zdCBjaGFyICp2YWx1ZSwgZ3BvaW50ZXIgZGF0YSwg
R0Vycm9yICoqZXJyb3IpCiB7CiAgICAgR2RrUkdCQSByZ2JhOwpAQCAtMTA2LDYgKzEyOSw3IEBA
IHN0YXRpYyBnYm9vbGVhbiBwYXJzZUJhY2tncm91bmRDb2xvcihjb25zdCBjaGFyICpvcHRpb25O
YW1lLCBjb25zdCBjaGFyICp2YWx1ZSwKIAogc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21t
YW5kTGluZU9wdGlvbnNbXSA9CiB7CisgICAgeyAiYXV0b3BsYXktcG9saWN5IiwgMCwgMCwgR19P
UFRJT05fQVJHX0NBTExCQUNLLCBwYXJzZUF1dG9wbGF5UG9saWN5LCAiQXV0b3BsYXkgcG9saWN5
IiwgTlVMTCB9LAogICAgIHsgImJnLWNvbG9yIiwgMCwgMCwgR19PUFRJT05fQVJHX0NBTExCQUNL
LCBwYXJzZUJhY2tncm91bmRDb2xvciwgIkJhY2tncm91bmQgY29sb3IiLCBOVUxMIH0sCiAgICAg
eyAiZWRpdG9yLW1vZGUiLCAnZScsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmZWRpdG9yTW9kZSwg
IlJ1biBpbiBlZGl0b3IgbW9kZSIsIE5VTEwgfSwKICAgICB7ICJkYXJrLW1vZGUiLCAnZCcsIDAs
IEdfT1BUSU9OX0FSR19OT05FLCAmZGFya01vZGUsICJSdW4gaW4gZGFyayBtb2RlIiwgTlVMTCB9
LApAQCAtNTY4LDYgKzU5MiwxMCBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZShHQXBwbGljYXRpb24g
KmFwcGxpY2F0aW9uLCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MpCiAgICAgd2Via2l0
X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIodXNl
ckNvbnRlbnRNYW5hZ2VyLCAiYWJvdXREYXRhIik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh1c2Vy
Q29udGVudE1hbmFnZXIsICJzY3JpcHQtbWVzc2FnZS1yZWNlaXZlZDo6YWJvdXREYXRhIiwgR19D
QUxMQkFDSyhhYm91dERhdGFTY3JpcHRNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayksIHdlYkNvbnRl
eHQpOwogCisgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICpkZWZhdWx0V2Vic2l0ZVBvbGljaWVz
ID0gd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMoCisgICAgICAgICJh
dXRvcGxheS1wb2xpY3kiLCBhdXRvcGxheVBvbGljeSwKKyAgICAgICAgTlVMTCk7CisKICAgICBp
ZiAoY29udGVudEZpbHRlcikgewogICAgICAgICBHRmlsZSAqY29udGVudEZpbHRlckZpbGUgPSBn
X2ZpbGVfbmV3X2Zvcl9jb21tYW5kbGluZV9hcmcoY29udGVudEZpbHRlcik7CiAKQEAgLTYxMyw3
ICs2NDEsNyBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZShHQXBwbGljYXRpb24gKmFwcGxpY2F0aW9u
LCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MpCiAgICAgICAgIGludCBpOwogCiAgICAg
ICAgIGZvciAoaSA9IDA7IHVyaUFyZ3VtZW50c1tpXTsgaSsrKSB7Ci0gICAgICAgICAgICBXZWJL
aXRXZWJWaWV3ICp3ZWJWaWV3ID0gY3JlYXRlQnJvd3NlclRhYihtYWluV2luZG93LCB3ZWJraXRT
ZXR0aW5ncywgdXNlckNvbnRlbnRNYW5hZ2VyKTsKKyAgICAgICAgICAgIFdlYktpdFdlYlZpZXcg
KndlYlZpZXcgPSBjcmVhdGVCcm93c2VyVGFiKG1haW5XaW5kb3csIHdlYmtpdFNldHRpbmdzLCB1
c2VyQ29udGVudE1hbmFnZXIsIGRlZmF1bHRXZWJzaXRlUG9saWNpZXMpOwogICAgICAgICAgICAg
aWYgKCFpKQogICAgICAgICAgICAgICAgIGZpcnN0VGFiID0gR1RLX1dJREdFVCh3ZWJWaWV3KTsK
ICAgICAgICAgICAgIGdjaGFyICp1cmwgPSBhcmd1bWVudFRvVVJMKHVyaUFyZ3VtZW50c1tpXSk7
CkBAIC02MjEsNyArNjQ5LDcgQEAgc3RhdGljIHZvaWQgYWN0aXZhdGUoR0FwcGxpY2F0aW9uICph
cHBsaWNhdGlvbiwgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzKQogICAgICAgICAgICAg
Z19mcmVlKHVybCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBXZWJLaXRXZWJW
aWV3ICp3ZWJWaWV3ID0gY3JlYXRlQnJvd3NlclRhYihtYWluV2luZG93LCB3ZWJraXRTZXR0aW5n
cywgdXNlckNvbnRlbnRNYW5hZ2VyKTsKKyAgICAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9
IGNyZWF0ZUJyb3dzZXJUYWIobWFpbldpbmRvdywgd2Via2l0U2V0dGluZ3MsIHVzZXJDb250ZW50
TWFuYWdlciwgZGVmYXVsdFdlYnNpdGVQb2xpY2llcyk7CiAgICAgICAgIGZpcnN0VGFiID0gR1RL
X1dJREdFVCh3ZWJWaWV3KTsKIAogICAgICAgICBpZiAoIWVkaXRvck1vZGUpIHsKQEAgLTYzNCw2
ICs2NjIsOCBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZShHQXBwbGljYXRpb24gKmFwcGxpY2F0aW9u
LCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MpCiAKICAgICBnX2NsZWFyX29iamVjdCgm
d2Via2l0U2V0dGluZ3MpOwogICAgIGdfb2JqZWN0X3VucmVmKHdlYkNvbnRleHQpOworICAgIGdf
b2JqZWN0X3VucmVmKHVzZXJDb250ZW50TWFuYWdlcik7CisgICAgZ19vYmplY3RfdW5yZWYoZGVm
YXVsdFdlYnNpdGVQb2xpY2llcyk7CiAKICAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMoZmlyc3RU
YWIpOwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKG1haW5XaW5kb3cpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9s
aWN5Q2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0UG9saWN5Q2xpZW50LmNwcAppbmRleCA3NjliY2M4OTE2YmI5YjFjMWFmZTI5ZDZiYzIw
OWRkNDMyODAxNmE2Li45NTRjYTY5MDVkNmNhMzhlZDhiNTY3NDk5OTczZDQ1MjIwMWIzNTExIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktp
dFBvbGljeUNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNs
dWRlICJMb2FkVHJhY2tpbmdUZXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgor
I2luY2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTMyLDE5ICszMywy
MSBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFBvbGljeURlY2lzaW9uUmVzcG9uc2UgewogICAgICAg
ICBVc2UsCisgICAgICAgIFVzZVdpdGhQb2xpY3ksCiAgICAgICAgIElnbm9yZSwKICAgICAgICAg
RG93bmxvYWQsCiAgICAgICAgIE5vbmUKICAgICB9OwogCi0gICAgUG9saWN5Q2xpZW50VGVzdCgp
Ci0gICAgICAgIDogTG9hZFRyYWNraW5nVGVzdCgpCi0gICAgICAgICwgbV9wb2xpY3lEZWNpc2lv
blJlc3BvbnNlKE5vbmUpCi0gICAgICAgICwgbV9wb2xpY3lEZWNpc2lvblR5cGVGaWx0ZXIoMCkK
LSAgICAgICAgLCBtX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkoZmFsc2Up
Ci0gICAgICAgICwgbV9oYWx0TWFpbkxvb3BBZnRlck1ha2luZ0RlY2lzaW9uKGZhbHNlKQorICAg
IHN0YXRpYyB2b2lkIHRlc3RIYW5kbGVyTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2soV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyKiB1c2VyQ29udGVudE1hbmFnZXIsIFdlYktpdEphdmFzY3JpcHRSZXN1
bHQqIGphdmFzY3JpcHRSZXN1bHQsIFBvbGljeUNsaWVudFRlc3QqIHRlc3QpCiAgICAgewotICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImRlY2lkZS1wb2xpY3kiLCBHX0NBTExC
QUNLKGRlY2lkZVBvbGljeUNhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hh
cj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2
YXNjcmlwdFJlc3VsdCkpOworICAgICAgICBpZiAoZ19zdHJfZXF1YWwodmFsdWVTdHJpbmcuZ2V0
KCksICJhdXRvcGxheWVkIikpCisgICAgICAgICAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSB0cnVl
OworICAgICAgICBlbHNlIGlmIChnX3N0cl9lcXVhbCh2YWx1ZVN0cmluZy5nZXQoKSwgImRpZC1u
b3QtcGxheSIpKQorICAgICAgICAgICAgdGVzdC0+bV9hdXRvcGxheWVkID0gZmFsc2U7CisKKyAg
ICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKICAgICB9CiAKICAgICBz
dGF0aWMgZ2Jvb2xlYW4gcXVpdE1haW5Mb29wTGF0ZXIoR01haW5Mb29wKiBsb29wKQpAQCAtNTks
NiArNjIsOSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICAgICAgd2Via2l0
X3BvbGljeV9kZWNpc2lvbl91c2UoZGVjaXNpb24pOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgVXNlV2l0aFBvbGljeToKKyAgICAgICAgICAgIHdlYmtpdF9wb2xpY3lfZGVjaXNp
b25fdXNlX3dpdGhfcG9saWNpZXMoZGVjaXNpb24sIHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdl
dCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElnbm9yZToKICAgICAgICAg
ICAgIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3JlKGRlY2lzaW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtOTgsMTEgKzEwNCw0NSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGQUxT
RTsKICAgICB9CiAKLSAgICBQb2xpY3lEZWNpc2lvblJlc3BvbnNlIG1fcG9saWN5RGVjaXNpb25S
ZXNwb25zZTsKLSAgICBpbnQgbV9wb2xpY3lEZWNpc2lvblR5cGVGaWx0ZXI7Ci0gICAgYm9vbCBt
X3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHk7Ci0gICAgYm9vbCBtX2hhbHRN
YWluTG9vcEFmdGVyTWFraW5nRGVjaXNpb247CisgICAgUG9saWN5Q2xpZW50VGVzdCgpCisgICAg
ICAgIDogTG9hZFRyYWNraW5nVGVzdCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0
KG1fd2ViVmlldywgImRlY2lkZS1wb2xpY3kiLCBHX0NBTExCQUNLKGRlY2lkZVBvbGljeUNhbGxi
YWNrKSwgdGhpcyk7CisgICAgICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rl
cl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCAidGVz
dEhhbmRsZXIiKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3VzZXJDb250ZW50TWFuYWdl
ci5nZXQoKSwgInNjcmlwdC1tZXNzYWdlLXJlY2VpdmVkOjp0ZXN0SGFuZGxlciIsIEdfQ0FMTEJB
Q0sodGVzdEhhbmRsZXJNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayksIHRoaXMpOworICAgIH0KKwor
ICAgIGJvb2wgbG9hZFVSSUFuZFdhaXRGb3JBdXRvUGxheWVkKGNvbnN0IGNoYXIqIHVyaSwgV2Vi
S2l0QXV0b3BsYXlQb2xpY3kgcG9saWN5KQorICAgIHsKKyAgICAgICAgbV9hdXRvcGxheWVkID0g
V1RGOjpudWxsb3B0OworICAgICAgICBtX3dlYnNpdGVQb2xpY2llcyA9IGFkb3B0R1JlZih3ZWJr
aXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcygiYXV0b3BsYXktcG9saWN5Iiwg
cG9saWN5LCBudWxscHRyKSk7CisgICAgICAgIG1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBv
bGljeUNsaWVudFRlc3Q6OlVzZVdpdGhQb2xpY3k7CisKKyAgICAgICAgbG9hZFVSSSh1cmkpOwor
ICAgICAgICAvLyBSdW4gdW50aWwgdGhlIHVzZXIgY29udGVudCBtZXNzYWdlcyBjb21lIGJhY2sg
ZnJvbSB0aGUgdGVzdCBIVE1MLgorICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7
CisgICAgICAgIHJldHVybiBtX2F1dG9wbGF5ZWQudmFsdWVPcihmYWxzZSk7CisgICAgfQorCisg
ICAgYm9vbCBydW5KU0FuZFdhaXRGb3JBdXRvUGxheWVkKGNvbnN0IGNoYXIqIHNjcmlwdCkKKyAg
ICB7CisgICAgICAgIHJ1bkphdmFTY3JpcHRXaXRob3V0Rm9yY2VkVXNlckdlc3R1cmVzQW5kV2Fp
dFVudGlsRmluaXNoZWQoc2NyaXB0LCBudWxscHRyKTsKKworICAgICAgICAvLyBTcGluIHVudGls
IGF1dG9wbGF5IHN0YXR1cyBpcyByZXBvcnRlZCwgdGhlIHJ1biBKUyBBUEkgY2FuCisgICAgICAg
IC8vIGNvbXBsZXRlIGl0cyBtYWluIGxvb3AgYmVmb3JlIHRoZSBwcm9taXNlcyBpbiBhdXRvcGxh
eS1jaGVjayBmaXJlLgorICAgICAgICB3aGlsZSAoIW1fYXV0b3BsYXllZC5oYXNWYWx1ZSgpKQor
ICAgICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworCisgICAgICAgIHJldHVy
biAqbV9hdXRvcGxheWVkOworICAgIH0KKworICAgIFBvbGljeURlY2lzaW9uUmVzcG9uc2UgbV9w
b2xpY3lEZWNpc2lvblJlc3BvbnNlIHsgTm9uZSB9OworICAgIGludCBtX3BvbGljeURlY2lzaW9u
VHlwZUZpbHRlciB7IDAgfTsKKyAgICBib29sIG1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3lu
Y2hyb25vdXNseSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhbHRNYWluTG9vcEFmdGVyTWFraW5n
RGVjaXNpb24geyBmYWxzZSB9OworICAgIE9wdGlvbmFsPGJvb2w+IG1fYXV0b3BsYXllZDsKICAg
ICBHUmVmUHRyPFdlYktpdFBvbGljeURlY2lzaW9uPiBtX3ByZXZpb3VzUG9saWN5RGVjaXNpb247
CisgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlUG9saWNpZXM+IG1fd2Vic2l0ZVBvbGljaWVzOwog
fTsKIAogc3RhdGljIHZvaWQgdGVzdE5hdmlnYXRpb25Qb2xpY3koUG9saWN5Q2xpZW50VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTI2OSw2ICszMDksNDMgQEAgc3RhdGljIHZvaWQgc2Vy
dmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29u
c3QgY2hhcioKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9T
VEFUVVNfTk9UX0ZPVU5EKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdEF1dG9wbGF5UG9saWN5KFBv
bGljeUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisjaWYgUExBVEZPUk0oR1RL
KQorICAgIC8vIFRoZSB3ZWIgdmlldyBtdXN0IGJlIHJlYWxpemVkIGZvciB0aGUgdmlkZW8gdG8g
c3RhcnQgcGxheWJhY2suCisgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVk
KEdUS19XSU5ET1dfVE9QTEVWRUwpOworI2VuZGlmCisKKyAgICB0ZXN0LT5tX3BvbGljeURlY2lz
aW9uVHlwZUZpbHRlciA9IFdFQktJVF9QT0xJQ1lfREVDSVNJT05fVFlQRV9OQVZJR0FUSU9OX0FD
VElPTjsKKworICAgIGNvbnN0IGNoYXIqIHJlc291cmNlTmFtZSA9ICJhdXRvcGxheS1jaGVjay5o
dG1sIjsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlUGF0aChnX2J1aWxkX2ZpbGVuYW1l
KFRlc3Q6OmdldFJlc291cmNlc0RpcihUZXN0OjpXZWJLaXQyUmVzb3VyY2VzKS5kYXRhKCksIHJl
c291cmNlTmFtZSwgbnVsbHB0cikpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VVUkwo
Z19maWxlbmFtZV90b191cmkocmVzb3VyY2VQYXRoLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7
CisKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5sb2FkVVJJQW5kV2FpdEZvckF1dG9QbGF5ZWQo
cmVzb3VyY2VVUkwuZ2V0KCksIFdFQktJVF9BVVRPUExBWV9ERU5ZKSk7CisKKyAgICAvLyBBc3lu
YyB0ZXN0CisgICAgdGVzdC0+bV9yZXNwb25kVG9Qb2xpY3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5
ID0gdHJ1ZTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5sb2FkVVJJQW5kV2FpdEZvckF1dG9Q
bGF5ZWQocmVzb3VyY2VVUkwuZ2V0KCksIFdFQktJVF9BVVRPUExBWV9ERU5ZKSk7CisgICAgdGVz
dC0+bV9yZXNwb25kVG9Qb2xpY3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5ID0gZmFsc2U7CisgICAg
Z19hc3NlcnRfdHJ1ZSh0ZXN0LT5sb2FkVVJJQW5kV2FpdEZvckF1dG9QbGF5ZWQocmVzb3VyY2VV
UkwuZ2V0KCksIFdFQktJVF9BVVRPUExBWV9BTExPVykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRl
c3QtPmxvYWRVUklBbmRXYWl0Rm9yQXV0b1BsYXllZChyZXNvdXJjZVVSTC5nZXQoKSwgV0VCS0lU
X0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQpKTsKKworICAgIC8vIE5vdyBjaGVjayBkeW5h
bWljYWxseSB1cGRhdGluZyB0aGUgbG9hZGVyIHBvbGljaWVzCisgICAgZ19hc3NlcnRfZmFsc2Uo
dGVzdC0+bG9hZFVSSUFuZFdhaXRGb3JBdXRvUGxheWVkKHJlc291cmNlVVJMLmdldCgpLCBXRUJL
SVRfQVVUT1BMQVlfREVOWSkpOworICAgIC8vIENoZWNrIHRoYXQgSlMgY2FuIG5vdCBzaWRlLXN0
ZXAgdGhlIGFjdGl2ZSBwb2xpY3kKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5ydW5KU0FuZFdh
aXRGb3JBdXRvUGxheWVkKCJwbGF5VmlkZW8oKTsiKSk7CisKKyAgICAvLyBTaWxlbnQgYXVkaW8g
dHJhY2sgdGVzdHMKKyAgICByZXNvdXJjZU5hbWUgPSAiYXV0b3BsYXktbm8tYXVkaW8tY2hlY2su
aHRtbCI7CisgICAgcmVzb3VyY2VQYXRoLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0
UmVzb3VyY2VzRGlyKFRlc3Q6OldlYktpdDJSZXNvdXJjZXMpLmRhdGEoKSwgcmVzb3VyY2VOYW1l
LCBudWxscHRyKSk7CisgICAgcmVzb3VyY2VVUkwucmVzZXQoZ19maWxlbmFtZV90b191cmkocmVz
b3VyY2VQYXRoLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisKKyAgICBnX2Fzc2VydF9mYWxz
ZSh0ZXN0LT5sb2FkVVJJQW5kV2FpdEZvckF1dG9QbGF5ZWQocmVzb3VyY2VVUkwuZ2V0KCksIFdF
QktJVF9BVVRPUExBWV9ERU5ZKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5sb2FkVVJJQW5k
V2FpdEZvckF1dG9QbGF5ZWQocmVzb3VyY2VVUkwuZ2V0KCksIFdFQktJVF9BVVRPUExBWV9BTExP
VykpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bG9hZFVSSUFuZFdhaXRGb3JBdXRvUGxheWVk
KHJlc291cmNlVVJMLmdldCgpLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCkp
OworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAga1NlcnZlciA9IG5ldyBXZWJLaXRUZXN0
U2VydmVyKCk7CkBAIC0yNzYsNiArMzUzLDEwIEBAIHZvaWQgYmVmb3JlQWxsKCkKIAogICAgIFBv
bGljeUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0UG9saWN5Q2xpZW50IiwgIm5hdmlnYXRpb24tcG9s
aWN5IiwgdGVzdE5hdmlnYXRpb25Qb2xpY3kpOwogICAgIFBvbGljeUNsaWVudFRlc3Q6OmFkZCgi
V2ViS2l0UG9saWN5Q2xpZW50IiwgInJlc3BvbnNlLXBvbGljeSIsIHRlc3RSZXNwb25zZVBvbGlj
eSk7CisgICAgUG9saWN5Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRQb2xpY3lDbGllbnQiLCAiYXV0
b3BsYXktcG9saWN5IiwgdGVzdEF1dG9wbGF5UG9saWN5KTsKKyAgICAvLyBXQVJOSU5HOiBUaGlz
IHRlc3QgbXVzdCBjb21lIGxhc3QsIGl0IHVzZXMgcmFjZXkgY29uc3RydWN0cyB0aGF0CisgICAg
Ly8gaW50ZXJmZXJlIG5vbmRldGVybWluaXNpY2FsbHkgd2l0aCBhbnkgdGVzdCBydW5uaW5nIGFm
dGVyIGl0LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTMxOTAKICAgICBQb2xpY3lDbGllbnRUZXN0OjphZGQoIldlYktpdFBvbGljeUNsaWVudCIsICJu
ZXctd2luZG93LXBvbGljeSIsIHRlc3ROZXdXaW5kb3dQb2xpY3kpOwogfQogCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJW
aWV3LmNwcAppbmRleCBiMDNjOTk2MjZmMzBhY2M2OTIyM2Q5NTRhZmI4ZTQyMWFlYjQ1YWY2Li5k
N2NhZmZkMGU5OTJjYzMxNTczZDhiYjQ1ZDlmMGVkNjc1OTYwZmUxIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmll
dy5jcHAKQEAgLTExNDIsNiArMTE0MiwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0lzQXVk
aW9NdXRlZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lzX211dGVkKHRlc3QtPm1fd2ViVmlldykpOwogfQog
CitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dG9wbGF5UG9saWN5KFdlYlZpZXdUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXModGVzdC0+bV93ZWJWaWV3KTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5
X3BvbGljeShwb2xpY2llcyksID09LCBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VO
RCk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QmFja2dyb3VuZENvbG9yKFdlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTEzOTks
NiArMTQwNSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBGcmFtZURpc3BsYXllZFRlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJmcmFtZS1kaXNwbGF5ZWQiLCB0ZXN0V2ViVmlld0ZyYW1lRGlz
cGxheWVkKTsKICNlbmRpZgogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
aXMtYXVkaW8tbXV0ZWQiLCB0ZXN0V2ViVmlld0lzQXVkaW9NdXRlZCk7CisgICAgV2ViVmlld1Rl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdXRvcGxheS1wb2xpY3kiLCB0ZXN0V2ViVmlld0F1
dG9wbGF5UG9saWN5KTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKaW5kZXggOGUzZjM0OGQ4
YWI1MTRkNDc4M2VjYjFhYWVhM2JiZDIzMDI3YTliZS4uMTgyYTI0ZjhlMTQxZjg1MDlkYzRlZWFh
MDI1ODI0NWU2NWZhZDkyZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJW
aWV3SW50ZXJuYWwuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+
CiAKQEAgLTMxNyw2ICszMTgsMTggQEAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogV2ViVmlld1Rl
c3Q6OnJ1bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoY28KICAgICByZXR1
cm4gbV9qYXZhc2NyaXB0UmVzdWx0OwogfQogCitXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBXZWJW
aWV3VGVzdDo6cnVuSmF2YVNjcmlwdFdpdGhvdXRGb3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0VW50
aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAg
ICBpZiAobV9qYXZhc2NyaXB0UmVzdWx0KQorICAgICAgICB3ZWJraXRfamF2YXNjcmlwdF9yZXN1
bHRfdW5yZWYobV9qYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBtX2phdmFzY3JpcHRSZXN1bHQgPSAw
OworICAgIG1famF2YXNjcmlwdEVycm9yID0gZXJyb3I7CisgICAgd2Via2l0V2ViVmlld1J1bkph
dmFzY3JpcHRXaXRob3V0Rm9yY2VkVXNlckdlc3R1cmVzKG1fd2ViVmlldywgamF2YXNjcmlwdCwg
MCwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihydW5KYXZhU2NyaXB0UmVh
ZHlDYWxsYmFjayksIHRoaXMpOworICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKwor
ICAgIHJldHVybiBtX2phdmFzY3JpcHRSZXN1bHQ7Cit9CisKIGNoYXIqIFdlYlZpZXdUZXN0Ojpq
YXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3Jp
cHRSZXN1bHQpCiB7CiAgICAgYXV0byogdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
Z2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKaW5kZXggYzNmZGQ5ODI1ODkxMWI1ZWNi
ZjMxMGM5YWVjZTRiYzg1M2FjZjUwYi4uYmIwNzA4ODAxOWM4ODgxN2ViYjY0ZDE5YWJiODI5ZDU0
NzZjYjQ3YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViVmlld1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9X
ZWJWaWV3VGVzdC5oCkBAIC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciog
amF2YXNjcmlwdCwgR0Vycm9yKiopOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkph
dmFTY3JpcHRGcm9tR1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXNoZWQoY29uc3QgY2hhciogcmVz
b3VyY2UsIEdFcnJvcioqKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2Ny
aXB0SW5Xb3JsZEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIGNv
bnN0IGNoYXIqIHdvcmxkLCBHRXJyb3IqKik7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCog
cnVuSmF2YVNjcmlwdFdpdGhvdXRGb3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0VW50aWxGaW5pc2hl
ZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKik7CiAKICAgICAvLyBKYXZhc2NyaXB0
IHJlc3VsdCBoZWxwZXJzLgogICAgIHN0YXRpYyBjaGFyKiBqYXZhc2NyaXB0UmVzdWx0VG9DU3Ry
aW5nKFdlYktpdEphdmFzY3JpcHRSZXN1bHQqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402009</attachid>
            <date>2020-06-16 08:53:23 -0700</date>
            <delta_ts>2020-06-16 08:56:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20200616165322.patch</filename>
            <type>text/plain</type>
            <size>59732</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhhYTRmZTdmNzIzYjk4YTVl
MTJjYTA5NDIwY2RlMTg3NTAxNTcyZDMuLjJjNTUwZGMxZWY5NDUxMDIxOGUyMDA2NjBhODdjMWYy
YTFmMGZkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjAtMDYtMTIgIENoYXJsaWUg
VHVybmVyICA8Y3R1cm5lckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIERpc2FibGUgdmlk
ZW8gYXV0b3BsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDg0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFkZCBuZXcgc291cmNlIGZpbGVzIHRvIHRoZSBidWls
ZC4KKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZTogRGl0dG8uCisgICAgICAgICogU291cmNl
c0dUSy50eHQ6IERpdHRvLgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwOgorICAgICAg
ICAod2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcyk6IDogQWRkIGFuIEFQ
SSB0bworICAgICAgICByZXNwb25kIHRvIG5hdmlnYXRpb24gZGVjaXNpb25zIHdpdGggcG9saWNp
ZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgor
ICAgICAgICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KTogUGx1bWIgaW4g
dGhlIGRlZmF1bHQKKyAgICAgICAgd2Vic2l0ZSBwb2xpY2llcyB0aGF0IGFyZSBhc3NvY2lhdGVk
IHdpdGggdGhlIHdlYiB2aWV3LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6CisgICAgICAg
ICh3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2ViVmlld0dldFBy
b3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llcy5jcHA6IEFkZGVkLgorICAgICAgICAo
X1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGU6Ol9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2
YXRlKToKKyAgICAgICAgKHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFdlYnNpdGVQb2xpY2llcyk6
CisgICAgICAgICh3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRQb2xpY2llc0RhdGEpOgorICAgICAg
ICAod2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2Vi
c2l0ZVBvbGljaWVzU2V0QXV0b3BsYXlQb2xpY3kpOgorICAgICAgICAod2Via2l0V2Vic2l0ZVBv
bGljaWVzU2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfY2xh
c3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcpOgorICAgICAg
ICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMpOgorICAgICAgICAo
d2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisKIDIwMjAtMDYtMTIgIENoYXJsaWUgVHVybmVy
ICA8Y3R1cm5lckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBhbiBpbnRlcm5hbCBB
UEkgdG8gcnVuIGphdmFzY3JpcHQgd2l0aG91dCBmb3JjZWQgdXNlciBnZXN0dXJlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1HVEsuY21ha2UKaW5kZXggYjk0NTIyYzhmY2EwYWY4ODZmZWZkMmNlNGM5ODJlNDA3NzE1
ZDU2Yi4uZmQ5NDNmZjVhNWZlYTA2OTVjNDRkYmY5OGRkZmFkMDQwZjNlYzIyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0xNDAsNiArMTQwLDcgQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFM
TEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVEYXRhLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyLmgKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggODMyMGUz
MTBlNmM0NjY5MjRhMDgzZWU0NmFlMzFmNTQ4NjQyMGZjZC4uOWY3NzAyNWE5YjVmOTE2ZjM3ZDQy
MGFkNDhjYTM0OTIyMWFjYzRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQ
RS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNTIsNiAr
MTUyLDcgQEAgc2V0KFdQRV9BUElfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhLmgKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oCiAgICAgJHtXRUJL
SVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmgKKyAgICAk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oCiAg
ICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAogKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
R1RLLnR4dAppbmRleCAyZDVhYWM5NTNhYmVmMjNlYTVkMDIzM2FkMGE1YmU5YWE1OTg1YjhlLi4x
Y2YyNzdjOTU1OTJiMTczODE5ZTk0MmE3OTllNzZhOGQxMDFkODg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50
eHQKQEAgLTE5Miw2ICsxOTIsNyBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1Nl
c3Npb25TdGF0ZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZURhdGEuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2luZG93UHJv
cGVydGllcy5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBv
bGljaWVzLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMu
Y3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwIEBuby11
bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc1dQRS50eHQKaW5kZXggOGI5MzRlODFlNzQ4OTBlYmE2NzRmNWZhYWE2YTVh
ZGUwZjYwNWMxMS4uNDEzMzkxZWUyZmNhNjMwMjU5YTg2MWM0OTgzZDE5OTMyMDE0MmM2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNXUEUudHh0CkBAIC0xODAsNiArMTgwLDcgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVEYXRhLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdpbmRvd1Byb3BlcnRpZXMuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYnNpdGVQb2xpY2llcy5jcHAgQG5vLXVuaWZ5CiAKIFVJUHJvY2Vzcy9BUEkvd3BlL0lu
cHV0TWV0aG9kRmlsdGVyV1BFLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VD
bGllbnRJbXBsLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcAppbmRleCBhMzU3NDc5M2M2
OWVkMDc2ODNhNjAzZTYyOWY0MDkxMWY3NWJjYTNhLi5jYjI4MWI4NzU2N2ZlYzM4N2Y5NWZhMmNm
NmExOTAzYmNjZTIwZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRQb2xpY3lEZWNpc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwCkBAIC0yMCw4ICsyMCwxMSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFBvbGljeURlY2lzaW9uLmgiCiAK
KyNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRQb2xpY3lEZWNpc2lvblByaXZhdGUu
aCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJzaXRlUG9saWNpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAKQEAgLTg0LDYgKzg3LDM0IEBAIHZv
aWQgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UoV2ViS2l0UG9saWN5RGVjaXNpb24qIGRlY2lz
aW9uKQogICAgIGxpc3RlbmVyLT51c2UoKTsKIH0KIAorLyoqCisgKiB3ZWJraXRfcG9saWN5X2Rl
Y2lzaW9uX3VzZV93aXRoX3BvbGljaWVzOgorICogQGRlY2lzaW9uOiBhICNXZWJLaXRQb2xpY3lE
ZWNpc2lvbgorICogQHBvbGljaWVzOiBhICNXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAqCisgKiBB
Y2NlcHQgdGhlIG5hdmlnYXRpb24gYWN0aW9uIHdoaWNoIHRyaWdnZXJlZCB0aGlzIGRlY2lzaW9u
LCBhbmQKKyAqIGNvbnRpbnVlIHdpdGggQHBvbGljaWVzIGFmZmVjdGluZyBhbGwgc3Vic2VxdWVu
dCBsb2FkcyBvZiByZXNvdXJjZXMKKyAqIGluIHRoZSBvcmlnaW4gYXNzb2NpYXRlZCB3aXRoIHRo
ZSBhY2NlcHRlZCBuYXZpZ2F0aW9uIGFjdGlvbi4KKyAqCisgKiBGb3IgZXhhbXBsZSwgYSBuYXZp
Z2F0aW9uIGRlY2lzaW9uIHRvIGEgdmlkZW8gc2hhcmluZyB3ZWJzaXRlIG1heQorICogYmUgYWNj
ZXB0ZWQgdW5kZXIgdGhlIHByaXZpc28gbm8gbW92aWVzIGFyZSBhbGxvd2VkIHRvIGF1dG9wbGF5
LiBUaGUKKyAqIGF1dG9wbGF5IHBvbGljeSBpbiB0aGlzIGNhc2Ugd291bGQgYmUgc2V0IGluIHRo
ZSBAcG9saWNpZXMuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwordm9pZCB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX3VzZV93aXRoX3BvbGljaWVzKFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lv
biwgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTKHBvbGljaWVzKSk7CisKKyAgICBpZiAo
IWRlY2lzaW9uLT5wcml2LT5saXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBs
aXN0ZW5lciA9IHN0ZDo6ZXhjaGFuZ2UoZGVjaXNpb24tPnByaXYtPmxpc3RlbmVyLCBudWxscHRy
KTsKKworICAgIGxpc3RlbmVyLT51c2Uod2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0V2Vic2l0ZVBv
bGljaWVzKHBvbGljaWVzKSk7Cit9CisKIC8qKgogICogd2Via2l0X3BvbGljeV9kZWNpc2lvbl9p
Z25vcmU6CiAgKiBAZGVjaXNpb246IGEgI1dlYktpdFBvbGljeURlY2lzaW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmlu
ZGV4IDA0MWJmYjU0NWM2YWY2MjIwYTgyNjZkMzU2YWMxOWQ5MDc5MWNiODMuLmM0YzdkMGY2YzEy
NjFiNTFkMDIwNzFhNjUyYWEwOTNkMWFhM2I5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC01Myw2ICs1Myw3
IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhTWFuYWdlclBy
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgpAQCAtMTg5Nyw3
ICsxODk4LDcgQEAgV2ViUHJvY2Vzc1Bvb2wmIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9v
bChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIHJldHVybiAqY29udGV4dC0+cHJpdi0+
cHJvY2Vzc1Bvb2w7CiB9CiAKLXZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJW
aWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3
KiByZWxhdGVkVmlldykKK3ZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3KiBy
ZWxhdGVkVmlldywgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBkZWZhdWx0V2Vic2l0ZVBvbGljaWVz
KQogewogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9u
OjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woY29udGV4
dC0+cHJpdi0+cHJvY2Vzc1Bvb2wuZ2V0KCkpOwpAQCAtMTkxMCw2ICsxOTExLDcgQEAgdm9pZCB3
ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgV2ViS2l0V2ViVmkKICAgICBpZiAoIW1hbmFnZXIpCiAgICAgICAgIG1hbmFnZXIgPSBj
b250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCk7CiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnNldFdlYnNpdGVEYXRhU3RvcmUoJndlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERh
dGFTdG9yZShtYW5hZ2VyKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldERlZmF1bHRXZWJz
aXRlUG9saWNpZXMod2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0V2Vic2l0ZVBvbGljaWVzKGRlZmF1
bHRXZWJzaXRlUG9saWNpZXMpKTsKICAgICB3ZWJraXRXZWJWaWV3Q3JlYXRlUGFnZSh3ZWJWaWV3
LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBhdXRvJiBwYWdlID0gd2Via2l0
V2ViVmlld0dldFBhZ2Uod2ViVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAppbmRleCBkODU2OWM4
NTliYWJmZTExNjljNjgyZWI2ODYzNjZlM2QwNjliOWFkLi43OGQxNTc4Zjk0NzkzZTllNTlhM2Q0
ZDJiMzNlNzllYTg1MzBmYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YktpdFdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIApAQCAtMzYsNyArMzcsNyBAQCBXZWJL
aXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoV2ViS2l0OjpE
b3dubG9hZFByb3h5Kik7CiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dFN0YXJ0RG93
bmxvYWQoV2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqIHVyaSwgV2ViS2l0OjpXZWJQYWdl
UHJveHkqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKFdlYktpdDo6RG93
bmxvYWRQcm94eSopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0RG93bmxvYWRTdGFydGVkKFdlYktp
dFdlYkNvbnRleHQqLCBXZWJLaXREb3dubG9hZCopOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3Jl
YXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdlYkNv
bnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2ViVmll
dyosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJz
aXRlUG9saWNpZXMqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95ZWQoV2Vi
S2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqKTsKIFdlYktpdFdlYlZpZXcqIHdlYmtpdFdl
YkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQ
YWdlUHJveHkqKTsKIEdWYXJpYW50KiB3ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6ZVdlYkV4dGVu
c2lvbnMoV2ViS2l0V2ViQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA1MGRmM2Y0NDhhN2QzOGUzMjgyZTY2
MjgyNDkwZjE3MGZlZWJhYWVkLi43Yjg3YzQzNjQ3NTkyYzIxMzZjZWI4ZjIxYWI1MTUyYjJjZWY5
ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZVByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdpbmRvd1Byb3Bl
cnRpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpAQCAtMjAxLDcgKzIwMiw4IEBAIGVudW0gewogICAg
IFBST1BfQVVUT01BVElPTl9QUkVTRU5UQVRJT05fVFlQRSwKICAgICBQUk9QX0VESVRBQkxFLAog
ICAgIFBST1BfUEFHRV9JRCwKLSAgICBQUk9QX0lTX01VVEVECisgICAgUFJPUF9JU19NVVRFRCwK
KyAgICBQUk9QX1dFQlNJVEVfUE9MSUNJRVMKIH07CiAKIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRf
dCwgR1JlZlB0cjxXZWJLaXRXZWJSZXNvdXJjZT4gPiBMb2FkaW5nUmVzb3VyY2VzTWFwOwpAQCAt
MzAzLDYgKzMwNSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIEdSZWZQ
dHI8V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0PiBhdXRoZW50aWNhdGlvblJlcXVlc3Q7CiAK
ICAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5hZ2Vy
OworICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZVBvbGljaWVzPiB3ZWJzaXRlUG9saWNpZXM7CiB9
OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC03NTYs
NyArNzU5LDEwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgICAgIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29s
KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwgd2Via2l0V2ViQ29udGV4dEdldFByb2Nl
c3NQb29sKHByaXYtPmNvbnRleHQuZ2V0KCkpKTsKICAgICB9CiAKLSAgICB3ZWJraXRXZWJDb250
ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dC5nZXQoKSwgd2ViVmlldywgcHJp
di0+dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBwcml2LT5yZWxhdGVkVmlldyk7CisgICAgaWYg
KCFwcml2LT53ZWJzaXRlUG9saWNpZXMpCisgICAgICAgIHByaXYtPndlYnNpdGVQb2xpY2llcyA9
IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcoKSk7CisKKyAgICB3ZWJraXRX
ZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dC5nZXQoKSwgd2ViVmll
dywgcHJpdi0+dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBwcml2LT5yZWxhdGVkVmlldywgcHJp
di0+d2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKIAogICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IG1h
a2VVbmlxdWU8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKICAgICBnZXRQYWdlKHdl
YlZpZXcpLnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqcHJpdi0+bG9hZE9ic2VydmVyKTsK
QEAgLTgzOSw2ICs4NDUsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZQogICAgIGNhc2UgUFJP
UF9JU19NVVRFRDoKICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9pc19tdXRlZCh3ZWJWaWV3
LCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9XRUJTSVRFX1BPTElDSUVTOgorICAgICAgICB3ZWJWaWV3LT5wcml2LT53ZWJzaXRlUG9s
aWNpZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlUG9saWNpZXMqPihnX3ZhbHVlX2dldF9v
YmplY3QodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMp
OwogICAgIH0KQEAgLTkwNCw2ICs5MTMsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0
UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAg
IGNhc2UgUFJPUF9JU19NVVRFRDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwg
d2Via2l0X3dlYl92aWV3X2dldF9pc19tdXRlZCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9XRUJTSVRFX1BPTElDSUVTOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmpl
Y3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSk7
CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0x
MjkxLDYgKzEzMDMsMjMgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQo
V2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICBGQUxTRSwKICAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKIAorICAgIC8qKgorICAgICAqIFdl
YktpdFdlYlZpZXc6d2Vic2l0ZS1wb2xpY2llczoKKyAgICAgKgorICAgICAqIFRoZSAjV2ViS2l0
V2Vic2l0ZVBvbGljaWVzIGZvciB0aGUgdmlldy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjMw
CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAg
Z09iamVjdENsYXNzLAorICAgICAgICBQUk9QX1dFQlNJVEVfUE9MSUNJRVMsCisgICAgICAgIGdf
cGFyYW1fc3BlY19vYmplY3QoCisgICAgICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsCisgICAg
ICAgICAgICBfKCJEZWZhdWx0IFdlYnNpdGUgUG9saWNpZXMiKSwKKyAgICAgICAgICAgIF8oIlRo
ZSBkZWZhdWx0IHBvbGljeSBvYmplY3QgZm9yIHNpdGVzIGxvYWRlZCBpbiB0aGlzIHZpZXciKSwK
KyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsCisgICAgICAgICAgICBz
dGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1f
Q09OU1RSVUNUX09OTFkpKSk7CisKICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3Ojpsb2Fk
LWNoYW5nZWQ6CiAgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2gg
dGhlIHNpZ25hbCBpcyBlbWl0dGVkCkBAIC00NjM0LDMgKzQ2NjMsMjUgQEAgV2ViS2l0SW5wdXRN
ZXRob2RDb250ZXh0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0KFdl
YktpdFdlYlZpZXcKICNlbmRpZgogCiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF93
ZWJzaXRlX3BvbGljaWVzOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICog
R2V0cyB0aGUgZGVmYXVsdCB3ZWJzaXRlIHBvbGljaWVzIHNldCBvbiBjb25zdHJ1Y3Rpb24gaW4g
dGhlCisgKiBAd2ViX3ZpZXcuIFRoZXNlIGNhbiBiZSBvdmVycmlkZGVuIG9uIGEgcGVyLW9yaWdp
biBiYXNpcyB2aWEgdGhlCisgKiAjV2ViS2l0V2ViVmlldzo6ZGVjaWRlLXBvbGljeSBzaWduYWwg
aGFuZGxlci4KKyAqCisgKiBTZWUgYWxzbyB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZV93aXRo
X3BvbGljaWVzKCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgZGVmYXVs
dCAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKiAgICAgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3
LgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK1dlYktpdFdlYnNpdGVQb2xpY2llcyogd2Via2l0
X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBu
dWxscHRyKTsKKworICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT53ZWJzaXRlUG9saWNpZXMuZ2V0
KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlUG9saWNpZXMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2Vic2l0ZVBvbGljaWVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWNmNTg5ZGRlMTQyZDg0ZDRh
YWRjNTYxYWQ5ZTBiMmMzZTYyZTM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmNwcApAQCAtMCwwICsxLDIz
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llcy5oIgorCisjaW5jbHVkZSAi
QVBJV2Vic2l0ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAiV2ViS2l0RW51bVR5cGVzLmgiCisjaW5j
bHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CisjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAqIEBTaG9ydF9k
ZXNjcmlwdGlvbjogVmlldyBzcGVjaWZpYyB3ZWJzaXRlIHBvbGljaWVzCisgKiBAVGl0bGU6IFdl
YktpdFdlYnNpdGVQb2xpY2llcworICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldworICoKKyAq
IFdlYktpdFdlYnNpdGVQb2xpY2llcyBhbGxvd3MgeW91IHRvIGNvbmZpZ3VyZSBwZXItcGFnZSBw
b2xpY2llcywKKyAqIGN1cnJlbnRseSBvbmx5IGF1dG9wbGF5IHBvbGljaWVzIGFyZSBzdXBwb3J0
ZWQuCisgKgorICogU2luY2U6IDIuMzAKKyAqLworCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
CitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX0FVVE9QTEFZX1BPTElDWQorfTsKKwor
c3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlIHsKKyAgICBfV2ViS2l0V2Vic2l0
ZVBvbGljaWVzUHJpdmF0ZSgpCisgICAgICAgIDogd2Vic2l0ZVBvbGljaWVzKEFQSTo6V2Vic2l0
ZVBvbGljaWVzOjpjcmVhdGUoKSkKKyAgICB7CisgICAgfQorICAgIFJlZlB0cjxBUEk6OldlYnNp
dGVQb2xpY2llcz4gd2Vic2l0ZVBvbGljaWVzOworfTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdl
YktpdFdlYnNpdGVQb2xpY2llcywgd2Via2l0X3dlYnNpdGVfcG9saWNpZXMsIEdfVFlQRV9PQkpF
Q1QpCisKK0FQSTo6V2Vic2l0ZVBvbGljaWVzJiB3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRXZWJz
aXRlUG9saWNpZXMoV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAgICByZXR1
cm4gKnBvbGljaWVzLT5wcml2LT53ZWJzaXRlUG9saWNpZXMuZ2V0KCk7Cit9CisKK1dlYnNpdGVQ
b2xpY2llc0RhdGEgd2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UG9saWNpZXNEYXRhKFdlYktpdFdl
YnNpdGVQb2xpY2llcyogcG9saWNpZXMpCit7CisgICAgV2Vic2l0ZVBvbGljaWVzRGF0YSBwb2xp
Y2llc0RhdGE7CisKKyAgICBzd2l0Y2ggKHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRv
cGxheV9wb2xpY3kocG9saWNpZXMpKSB7CisgICAgY2FzZSBXRUJLSVRfQVVUT1BMQVlfQUxMT1c6
CisgICAgICAgIHBvbGljaWVzRGF0YS5hdXRvcGxheVBvbGljeSA9IFdlYnNpdGVBdXRvcGxheVBv
bGljeTo6QWxsb3c7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0FVVE9QTEFZX0FM
TE9XX1dJVEhPVVRfU09VTkQ6CisgICAgICAgIHBvbGljaWVzRGF0YS5hdXRvcGxheVBvbGljeSA9
IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQ7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgV0VCS0lUX0FVVE9QTEFZX0RFTlk6CisgICAgICAgIHBvbGljaWVzRGF0YS5h
dXRvcGxheVBvbGljeSA9IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVueTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcG9saWNpZXNEYXRhLmF1dG9wbGF5UG9saWN5ID0g
V2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZWZhdWx0OworICAgIH0KKworICAgIHJldHVybiBwb2xp
Y2llc0RhdGE7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcyA9
IFdFQktJVF9XRUJTSVRFX1BPTElDSUVTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJRCkg
eworICAgIGNhc2UgUFJPUF9BVVRPUExBWV9QT0xJQ1k6CisgICAgICAgIGdfdmFsdWVfc2V0X2Vu
dW0odmFsdWUsIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRvcGxheV9wb2xpY3kocG9s
aWNpZXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOworICAg
IH0KK30KKwordm9pZCB3ZWJraXRXZWJzaXRlUG9saWNpZXNTZXRBdXRvcGxheVBvbGljeShXZWJL
aXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBXZWJLaXRBdXRvcGxheVBvbGljeSBwb2xpY3kp
Cit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFUyhwb2xp
Y2llcykpOworCisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIFdFQktJVF9BVVRPUExB
WV9BTExPVzoKKyAgICAgICAgcG9saWNpZXMtPnByaXYtPndlYnNpdGVQb2xpY2llcy0+c2V0QXV0
b3BsYXlQb2xpY3koV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvdyk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ6CisgICAgICAg
IHBvbGljaWVzLT5wcml2LT53ZWJzaXRlUG9saWNpZXMtPnNldEF1dG9wbGF5UG9saWN5KFdlYnNp
dGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdFQktJVF9BVVRPUExBWV9ERU5ZOgorICAgICAgICBwb2xpY2llcy0+cHJpdi0+d2Vi
c2l0ZVBvbGljaWVzLT5zZXRBdXRvcGxheVBvbGljeShXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRl
bnkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYnNp
dGVQb2xpY2llc1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25z
dCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0V2Vi
c2l0ZVBvbGljaWVzKiBwb2xpY2llcyA9IFdFQktJVF9XRUJTSVRFX1BPTElDSUVTKG9iamVjdCk7
CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9BVVRPUExBWV9QT0xJQ1k6
CisgICAgICAgIHdlYmtpdFdlYnNpdGVQb2xpY2llc1NldEF1dG9wbGF5UG9saWN5KHBvbGljaWVz
LCBzdGF0aWNfY2FzdDxXZWJLaXRBdXRvcGxheVBvbGljeT4oZ192YWx1ZV9nZXRfZW51bSh2YWx1
ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FS
Tl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOworICAgIH0K
K30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfY2xhc3NfaW5pdChXZWJL
aXRXZWJzaXRlUG9saWNpZXNDbGFzcyogZmluZENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyog
Z09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoZmluZENsYXNzKTsKKworICAgIGdPYmplY3RD
bGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UHJvcGVydHk7Cisg
ICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRXZWJzaXRlUG9saWNpZXNTZXRQ
cm9wZXJ0eTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYnNpdGVQb2xpY2llczphdXRvcGxh
eToKKyAgICAgKgorICAgICAqIFRoZSAjV2ViS2l0QXV0b3BsYXlQb2xpY3kgb2YgI1dlYktpdFdl
YnNpdGVQb2xpY2llcy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjMwCisgICAgICovCisgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAor
ICAgICAgICBQUk9QX0FVVE9QTEFZX1BPTElDWSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX2VudW0o
CisgICAgICAgICAgICAiYXV0b3BsYXkiLAorICAgICAgICAgICAgIkF1dG9wbGF5IFBvbGljeSIs
CisgICAgICAgICAgICBfKCJUaGUgcG9saWN5IHRvIHVzZSB3aGVuIGRlY2lkaW5nIHRvIGF1dG9w
bGF5IG1lZGlhIiksCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9BVVRPUExBWV9QT0xJQ1ksCisg
ICAgICAgICAgICBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCwKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19Q
QVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vic2l0ZV9wb2xp
Y2llc19uZXc6CisgKgorICogQ3JlYXRlIGEgbmV3ICNXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAq
CisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IHRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRX
ZWJzaXRlUG9saWNpZXMKKyAqCisgKiBTaW5jZTogMi4zMAorICovCitXZWJLaXRXZWJzaXRlUG9s
aWNpZXMqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ldyh2b2lkKQoreworICAgIHJldHVybiBX
RUJLSVRfV0VCU0lURV9QT0xJQ0lFUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCU0lURV9Q
T0xJQ0lFUywgbnVsbHB0cikpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVz
X25ld193aXRoX3BvbGljaWVzOgorICogQGZpcnN0X3BvbGljeV9uYW1lOiBuYW1lIG9mIHRoZSBm
aXJzdCBwb2xpY3kgdG8gc2V0CisgKiBALi4uOiB2YWx1ZSBvZiBmaXJzdCBwb2xpY3ksIGZvbGxv
d2VkIGJ5IG1vcmUgcG9saWNpZXMsICVOVUxMLXRlcm1pbmF0ZWQKKyAqCisgKiBDcmVhdGUgYSBu
ZXcgI1dlYktpdFdlYnNpdGVQb2xpY2llcyB3aXRoIHBvbGljaWVzIGdpdmVuIGFzIHZhcmlhZGlj
CisgKiBhcmd1bWVudHMuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiB0aGUgbmV3
bHkgY3JlYXRlZCAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKgorICogPGluZm9ybWFsZXhhbXBs
ZT48cHJvZ3JhbWxpc3Rpbmc+CisgKiBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKmRlZmF1bHRfd2Vi
c2l0ZV9wb2xpY2llcyA9IHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVz
KAorICogICAgICJhdXRvcGxheSIsIFdFQktJVF9BVVRPUExBWV9ERU5ZLAorICogICAgIE5VTEwp
OworICogLi4uCisgKiBXZWJLaXRXZWJWaWV3ICp2aWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKKyAqICAgICAid2ViLWNvbnRleHQiLCBjdHgs
CisgKiAgICAgInNldHRpbmdzIiwgc2V0dGluZ3MsCisgKiAgICAgInVzZXItY29udGVudC1tYW5h
Z2VyIiwgY29udGVudF9tYW5hZ2VyLAorICogICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgZGVmYXVs
dF93ZWJzaXRlX3BvbGljaWVzLAorICogICAgIE5VTEwpKTsKKyAqIC4uLgorICogPC9wcm9ncmFt
bGlzdGluZz48L2luZm9ybWFsZXhhbXBsZT4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCitXZWJL
aXRXZWJzaXRlUG9saWNpZXMqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3BvbGlj
aWVzKGNvbnN0IGdjaGFyKiBmaXJzdFBvbGljeU5hbWUsIC4uLikKK3sKKyAgICB2YV9saXN0IGFy
Z3M7CisgICAgdmFfc3RhcnQoYXJncywgZmlyc3RQb2xpY3lOYW1lKTsKKyAgICBXZWJLaXRXZWJz
aXRlUG9saWNpZXMqIHBvbGljaWVzID0gV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMoZ19vYmplY3Rf
bmV3X3ZhbGlzdChXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLCBmaXJzdFBvbGljeU5hbWUs
IGFyZ3MpKTsKKyAgICB2YV9lbmQoYXJncyk7CisKKyAgICByZXR1cm4gcG9saWNpZXM7Cit9CisK
Ky8qKgorICogd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeToKKyAq
IEBwb2xpY2llczogYSAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKgorICogR2V0IHRoZSAjV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzOmF1dG9wbGF5IHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6ICNX
ZWJLaXRBdXRvcGxheVBvbGljeQorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK1dlYktpdEF1dG9w
bGF5UG9saWN5IHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRvcGxheV9wb2xpY3koV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFUyhwb2xpY2llcyksIFdFQktJVF9BVVRPUExBWV9B
TExPV19XSVRIT1VUX1NPVU5EKTsKKworICAgIGF1dG8gYXBpQXV0b3BsYXlQb2xpY3lUeXBlID0g
cG9saWNpZXMtPnByaXYtPndlYnNpdGVQb2xpY2llcy0+YXV0b3BsYXlQb2xpY3koKTsKKyAgICBz
d2l0Y2ggKGFwaUF1dG9wbGF5UG9saWN5VHlwZSkgeworICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5
UG9saWN5OjpBbGxvdzoKKyAgICAgICAgcmV0dXJuIFdFQktJVF9BVVRPUExBWV9BTExPVzsKKyAg
ICBjYXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQ6CisgICAgICAg
IHJldHVybiBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORDsKKyAgICBjYXNlIFdl
YnNpdGVBdXRvcGxheVBvbGljeTo6RGVueToKKyAgICAgICAgcmV0dXJuIFdFQktJVF9BVVRPUExB
WV9ERU5ZOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBXRUJLSVRfQVVUT1BMQVlfQUxM
T1dfV0lUSE9VVF9TT1VORDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40OWFjYWI2YjVhYmIxMjUxZjNmMjg5YjhjMzZmZWIyMWNmYmMxYzM2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElXZWJz
aXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNs
dWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCisKK0FQSTo6V2Vic2l0ZVBvbGljaWVzKiB3ZWJr
aXRXZWJzaXRlUG9saWNpZXNHZXRXZWJzaXRlUG9saWNpZXMoV2ViS2l0V2Vic2l0ZVBvbGljaWVz
Kik7CitXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGEgd2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0
UG9saWNpZXNEYXRhKFdlYktpdFdlYnNpdGVQb2xpY2llcyopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oCmluZGV4IGYx
OTJhMWQzNzlkYzY0MjFkZjc2MDQ3NGQyMDY0OWU0NWZmMGM4Y2IuLjBmZjg5ZTQ5Yzc2M2QzNmY1
ZTRhZTNiZDFjMTE3ZDYzMWMxMzJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAK
IAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZp
bmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaD4KIAogR19C
RUdJTl9ERUNMUwogCkBAIC02Miw2ICs2MywxMCBAQCB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2dl
dF90eXBlICh2b2lkKTsKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3BvbGljeV9kZWNpc2lvbl91
c2UgICAgICAoV2ViS2l0UG9saWN5RGVjaXNpb24gKmRlY2lzaW9uKTsKIAorV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZV93aXRoX3BvbGljaWVzICAoV2ViS2l0UG9s
aWN5RGVjaXNpb24gKmRlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqcG9saWNpZXMpOworCiBXRUJLSVRfQVBJ
IHZvaWQKIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3JlICAgKFdlYktpdFBvbGljeURlY2lz
aW9uICpkZWNpc2lvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmgKaW5kZXggMTMxMzYwYzNkZDBlYmZjYTExYzZlNzE0ODZlNjExNmQ3ZGYx
MGJjZi4uYWM1MTY4M2I2NzVkNWE5OGI2NjU1MzIzZjlhNTFjNDllNzYyM2ExZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTU0LDYg
KzU0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFdlYkluc3BlY3Rvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
V2ViUmVzb3VyY2UuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYnNpdGVQb2xpY2llcy5o
PgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld0Jhc2UuaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dFdpbmRvd1Byb3BlcnRpZXMuaD4KQEAgLTU4NCw2ICs1ODUsMTEgQEAgd2Via2l0X3dlYl92aWV3
X3NldF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldwogV0VC
S0lUX0FQSSBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgKgogd2Via2l0X3dlYl92aWV3X2dldF9p
bnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOwogCisKK1dFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKK3dl
YmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKworCiBHX0VORF9ERUNMUwogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdHdGsuY3BwCmluZGV4IDUyZDVmM2U1ZmE4Y2MzN2QxOGY3ZjZmZmM3NzM0MGE5NDRiMzIyN2Yu
LjliOTkyNzViMjRlZmM0YWNjN2FmMDE1NTBjMWVmM2Y3NzhlMDRlMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcApAQCAt
MzM3LDggKzMzNyw4IEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRl
eHQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKICAqIFlvdSBjYW4gYWxzbyB1c2UgdGhpcyBt
ZXRob2QgdG8gaW1wbGVtZW50IG90aGVyIHByb2Nlc3MgbW9kZWxzIGJhc2VkIG9uICVXRUJLSVRf
UFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTLAogICogbGlrZSBmb3Ig
ZXhhbXBsZSwgc2hhcmluZyB0aGUgc2FtZSB3ZWIgcHJvY2VzcyBmb3IgYWxsIHRoZSB2aWV3cyBp
biB0aGUgc2FtZSBzZWN1cml0eSBkb21haW4uCiAgKgotICogVGhlIG5ld2x5IGNyZWF0ZWQgI1dl
YktpdFdlYlZpZXcgd2lsbCBhbHNvIGhhdmUgdGhlIHNhbWUgI1dlYktpdFVzZXJDb250ZW50TWFu
YWdlcgotICogYW5kICNXZWJLaXRTZXR0aW5ncyBhcyBAd2ViX3ZpZXcuCisgKiBUaGUgbmV3bHkg
Y3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWxsIGFsc28gaGF2ZSB0aGUgc2FtZSAjV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyLAorICogI1dlYktpdFNldHRpbmdzLCBhbmQgI1dlYktpdFdlYnNpdGVQ
b2xpY2llcyBhcyBAd2ViX3ZpZXcuCiAgKgogICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBU
aGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWRnZXQKICAqCkBAIC0zNTIsNiArMzUy
LDcgQEAgR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdl
YmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAg
ICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyksCiAgICAg
ICAgICJyZWxhdGVkLXZpZXciLCB3ZWJWaWV3LAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIs
IHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAg
bnVsbHB0cikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDA5NDdmN2UwNjExNzc2
ZjViYTI5NjdhMGQ2OWIxMjFiMDc4NjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaApAQCAtMCwwICsxLDg3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQo
X19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisj
ZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHku
IgorI2VuZGlmCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUg
V0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUyAgICAgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9w
b2xpY2llc19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFUyhvYmop
ICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQ
RV9XRUJTSVRFX1BPTElDSUVTLCBXZWJLaXRXZWJzaXRlUG9saWNpZXMpKQorI2RlZmluZSBXRUJL
SVRfSVNfV0VCU0lURV9QT0xJQ0lFUyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTKSkKKyNkZWZpbmUgV0VC
S0lUX1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
Q0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUywgV2ViS2l0V2Vic2l0
ZVBvbGljaWVzQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFU19DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9X
RUJTSVRFX1BPTElDSUVTKSkKKyNkZWZpbmUgV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NM
QVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVf
V0VCU0lURV9QT0xJQ0lFUywgV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MpKQorCit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGljaWVzICAgICAgICBXZWJLaXRXZWJzaXRlUG9saWNp
ZXM7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MgICBXZWJLaXRX
ZWJzaXRlUG9saWNpZXNDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNp
ZXNQcml2YXRlIFdlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0
V2Vic2l0ZVBvbGljaWVzIHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIFdlYktpdFdlYnNp
dGVQb2xpY2llc1ByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xp
Y2llc0NsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQx
KSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9p
ZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7Cit9OworCisvKioKKyAqIFdlYktpdEF1dG9w
bGF5UG9saWN5OgorICogQFdFQktJVF9BVVRPUExBWV9BTExPVzogRG8gbm90IHJlc3RyaWN0IGF1
dG9wbGF5LgorICogQFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EOiBBbGxvdyB2
aWRlb3MgdG8gYXV0b3BsYXkgaWYKKyAqICAgICB0aGV5IGhhdmUgbm8gYXVkaW8gdHJhY2ssIG9y
IGlmIHRoZWlyIGF1ZGlvIHRyYWNrIGlzIG11dGVkLgorICogQFdFQktJVF9BVVRPUExBWV9ERU5Z
OiBOZXZlciBhbGxvdyBhdXRvcGxheS4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNp
ZnkgYXV0b3BsYXkgcG9saWNpZXMuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwordHlwZWRlZiBl
bnVtIHsKKyAgICBXRUJLSVRfQVVUT1BMQVlfQUxMT1csCisgICAgV0VCS0lUX0FVVE9QTEFZX0FM
TE9XX1dJVEhPVVRfU09VTkQsCisgICAgV0VCS0lUX0FVVE9QTEFZX0RFTlkKK30gV2ViS2l0QXV0
b3BsYXlQb2xpY3k7CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVz
X2dldF90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRf
QVBJIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBX
ZWJLaXRXZWJzaXRlUG9saWNpZXMgKgord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhf
cG9saWNpZXMgICAgICAgICAgICAgICAgICAgICAoY29uc3QgZ2NoYXIgKmZpcnN0X3BvbGljeV9u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLi4uKTsKKworV0VCS0lUX0FQSSBXZWJLaXRBdXRvcGxheVBvbGljeQord2Vi
a2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeSAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2Vic2l0ZVBvbGljaWVzICpwb2xpY2llcyk7CisKK0dfRU5EX0RFQ0xTCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCA0ODJiMDZjZWNmYTE3YmJkMzk5Y2I4OGQ4
NGQxMWFkM2Q5NDVhZWEwLi44MDVlYTA3NjJmODEyOTRkMGQyOTQyNWI5MzdiNzQwZTRhOTI4ZGNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTE5OCw2ICsxOTgsNyBAQCBX
ZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudAogV2ViS2l0U25hcHNob3RPcHRpb25zCiBXZWJLaXRT
bmFwc2hvdFJlZ2lvbgogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uCitXZWJLaXRB
dXRvcGxheVBvbGljeQogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1hbmRzPgogV0VCS0lUX0VE
SVRJTkdfQ09NTUFORF9DVVQKQEAgLTI4OCw2ICsyODksNyBAQCB3ZWJraXRfd2ViX3ZpZXdfc2Vu
ZF9tZXNzYWdlX3RvX3BhZ2UKIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9m
aW5pc2gKIHdlYmtpdF93ZWJfdmlld19zZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKIHdlYmtpdF93
ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKK3dlYmtpdF93ZWJfdmlld19nZXRfd2Vi
c2l0ZV9wb2xpY2llcwogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdApAQCAtODQ3LDYgKzg0OSw3IEBAIFdlYktpdFBvbGljeURlY2lz
aW9uCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkCiB3ZWJraXRfcG9saWN5X2RlY2lz
aW9uX2lnbm9yZQogd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UKK3dlYmtpdF9wb2xpY3lfZGVj
aXNpb25fdXNlX3dpdGhfcG9saWNpZXMKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRQ
b2xpY3lEZWNpc2lvbkNsYXNzCkBAIC0xODQ2LDMgKzE4NDksMjYgQEAgV0VCS0lUX1VTRVJfTUVT
U0FHRV9HRVRfQ0xBU1MKIFdlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZQogd2Via2l0X3VzZXJfbWVz
c2FnZV9nZXRfdHlwZQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPldlYktpdFdlYnNp
dGVQb2xpY2llczwvRklMRT4KK1dlYktpdFdlYnNpdGVQb2xpY2llcword2Via2l0X3dlYnNpdGVf
cG9saWNpZXNfbmV3Cit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcwor
d2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeQorCis8U1VCU0VDVElP
TiBTdGFuZGFyZD4KK1dlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzCitXRUJLSVRfSVNfV0VCU0lU
RV9QT0xJQ0lFUworV0VCS0lUX0lTX1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1MKK1dFQktJVF9UWVBF
X1dFQlNJVEVfUE9MSUNJRVMKK1dFQktJVF9XRUJTSVRFX1BPTElDSUVTCitXRUJLSVRfV0VCU0lU
RV9QT0xJQ0lFU19DTEFTUworV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NMQVNTCisKKzxT
VUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlCit3ZWJraXRf
d2Vic2l0ZV9wb2xpY2llc19nZXRfdHlwZQorPC9TRUNUSU9OPgorCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9saWN5RGVjaXNpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9saWN5RGVjaXNpb24uaAppbmRl
eCBiZmZmZWQxYzc0YjE1NDg1NDIzMzNmZjFiY2IxNTM5NDY0NjE2YzA5Li5mZjAzYTBmNWI4ZThj
M2ZmOGYzYTA4YjI1NWE2MzRlNjIzMDAwZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFBvbGljeURlY2lzaW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oCkBAIC0yNiw2ICsyNiw3
IEBACiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZp
bmVzLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oPgogCiBHX0JFR0lO
X0RFQ0xTCiAKQEAgLTYyLDYgKzYzLDEwIEBAIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fZ2V0X3R5
cGUgKHZvaWQpOwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZSAg
ICAgIChXZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24pOwogCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhfcG9saWNpZXMgIChXZWJLaXRQb2xpY3lE
ZWNpc2lvbiAqZGVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICpwb2xpY2llcyk7CisKIFdFQktJVF9BUEkgdm9p
ZAogd2Via2l0X3BvbGljeV9kZWNpc2lvbl9pZ25vcmUgICAoV2ViS2l0UG9saWN5RGVjaXNpb24g
KmRlY2lzaW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFdlYlZpZXcuaAppbmRleCAyNjRmZTY4Y2YyZGY1MGNmYTU2YTlmNzIzNWM4Y2MxZDU1MDdkM2Vk
Li4yMzE0OWIwYmY3NGFkMGI2NjgzOTFmZjlkNmNmMWQ5OGZiYzE1OGE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAtNTMsNiArNTMs
NyBAQAogI2luY2x1ZGUgPHdwZS9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1ZGUgPHdwZS9X
ZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlJlc291cmNlLmg+Cisj
aW5jbHVkZSA8d3BlL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oPgogI2luY2x1ZGUgPHdwZS9XZWJL
aXRXZWJWaWV3QmFja2VuZC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0
YXRlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuaD4KQEAgLTU2MSw2
ICs1NjIsOSBAQCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lucHV0X21ldGhvZF9jb250ZXh0ICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3CiBXRUJLSVRfQVBJIFdlYktpdElucHV0TWV0aG9kQ29udGV4
dCAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0ICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSBX
ZWJLaXRXZWJzaXRlUG9saWNpZXMgKgord2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGlj
aWVzICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NzY2
NWY1NDNlNzg5MTI5NzVhMzQ3N2MzMTBmYzM3M2FhM2Y4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oCkBA
IC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
ZiAhZGVmaW5lZChfX1dFQktJVF9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJ
TEFUSU9OKQorI2Vycm9yICJPbmx5IDx3cGUvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGly
ZWN0bHkuIgorI2VuZGlmCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgor
I2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTICAgICAgICAgICAgKHdlYmtpdF93ZWJzaXRl
X3BvbGljaWVzX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJTSVRFX1BPTElDSUVTKG9i
aikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9U
WVBFX1dFQlNJVEVfUE9MSUNJRVMsIFdlYktpdFdlYnNpdGVQb2xpY2llcykpCisjZGVmaW5lIFdF
QktJVF9JU19XRUJTSVRFX1BPTElDSUVTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMpKQorI2RlZmluZSBX
RUJLSVRfV0VCU0lURV9QT0xJQ0lFU19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFT
U19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLCBXZWJLaXRXZWJz
aXRlUG9saWNpZXNDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTX0NM
QVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBF
X1dFQlNJVEVfUE9MSUNJRVMpKQorI2RlZmluZSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19HRVRf
Q0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQ
RV9XRUJTSVRFX1BPTElDSUVTLCBXZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcykpCisKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXMgICAgICAgIFdlYktpdFdlYnNpdGVQb2xp
Y2llczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcyAgIFdlYktp
dFdlYnNpdGVQb2xpY2llc0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVQb2xp
Y2llc1ByaXZhdGUgV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZTsKKworc3RydWN0IF9XZWJL
aXRXZWJzaXRlUG9saWNpZXMgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgV2ViS2l0V2Vi
c2l0ZVBvbGljaWVzUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2Vic2l0ZVBv
bGljaWVzQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisKKy8qKgorICogV2ViS2l0QXV0
b3BsYXlQb2xpY3k6CisgKiBAV0VCS0lUX0FVVE9QTEFZX0FMTE9XOiBEbyBub3QgcmVzdHJpY3Qg
YXV0b3BsYXkuCisgKiBAV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ6IEFsbG93
IHZpZGVvcyB0byBhdXRvcGxheSBpZgorICogICAgIHRoZXkgaGF2ZSBubyBhdWRpbyB0cmFjaywg
b3IgaWYgdGhlaXIgYXVkaW8gdHJhY2sgaXMgbXV0ZWQuCisgKiBAV0VCS0lUX0FVVE9QTEFZX0RF
Tlk6IE5ldmVyIGFsbG93IGF1dG9wbGF5LgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc3Bl
Y2lmeSBhdXRvcGxheSBwb2xpY2llcy4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit0eXBlZGVm
IGVudW0geworICAgIFdFQktJVF9BVVRPUExBWV9BTExPVywKKyAgICBXRUJLSVRfQVVUT1BMQVlf
QUxMT1dfV0lUSE9VVF9TT1VORCwKKyAgICBXRUJLSVRfQVVUT1BMQVlfREVOWQorfSBXZWJLaXRB
dXRvcGxheVBvbGljeTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYnNpdGVfcG9saWNp
ZXNfZ2V0X3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJ
VF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKK3dlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25l
dyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJ
IFdlYktpdFdlYnNpdGVQb2xpY2llcyAqCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0
aF9wb2xpY2llcyAgICAgICAgICAgICAgICAgICAgIChjb25zdCBnY2hhciAgKmZpcnN0X3BvbGlj
eV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLi4uKTsKKworV0VCS0lUX0FQSSBXZWJLaXRBdXRvcGxheVBvbGljeQor
d2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeSAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcyk7CisKK0dfRU5EX0RFQ0xTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1z
ZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEu
MC1zZWN0aW9ucy50eHQKaW5kZXggMDJmNDlhZGQwNTljMGQyODJlNzUxYTdlZTY5ODEwMjc3MTEy
MzgxZC4uNGJiNWRkYWQwYzY4NDM2MWJlZmQ3ZTI2NmZmYjhjOGZjZmI2MDAxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNl
Y3Rpb25zLnR4dApAQCAtMTcyLDYgKzE3Miw3IEBAIFdlYktpdFNhdmVNb2RlCiBXZWJLaXRJbnNl
Y3VyZUNvbnRlbnRFdmVudAogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uCiBXZWJL
aXRGcmFtZURpc3BsYXllZENhbGxiYWNrCitXZWJLaXRBdXRvcGxheVBvbGljeQogCiA8U1VCU0VD
VElPTiBFZGl0aW5nIENvbW1hbmRzPgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQKQEAgLTI2
MCw2ICsyNjEsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2UKIHdlYmtp
dF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19z
ZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9k
X2NvbnRleHQKK3dlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcwogCiA8U1VCU0VD
VElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApAQCAt
ODUxLDYgKzg1Myw3IEBAIFdlYktpdFBvbGljeURlY2lzaW9uCiB3ZWJraXRfcG9saWN5X2RlY2lz
aW9uX2Rvd25sb2FkCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2lnbm9yZQogd2Via2l0X3BvbGlj
eV9kZWNpc2lvbl91c2UKK3dlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhfcG9saWNpZXMK
IAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRQb2xpY3lEZWNpc2lvbkNsYXNzCkBAIC0x
NTQ1LDMgKzE1NDgsMjQgQEAgV0VCS0lUX1RZUEVfSU5QVVRfTUVUSE9EX1VOREVSTElORQogPEZJ
TEU+V2ViS2l0VVJJVXRpbGl0aWVzPC9GSUxFPgogd2Via2l0X3VyaV9mb3JfZGlzcGxheQogPC9T
RUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPldlYktpdFdlYnNpdGVQb2xpY2llczwvRklMRT4K
K1dlYktpdFdlYnNpdGVQb2xpY2llcword2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3Cit3ZWJr
aXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcword2Via2l0X3dlYnNpdGVfcG9s
aWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeQorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktp
dFdlYnNpdGVQb2xpY2llc0NsYXNzCitXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFUworV0VCS0lU
X0lTX1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1MKK1dFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMK
K1dFQktJVF9XRUJTSVRFX1BPTElDSUVTCitXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19DTEFTUwor
V0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+
CitXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19n
ZXRfdHlwZQorPC9TRUNUSU9OPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGE5ZjFmYmYzMWRkMzA2ZjlkOWViM2VkOTUzZTRiNmY0MTY1NWU5Y2Qu
LmRjODQ5Y2I3M2JjZTI4ZjM2ODNhNTVhNDZlZTEzY2VmYmQ1NGViM2EgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAy
MC0wNi0wOCAgQ2hhcmxpZSBUdXJuZXIgIDxjdHVybmVyQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS10gRGlzYWJsZSB2aWRlbyBhdXRvcGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSB2YXJpb3VzIGNhbGxzaXRlcyBmb3IgY29u
c3RydWN0aW5nIGEgdmlldyB0byB0YWtlIGludG8KKyAgICAgICAgYWNjb3VudCB0aGUgZGVmYXVs
dCBwb2xpY2llcy4gSSBjaG9zZSB0aGUgZGVmYXVsdCBhcyBhdXRvcGxheQorICAgICAgICBhbGxv
dyB3aXRob3V0IHNvdW5kLCB3aGljaCBpcyBpbiBrZWVwaW5nIHdpdGggV2ViQ29yZSdzIGNob2lj
ZS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAg
ICh3ZWJWaWV3RGVjaWRlUG9saWN5KToKKyAgICAgICAgKG5ld1RhYkNhbGxiYWNrKToKKyAgICAg
ICAgKG9wZW5Qcml2YXRlV2luZG93KToKKyAgICAgICAgKGJyb3dzZXJfd2luZG93X2dldF9vcl9j
cmVhdGVfd2ViX3ZpZXdfZm9yX2F1dG9tYXRpb24pOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3df
Y3JlYXRlX3dlYl92aWV3X2luX25ld190YWJfZm9yX2F1dG9tYXRpb24pOgorICAgICAgICAqIE1p
bmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93c2VyVGFiKToKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0UG9saWN5Q2xpZW50LmNwcDogQWRkCisgICAgICAgIGF1dG9wbGF5IHBvbGljeSB0ZXN0
cywgYW5kIHVzZSBtb2Rlcm4gY2xhc3MgaW5pdGlhbGl6ZXJzLgorICAgICAgICAodGVzdEF1dG9w
bGF5UG9saWN5KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisKIDIwMjAtMDYtMTIgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEs0XSBHZXQg
TWluaUJyb3dzZXIgcmVhZHkgZm9yIEdUSzQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRv
dy5jCmluZGV4IGJjY2VlY2UzM2FkMzY1YTg0MDc4NTc1OTQyMzYzMDg2ODNmZGYwMGIuLjhmYWE5
MjEzNjk5MTcxNjhkMWVjZjc1Njk5NThhNDA0MGY1ZGY0OWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJXaW5kb3cuYwpAQCAtNDQ2LDYgKzQ0Niw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJW
aWV3RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBvbGljeURlY2lz
aW9uCiAgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2Vi
VmlldyksCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19n
ZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVk
LWJ5LWF1dG9tYXRpb24iLCB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0
aW9uKHdlYlZpZXcpLAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdlYmtpdF93ZWJfdmll
d19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVMTCkpOwogICAgIGJy
b3dzZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7CiAgICAgd2Via2l0
X3dlYl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rp
b25fZ2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNjMxLDYgKzYzMiw3IEBAIHN0
YXRpYyB2b2lkIG5ld1RhYkNhbGxiYWNrKEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQg
KnBhcmFtZXRlciwgZ3BvaW50ZXIKICAgICAgICAgInNldHRpbmdzIiwgd2Via2l0X3dlYl92aWV3
X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSwKICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwg
d2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSwKICAgICAg
ICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdlYmtpdF93ZWJfdmlld19pc19jb250
cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCisgICAgICAgICJ3ZWJzaXRlLXBvbGljaWVz
Iiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcpLAogICAgICAg
ICBOVUxMKSkpOwogICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyh3aW5kb3ctPnVyaUVudHJ5KTsK
ICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShHVEtfTk9URUJPT0sod2luZG93LT5u
b3RlYm9vayksIC0xKTsKQEAgLTY1MSw2ICs2NTMsNyBAQCBzdGF0aWMgdm9pZCBvcGVuUHJpdmF0
ZVdpbmRvdyhHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2lu
dAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Vz
ZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtZXBoZW1lcmFsIiwgVFJV
RSwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdlYmtpdF93ZWJfdmll
d19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCisgICAgICAgICJ3ZWJzaXRl
LXBvbGljaWVzIiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZpZXcp
LAogICAgICAgICBOVUxMKSk7CiAgICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dp
bmRvd19uZXcoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aW5kb3ctPndlYkNvbnRleHQpOwogICAgIGd0
a193aW5kb3dfc2V0X2FwcGxpY2F0aW9uKEdUS19XSU5ET1cobmV3V2luZG93KSwgZ3RrX3dpbmRv
d19nZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpKSk7CkBAIC0xNDUxLDYgKzE0NTQs
NyBAQCBXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3
X2Zvcl9hdXRvbWF0aW9uKEJyb3dzZXJXaW5kbwogICAgICAgICAic2V0dGluZ3MiLCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNlci1jb250ZW50LW1h
bmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcp
LAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgVFJVRSwKKyAgICAgICAg
IndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMo
d2ViVmlldyksCiAgICAgICAgIE5VTEwpKTsKICAgICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJy
b3dzZXJfd2luZG93X25ldyhHVEtfV0lORE9XKHdpbmRvdyksIHdpbmRvdy0+d2ViQ29udGV4dCk7
CiAgICAgZ3RrX3dpbmRvd19zZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyhuZXdXaW5kb3cpLCBn
dGtfd2luZG93X2dldF9hcHBsaWNhdGlvbihHVEtfV0lORE9XKHdpbmRvdykpKTsKQEAgLTE0NzIs
NiArMTQ3Niw3IEBAIFdlYktpdFdlYlZpZXcgKmJyb3dzZXJfd2luZG93X2NyZWF0ZV93ZWJfdmll
d19pbl9uZXdfdGFiX2Zvcl9hdXRvbWF0aW9uKEJyb3dzZXJXCiAgICAgICAgICJ1c2VyLWNvbnRl
bnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2Vi
VmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBUUlVFLAogICAg
ICAgICAiYXV0b21hdGlvbi1wcmVzZW50YXRpb24tdHlwZSIsIFdFQktJVF9BVVRPTUFUSU9OX0JS
T1dTSU5HX0NPTlRFWFRfUFJFU0VOVEFUSU9OX1RBQiwKKyAgICAgICAgIndlYnNpdGUtcG9saWNp
ZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2ViVmlldyksCiAgICAg
ICAgIE5VTEwpKTsKICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRfdmlldyh3aW5kb3csIG5ld1dl
YlZpZXcpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaShuZXdXZWJWaWV3LCAiYWJvdXQ6
YmxhbmsiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4IDBiMjM2NjIwZDljNzBiNGI5NGUyODBjYTUw
ODExM2M4NTdkNzU4MzIuLjg3ZmE3ZDIzMGNkOGFhMjNjZGRiZGIxYWVmMGZlM2Q1ODQ1OWJlYzIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL21haW4uYwpAQCAtNDAsNiArNDAsNyBAQAogCiBzdGF0aWMgY29uc3QgZ2No
YXIgKip1cmlBcmd1bWVudHMgPSBOVUxMOwogc3RhdGljIGNvbnN0IGdjaGFyICoqaWdub3JlSG9z
dHMgPSBOVUxMOworc3RhdGljIFdlYktpdEF1dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9saWN5ID0g
V0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ7CiBzdGF0aWMgR2RrUkdCQSAqYmFj
a2dyb3VuZENvbG9yOwogc3RhdGljIGdib29sZWFuIGVkaXRvck1vZGU7CiBzdGF0aWMgY29uc3Qg
Y2hhciAqc2Vzc2lvbkZpbGU7CkBAIC03NiwxMyArNzcsMTQgQEAgc3RhdGljIGdjaGFyICphcmd1
bWVudFRvVVJMKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogICAgIHJldHVybiBmaWxlVVJMOwogfQog
Ci1zdGF0aWMgV2ViS2l0V2ViVmlldyAqY3JlYXRlQnJvd3NlclRhYihCcm93c2VyV2luZG93ICp3
aW5kb3csIFdlYktpdFNldHRpbmdzICp3ZWJraXRTZXR0aW5ncywgV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyICp1c2VyQ29udGVudE1hbmFnZXIpCitzdGF0aWMgV2ViS2l0V2ViVmlldyAqY3JlYXRl
QnJvd3NlclRhYihCcm93c2VyV2luZG93ICp3aW5kb3csIFdlYktpdFNldHRpbmdzICp3ZWJraXRT
ZXR0aW5ncywgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICp1c2VyQ29udGVudE1hbmFnZXIsIFdl
YktpdFdlYnNpdGVQb2xpY2llcyAqZGVmYXVsdFdlYnNpdGVQb2xpY2llcykKIHsKICAgICBXZWJL
aXRXZWJWaWV3ICp3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfVklFVywKICAgICAgICAgIndlYi1jb250ZXh0IiwgYnJvd3Nlcl93aW5kb3dfZ2V0
X3dlYl9jb250ZXh0KHdpbmRvdyksCiAgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdFNldHRpbmdz
LAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29udGVudE1hbmFnZXIsCiAg
ICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBhdXRvbWF0aW9uTW9kZSwKKyAg
ICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCBkZWZhdWx0V2Vic2l0ZVBvbGljaWVzLAogICAgICAg
ICBOVUxMKSk7CiAKICAgICBpZiAoZWRpdG9yTW9kZSkKQEAgLTkyLDYgKzk0LDI3IEBAIHN0YXRp
YyBXZWJLaXRXZWJWaWV3ICpjcmVhdGVCcm93c2VyVGFiKEJyb3dzZXJXaW5kb3cgKndpbmRvdywg
V2ViS2l0U2V0dGluZ3MgKndlCiAgICAgcmV0dXJuIHdlYlZpZXc7CiB9CiAKK3N0YXRpYyBnYm9v
bGVhbiBwYXJzZUF1dG9wbGF5UG9saWN5KGNvbnN0IGNoYXIgKm9wdGlvbk5hbWUsIGNvbnN0IGNo
YXIgKnZhbHVlLCBncG9pbnRlciBkYXRhLCBHRXJyb3IgKiplcnJvcikKK3sKKyAgICBpZiAoIWdf
c3RyY21wMCh2YWx1ZSwgImFsbG93IikpIHsKKyAgICAgICAgYXV0b3BsYXlQb2xpY3kgPSBXRUJL
SVRfQVVUT1BMQVlfQUxMT1c7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIGlm
ICghZ19zdHJjbXAwKHZhbHVlLCAiYWxsb3ctd2l0aG91dC1zb3VuZCIpKSB7CisgICAgICAgIGF1
dG9wbGF5UG9saWN5ID0gV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ7CisgICAg
ICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIGlmICghZ19zdHJjbXAwKHZhbHVlLCAiZGVu
eSIpKSB7CisgICAgICAgIGF1dG9wbGF5UG9saWN5ID0gV0VCS0lUX0FVVE9QTEFZX0RFTlk7Cisg
ICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIGdfc2V0X2Vycm9yKGVycm9yLCBHX09Q
VElPTl9FUlJPUiwgR19PUFRJT05fRVJST1JfRkFJTEVELCAiRmFpbGVkIHRvIHBhcnNlICclcycg
YXMgYW4gYXV0b3BsYXkgcG9saWN5LCB2YWxpZCBvcHRpb25zIGFyZSBhbGxvdywgYWxsb3ctd2l0
aG91dC1zb3VuZCwgYW5kIGRlbnkiLCB2YWx1ZSk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCiBz
dGF0aWMgZ2Jvb2xlYW4gcGFyc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgY2hhciAqb3B0aW9uTmFt
ZSwgY29uc3QgY2hhciAqdmFsdWUsIGdwb2ludGVyIGRhdGEsIEdFcnJvciAqKmVycm9yKQogewog
ICAgIEdka1JHQkEgcmdiYTsKQEAgLTEwNiw2ICsxMjksNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcGFy
c2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgY2hhciAqb3B0aW9uTmFtZSwgY29uc3QgY2hhciAqdmFs
dWUsCiAKIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10gPQog
eworICAgIHsgImF1dG9wbGF5LXBvbGljeSIsIDAsIDAsIEdfT1BUSU9OX0FSR19DQUxMQkFDSywg
cGFyc2VBdXRvcGxheVBvbGljeSwgIkF1dG9wbGF5IHBvbGljeS4gVmFsaWQgb3B0aW9ucyBhcmU6
IGFsbG93LCBhbGxvdy13aXRob3V0LXNvdW5kLCBhbmQgZGVueSIsIE5VTEwgfSwKICAgICB7ICJi
Zy1jb2xvciIsIDAsIDAsIEdfT1BUSU9OX0FSR19DQUxMQkFDSywgcGFyc2VCYWNrZ3JvdW5kQ29s
b3IsICJCYWNrZ3JvdW5kIGNvbG9yIiwgTlVMTCB9LAogICAgIHsgImVkaXRvci1tb2RlIiwgJ2Un
LCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmVkaXRvck1vZGUsICJSdW4gaW4gZWRpdG9yIG1vZGUi
LCBOVUxMIH0sCiAgICAgeyAiZGFyay1tb2RlIiwgJ2QnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwg
JmRhcmtNb2RlLCAiUnVuIGluIGRhcmsgbW9kZSIsIE5VTEwgfSwKQEAgLTU2OCw2ICs1OTIsMTAg
QEAgc3RhdGljIHZvaWQgYWN0aXZhdGUoR0FwcGxpY2F0aW9uICphcHBsaWNhdGlvbiwgV2ViS2l0
U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzKQogICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdl
cl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKHVzZXJDb250ZW50TWFuYWdlciwgImFi
b3V0RGF0YSIpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QodXNlckNvbnRlbnRNYW5hZ2VyLCAic2Ny
aXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OmFib3V0RGF0YSIsIEdfQ0FMTEJBQ0soYWJvdXREYXRhU2Ny
aXB0TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spLCB3ZWJDb250ZXh0KTsKIAorICAgIFdlYktpdFdl
YnNpdGVQb2xpY2llcyAqZGVmYXVsdFdlYnNpdGVQb2xpY2llcyA9IHdlYmtpdF93ZWJzaXRlX3Bv
bGljaWVzX25ld193aXRoX3BvbGljaWVzKAorICAgICAgICAiYXV0b3BsYXkiLCBhdXRvcGxheVBv
bGljeSwKKyAgICAgICAgTlVMTCk7CisKICAgICBpZiAoY29udGVudEZpbHRlcikgewogICAgICAg
ICBHRmlsZSAqY29udGVudEZpbHRlckZpbGUgPSBnX2ZpbGVfbmV3X2Zvcl9jb21tYW5kbGluZV9h
cmcoY29udGVudEZpbHRlcik7CiAKQEAgLTYxMyw3ICs2NDEsNyBAQCBzdGF0aWMgdm9pZCBhY3Rp
dmF0ZShHQXBwbGljYXRpb24gKmFwcGxpY2F0aW9uLCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0
dGluZ3MpCiAgICAgICAgIGludCBpOwogCiAgICAgICAgIGZvciAoaSA9IDA7IHVyaUFyZ3VtZW50
c1tpXTsgaSsrKSB7Ci0gICAgICAgICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0gY3JlYXRl
QnJvd3NlclRhYihtYWluV2luZG93LCB3ZWJraXRTZXR0aW5ncywgdXNlckNvbnRlbnRNYW5hZ2Vy
KTsKKyAgICAgICAgICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBjcmVhdGVCcm93c2VyVGFi
KG1haW5XaW5kb3csIHdlYmtpdFNldHRpbmdzLCB1c2VyQ29udGVudE1hbmFnZXIsIGRlZmF1bHRX
ZWJzaXRlUG9saWNpZXMpOwogICAgICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgIGZp
cnN0VGFiID0gR1RLX1dJREdFVCh3ZWJWaWV3KTsKICAgICAgICAgICAgIGdjaGFyICp1cmwgPSBh
cmd1bWVudFRvVVJMKHVyaUFyZ3VtZW50c1tpXSk7CkBAIC02MjEsNyArNjQ5LDcgQEAgc3RhdGlj
IHZvaWQgYWN0aXZhdGUoR0FwcGxpY2F0aW9uICphcHBsaWNhdGlvbiwgV2ViS2l0U2V0dGluZ3Mg
KndlYmtpdFNldHRpbmdzKQogICAgICAgICAgICAgZ19mcmVlKHVybCk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewotICAgICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0gY3JlYXRlQnJvd3Nl
clRhYihtYWluV2luZG93LCB3ZWJraXRTZXR0aW5ncywgdXNlckNvbnRlbnRNYW5hZ2VyKTsKKyAg
ICAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGNyZWF0ZUJyb3dzZXJUYWIobWFpbldpbmRv
dywgd2Via2l0U2V0dGluZ3MsIHVzZXJDb250ZW50TWFuYWdlciwgZGVmYXVsdFdlYnNpdGVQb2xp
Y2llcyk7CiAgICAgICAgIGZpcnN0VGFiID0gR1RLX1dJREdFVCh3ZWJWaWV3KTsKIAogICAgICAg
ICBpZiAoIWVkaXRvck1vZGUpIHsKQEAgLTYzNCw2ICs2NjIsOCBAQCBzdGF0aWMgdm9pZCBhY3Rp
dmF0ZShHQXBwbGljYXRpb24gKmFwcGxpY2F0aW9uLCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0
dGluZ3MpCiAKICAgICBnX2NsZWFyX29iamVjdCgmd2Via2l0U2V0dGluZ3MpOwogICAgIGdfb2Jq
ZWN0X3VucmVmKHdlYkNvbnRleHQpOworICAgIGdfb2JqZWN0X3VucmVmKHVzZXJDb250ZW50TWFu
YWdlcik7CisgICAgZ19vYmplY3RfdW5yZWYoZGVmYXVsdFdlYnNpdGVQb2xpY2llcyk7CiAKICAg
ICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMoZmlyc3RUYWIpOwogICAgIGd0a193aWRnZXRfc2hvdyhH
VEtfV0lER0VUKG1haW5XaW5kb3cpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcAppbmRl
eCA3NjliY2M4OTE2YmI5YjFjMWFmZTI5ZDZiYzIwOWRkNDMyODAxNmE2Li5jYzk1MWFlZTBjYmRj
YjQwYWJlYWM3ZjE5NWQ1MzkxNGVlYWE5YzUzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQu
Y3BwCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJMb2FkVHJhY2tpbmdUZXN0LmgiCiAj
aW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgorI2luY2x1ZGUgIldlYktpdFdlYnNpdGVQb2xp
Y2llcy5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKQEAgLTMyLDE5ICszMywyMSBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFBv
bGljeURlY2lzaW9uUmVzcG9uc2UgewogICAgICAgICBVc2UsCisgICAgICAgIFVzZVdpdGhQb2xp
Y3ksCiAgICAgICAgIElnbm9yZSwKICAgICAgICAgRG93bmxvYWQsCiAgICAgICAgIE5vbmUKICAg
ICB9OwogCi0gICAgUG9saWN5Q2xpZW50VGVzdCgpCi0gICAgICAgIDogTG9hZFRyYWNraW5nVGVz
dCgpCi0gICAgICAgICwgbV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlKE5vbmUpCi0gICAgICAgICwg
bV9wb2xpY3lEZWNpc2lvblR5cGVGaWx0ZXIoMCkKLSAgICAgICAgLCBtX3Jlc3BvbmRUb1BvbGlj
eURlY2lzaW9uQXN5bmNocm9ub3VzbHkoZmFsc2UpCi0gICAgICAgICwgbV9oYWx0TWFpbkxvb3BB
ZnRlck1ha2luZ0RlY2lzaW9uKGZhbHNlKQorICAgIHN0YXRpYyB2b2lkIHRlc3RIYW5kbGVyTWVz
c2FnZVJlY2VpdmVkQ2FsbGJhY2soV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB1c2VyQ29udGVu
dE1hbmFnZXIsIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQsIFBvbGlj
eUNsaWVudFRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2Vi
VmlldywgImRlY2lkZS1wb2xpY3kiLCBHX0NBTExCQUNLKGRlY2lkZVBvbGljeUNhbGxiYWNrKSwg
dGhpcyk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6
OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgICAgICBp
ZiAoZ19zdHJfZXF1YWwodmFsdWVTdHJpbmcuZ2V0KCksICJhdXRvcGxheWVkIikpCisgICAgICAg
ICAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSB0cnVlOworICAgICAgICBlbHNlIGlmIChnX3N0cl9l
cXVhbCh2YWx1ZVN0cmluZy5nZXQoKSwgImRpZC1ub3QtcGxheSIpKQorICAgICAgICAgICAgdGVz
dC0+bV9hdXRvcGxheWVkID0gZmFsc2U7CisKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0
LT5tX21haW5Mb29wKTsKICAgICB9CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gcXVpdE1haW5Mb29w
TGF0ZXIoR01haW5Mb29wKiBsb29wKQpAQCAtNTksNiArNjIsOSBAQCBwdWJsaWM6CiAgICAgICAg
IGNhc2UgVXNlOgogICAgICAgICAgICAgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UoZGVjaXNp
b24pOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVXNlV2l0aFBvbGljeToKKyAg
ICAgICAgICAgIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhfcG9saWNpZXMoZGVjaXNp
b24sIHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIElnbm9yZToKICAgICAgICAgICAgIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25f
aWdub3JlKGRlY2lzaW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTEgKzEwNCw0NSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKLSAgICBQb2xpY3lEZWNp
c2lvblJlc3BvbnNlIG1fcG9saWN5RGVjaXNpb25SZXNwb25zZTsKLSAgICBpbnQgbV9wb2xpY3lE
ZWNpc2lvblR5cGVGaWx0ZXI7Ci0gICAgYm9vbCBtX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5
bmNocm9ub3VzbHk7Ci0gICAgYm9vbCBtX2hhbHRNYWluTG9vcEFmdGVyTWFraW5nRGVjaXNpb247
CisgICAgUG9saWN5Q2xpZW50VGVzdCgpCisgICAgICAgIDogTG9hZFRyYWNraW5nVGVzdCgpCisg
ICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImRlY2lkZS1wb2xpY3ki
LCBHX0NBTExCQUNLKGRlY2lkZVBvbGljeUNhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgIHdlYmtp
dF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKG1f
dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCAidGVzdEhhbmRsZXIiKTsKKyAgICAgICAgZ19zaWdu
YWxfY29ubmVjdChtX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgInNjcmlwdC1tZXNzYWdlLXJl
Y2VpdmVkOjp0ZXN0SGFuZGxlciIsIEdfQ0FMTEJBQ0sodGVzdEhhbmRsZXJNZXNzYWdlUmVjZWl2
ZWRDYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIGJvb2wgbG9hZFVSSUFuZFdhaXRGb3JB
dXRvUGxheWVkKGNvbnN0IGNoYXIqIHVyaSwgV2ViS2l0QXV0b3BsYXlQb2xpY3kgcG9saWN5KQor
ICAgIHsKKyAgICAgICAgbV9hdXRvcGxheWVkID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3dl
YnNpdGVQb2xpY2llcyA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0
aF9wb2xpY2llcygiYXV0b3BsYXkiLCBwb2xpY3ksIG51bGxwdHIpKTsKKyAgICAgICAgbV9wb2xp
Y3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50VGVzdDo6VXNlV2l0aFBvbGljeTsKKwor
ICAgICAgICBsb2FkVVJJKHVyaSk7CisgICAgICAgIC8vIFJ1biB1bnRpbCB0aGUgdXNlciBjb250
ZW50IG1lc3NhZ2VzIGNvbWUgYmFjayBmcm9tIHRoZSB0ZXN0IEhUTUwuCisgICAgICAgIGdfbWFp
bl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICAgICAgcmV0dXJuIG1fYXV0b3BsYXllZC52YWx1
ZU9yKGZhbHNlKTsKKyAgICB9CisKKyAgICBib29sIHJ1bkpTQW5kV2FpdEZvckF1dG9QbGF5ZWQo
Y29uc3QgY2hhciogc2NyaXB0KQorICAgIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdFdpdGhvdXRG
b3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0VW50aWxGaW5pc2hlZChzY3JpcHQsIG51bGxwdHIpOwor
CisgICAgICAgIC8vIFNwaW4gdW50aWwgYXV0b3BsYXkgc3RhdHVzIGlzIHJlcG9ydGVkLCB0aGUg
cnVuIEpTIEFQSSBjYW4KKyAgICAgICAgLy8gY29tcGxldGUgaXRzIG1haW4gbG9vcCBiZWZvcmUg
dGhlIHByb21pc2VzIGluIGF1dG9wbGF5LWNoZWNrIGZpcmUuCisgICAgICAgIHdoaWxlICghbV9h
dXRvcGxheWVkLmhhc1ZhbHVlKCkpCisgICAgICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWlu
TG9vcCk7CisKKyAgICAgICAgcmV0dXJuICptX2F1dG9wbGF5ZWQ7CisgICAgfQorCisgICAgUG9s
aWN5RGVjaXNpb25SZXNwb25zZSBtX3BvbGljeURlY2lzaW9uUmVzcG9uc2UgeyBOb25lIH07Cisg
ICAgaW50IG1fcG9saWN5RGVjaXNpb25UeXBlRmlsdGVyIHsgMCB9OworICAgIGJvb2wgbV9yZXNw
b25kVG9Qb2xpY3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5IHsgZmFsc2UgfTsKKyAgICBib29sIG1f
aGFsdE1haW5Mb29wQWZ0ZXJNYWtpbmdEZWNpc2lvbiB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8
Ym9vbD4gbV9hdXRvcGxheWVkOwogICAgIEdSZWZQdHI8V2ViS2l0UG9saWN5RGVjaXNpb24+IG1f
cHJldmlvdXNQb2xpY3lEZWNpc2lvbjsKKyAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVQb2xpY2ll
cz4gbV93ZWJzaXRlUG9saWNpZXM7CiB9OwogCiBzdGF0aWMgdm9pZCB0ZXN0TmF2aWdhdGlvblBv
bGljeShQb2xpY3lDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMjY5LDYgKzMw
OSw0MyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNv
dXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0
X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfRk9VTkQpOwogfQogCitzdGF0aWMgdm9p
ZCB0ZXN0QXV0b3BsYXlQb2xpY3koUG9saWN5Q2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKK3sKKyNpZiBQTEFURk9STShHVEspCisgICAgLy8gVGhlIHdlYiB2aWV3IG11c3QgYmUgcmVh
bGl6ZWQgZm9yIHRoZSB2aWRlbyB0byBzdGFydCBwbGF5YmFjay4KKyAgICB0ZXN0LT5zaG93SW5X
aW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisjZW5kaWYKKwor
ICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25UeXBlRmlsdGVyID0gV0VCS0lUX1BPTElDWV9ERUNJ
U0lPTl9UWVBFX05BVklHQVRJT05fQUNUSU9OOworCisgICAgY29uc3QgY2hhciogcmVzb3VyY2VO
YW1lID0gImF1dG9wbGF5LWNoZWNrLmh0bWwiOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3Vy
Y2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKFRlc3Q6OldlYktp
dDJSZXNvdXJjZXMpLmRhdGEoKSwgcmVzb3VyY2VOYW1lLCBudWxscHRyKSk7CisgICAgR1VuaXF1
ZVB0cjxjaGFyPiByZXNvdXJjZVVSTChnX2ZpbGVuYW1lX3RvX3VyaShyZXNvdXJjZVBhdGguZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmxvYWRV
UklBbmRXYWl0Rm9yQXV0b1BsYXllZChyZXNvdXJjZVVSTC5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZ
X0RFTlkpKTsKKworICAgIC8vIEFzeW5jIHRlc3QKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGlj
eURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSB0cnVlOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3Qt
PmxvYWRVUklBbmRXYWl0Rm9yQXV0b1BsYXllZChyZXNvdXJjZVVSTC5nZXQoKSwgV0VCS0lUX0FV
VE9QTEFZX0RFTlkpKTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNo
cm9ub3VzbHkgPSBmYWxzZTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmxvYWRVUklBbmRXYWl0
Rm9yQXV0b1BsYXllZChyZXNvdXJjZVVSTC5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XKSk7
CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bG9hZFVSSUFuZFdhaXRGb3JBdXRvUGxheWVkKHJl
c291cmNlVVJMLmdldCgpLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCkpOwor
CisgICAgLy8gTm93IGNoZWNrIGR5bmFtaWNhbGx5IHVwZGF0aW5nIHRoZSBsb2FkZXIgcG9saWNp
ZXMKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5sb2FkVVJJQW5kV2FpdEZvckF1dG9QbGF5ZWQo
cmVzb3VyY2VVUkwuZ2V0KCksIFdFQktJVF9BVVRPUExBWV9ERU5ZKSk7CisgICAgLy8gQ2hlY2sg
dGhhdCBKUyBjYW4gbm90IHNpZGUtc3RlcCB0aGUgYWN0aXZlIHBvbGljeQorICAgIGdfYXNzZXJ0
X2ZhbHNlKHRlc3QtPnJ1bkpTQW5kV2FpdEZvckF1dG9QbGF5ZWQoInBsYXlWaWRlbygpOyIpKTsK
KworICAgIC8vIFNpbGVudCBhdWRpbyB0cmFjayB0ZXN0cworICAgIHJlc291cmNlTmFtZSA9ICJh
dXRvcGxheS1uby1hdWRpby1jaGVjay5odG1sIjsKKyAgICByZXNvdXJjZVBhdGgucmVzZXQoZ19i
dWlsZF9maWxlbmFtZShUZXN0OjpnZXRSZXNvdXJjZXNEaXIoVGVzdDo6V2ViS2l0MlJlc291cmNl
cykuZGF0YSgpLCByZXNvdXJjZU5hbWUsIG51bGxwdHIpKTsKKyAgICByZXNvdXJjZVVSTC5yZXNl
dChnX2ZpbGVuYW1lX3RvX3VyaShyZXNvdXJjZVBhdGguZ2V0KCksIG51bGxwdHIsIG51bGxwdHIp
KTsKKworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmxvYWRVUklBbmRXYWl0Rm9yQXV0b1BsYXll
ZChyZXNvdXJjZVVSTC5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZX0RFTlkpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKHRlc3QtPmxvYWRVUklBbmRXYWl0Rm9yQXV0b1BsYXllZChyZXNvdXJjZVVSTC5nZXQo
KSwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5sb2Fk
VVJJQW5kV2FpdEZvckF1dG9QbGF5ZWQocmVzb3VyY2VVUkwuZ2V0KCksIFdFQktJVF9BVVRPUExB
WV9BTExPV19XSVRIT1VUX1NPVU5EKSk7Cit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBr
U2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKQEAgLTI3Niw2ICszNTMsMTAgQEAgdm9p
ZCBiZWZvcmVBbGwoKQogCiAgICAgUG9saWN5Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRQb2xpY3lD
bGllbnQiLCAibmF2aWdhdGlvbi1wb2xpY3kiLCB0ZXN0TmF2aWdhdGlvblBvbGljeSk7CiAgICAg
UG9saWN5Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRQb2xpY3lDbGllbnQiLCAicmVzcG9uc2UtcG9s
aWN5IiwgdGVzdFJlc3BvbnNlUG9saWN5KTsKKyAgICBQb2xpY3lDbGllbnRUZXN0OjphZGQoIldl
YktpdFBvbGljeUNsaWVudCIsICJhdXRvcGxheS1wb2xpY3kiLCB0ZXN0QXV0b3BsYXlQb2xpY3kp
OworICAgIC8vIFdBUk5JTkc6IFRoaXMgdGVzdCBtdXN0IGNvbWUgbGFzdCwgaXQgdXNlcyByYWNl
eSBjb25zdHJ1Y3RzIHRoYXQKKyAgICAvLyBpbnRlcmZlcmUgbm9uZGV0ZXJtaW5pc2ljYWxseSB3
aXRoIGFueSB0ZXN0IHJ1bm5pbmcgYWZ0ZXIgaXQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzE5MAogICAgIFBvbGljeUNsaWVudFRlc3Q6OmFkZCgi
V2ViS2l0UG9saWN5Q2xpZW50IiwgIm5ldy13aW5kb3ctcG9saWN5IiwgdGVzdE5ld1dpbmRvd1Bv
bGljeSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGIwM2M5OTYyNmYzMGFjYzY5MjIz
ZDk1NGFmYjhlNDIxYWViNDVhZjYuLmQ3Y2FmZmQwZTk5MmNjMzE1NzNkOGJiNDVkOWYwZWQ2NzU5
NjBmZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTE0Miw2ICsxMTQyLDEyIEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3SXNBdWRpb011dGVkKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19nZXRfaXNfbXV0ZWQo
dGVzdC0+bV93ZWJWaWV3KSk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0b3BsYXlQ
b2xpY3koV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgV2ViS2l0V2Vi
c2l0ZVBvbGljaWVzKiBwb2xpY2llcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xp
Y2llcyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfd2Vic2l0
ZV9wb2xpY2llc19nZXRfYXV0b3BsYXlfcG9saWN5KHBvbGljaWVzKSwgPT0sIFdFQktJVF9BVVRP
UExBWV9BTExPV19XSVRIT1VUX1NPVU5EKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdC
YWNrZ3JvdW5kQ29sb3IoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAjaWYg
UExBVEZPUk0oR1RLKQpAQCAtMTM5OSw2ICsxNDA1LDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAg
IEZyYW1lRGlzcGxheWVkVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImZyYW1lLWRpc3BsYXll
ZCIsIHRlc3RXZWJWaWV3RnJhbWVEaXNwbGF5ZWQpOwogI2VuZGlmCiAgICAgV2ViVmlld1Rlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJpcy1hdWRpby1tdXRlZCIsIHRlc3RXZWJWaWV3SXNBdWRp
b011dGVkKTsKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImF1dG9wbGF5
LXBvbGljeSIsIHRlc3RXZWJWaWV3QXV0b3BsYXlQb2xpY3kpOwogfQogCiB2b2lkIGFmdGVyQWxs
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZp
ZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdU
ZXN0LmNwcAppbmRleCA4ZTNmMzQ4ZDhhYjUxNGQ0NzgzZWNiMWFhZWEzYmJkMjMwMjdhOWJlLi4x
ODJhMjRmOGUxNDFmODUwOWRjNGVlYWEwMjU4MjQ1ZTY1ZmFkOTJmIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCkBAIC0yMCw2
ICsyMCw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5o
IgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdJbnRlcm5hbC5oIgogCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KIApAQCAtMzE3LDYgKzMxOCwxOCBAQCBXZWJLaXRKYXZh
c2NyaXB0UmVzdWx0KiBXZWJWaWV3VGVzdDo6cnVuSmF2YVNjcmlwdEluV29ybGRBbmRXYWl0VW50
aWxGaW5pc2hlZChjbwogICAgIHJldHVybiBtX2phdmFzY3JpcHRSZXN1bHQ7CiB9CiAKK1dlYktp
dEphdmFzY3JpcHRSZXN1bHQqIFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0V2l0aG91dEZvcmNl
ZFVzZXJHZXN0dXJlc0FuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQs
IEdFcnJvcioqIGVycm9yKQoreworICAgIGlmIChtX2phdmFzY3JpcHRSZXN1bHQpCisgICAgICAg
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZihtX2phdmFzY3JpcHRSZXN1bHQpOworICAg
IG1famF2YXNjcmlwdFJlc3VsdCA9IDA7CisgICAgbV9qYXZhc2NyaXB0RXJyb3IgPSBlcnJvcjsK
KyAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YXNjcmlwdFdpdGhvdXRGb3JjZWRVc2VyR2VzdHVyZXMo
bV93ZWJWaWV3LCBqYXZhc2NyaXB0LCAwLCByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2Fs
bGJhY2s+KHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19tYWluX2xv
b3BfcnVuKG1fbWFpbkxvb3ApOworCisgICAgcmV0dXJuIG1famF2YXNjcmlwdFJlc3VsdDsKK30K
KwogY2hhciogV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoV2ViS2l0SmF2
YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKIHsKICAgICBhdXRvKiB2YWx1ZSA9IHdl
YmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVz
dC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApp
bmRleCBjM2ZkZDk4MjU4OTExYjVlY2JmMzEwYzlhZWNlNGJjODUzYWNmNTBiLi5iYjA3MDg4MDE5
Yzg4ODE3ZWJiNjRkMTlhYmI4MjlkNTQ3NmNiNDdiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVi
bGljOgogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50
aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKik7CiAgICAgV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdEZyb21HUmVzb3VyY2VBbmRXYWl0VW50aWxG
aW5pc2hlZChjb25zdCBjaGFyKiByZXNvdXJjZSwgR0Vycm9yKiopOwogICAgIFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoY29u
c3QgY2hhciogamF2YXNjcmlwdCwgY29uc3QgY2hhciogd29ybGQsIEdFcnJvcioqKTsKKyAgICBX
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0V2l0aG91dEZvcmNlZFVzZXJHZXN0
dXJlc0FuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioq
KTsKIAogICAgIC8vIEphdmFzY3JpcHQgcmVzdWx0IGhlbHBlcnMuCiAgICAgc3RhdGljIGNoYXIq
IGphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402010</attachid>
            <date>2020-06-16 08:56:31 -0700</date>
            <delta_ts>2020-06-16 09:24:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184845-20200616165629.patch</filename>
            <type>text/plain</type>
            <size>59744</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhhYTRmZTdmNzIzYjk4YTVl
MTJjYTA5NDIwY2RlMTg3NTAxNTcyZDMuLmUwOTEzY2NlZjI4NTY0NGZhZWM0Y2MwNjg3MTU2NTBh
MDEwMTdlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjAtMDYtMTIgIENoYXJsaWUg
VHVybmVyICA8Y3R1cm5lckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIERpc2FibGUgdmlk
ZW8gYXV0b3BsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDg0NQorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgor
CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFkZCBuZXcgc291cmNlIGZpbGVzIHRvIHRo
ZSBidWlsZC4KKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZTogRGl0dG8uCisgICAgICAgICog
U291cmNlc0dUSy50eHQ6IERpdHRvLgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OiBEaXR0by4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwOgor
ICAgICAgICAod2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2Vfd2l0aF9wb2xpY2llcyk6IDogQWRk
IGFuIEFQSSB0bworICAgICAgICByZXNwb25kIHRvIG5hdmlnYXRpb24gZGVjaXNpb25zIHdpdGgg
cG9saWNpZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQu
Y3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KTogUGx1
bWIgaW4gdGhlIGRlZmF1bHQKKyAgICAgICAgd2Vic2l0ZSBwb2xpY2llcyB0aGF0IGFyZSBhc3Nv
Y2lhdGVkIHdpdGggdGhlIHdlYiB2aWV3LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2ViVmll
d0dldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llcy5jcHA6IEFkZGVkLgorICAg
ICAgICAoX1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGU6Ol9XZWJLaXRXZWJzaXRlUG9saWNp
ZXNQcml2YXRlKToKKyAgICAgICAgKHdlYmtpdFdlYnNpdGVQb2xpY2llc0dldFdlYnNpdGVQb2xp
Y2llcyk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRQb2xpY2llc0RhdGEpOgor
ICAgICAgICAod2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UHJvcGVydHkpOgorICAgICAgICAod2Vi
a2l0V2Vic2l0ZVBvbGljaWVzU2V0QXV0b3BsYXlQb2xpY3kpOgorICAgICAgICAod2Via2l0V2Vi
c2l0ZVBvbGljaWVzU2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfcG9saWNp
ZXNfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcpOgor
ICAgICAgICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMpOgorICAg
ICAgICAod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24u
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHA6CisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9saWN5RGVjaXNpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisKIDIwMjAtMDYtMTIgIENoYXJsaWUg
VHVybmVyICA8Y3R1cm5lckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBhbiBpbnRl
cm5hbCBBUEkgdG8gcnVuIGphdmFzY3JpcHQgd2l0aG91dCBmb3JjZWQgdXNlciBnZXN0dXJlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggYjk0NTIyYzhmY2EwYWY4ODZmZWZkMmNlNGM5ODJl
NDA3NzE1ZDU2Yi4uZmQ5NDNmZjVhNWZlYTA2OTVjNDRkYmY5OGRkZmFkMDQwZjNlYzIyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xNDAsNiArMTQwLDcgQEAgc2V0KFdlYktpdDJHVEtf
SU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYnNpdGVEYXRhLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXgg
ODMyMGUzMTBlNmM0NjY5MjRhMDgzZWU0NmFlMzFmNTQ4NjQyMGZjZC4uOWY3NzAyNWE5YjVmOTE2
ZjM3ZDQyMGFkNDhjYTM0OTIyMWFjYzRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0x
NTIsNiArMTUyLDcgQEAgc2V0KFdQRV9BUElfSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhLmgKICAgICAke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oCiAgICAg
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmgK
KyAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVQb2xpY2ll
cy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAogKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzR1RLLnR4dAppbmRleCAyZDVhYWM5NTNhYmVmMjNlYTVkMDIzM2FkMGE1YmU5YWE1OTg1
YjhlLi4xY2YyNzdjOTU1OTJiMTczODE5ZTk0MmE3OTllNzZhOGQxMDFkODg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0dUSy50eHQKQEAgLTE5Miw2ICsxOTIsNyBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlld1Nlc3Npb25TdGF0ZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2Vic2l0ZURhdGEuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNp
dGVEYXRhTWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2lu
ZG93UHJvcGVydGllcy5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZVBvbGljaWVzLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJj
ZUd0azMuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3Bw
IEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKaW5kZXggOGI5MzRlODFlNzQ4OTBlYmE2NzRmNWZh
YWE2YTVhZGUwZjYwNWMxMS4uNDEzMzkxZWUyZmNhNjMwMjU5YTg2MWM0OTgzZDE5OTMyMDE0MmM2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNXUEUudHh0CkBAIC0xODAsNiArMTgwLDcgQEAgVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYnNpdGVEYXRhLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYnNpdGVQb2xpY2llcy5jcHAgQG5vLXVuaWZ5CiAKIFVJUHJvY2Vzcy9BUEkv
d3BlL0lucHV0TWV0aG9kRmlsdGVyV1BFLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3Bl
L1BhZ2VDbGllbnRJbXBsLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFBvbGljeURlY2lzaW9uLmNwcAppbmRleCBhMzU3
NDc5M2M2OWVkMDc2ODNhNjAzZTYyOWY0MDkxMWY3NWJjYTNhLi5jYjI4MWI4NzU2N2ZlYzM4N2Y5
NWZhMmNmNmExOTAzYmNjZTIwZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRQb2xpY3lEZWNpc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwCkBAIC0yMCw4ICsyMCwx
MSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFBvbGljeURlY2lzaW9u
LmgiCiAKKyNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRQb2xpY3lEZWNpc2lvblBy
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJX
ZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVz
RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAKQEAgLTg0LDYgKzg3LDM0
IEBAIHZvaWQgd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UoV2ViS2l0UG9saWN5RGVjaXNpb24q
IGRlY2lzaW9uKQogICAgIGxpc3RlbmVyLT51c2UoKTsKIH0KIAorLyoqCisgKiB3ZWJraXRfcG9s
aWN5X2RlY2lzaW9uX3VzZV93aXRoX3BvbGljaWVzOgorICogQGRlY2lzaW9uOiBhICNXZWJLaXRQ
b2xpY3lEZWNpc2lvbgorICogQHBvbGljaWVzOiBhICNXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAq
CisgKiBBY2NlcHQgdGhlIG5hdmlnYXRpb24gYWN0aW9uIHdoaWNoIHRyaWdnZXJlZCB0aGlzIGRl
Y2lzaW9uLCBhbmQKKyAqIGNvbnRpbnVlIHdpdGggQHBvbGljaWVzIGFmZmVjdGluZyBhbGwgc3Vi
c2VxdWVudCBsb2FkcyBvZiByZXNvdXJjZXMKKyAqIGluIHRoZSBvcmlnaW4gYXNzb2NpYXRlZCB3
aXRoIHRoZSBhY2NlcHRlZCBuYXZpZ2F0aW9uIGFjdGlvbi4KKyAqCisgKiBGb3IgZXhhbXBsZSwg
YSBuYXZpZ2F0aW9uIGRlY2lzaW9uIHRvIGEgdmlkZW8gc2hhcmluZyB3ZWJzaXRlIG1heQorICog
YmUgYWNjZXB0ZWQgdW5kZXIgdGhlIHByaXZpc28gbm8gbW92aWVzIGFyZSBhbGxvd2VkIHRvIGF1
dG9wbGF5LiBUaGUKKyAqIGF1dG9wbGF5IHBvbGljeSBpbiB0aGlzIGNhc2Ugd291bGQgYmUgc2V0
IGluIHRoZSBAcG9saWNpZXMuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwordm9pZCB3ZWJraXRf
cG9saWN5X2RlY2lzaW9uX3VzZV93aXRoX3BvbGljaWVzKFdlYktpdFBvbGljeURlY2lzaW9uKiBk
ZWNpc2lvbiwgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19QT0xJQ1lfREVDSVNJT04oZGVjaXNpb24pKTsKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTKHBvbGljaWVzKSk7CisKKyAg
ICBpZiAoIWRlY2lzaW9uLT5wcml2LT5saXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBsaXN0ZW5lciA9IHN0ZDo6ZXhjaGFuZ2UoZGVjaXNpb24tPnByaXYtPmxpc3RlbmVyLCBu
dWxscHRyKTsKKworICAgIGxpc3RlbmVyLT51c2Uod2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0V2Vi
c2l0ZVBvbGljaWVzKHBvbGljaWVzKSk7Cit9CisKIC8qKgogICogd2Via2l0X3BvbGljeV9kZWNp
c2lvbl9pZ25vcmU6CiAgKiBAZGVjaXNpb246IGEgI1dlYktpdFBvbGljeURlY2lzaW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQu
Y3BwCmluZGV4IDA0MWJmYjU0NWM2YWY2MjIwYTgyNjZkMzU2YWMxOWQ5MDc5MWNiODMuLmM0Yzdk
MGY2YzEyNjFiNTFkMDIwNzFhNjUyYWEwOTNkMWFhM2I5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC01Myw2
ICs1Myw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhTWFu
YWdlclByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgpAQCAt
MTg5Nyw3ICsxODk4LDcgQEAgV2ViUHJvY2Vzc1Bvb2wmIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9j
ZXNzUG9vbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIHJldHVybiAqY29udGV4dC0+
cHJpdi0+cHJvY2Vzc1Bvb2w7CiB9CiAKLXZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VG
b3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRX
ZWJWaWV3KiByZWxhdGVkVmlldykKK3ZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JX
ZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJW
aWV3KiByZWxhdGVkVmlldywgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBkZWZhdWx0V2Vic2l0ZVBv
bGljaWVzKQogewogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1
cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2wo
Y29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wuZ2V0KCkpOwpAQCAtMTkxMCw2ICsxOTExLDcgQEAg
dm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCwgV2ViS2l0V2ViVmkKICAgICBpZiAoIW1hbmFnZXIpCiAgICAgICAgIG1hbmFn
ZXIgPSBjb250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCk7CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnNldFdlYnNpdGVEYXRhU3RvcmUoJndlYmtpdFdlYnNpdGVEYXRhTWFuYWdl
ckdldERhdGFTdG9yZShtYW5hZ2VyKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldERlZmF1
bHRXZWJzaXRlUG9saWNpZXMod2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0V2Vic2l0ZVBvbGljaWVz
KGRlZmF1bHRXZWJzaXRlUG9saWNpZXMpKTsKICAgICB3ZWJraXRXZWJWaWV3Q3JlYXRlUGFnZSh3
ZWJWaWV3LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBhdXRvJiBwYWdlID0g
d2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAppbmRleCBk
ODU2OWM4NTliYWJmZTExNjljNjgyZWI2ODYzNjZlM2QwNjliOWFkLi43OGQxNTc4Zjk0NzkzZTll
NTlhM2Q0ZDJiMzNlNzllYTg1MzBmYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIApAQCAtMzYsNyArMzcsNyBA
QCBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoV2Vi
S2l0OjpEb3dubG9hZFByb3h5Kik7CiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dFN0
YXJ0RG93bmxvYWQoV2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqIHVyaSwgV2ViS2l0OjpX
ZWJQYWdlUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKFdlYktp
dDo6RG93bmxvYWRQcm94eSopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0RG93bmxvYWRTdGFydGVk
KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXREb3dubG9hZCopOwotdm9pZCB3ZWJraXRXZWJDb250
ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcq
LCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtp
dFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0
V2ViVmlldyosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdlYktpdFdlYlZpZXcqLCBXZWJL
aXRXZWJzaXRlUG9saWNpZXMqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95
ZWQoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqKTsKIFdlYktpdFdlYlZpZXcqIHdl
YmtpdFdlYkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0
OjpXZWJQYWdlUHJveHkqKTsKIEdWYXJpYW50KiB3ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6ZVdl
YkV4dGVuc2lvbnMoV2ViS2l0V2ViQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA1MGRmM2Y0NDhhN2QzOGUz
MjgyZTY2MjgyNDkwZjE3MGZlZWJhYWVkLi43Yjg3YzQzNjQ3NTkyYzIxMzZjZWI4ZjIxYWI1MTUy
YjJjZWY5ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYlZp
ZXdQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZVByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCisjaW5jbHVk
ZSAiV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdpbmRv
d1Byb3BlcnRpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgpAQCAtMjAxLDcgKzIwMiw4IEBAIGVudW0g
ewogICAgIFBST1BfQVVUT01BVElPTl9QUkVTRU5UQVRJT05fVFlQRSwKICAgICBQUk9QX0VESVRB
QkxFLAogICAgIFBST1BfUEFHRV9JRCwKLSAgICBQUk9QX0lTX01VVEVECisgICAgUFJPUF9JU19N
VVRFRCwKKyAgICBQUk9QX1dFQlNJVEVfUE9MSUNJRVMKIH07CiAKIHR5cGVkZWYgSGFzaE1hcDx1
aW50NjRfdCwgR1JlZlB0cjxXZWJLaXRXZWJSZXNvdXJjZT4gPiBMb2FkaW5nUmVzb3VyY2VzTWFw
OwpAQCAtMzAzLDYgKzMwNSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAg
IEdSZWZQdHI8V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0PiBhdXRoZW50aWNhdGlvblJlcXVl
c3Q7CiAKICAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFN
YW5hZ2VyOworICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZVBvbGljaWVzPiB3ZWJzaXRlUG9saWNp
ZXM7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CkBA
IC03NTYsNyArNzU5LDEwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChH
T2JqZWN0KiBvYmplY3QpCiAgICAgICAgIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nl
c3NQb29sKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwgd2Via2l0V2ViQ29udGV4dEdl
dFByb2Nlc3NQb29sKHByaXYtPmNvbnRleHQuZ2V0KCkpKTsKICAgICB9CiAKLSAgICB3ZWJraXRX
ZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dC5nZXQoKSwgd2ViVmll
dywgcHJpdi0+dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBwcml2LT5yZWxhdGVkVmlldyk7Cisg
ICAgaWYgKCFwcml2LT53ZWJzaXRlUG9saWNpZXMpCisgICAgICAgIHByaXYtPndlYnNpdGVQb2xp
Y2llcyA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXcoKSk7CisKKyAgICB3
ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dC5nZXQoKSwg
d2ViVmlldywgcHJpdi0+dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBwcml2LT5yZWxhdGVkVmll
dywgcHJpdi0+d2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKIAogICAgIHByaXYtPmxvYWRPYnNlcnZl
ciA9IG1ha2VVbmlxdWU8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKICAgICBnZXRQ
YWdlKHdlYlZpZXcpLnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqcHJpdi0+bG9hZE9ic2Vy
dmVyKTsKQEAgLTgzOSw2ICs4NDUsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZQogICAgIGNh
c2UgUFJPUF9JU19NVVRFRDoKICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9pc19tdXRlZCh3
ZWJWaWV3LCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9XRUJTSVRFX1BPTElDSUVTOgorICAgICAgICB3ZWJWaWV3LT5wcml2LT53ZWJz
aXRlUG9saWNpZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlUG9saWNpZXMqPihnX3ZhbHVl
X2dldF9vYmplY3QodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJh
bVNwZWMpOwogICAgIH0KQEAgLTkwNCw2ICs5MTMsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFs
dQogICAgIGNhc2UgUFJPUF9JU19NVVRFRDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2
YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF9pc19tdXRlZCh3ZWJWaWV3KSk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9XRUJTSVRFX1BPTElDSUVTOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJW
aWV3KSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKICAgICB9
CkBAIC0xMjkxLDYgKzEzMDMsMjMgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNz
X2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICBGQUxT
RSwKICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKIAorICAgIC8qKgorICAg
ICAqIFdlYktpdFdlYlZpZXc6d2Vic2l0ZS1wb2xpY2llczoKKyAgICAgKgorICAgICAqIFRoZSAj
V2ViS2l0V2Vic2l0ZVBvbGljaWVzIGZvciB0aGUgdmlldy4KKyAgICAgKgorICAgICAqIFNpbmNl
OiAyLjMwCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAg
ICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX1dFQlNJVEVfUE9MSUNJRVMsCisgICAg
ICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCisgICAgICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIs
CisgICAgICAgICAgICBfKCJEZWZhdWx0IFdlYnNpdGUgUG9saWNpZXMiKSwKKyAgICAgICAgICAg
IF8oIlRoZSBkZWZhdWx0IHBvbGljeSBvYmplY3QgZm9yIHNpdGVzIGxvYWRlZCBpbiB0aGlzIHZp
ZXciKSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsCisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdf
UEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisKICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3
Ojpsb2FkLWNoYW5nZWQ6CiAgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24g
d2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCkBAIC00NjM0LDMgKzQ2NjMsMjUgQEAgV2ViS2l0
SW5wdXRNZXRob2RDb250ZXh0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250
ZXh0KFdlYktpdFdlYlZpZXcKICNlbmRpZgogCiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3
X2dldF93ZWJzaXRlX3BvbGljaWVzOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3Cisg
KgorICogR2V0cyB0aGUgZGVmYXVsdCB3ZWJzaXRlIHBvbGljaWVzIHNldCBvbiBjb25zdHJ1Y3Rp
b24gaW4gdGhlCisgKiBAd2ViX3ZpZXcuIFRoZXNlIGNhbiBiZSBvdmVycmlkZGVuIG9uIGEgcGVy
LW9yaWdpbiBiYXNpcyB2aWEgdGhlCisgKiAjV2ViS2l0V2ViVmlldzo6ZGVjaWRlLXBvbGljeSBz
aWduYWwgaGFuZGxlci4KKyAqCisgKiBTZWUgYWxzbyB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3Vz
ZV93aXRoX3BvbGljaWVzKCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUg
ZGVmYXVsdCAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKiAgICAgYXNzb2NpYXRlZCB3aXRoIHRo
ZSB2aWV3LgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK1dlYktpdFdlYnNpdGVQb2xpY2llcyog
d2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZp
ZXcpLCBudWxscHRyKTsKKworICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT53ZWJzaXRlUG9saWNp
ZXMuZ2V0KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJzaXRlUG9saWNpZXMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWNmNTg5ZGRlMTQy
ZDg0ZDRhYWRjNTYxYWQ5ZTBiMmMzZTYyZTM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmNwcApAQCAtMCww
ICsxLDIzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFdlYnNpdGVQb2xpY2llcy5oIgorCisjaW5j
bHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAiV2ViS2l0RW51bVR5cGVzLmgi
CisjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4t
bGliLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAqIEBT
aG9ydF9kZXNjcmlwdGlvbjogVmlldyBzcGVjaWZpYyB3ZWJzaXRlIHBvbGljaWVzCisgKiBAVGl0
bGU6IFdlYktpdFdlYnNpdGVQb2xpY2llcworICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldwor
ICoKKyAqIFdlYktpdFdlYnNpdGVQb2xpY2llcyBhbGxvd3MgeW91IHRvIGNvbmZpZ3VyZSBwZXIt
cGFnZSBwb2xpY2llcywKKyAqIGN1cnJlbnRseSBvbmx5IGF1dG9wbGF5IHBvbGljaWVzIGFyZSBz
dXBwb3J0ZWQuCisgKgorICogU2luY2U6IDIuMzAKKyAqLworCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX0FVVE9QTEFZX1BPTElDWQor
fTsKKworc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlIHsKKyAgICBfV2ViS2l0
V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZSgpCisgICAgICAgIDogd2Vic2l0ZVBvbGljaWVzKEFQSTo6
V2Vic2l0ZVBvbGljaWVzOjpjcmVhdGUoKSkKKyAgICB7CisgICAgfQorICAgIFJlZlB0cjxBUEk6
OldlYnNpdGVQb2xpY2llcz4gd2Vic2l0ZVBvbGljaWVzOworfTsKKworV0VCS0lUX0RFRklORV9U
WVBFKFdlYktpdFdlYnNpdGVQb2xpY2llcywgd2Via2l0X3dlYnNpdGVfcG9saWNpZXMsIEdfVFlQ
RV9PQkpFQ1QpCisKK0FQSTo6V2Vic2l0ZVBvbGljaWVzJiB3ZWJraXRXZWJzaXRlUG9saWNpZXNH
ZXRXZWJzaXRlUG9saWNpZXMoV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAg
ICByZXR1cm4gKnBvbGljaWVzLT5wcml2LT53ZWJzaXRlUG9saWNpZXMuZ2V0KCk7Cit9CisKK1dl
YnNpdGVQb2xpY2llc0RhdGEgd2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UG9saWNpZXNEYXRhKFdl
YktpdFdlYnNpdGVQb2xpY2llcyogcG9saWNpZXMpCit7CisgICAgV2Vic2l0ZVBvbGljaWVzRGF0
YSBwb2xpY2llc0RhdGE7CisKKyAgICBzd2l0Y2ggKHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dl
dF9hdXRvcGxheV9wb2xpY3kocG9saWNpZXMpKSB7CisgICAgY2FzZSBXRUJLSVRfQVVUT1BMQVlf
QUxMT1c6CisgICAgICAgIHBvbGljaWVzRGF0YS5hdXRvcGxheVBvbGljeSA9IFdlYnNpdGVBdXRv
cGxheVBvbGljeTo6QWxsb3c7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0FVVE9Q
TEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ6CisgICAgICAgIHBvbGljaWVzRGF0YS5hdXRvcGxheVBv
bGljeSA9IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQ7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0FVVE9QTEFZX0RFTlk6CisgICAgICAgIHBvbGljaWVz
RGF0YS5hdXRvcGxheVBvbGljeSA9IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVueTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcG9saWNpZXNEYXRhLmF1dG9wbGF5UG9s
aWN5ID0gV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZWZhdWx0OworICAgIH0KKworICAgIHJldHVy
biBwb2xpY2llc0RhdGE7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVQb2xpY2llc0dl
dFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xp
Y2llcyA9IFdFQktJVF9XRUJTSVRFX1BPTElDSUVTKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHBy
b3BJRCkgeworICAgIGNhc2UgUFJPUF9BVVRPUExBWV9QT0xJQ1k6CisgICAgICAgIGdfdmFsdWVf
c2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRvcGxheV9wb2xp
Y3kocG9saWNpZXMpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMp
OworICAgIH0KK30KKwordm9pZCB3ZWJraXRXZWJzaXRlUG9saWNpZXNTZXRBdXRvcGxheVBvbGlj
eShXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBXZWJLaXRBdXRvcGxheVBvbGljeSBw
b2xpY3kpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lF
Uyhwb2xpY2llcykpOworCisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIFdFQktJVF9B
VVRPUExBWV9BTExPVzoKKyAgICAgICAgcG9saWNpZXMtPnByaXYtPndlYnNpdGVQb2xpY2llcy0+
c2V0QXV0b3BsYXlQb2xpY3koV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvdyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ6Cisg
ICAgICAgIHBvbGljaWVzLT5wcml2LT53ZWJzaXRlUG9saWNpZXMtPnNldEF1dG9wbGF5UG9saWN5
KFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdFQktJVF9BVVRPUExBWV9ERU5ZOgorICAgICAgICBwb2xpY2llcy0+cHJp
di0+d2Vic2l0ZVBvbGljaWVzLT5zZXRBdXRvcGxheVBvbGljeShXZWJzaXRlQXV0b3BsYXlQb2xp
Y3k6OkRlbnkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtp
dFdlYnNpdGVQb2xpY2llc1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElE
LCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcyA9IFdFQktJVF9XRUJTSVRFX1BPTElDSUVTKG9i
amVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9BVVRPUExBWV9Q
T0xJQ1k6CisgICAgICAgIHdlYmtpdFdlYnNpdGVQb2xpY2llc1NldEF1dG9wbGF5UG9saWN5KHBv
bGljaWVzLCBzdGF0aWNfY2FzdDxXZWJLaXRBdXRvcGxheVBvbGljeT4oZ192YWx1ZV9nZXRfZW51
bSh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOwor
ICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfY2xhc3NfaW5p
dChXZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcyogZmluZENsYXNzKQoreworICAgIEdPYmplY3RD
bGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoZmluZENsYXNzKTsKKworICAgIGdP
YmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0V2Vic2l0ZVBvbGljaWVzR2V0UHJvcGVy
dHk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRXZWJzaXRlUG9saWNp
ZXNTZXRQcm9wZXJ0eTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYnNpdGVQb2xpY2llczph
dXRvcGxheToKKyAgICAgKgorICAgICAqIFRoZSAjV2ViS2l0QXV0b3BsYXlQb2xpY3kgb2YgI1dl
YktpdFdlYnNpdGVQb2xpY2llcy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjMwCisgICAgICov
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENs
YXNzLAorICAgICAgICBQUk9QX0FVVE9QTEFZX1BPTElDWSwKKyAgICAgICAgZ19wYXJhbV9zcGVj
X2VudW0oCisgICAgICAgICAgICAiYXV0b3BsYXkiLAorICAgICAgICAgICAgIkF1dG9wbGF5IFBv
bGljeSIsCisgICAgICAgICAgICBfKCJUaGUgcG9saWN5IHRvIHVzZSB3aGVuIGRlY2lkaW5nIHRv
IGF1dG9wbGF5IG1lZGlhIiksCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9BVVRPUExBWV9QT0xJ
Q1ksCisgICAgICAgICAgICBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCwKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRF
IHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vic2l0
ZV9wb2xpY2llc19uZXc6CisgKgorICogQ3JlYXRlIGEgbmV3ICNXZWJLaXRXZWJzaXRlUG9saWNp
ZXMKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IHRoZSBuZXdseSBjcmVhdGVkICNX
ZWJLaXRXZWJzaXRlUG9saWNpZXMKKyAqCisgKiBTaW5jZTogMi4zMAorICovCitXZWJLaXRXZWJz
aXRlUG9saWNpZXMqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ldyh2b2lkKQoreworICAgIHJl
dHVybiBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
U0lURV9QT0xJQ0lFUywgbnVsbHB0cikpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX3Bv
bGljaWVzX25ld193aXRoX3BvbGljaWVzOgorICogQGZpcnN0X3BvbGljeV9uYW1lOiBuYW1lIG9m
IHRoZSBmaXJzdCBwb2xpY3kgdG8gc2V0CisgKiBALi4uOiB2YWx1ZSBvZiBmaXJzdCBwb2xpY3ks
IGZvbGxvd2VkIGJ5IG1vcmUgcG9saWNpZXMsICVOVUxMLXRlcm1pbmF0ZWQKKyAqCisgKiBDcmVh
dGUgYSBuZXcgI1dlYktpdFdlYnNpdGVQb2xpY2llcyB3aXRoIHBvbGljaWVzIGdpdmVuIGFzIHZh
cmlhZGljCisgKiBhcmd1bWVudHMuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiB0
aGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKgorICogPGluZm9ybWFs
ZXhhbXBsZT48cHJvZ3JhbWxpc3Rpbmc+CisgKiBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKmRlZmF1
bHRfd2Vic2l0ZV9wb2xpY2llcyA9IHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3Bv
bGljaWVzKAorICogICAgICJhdXRvcGxheSIsIFdFQktJVF9BVVRPUExBWV9ERU5ZLAorICogICAg
IE5VTEwpOworICogLi4uCisgKiBXZWJLaXRXZWJWaWV3ICp2aWV3ID0gV0VCS0lUX1dFQl9WSUVX
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKKyAqICAgICAid2ViLWNvbnRleHQi
LCBjdHgsCisgKiAgICAgInNldHRpbmdzIiwgc2V0dGluZ3MsCisgKiAgICAgInVzZXItY29udGVu
dC1tYW5hZ2VyIiwgY29udGVudF9tYW5hZ2VyLAorICogICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwg
ZGVmYXVsdF93ZWJzaXRlX3BvbGljaWVzLAorICogICAgIE5VTEwpKTsKKyAqIC4uLgorICogPC9w
cm9ncmFtbGlzdGluZz48L2luZm9ybWFsZXhhbXBsZT4KKyAqCisgKiBTaW5jZTogMi4zMAorICov
CitXZWJLaXRXZWJzaXRlUG9saWNpZXMqIHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRo
X3BvbGljaWVzKGNvbnN0IGdjaGFyKiBmaXJzdFBvbGljeU5hbWUsIC4uLikKK3sKKyAgICB2YV9s
aXN0IGFyZ3M7CisgICAgdmFfc3RhcnQoYXJncywgZmlyc3RQb2xpY3lOYW1lKTsKKyAgICBXZWJL
aXRXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzID0gV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVMoZ19v
YmplY3RfbmV3X3ZhbGlzdChXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLCBmaXJzdFBvbGlj
eU5hbWUsIGFyZ3MpKTsKKyAgICB2YV9lbmQoYXJncyk7CisKKyAgICByZXR1cm4gcG9saWNpZXM7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGlj
eToKKyAqIEBwb2xpY2llczogYSAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzCisgKgorICogR2V0IHRo
ZSAjV2ViS2l0V2Vic2l0ZVBvbGljaWVzOmF1dG9wbGF5IHByb3BlcnR5LgorICoKKyAqIFJldHVy
bnM6ICNXZWJLaXRBdXRvcGxheVBvbGljeQorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK1dlYktp
dEF1dG9wbGF5UG9saWN5IHdlYmtpdF93ZWJzaXRlX3BvbGljaWVzX2dldF9hdXRvcGxheV9wb2xp
Y3koV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcykKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFUyhwb2xpY2llcyksIFdFQktJVF9BVVRP
UExBWV9BTExPV19XSVRIT1VUX1NPVU5EKTsKKworICAgIGF1dG8gYXBpQXV0b3BsYXlQb2xpY3lU
eXBlID0gcG9saWNpZXMtPnByaXYtPndlYnNpdGVQb2xpY2llcy0+YXV0b3BsYXlQb2xpY3koKTsK
KyAgICBzd2l0Y2ggKGFwaUF1dG9wbGF5UG9saWN5VHlwZSkgeworICAgIGNhc2UgV2Vic2l0ZUF1
dG9wbGF5UG9saWN5OjpBbGxvdzoKKyAgICAgICAgcmV0dXJuIFdFQktJVF9BVVRPUExBWV9BTExP
VzsKKyAgICBjYXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQ6Cisg
ICAgICAgIHJldHVybiBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORDsKKyAgICBj
YXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVueToKKyAgICAgICAgcmV0dXJuIFdFQktJVF9B
VVRPUExBWV9ERU5ZOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBXRUJLSVRfQVVUT1BM
QVlfQUxMT1dfV0lUSE9VVF9TT1VORDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVQb2xpY2llc1By
aXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40OWFjYWI2YjVhYmIxMjUxZjNmMjg5YjhjMzZmZWIyMWNmYmMx
YzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJB
UElXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIK
KyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCisKK0FQSTo6V2Vic2l0ZVBvbGljaWVz
KiB3ZWJraXRXZWJzaXRlUG9saWNpZXNHZXRXZWJzaXRlUG9saWNpZXMoV2ViS2l0V2Vic2l0ZVBv
bGljaWVzKik7CitXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGEgd2Via2l0V2Vic2l0ZVBvbGlj
aWVzR2V0UG9saWNpZXNEYXRhKFdlYktpdFdlYnNpdGVQb2xpY2llcyopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oCmlu
ZGV4IGYxOTJhMWQzNzlkYzY0MjFkZjc2MDQ3NGQyMDY0OWU0NWZmMGM4Y2IuLjBmZjg5ZTQ5Yzc2
M2QzNmY1ZTRhZTNiZDFjMTE3ZDYzMWMxMzJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9saWN5RGVjaXNpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvbGljeURlY2lzaW9uLmgKQEAgLTI2LDYgKzI2
LDcgQEAKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaD4K
IAogR19CRUdJTl9ERUNMUwogCkBAIC02Miw2ICs2MywxMCBAQCB3ZWJraXRfcG9saWN5X2RlY2lz
aW9uX2dldF90eXBlICh2b2lkKTsKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3BvbGljeV9kZWNp
c2lvbl91c2UgICAgICAoV2ViS2l0UG9saWN5RGVjaXNpb24gKmRlY2lzaW9uKTsKIAorV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfcG9saWN5X2RlY2lzaW9uX3VzZV93aXRoX3BvbGljaWVzICAoV2Vi
S2l0UG9saWN5RGVjaXNpb24gKmRlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqcG9saWNpZXMpOworCiBXRUJL
SVRfQVBJIHZvaWQKIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25faWdub3JlICAgKFdlYktpdFBvbGlj
eURlY2lzaW9uICpkZWNpc2lvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggMTMxMzYwYzNkZDBlYmZjYTExYzZlNzE0ODZlNjEx
NmQ3ZGYxMGJjZi4uYWM1MTY4M2I2NzVkNWE5OGI2NjU1MzIzZjlhNTFjNDllNzYyM2ExZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAg
LTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkluc3BlY3Rvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0V2ViUmVzb3VyY2UuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYnNpdGVQb2xp
Y2llcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld0Jhc2UuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuaD4KQEAgLTU4NCw2ICs1ODUsMTEgQEAgd2Via2l0X3dl
Yl92aWV3X3NldF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dwogV0VCS0lUX0FQSSBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgKgogd2Via2l0X3dlYl92aWV3
X2dldF9pbnB1dF9tZXRob2RfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAqd2ViX3ZpZXcpOwogCisKK1dFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVz
ICoKK3dlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKworCiBHX0VORF9ERUNMUwog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdHdGsuY3BwCmluZGV4IDUyZDVmM2U1ZmE4Y2MzN2QxOGY3ZjZmZmM3NzM0MGE5NDRi
MzIyN2YuLjliOTkyNzViMjRlZmM0YWNjN2FmMDE1NTBjMWVmM2Y3NzhlMDRlMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNw
cApAQCAtMzM3LDggKzMzNyw4IEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRo
X2NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKICAqIFlvdSBjYW4gYWxzbyB1c2Ug
dGhpcyBtZXRob2QgdG8gaW1wbGVtZW50IG90aGVyIHByb2Nlc3MgbW9kZWxzIGJhc2VkIG9uICVX
RUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTLAogICogbGlr
ZSBmb3IgZXhhbXBsZSwgc2hhcmluZyB0aGUgc2FtZSB3ZWIgcHJvY2VzcyBmb3IgYWxsIHRoZSB2
aWV3cyBpbiB0aGUgc2FtZSBzZWN1cml0eSBkb21haW4uCiAgKgotICogVGhlIG5ld2x5IGNyZWF0
ZWQgI1dlYktpdFdlYlZpZXcgd2lsbCBhbHNvIGhhdmUgdGhlIHNhbWUgI1dlYktpdFVzZXJDb250
ZW50TWFuYWdlcgotICogYW5kICNXZWJLaXRTZXR0aW5ncyBhcyBAd2ViX3ZpZXcuCisgKiBUaGUg
bmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWxsIGFsc28gaGF2ZSB0aGUgc2FtZSAjV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyLAorICogI1dlYktpdFNldHRpbmdzLCBhbmQgI1dlYktpdFdl
YnNpdGVQb2xpY2llcyBhcyBAd2ViX3ZpZXcuCiAgKgogICogUmV0dXJuczogKHRyYW5zZmVyIGZ1
bGwpOiBUaGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWRnZXQKICAqCkBAIC0zNTIs
NiArMzUyLDcgQEAgR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92
aWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdl
ciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAg
ICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyks
CiAgICAgICAgICJyZWxhdGVkLXZpZXciLCB3ZWJWaWV3LAorICAgICAgICAid2Vic2l0ZS1wb2xp
Y2llcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAg
ICAgICAgbnVsbHB0cikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDA5NDdmN2Uw
NjExNzc2ZjViYTI5NjdhMGQ2OWIxMjFiMDc4NjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlUG9saWNpZXMuaApAQCAtMCww
ICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRl
ZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJ
T04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGly
ZWN0bHkuIgorI2VuZGlmCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgor
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNk
ZWZpbmUgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUyAgICAgICAgICAgICh3ZWJraXRfd2Vi
c2l0ZV9wb2xpY2llc19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lF
UyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJL
SVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLCBXZWJLaXRXZWJzaXRlUG9saWNpZXMpKQorI2RlZmlu
ZSBXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFUyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTKSkKKyNkZWZp
bmUgV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCU0lURV9QT0xJQ0lFUywgV2ViS2l0
V2Vic2l0ZVBvbGljaWVzQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lF
U19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRf
VFlQRV9XRUJTSVRFX1BPTElDSUVTKSkKKyNkZWZpbmUgV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNf
R0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lU
X1RZUEVfV0VCU0lURV9QT0xJQ0lFUywgV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MpKQorCit0
eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGljaWVzICAgICAgICBXZWJLaXRXZWJzaXRl
UG9saWNpZXM7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZVBvbGljaWVzQ2xhc3MgICBX
ZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRl
UG9saWNpZXNQcml2YXRlIFdlYktpdFdlYnNpdGVQb2xpY2llc1ByaXZhdGU7CisKK3N0cnVjdCBf
V2ViS2l0V2Vic2l0ZVBvbGljaWVzIHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIFdlYktp
dFdlYnNpdGVQb2xpY2llc1ByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYnNp
dGVQb2xpY2llc0NsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAg
dm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7Cisg
ICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7Cit9OworCisvKioKKyAqIFdlYktp
dEF1dG9wbGF5UG9saWN5OgorICogQFdFQktJVF9BVVRPUExBWV9BTExPVzogRG8gbm90IHJlc3Ry
aWN0IGF1dG9wbGF5LgorICogQFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EOiBB
bGxvdyB2aWRlb3MgdG8gYXV0b3BsYXkgaWYKKyAqICAgICB0aGV5IGhhdmUgbm8gYXVkaW8gdHJh
Y2ssIG9yIGlmIHRoZWlyIGF1ZGlvIHRyYWNrIGlzIG11dGVkLgorICogQFdFQktJVF9BVVRPUExB
WV9ERU5ZOiBOZXZlciBhbGxvdyBhdXRvcGxheS4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRv
IHNwZWNpZnkgYXV0b3BsYXkgcG9saWNpZXMuCisgKgorICogU2luY2U6IDIuMzAKKyAqLwordHlw
ZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfQVVUT1BMQVlfQUxMT1csCisgICAgV0VCS0lUX0FVVE9Q
TEFZX0FMTE9XX1dJVEhPVVRfU09VTkQsCisgICAgV0VCS0lUX0FVVE9QTEFZX0RFTlkKK30gV2Vi
S2l0QXV0b3BsYXlQb2xpY3k7CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJzaXRlX3Bv
bGljaWVzX2dldF90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitX
RUJLSVRfQVBJIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2ll
c19uZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lU
X0FQSSBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKgord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3
X3dpdGhfcG9saWNpZXMgICAgICAgICAgICAgICAgICAgICAoY29uc3QgZ2NoYXIgKmZpcnN0X3Bv
bGljeV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLi4uKTsKKworV0VCS0lUX0FQSSBXZWJLaXRBdXRvcGxheVBvbGlj
eQord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeSAgICAgICAgICAg
ICAgICAgICAoV2ViS2l0V2Vic2l0ZVBvbGljaWVzICpwb2xpY2llcyk7CisKK0dfRU5EX0RFQ0xT
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCA0ODJiMDZjZWNmYTE3YmJkMzk5
Y2I4OGQ4NGQxMWFkM2Q5NDVhZWEwLi44MDVlYTA3NjJmODEyOTRkMGQyOTQyNWI5MzdiNzQwZTRh
OTI4ZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTE5OCw2ICsxOTgs
NyBAQCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudAogV2ViS2l0U25hcHNob3RPcHRpb25zCiBX
ZWJLaXRTbmFwc2hvdFJlZ2lvbgogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uCitX
ZWJLaXRBdXRvcGxheVBvbGljeQogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENvbW1hbmRzPgogV0VC
S0lUX0VESVRJTkdfQ09NTUFORF9DVVQKQEAgLTI4OCw2ICsyODksNyBAQCB3ZWJraXRfd2ViX3Zp
ZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2UKIHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9f
cGFnZV9maW5pc2gKIHdlYmtpdF93ZWJfdmlld19zZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKIHdl
YmtpdF93ZWJfdmlld19nZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKK3dlYmtpdF93ZWJfdmlld19n
ZXRfd2Vic2l0ZV9wb2xpY2llcwogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApAQCAtODQ3LDYgKzg0OSw3IEBAIFdlYktpdFBvbGlj
eURlY2lzaW9uCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkCiB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX2lnbm9yZQogd2Via2l0X3BvbGljeV9kZWNpc2lvbl91c2UKK3dlYmtpdF9wb2xp
Y3lfZGVjaXNpb25fdXNlX3dpdGhfcG9saWNpZXMKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBX
ZWJLaXRQb2xpY3lEZWNpc2lvbkNsYXNzCkBAIC0xODQ2LDMgKzE4NDksMjYgQEAgV0VCS0lUX1VT
RVJfTUVTU0FHRV9HRVRfQ0xBU1MKIFdlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZQogd2Via2l0X3Vz
ZXJfbWVzc2FnZV9nZXRfdHlwZQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPldlYktp
dFdlYnNpdGVQb2xpY2llczwvRklMRT4KK1dlYktpdFdlYnNpdGVQb2xpY2llcword2Via2l0X3dl
YnNpdGVfcG9saWNpZXNfbmV3Cit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xp
Y2llcword2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeQorCis8U1VC
U0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzCitXRUJLSVRfSVNf
V0VCU0lURV9QT0xJQ0lFUworV0VCS0lUX0lTX1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1MKK1dFQktJ
VF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMKK1dFQktJVF9XRUJTSVRFX1BPTElDSUVTCitXRUJLSVRf
V0VCU0lURV9QT0xJQ0lFU19DTEFTUworV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NMQVNT
CisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlCit3
ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfdHlwZQorPC9TRUNUSU9OPgorCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9saWN5RGVjaXNpb24u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9saWN5RGVjaXNpb24u
aAppbmRleCBiZmZmZWQxYzc0YjE1NDg1NDIzMzNmZjFiY2IxNTM5NDY0NjE2YzA5Li5mZjAzYTBm
NWI4ZThjM2ZmOGYzYTA4YjI1NWE2MzRlNjIzMDAwZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFBvbGljeURlY2lzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRQb2xpY3lEZWNpc2lvbi5oCkBAIC0yNiw2
ICsyNiw3IEBACiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHdwZS9XZWJL
aXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oPgogCiBH
X0JFR0lOX0RFQ0xTCiAKQEAgLTYyLDYgKzYzLDEwIEBAIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25f
Z2V0X3R5cGUgKHZvaWQpOwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9u
X3VzZSAgICAgIChXZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24pOwogCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhfcG9saWNpZXMgIChXZWJLaXRQ
b2xpY3lEZWNpc2lvbiAqZGVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICpwb2xpY2llcyk7CisKIFdFQktJVF9B
UEkgdm9pZAogd2Via2l0X3BvbGljeV9kZWNpc2lvbl9pZ25vcmUgICAoV2ViS2l0UG9saWN5RGVj
aXNpb24gKmRlY2lzaW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFdlYlZpZXcuaAppbmRleCAyNjRmZTY4Y2YyZGY1MGNmYTU2YTlmNzIzNWM4Y2MxZDU1
MDdkM2VkLi4yMzE0OWIwYmY3NGFkMGI2NjgzOTFmZjlkNmNmMWQ5OGZiYzE1OGE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAtNTMs
NiArNTMsNyBAQAogI2luY2x1ZGUgPHdwZS9XZWJLaXRVc2VyTWVzc2FnZS5oPgogI2luY2x1ZGUg
PHdwZS9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlJlc291cmNl
Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oPgogI2luY2x1ZGUgPHdw
ZS9XZWJLaXRXZWJWaWV3QmFja2VuZC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJWaWV3U2Vz
c2lvblN0YXRlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuaD4KQEAg
LTU2MSw2ICs1NjIsOSBAQCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2lucHV0X21ldGhvZF9jb250ZXh0
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3CiBXRUJLSVRfQVBJIFdlYktpdElucHV0TWV0aG9k
Q29udGV4dCAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lucHV0X21ldGhvZF9jb250ZXh0ICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lU
X0FQSSBXZWJLaXRXZWJzaXRlUG9saWNpZXMgKgord2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRl
X3BvbGljaWVzICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZVBvbGljaWVzLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVQb2xpY2llcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4NzY2NWY1NDNlNzg5MTI5NzVhMzQ3N2MzMTBmYzM3M2FhM2Y4N2QKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVQb2xpY2ll
cy5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMu
TC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZiAhZGVmaW5lZChfX1dFQktJVF9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQy
X0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3cGUvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVk
ZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Z2lvL2dp
by5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKwor
I2RlZmluZSBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTICAgICAgICAgICAgKHdlYmtpdF93
ZWJzaXRlX3BvbGljaWVzX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJTSVRFX1BPTElD
SUVTKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdF
QktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMsIFdlYktpdFdlYnNpdGVQb2xpY2llcykpCisjZGVm
aW5lIFdFQktJVF9JU19XRUJTSVRFX1BPTElDSUVTKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMpKQorI2Rl
ZmluZSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVD
S19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLCBXZWJL
aXRXZWJzaXRlUG9saWNpZXNDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJTSVRFX1BPTElD
SUVTX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJ
VF9UWVBFX1dFQlNJVEVfUE9MSUNJRVMpKQorI2RlZmluZSBXRUJLSVRfV0VCU0lURV9QT0xJQ0lF
U19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJL
SVRfVFlQRV9XRUJTSVRFX1BPTElDSUVTLCBXZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcykpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXMgICAgICAgIFdlYktpdFdlYnNp
dGVQb2xpY2llczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJzaXRlUG9saWNpZXNDbGFzcyAg
IFdlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNp
dGVQb2xpY2llc1ByaXZhdGUgV2ViS2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZTsKKworc3RydWN0
IF9XZWJLaXRXZWJzaXRlUG9saWNpZXMgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgV2Vi
S2l0V2Vic2l0ZVBvbGljaWVzUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2Vi
c2l0ZVBvbGljaWVzQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsK
KyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisKKy8qKgorICogV2Vi
S2l0QXV0b3BsYXlQb2xpY3k6CisgKiBAV0VCS0lUX0FVVE9QTEFZX0FMTE9XOiBEbyBub3QgcmVz
dHJpY3QgYXV0b3BsYXkuCisgKiBAV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ6
IEFsbG93IHZpZGVvcyB0byBhdXRvcGxheSBpZgorICogICAgIHRoZXkgaGF2ZSBubyBhdWRpbyB0
cmFjaywgb3IgaWYgdGhlaXIgYXVkaW8gdHJhY2sgaXMgbXV0ZWQuCisgKiBAV0VCS0lUX0FVVE9Q
TEFZX0RFTlk6IE5ldmVyIGFsbG93IGF1dG9wbGF5LgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQg
dG8gc3BlY2lmeSBhdXRvcGxheSBwb2xpY2llcy4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit0
eXBlZGVmIGVudW0geworICAgIFdFQktJVF9BVVRPUExBWV9BTExPVywKKyAgICBXRUJLSVRfQVVU
T1BMQVlfQUxMT1dfV0lUSE9VVF9TT1VORCwKKyAgICBXRUJLSVRfQVVUT1BMQVlfREVOWQorfSBX
ZWJLaXRBdXRvcGxheVBvbGljeTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYnNpdGVf
cG9saWNpZXNfZ2V0X3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisK
K1dFQktJVF9BUEkgV2ViS2l0V2Vic2l0ZVBvbGljaWVzICoKK3dlYmtpdF93ZWJzaXRlX3BvbGlj
aWVzX25ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJL
SVRfQVBJIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqCit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19u
ZXdfd2l0aF9wb2xpY2llcyAgICAgICAgICAgICAgICAgICAgIChjb25zdCBnY2hhciAgKmZpcnN0
X3BvbGljeV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKworV0VCS0lUX0FQSSBXZWJLaXRBdXRvcGxheVBv
bGljeQord2Via2l0X3dlYnNpdGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeSAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcyk7CisKK0dfRU5EX0RF
Q0xTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3Bl
LTEuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mv
d3BlLTEuMC1zZWN0aW9ucy50eHQKaW5kZXggMDJmNDlhZGQwNTljMGQyODJlNzUxYTdlZTY5ODEw
Mjc3MTEyMzgxZC4uNGJiNWRkYWQwYzY4NDM2MWJlZmQ3ZTI2NmZmYjhjOGZjZmI2MDAxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2Vj
dGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUt
MS4wLXNlY3Rpb25zLnR4dApAQCAtMTcyLDYgKzE3Miw3IEBAIFdlYktpdFNhdmVNb2RlCiBXZWJL
aXRJbnNlY3VyZUNvbnRlbnRFdmVudAogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
CiBXZWJLaXRGcmFtZURpc3BsYXllZENhbGxiYWNrCitXZWJLaXRBdXRvcGxheVBvbGljeQogCiA8
U1VCU0VDVElPTiBFZGl0aW5nIENvbW1hbmRzPgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQK
QEAgLTI2MCw2ICsyNjEsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfc2VuZF9tZXNzYWdlX3RvX3BhZ2UK
IHdlYmtpdF93ZWJfdmlld19zZW5kX21lc3NhZ2VfdG9fcGFnZV9maW5pc2gKIHdlYmtpdF93ZWJf
dmlld19zZXRfaW5wdXRfbWV0aG9kX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfaW5wdXRf
bWV0aG9kX2NvbnRleHQKK3dlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcwogCiA8
U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dApAQCAtODUxLDYgKzg1Myw3IEBAIFdlYktpdFBvbGljeURlY2lzaW9uCiB3ZWJraXRfcG9saWN5
X2RlY2lzaW9uX2Rvd25sb2FkCiB3ZWJraXRfcG9saWN5X2RlY2lzaW9uX2lnbm9yZQogd2Via2l0
X3BvbGljeV9kZWNpc2lvbl91c2UKK3dlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhfcG9s
aWNpZXMKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRQb2xpY3lEZWNpc2lvbkNsYXNz
CkBAIC0xNTQ1LDMgKzE1NDgsMjQgQEAgV0VCS0lUX1RZUEVfSU5QVVRfTUVUSE9EX1VOREVSTElO
RQogPEZJTEU+V2ViS2l0VVJJVXRpbGl0aWVzPC9GSUxFPgogd2Via2l0X3VyaV9mb3JfZGlzcGxh
eQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPldlYktpdFdlYnNpdGVQb2xpY2llczwv
RklMRT4KK1dlYktpdFdlYnNpdGVQb2xpY2llcword2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3
Cit3ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcword2Via2l0X3dlYnNp
dGVfcG9saWNpZXNfZ2V0X2F1dG9wbGF5X3BvbGljeQorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4K
K1dlYktpdFdlYnNpdGVQb2xpY2llc0NsYXNzCitXRUJLSVRfSVNfV0VCU0lURV9QT0xJQ0lFUwor
V0VCS0lUX0lTX1dFQlNJVEVfUE9MSUNJRVNfQ0xBU1MKK1dFQktJVF9UWVBFX1dFQlNJVEVfUE9M
SUNJRVMKK1dFQktJVF9XRUJTSVRFX1BPTElDSUVTCitXRUJLSVRfV0VCU0lURV9QT0xJQ0lFU19D
TEFTUworV0VCS0lUX1dFQlNJVEVfUE9MSUNJRVNfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFBy
aXZhdGU+CitXZWJLaXRXZWJzaXRlUG9saWNpZXNQcml2YXRlCit3ZWJraXRfd2Vic2l0ZV9wb2xp
Y2llc19nZXRfdHlwZQorPC9TRUNUSU9OPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE5ZjFmYmYzMWRkMzA2ZjlkOWViM2VkOTUzZTRiNmY0MTY1
NWU5Y2QuLjYwOTE0YWQxMWNkODhiMGNhZjA5MTlkOWIyZmY2NjRkODg3OWIyZjggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAyMC0wNi0wOCAgQ2hhcmxpZSBUdXJuZXIgIDxjdHVybmVyQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0dUS10gRGlzYWJsZSB2aWRlbyBhdXRvcGxheQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Q2FybG9zIEdhcmNpYSBDYW1wb3MuCisKKyAgICAgICAgVXBkYXRlIHRoZSB2YXJpb3VzIGNhbGxz
aXRlcyBmb3IgY29uc3RydWN0aW5nIGEgdmlldyB0byB0YWtlIGludG8KKyAgICAgICAgYWNjb3Vu
dCB0aGUgZGVmYXVsdCBwb2xpY2llcy4gSSBjaG9zZSB0aGUgZGVmYXVsdCBhcyBhdXRvcGxheQor
ICAgICAgICBhbGxvdyB3aXRob3V0IHNvdW5kLCB3aGljaCBpcyBpbiBrZWVwaW5nIHdpdGggV2Vi
Q29yZSdzIGNob2ljZS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93
LmM6CisgICAgICAgICh3ZWJWaWV3RGVjaWRlUG9saWN5KToKKyAgICAgICAgKG5ld1RhYkNhbGxi
YWNrKToKKyAgICAgICAgKG9wZW5Qcml2YXRlV2luZG93KToKKyAgICAgICAgKGJyb3dzZXJfd2lu
ZG93X2dldF9vcl9jcmVhdGVfd2ViX3ZpZXdfZm9yX2F1dG9tYXRpb24pOgorICAgICAgICAoYnJv
d3Nlcl93aW5kb3dfY3JlYXRlX3dlYl92aWV3X2luX25ld190YWJfZm9yX2F1dG9tYXRpb24pOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93c2Vy
VGFiKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcDogQWRkCisgICAgICAgIGF1dG9wbGF5
IHBvbGljeSB0ZXN0cywgYW5kIHVzZSBtb2Rlcm4gY2xhc3MgaW5pdGlhbGl6ZXJzLgorICAgICAg
ICAodGVzdEF1dG9wbGF5UG9saWN5KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisKIDIwMjAtMDYt
MTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEs0XSBHZXQgTWluaUJyb3dzZXIgcmVhZHkgZm9yIEdUSzQKZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
QnJvd3NlcldpbmRvdy5jCmluZGV4IGJjY2VlY2UzM2FkMzY1YTg0MDc4NTc1OTQyMzYzMDg2ODNm
ZGYwMGIuLjhmYWE5MjEzNjk5MTcxNjhkMWVjZjc1Njk5NThhNDA0MGY1ZGY0OWUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwpAQCAtNDQ2LDYgKzQ0Niw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiB3ZWJWaWV3RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktp
dFBvbGljeURlY2lzaW9uCiAgICAgICAgICJzZXR0aW5ncyIsIHdlYmtpdF93ZWJfdmlld19nZXRf
c2V0dGluZ3Mod2ViVmlldyksCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJp
cy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCB3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxl
ZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcpLAorICAgICAgICAid2Vic2l0ZS1wb2xpY2llcyIsIHdl
YmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcyh3ZWJWaWV3KSwKICAgICAgICAgTlVM
TCkpOwogICAgIGJyb3dzZXJfd2luZG93X2FwcGVuZF92aWV3KHdpbmRvdywgbmV3V2ViVmlldyk7
CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2
aWdhdGlvbl9hY3Rpb25fZ2V0X3JlcXVlc3QobmF2aWdhdGlvbkFjdGlvbikpOwpAQCAtNjMxLDYg
KzYzMiw3IEBAIHN0YXRpYyB2b2lkIG5ld1RhYkNhbGxiYWNrKEdTaW1wbGVBY3Rpb24gKmFjdGlv
biwgR1ZhcmlhbnQgKnBhcmFtZXRlciwgZ3BvaW50ZXIKICAgICAgICAgInNldHRpbmdzIiwgd2Vi
a2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSwKICAgICAgICAgInVzZXItY29udGVu
dC1tYW5hZ2VyIiwgd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJW
aWV3KSwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdlYmtpdF93ZWJf
dmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCisgICAgICAgICJ3ZWJz
aXRlLXBvbGljaWVzIiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGljaWVzKHdlYlZp
ZXcpLAogICAgICAgICBOVUxMKSkpOwogICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyh3aW5kb3ct
PnVyaUVudHJ5KTsKICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShHVEtfTk9URUJP
T0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKQEAgLTY1MSw2ICs2NTMsNyBAQCBzdGF0aWMgdm9p
ZCBvcGVuUHJpdmF0ZVdpbmRvdyhHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJh
bWV0ZXIsIGdwb2ludAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtZXBo
ZW1lcmFsIiwgVFJVRSwKICAgICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIHdl
YmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldyksCisgICAg
ICAgICJ3ZWJzaXRlLXBvbGljaWVzIiwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX3BvbGlj
aWVzKHdlYlZpZXcpLAogICAgICAgICBOVUxMKSk7CiAgICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cg
PSBicm93c2VyX3dpbmRvd19uZXcoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aW5kb3ctPndlYkNvbnRl
eHQpOwogICAgIGd0a193aW5kb3dfc2V0X2FwcGxpY2F0aW9uKEdUS19XSU5ET1cobmV3V2luZG93
KSwgZ3RrX3dpbmRvd19nZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpKSk7CkBAIC0x
NDUxLDYgKzE0NTQsNyBAQCBXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19nZXRfb3JfY3Jl
YXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKEJyb3dzZXJXaW5kbwogICAgICAgICAic2V0dGlu
Z3MiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpLAogICAgICAgICAidXNl
ci1jb250ZW50LW1hbmFnZXIiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5h
Z2VyKHdlYlZpZXcpLAogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9uIiwgVFJV
RSwKKyAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNp
dGVfcG9saWNpZXMod2ViVmlldyksCiAgICAgICAgIE5VTEwpKTsKICAgICBHdGtXaWRnZXQgKm5l
d1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhHVEtfV0lORE9XKHdpbmRvdyksIHdpbmRvdy0+
d2ViQ29udGV4dCk7CiAgICAgZ3RrX3dpbmRvd19zZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyhu
ZXdXaW5kb3cpLCBndGtfd2luZG93X2dldF9hcHBsaWNhdGlvbihHVEtfV0lORE9XKHdpbmRvdykp
KTsKQEAgLTE0NzIsNiArMTQ3Niw3IEBAIFdlYktpdFdlYlZpZXcgKmJyb3dzZXJfd2luZG93X2Ny
ZWF0ZV93ZWJfdmlld19pbl9uZXdfdGFiX2Zvcl9hdXRvbWF0aW9uKEJyb3dzZXJXCiAgICAgICAg
ICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50
X21hbmFnZXIod2ViVmlldyksCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24i
LCBUUlVFLAogICAgICAgICAiYXV0b21hdGlvbi1wcmVzZW50YXRpb24tdHlwZSIsIFdFQktJVF9B
VVRPTUFUSU9OX0JST1dTSU5HX0NPTlRFWFRfUFJFU0VOVEFUSU9OX1RBQiwKKyAgICAgICAgIndl
YnNpdGUtcG9saWNpZXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMod2Vi
VmlldyksCiAgICAgICAgIE5VTEwpKTsKICAgICBicm93c2VyX3dpbmRvd19hcHBlbmRfdmlldyh3
aW5kb3csIG5ld1dlYlZpZXcpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaShuZXdXZWJW
aWV3LCAiYWJvdXQ6YmxhbmsiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9t
YWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4IDBiMjM2NjIwZDljNzBi
NGI5NGUyODBjYTUwODExM2M4NTdkNzU4MzIuLjg3ZmE3ZDIzMGNkOGFhMjNjZGRiZGIxYWVmMGZl
M2Q1ODQ1OWJlYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwpAQCAtNDAsNiArNDAsNyBAQAogCiBzdGF0
aWMgY29uc3QgZ2NoYXIgKip1cmlBcmd1bWVudHMgPSBOVUxMOwogc3RhdGljIGNvbnN0IGdjaGFy
ICoqaWdub3JlSG9zdHMgPSBOVUxMOworc3RhdGljIFdlYktpdEF1dG9wbGF5UG9saWN5IGF1dG9w
bGF5UG9saWN5ID0gV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRfU09VTkQ7CiBzdGF0aWMg
R2RrUkdCQSAqYmFja2dyb3VuZENvbG9yOwogc3RhdGljIGdib29sZWFuIGVkaXRvck1vZGU7CiBz
dGF0aWMgY29uc3QgY2hhciAqc2Vzc2lvbkZpbGU7CkBAIC03NiwxMyArNzcsMTQgQEAgc3RhdGlj
IGdjaGFyICphcmd1bWVudFRvVVJMKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogICAgIHJldHVybiBm
aWxlVVJMOwogfQogCi1zdGF0aWMgV2ViS2l0V2ViVmlldyAqY3JlYXRlQnJvd3NlclRhYihCcm93
c2VyV2luZG93ICp3aW5kb3csIFdlYktpdFNldHRpbmdzICp3ZWJraXRTZXR0aW5ncywgV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyICp1c2VyQ29udGVudE1hbmFnZXIpCitzdGF0aWMgV2ViS2l0V2Vi
VmlldyAqY3JlYXRlQnJvd3NlclRhYihCcm93c2VyV2luZG93ICp3aW5kb3csIFdlYktpdFNldHRp
bmdzICp3ZWJraXRTZXR0aW5ncywgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICp1c2VyQ29udGVu
dE1hbmFnZXIsIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqZGVmYXVsdFdlYnNpdGVQb2xpY2llcykK
IHsKICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKICAgICAgICAgIndlYi1jb250ZXh0IiwgYnJvd3Nl
cl93aW5kb3dfZ2V0X3dlYl9jb250ZXh0KHdpbmRvdyksCiAgICAgICAgICJzZXR0aW5ncyIsIHdl
YmtpdFNldHRpbmdzLAogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29udGVu
dE1hbmFnZXIsCiAgICAgICAgICJpcy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBhdXRvbWF0
aW9uTW9kZSwKKyAgICAgICAgIndlYnNpdGUtcG9saWNpZXMiLCBkZWZhdWx0V2Vic2l0ZVBvbGlj
aWVzLAogICAgICAgICBOVUxMKSk7CiAKICAgICBpZiAoZWRpdG9yTW9kZSkKQEAgLTkyLDYgKzk0
LDI3IEBAIHN0YXRpYyBXZWJLaXRXZWJWaWV3ICpjcmVhdGVCcm93c2VyVGFiKEJyb3dzZXJXaW5k
b3cgKndpbmRvdywgV2ViS2l0U2V0dGluZ3MgKndlCiAgICAgcmV0dXJuIHdlYlZpZXc7CiB9CiAK
K3N0YXRpYyBnYm9vbGVhbiBwYXJzZUF1dG9wbGF5UG9saWN5KGNvbnN0IGNoYXIgKm9wdGlvbk5h
bWUsIGNvbnN0IGNoYXIgKnZhbHVlLCBncG9pbnRlciBkYXRhLCBHRXJyb3IgKiplcnJvcikKK3sK
KyAgICBpZiAoIWdfc3RyY21wMCh2YWx1ZSwgImFsbG93IikpIHsKKyAgICAgICAgYXV0b3BsYXlQ
b2xpY3kgPSBXRUJLSVRfQVVUT1BMQVlfQUxMT1c7CisgICAgICAgIHJldHVybiBUUlVFOworICAg
IH0KKworICAgIGlmICghZ19zdHJjbXAwKHZhbHVlLCAiYWxsb3ctd2l0aG91dC1zb3VuZCIpKSB7
CisgICAgICAgIGF1dG9wbGF5UG9saWN5ID0gV0VCS0lUX0FVVE9QTEFZX0FMTE9XX1dJVEhPVVRf
U09VTkQ7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIGlmICghZ19zdHJjbXAw
KHZhbHVlLCAiZGVueSIpKSB7CisgICAgICAgIGF1dG9wbGF5UG9saWN5ID0gV0VCS0lUX0FVVE9Q
TEFZX0RFTlk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIGdfc2V0X2Vycm9y
KGVycm9yLCBHX09QVElPTl9FUlJPUiwgR19PUFRJT05fRVJST1JfRkFJTEVELCAiRmFpbGVkIHRv
IHBhcnNlICclcycgYXMgYW4gYXV0b3BsYXkgcG9saWN5LCB2YWxpZCBvcHRpb25zIGFyZSBhbGxv
dywgYWxsb3ctd2l0aG91dC1zb3VuZCwgYW5kIGRlbnkiLCB2YWx1ZSk7CisgICAgcmV0dXJuIEZB
TFNFOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4gcGFyc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgY2hh
ciAqb3B0aW9uTmFtZSwgY29uc3QgY2hhciAqdmFsdWUsIGdwb2ludGVyIGRhdGEsIEdFcnJvciAq
KmVycm9yKQogewogICAgIEdka1JHQkEgcmdiYTsKQEAgLTEwNiw2ICsxMjksNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4gcGFyc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgY2hhciAqb3B0aW9uTmFtZSwgY29u
c3QgY2hhciAqdmFsdWUsCiAKIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVP
cHRpb25zW10gPQogeworICAgIHsgImF1dG9wbGF5LXBvbGljeSIsIDAsIDAsIEdfT1BUSU9OX0FS
R19DQUxMQkFDSywgcGFyc2VBdXRvcGxheVBvbGljeSwgIkF1dG9wbGF5IHBvbGljeS4gVmFsaWQg
b3B0aW9ucyBhcmU6IGFsbG93LCBhbGxvdy13aXRob3V0LXNvdW5kLCBhbmQgZGVueSIsIE5VTEwg
fSwKICAgICB7ICJiZy1jb2xvciIsIDAsIDAsIEdfT1BUSU9OX0FSR19DQUxMQkFDSywgcGFyc2VC
YWNrZ3JvdW5kQ29sb3IsICJCYWNrZ3JvdW5kIGNvbG9yIiwgTlVMTCB9LAogICAgIHsgImVkaXRv
ci1tb2RlIiwgJ2UnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmVkaXRvck1vZGUsICJSdW4gaW4g
ZWRpdG9yIG1vZGUiLCBOVUxMIH0sCiAgICAgeyAiZGFyay1tb2RlIiwgJ2QnLCAwLCBHX09QVElP
Tl9BUkdfTk9ORSwgJmRhcmtNb2RlLCAiUnVuIGluIGRhcmsgbW9kZSIsIE5VTEwgfSwKQEAgLTU2
OCw2ICs1OTIsMTAgQEAgc3RhdGljIHZvaWQgYWN0aXZhdGUoR0FwcGxpY2F0aW9uICphcHBsaWNh
dGlvbiwgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzKQogICAgIHdlYmtpdF91c2VyX2Nv
bnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKHVzZXJDb250ZW50
TWFuYWdlciwgImFib3V0RGF0YSIpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QodXNlckNvbnRlbnRN
YW5hZ2VyLCAic2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OmFib3V0RGF0YSIsIEdfQ0FMTEJBQ0so
YWJvdXREYXRhU2NyaXB0TWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spLCB3ZWJDb250ZXh0KTsKIAor
ICAgIFdlYktpdFdlYnNpdGVQb2xpY2llcyAqZGVmYXVsdFdlYnNpdGVQb2xpY2llcyA9IHdlYmtp
dF93ZWJzaXRlX3BvbGljaWVzX25ld193aXRoX3BvbGljaWVzKAorICAgICAgICAiYXV0b3BsYXki
LCBhdXRvcGxheVBvbGljeSwKKyAgICAgICAgTlVMTCk7CisKICAgICBpZiAoY29udGVudEZpbHRl
cikgewogICAgICAgICBHRmlsZSAqY29udGVudEZpbHRlckZpbGUgPSBnX2ZpbGVfbmV3X2Zvcl9j
b21tYW5kbGluZV9hcmcoY29udGVudEZpbHRlcik7CiAKQEAgLTYxMyw3ICs2NDEsNyBAQCBzdGF0
aWMgdm9pZCBhY3RpdmF0ZShHQXBwbGljYXRpb24gKmFwcGxpY2F0aW9uLCBXZWJLaXRTZXR0aW5n
cyAqd2Via2l0U2V0dGluZ3MpCiAgICAgICAgIGludCBpOwogCiAgICAgICAgIGZvciAoaSA9IDA7
IHVyaUFyZ3VtZW50c1tpXTsgaSsrKSB7Ci0gICAgICAgICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJW
aWV3ID0gY3JlYXRlQnJvd3NlclRhYihtYWluV2luZG93LCB3ZWJraXRTZXR0aW5ncywgdXNlckNv
bnRlbnRNYW5hZ2VyKTsKKyAgICAgICAgICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBjcmVh
dGVCcm93c2VyVGFiKG1haW5XaW5kb3csIHdlYmtpdFNldHRpbmdzLCB1c2VyQ29udGVudE1hbmFn
ZXIsIGRlZmF1bHRXZWJzaXRlUG9saWNpZXMpOwogICAgICAgICAgICAgaWYgKCFpKQogICAgICAg
ICAgICAgICAgIGZpcnN0VGFiID0gR1RLX1dJREdFVCh3ZWJWaWV3KTsKICAgICAgICAgICAgIGdj
aGFyICp1cmwgPSBhcmd1bWVudFRvVVJMKHVyaUFyZ3VtZW50c1tpXSk7CkBAIC02MjEsNyArNjQ5
LDcgQEAgc3RhdGljIHZvaWQgYWN0aXZhdGUoR0FwcGxpY2F0aW9uICphcHBsaWNhdGlvbiwgV2Vi
S2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzKQogICAgICAgICAgICAgZ19mcmVlKHVybCk7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0g
Y3JlYXRlQnJvd3NlclRhYihtYWluV2luZG93LCB3ZWJraXRTZXR0aW5ncywgdXNlckNvbnRlbnRN
YW5hZ2VyKTsKKyAgICAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGNyZWF0ZUJyb3dzZXJU
YWIobWFpbldpbmRvdywgd2Via2l0U2V0dGluZ3MsIHVzZXJDb250ZW50TWFuYWdlciwgZGVmYXVs
dFdlYnNpdGVQb2xpY2llcyk7CiAgICAgICAgIGZpcnN0VGFiID0gR1RLX1dJREdFVCh3ZWJWaWV3
KTsKIAogICAgICAgICBpZiAoIWVkaXRvck1vZGUpIHsKQEAgLTYzNCw2ICs2NjIsOCBAQCBzdGF0
aWMgdm9pZCBhY3RpdmF0ZShHQXBwbGljYXRpb24gKmFwcGxpY2F0aW9uLCBXZWJLaXRTZXR0aW5n
cyAqd2Via2l0U2V0dGluZ3MpCiAKICAgICBnX2NsZWFyX29iamVjdCgmd2Via2l0U2V0dGluZ3Mp
OwogICAgIGdfb2JqZWN0X3VucmVmKHdlYkNvbnRleHQpOworICAgIGdfb2JqZWN0X3VucmVmKHVz
ZXJDb250ZW50TWFuYWdlcik7CisgICAgZ19vYmplY3RfdW5yZWYoZGVmYXVsdFdlYnNpdGVQb2xp
Y2llcyk7CiAKICAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMoZmlyc3RUYWIpOwogICAgIGd0a193
aWRnZXRfc2hvdyhHVEtfV0lER0VUKG1haW5XaW5kb3cpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xp
ZW50LmNwcAppbmRleCA3NjliY2M4OTE2YmI5YjFjMWFmZTI5ZDZiYzIwOWRkNDMyODAxNmE2Li5j
Yzk1MWFlZTBjYmRjYjQwYWJlYWM3ZjE5NWQ1MzkxNGVlYWE5YzUzIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQ
b2xpY3lDbGllbnQuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJMb2FkVHJhY2tp
bmdUZXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgorI2luY2x1ZGUgIldlYktp
dFdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTMyLDE5ICszMywyMSBAQCBwdWJsaWM6CiAK
ICAgICBlbnVtIFBvbGljeURlY2lzaW9uUmVzcG9uc2UgewogICAgICAgICBVc2UsCisgICAgICAg
IFVzZVdpdGhQb2xpY3ksCiAgICAgICAgIElnbm9yZSwKICAgICAgICAgRG93bmxvYWQsCiAgICAg
ICAgIE5vbmUKICAgICB9OwogCi0gICAgUG9saWN5Q2xpZW50VGVzdCgpCi0gICAgICAgIDogTG9h
ZFRyYWNraW5nVGVzdCgpCi0gICAgICAgICwgbV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlKE5vbmUp
Ci0gICAgICAgICwgbV9wb2xpY3lEZWNpc2lvblR5cGVGaWx0ZXIoMCkKLSAgICAgICAgLCBtX3Jl
c3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkoZmFsc2UpCi0gICAgICAgICwgbV9o
YWx0TWFpbkxvb3BBZnRlck1ha2luZ0RlY2lzaW9uKGZhbHNlKQorICAgIHN0YXRpYyB2b2lkIHRl
c3RIYW5kbGVyTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2soV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
KiB1c2VyQ29udGVudE1hbmFnZXIsIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRS
ZXN1bHQsIFBvbGljeUNsaWVudFRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KG1fd2ViVmlldywgImRlY2lkZS1wb2xpY3kiLCBHX0NBTExCQUNLKGRlY2lkZVBvbGlj
eUNhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmco
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkp
OworICAgICAgICBpZiAoZ19zdHJfZXF1YWwodmFsdWVTdHJpbmcuZ2V0KCksICJhdXRvcGxheWVk
IikpCisgICAgICAgICAgICB0ZXN0LT5tX2F1dG9wbGF5ZWQgPSB0cnVlOworICAgICAgICBlbHNl
IGlmIChnX3N0cl9lcXVhbCh2YWx1ZVN0cmluZy5nZXQoKSwgImRpZC1ub3QtcGxheSIpKQorICAg
ICAgICAgICAgdGVzdC0+bV9hdXRvcGxheWVkID0gZmFsc2U7CisKKyAgICAgICAgZ19tYWluX2xv
b3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKICAgICB9CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4g
cXVpdE1haW5Mb29wTGF0ZXIoR01haW5Mb29wKiBsb29wKQpAQCAtNTksNiArNjIsOSBAQCBwdWJs
aWM6CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICAgICAgd2Via2l0X3BvbGljeV9kZWNpc2lv
bl91c2UoZGVjaXNpb24pOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVXNlV2l0
aFBvbGljeToKKyAgICAgICAgICAgIHdlYmtpdF9wb2xpY3lfZGVjaXNpb25fdXNlX3dpdGhfcG9s
aWNpZXMoZGVjaXNpb24sIHRlc3QtPm1fd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIElnbm9yZToKICAgICAgICAgICAgIHdlYmtpdF9wb2xp
Y3lfZGVjaXNpb25faWdub3JlKGRlY2lzaW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTgs
MTEgKzEwNCw0NSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKLSAg
ICBQb2xpY3lEZWNpc2lvblJlc3BvbnNlIG1fcG9saWN5RGVjaXNpb25SZXNwb25zZTsKLSAgICBp
bnQgbV9wb2xpY3lEZWNpc2lvblR5cGVGaWx0ZXI7Ci0gICAgYm9vbCBtX3Jlc3BvbmRUb1BvbGlj
eURlY2lzaW9uQXN5bmNocm9ub3VzbHk7Ci0gICAgYm9vbCBtX2hhbHRNYWluTG9vcEFmdGVyTWFr
aW5nRGVjaXNpb247CisgICAgUG9saWN5Q2xpZW50VGVzdCgpCisgICAgICAgIDogTG9hZFRyYWNr
aW5nVGVzdCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImRl
Y2lkZS1wb2xpY3kiLCBHX0NBTExCQUNLKGRlY2lkZVBvbGljeUNhbGxiYWNrKSwgdGhpcyk7Cisg
ICAgICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2Fn
ZV9oYW5kbGVyKG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCAidGVzdEhhbmRsZXIiKTsKKyAg
ICAgICAgZ19zaWduYWxfY29ubmVjdChtX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgInNjcmlw
dC1tZXNzYWdlLXJlY2VpdmVkOjp0ZXN0SGFuZGxlciIsIEdfQ0FMTEJBQ0sodGVzdEhhbmRsZXJN
ZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIGJvb2wgbG9hZFVS
SUFuZFdhaXRGb3JBdXRvUGxheWVkKGNvbnN0IGNoYXIqIHVyaSwgV2ViS2l0QXV0b3BsYXlQb2xp
Y3kgcG9saWN5KQorICAgIHsKKyAgICAgICAgbV9hdXRvcGxheWVkID0gV1RGOjpudWxsb3B0Owor
ICAgICAgICBtX3dlYnNpdGVQb2xpY2llcyA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9wb2xp
Y2llc19uZXdfd2l0aF9wb2xpY2llcygiYXV0b3BsYXkiLCBwb2xpY3ksIG51bGxwdHIpKTsKKyAg
ICAgICAgbV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50VGVzdDo6VXNlV2l0
aFBvbGljeTsKKworICAgICAgICBsb2FkVVJJKHVyaSk7CisgICAgICAgIC8vIFJ1biB1bnRpbCB0
aGUgdXNlciBjb250ZW50IG1lc3NhZ2VzIGNvbWUgYmFjayBmcm9tIHRoZSB0ZXN0IEhUTUwuCisg
ICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICAgICAgcmV0dXJuIG1fYXV0
b3BsYXllZC52YWx1ZU9yKGZhbHNlKTsKKyAgICB9CisKKyAgICBib29sIHJ1bkpTQW5kV2FpdEZv
ckF1dG9QbGF5ZWQoY29uc3QgY2hhciogc2NyaXB0KQorICAgIHsKKyAgICAgICAgcnVuSmF2YVNj
cmlwdFdpdGhvdXRGb3JjZWRVc2VyR2VzdHVyZXNBbmRXYWl0VW50aWxGaW5pc2hlZChzY3JpcHQs
IG51bGxwdHIpOworCisgICAgICAgIC8vIFNwaW4gdW50aWwgYXV0b3BsYXkgc3RhdHVzIGlzIHJl
cG9ydGVkLCB0aGUgcnVuIEpTIEFQSSBjYW4KKyAgICAgICAgLy8gY29tcGxldGUgaXRzIG1haW4g
bG9vcCBiZWZvcmUgdGhlIHByb21pc2VzIGluIGF1dG9wbGF5LWNoZWNrIGZpcmUuCisgICAgICAg
IHdoaWxlICghbV9hdXRvcGxheWVkLmhhc1ZhbHVlKCkpCisgICAgICAgICAgICBnX21haW5fbG9v
cF9ydW4obV9tYWluTG9vcCk7CisKKyAgICAgICAgcmV0dXJuICptX2F1dG9wbGF5ZWQ7CisgICAg
fQorCisgICAgUG9saWN5RGVjaXNpb25SZXNwb25zZSBtX3BvbGljeURlY2lzaW9uUmVzcG9uc2Ug
eyBOb25lIH07CisgICAgaW50IG1fcG9saWN5RGVjaXNpb25UeXBlRmlsdGVyIHsgMCB9OworICAg
IGJvb2wgbV9yZXNwb25kVG9Qb2xpY3lEZWNpc2lvbkFzeW5jaHJvbm91c2x5IHsgZmFsc2UgfTsK
KyAgICBib29sIG1faGFsdE1haW5Mb29wQWZ0ZXJNYWtpbmdEZWNpc2lvbiB7IGZhbHNlIH07Cisg
ICAgT3B0aW9uYWw8Ym9vbD4gbV9hdXRvcGxheWVkOwogICAgIEdSZWZQdHI8V2ViS2l0UG9saWN5
RGVjaXNpb24+IG1fcHJldmlvdXNQb2xpY3lEZWNpc2lvbjsKKyAgICBHUmVmUHRyPFdlYktpdFdl
YnNpdGVQb2xpY2llcz4gbV93ZWJzaXRlUG9saWNpZXM7CiB9OwogCiBzdGF0aWMgdm9pZCB0ZXN0
TmF2aWdhdGlvblBvbGljeShQb2xpY3lDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpA
QCAtMjY5LDYgKzMwOSw0MyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVy
KiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogICAgICAgICBzb3Vw
X21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfRk9VTkQpOwogfQog
CitzdGF0aWMgdm9pZCB0ZXN0QXV0b3BsYXlQb2xpY3koUG9saWN5Q2xpZW50VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKK3sKKyNpZiBQTEFURk9STShHVEspCisgICAgLy8gVGhlIHdlYiB2aWV3
IG11c3QgYmUgcmVhbGl6ZWQgZm9yIHRoZSB2aWRlbyB0byBzdGFydCBwbGF5YmFjay4KKyAgICB0
ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7
CisjZW5kaWYKKworICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25UeXBlRmlsdGVyID0gV0VCS0lU
X1BPTElDWV9ERUNJU0lPTl9UWVBFX05BVklHQVRJT05fQUNUSU9OOworCisgICAgY29uc3QgY2hh
ciogcmVzb3VyY2VOYW1lID0gImF1dG9wbGF5LWNoZWNrLmh0bWwiOworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gcmVzb3VyY2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGly
KFRlc3Q6OldlYktpdDJSZXNvdXJjZXMpLmRhdGEoKSwgcmVzb3VyY2VOYW1lLCBudWxscHRyKSk7
CisgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNvdXJjZVVSTChnX2ZpbGVuYW1lX3RvX3VyaShyZXNv
dXJjZVBhdGguZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKworICAgIGdfYXNzZXJ0X2ZhbHNl
KHRlc3QtPmxvYWRVUklBbmRXYWl0Rm9yQXV0b1BsYXllZChyZXNvdXJjZVVSTC5nZXQoKSwgV0VC
S0lUX0FVVE9QTEFZX0RFTlkpKTsKKworICAgIC8vIEFzeW5jIHRlc3QKKyAgICB0ZXN0LT5tX3Jl
c3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSB0cnVlOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHRlc3QtPmxvYWRVUklBbmRXYWl0Rm9yQXV0b1BsYXllZChyZXNvdXJjZVVSTC5nZXQo
KSwgV0VCS0lUX0FVVE9QTEFZX0RFTlkpKTsKKyAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURl
Y2lzaW9uQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmxv
YWRVUklBbmRXYWl0Rm9yQXV0b1BsYXllZChyZXNvdXJjZVVSTC5nZXQoKSwgV0VCS0lUX0FVVE9Q
TEFZX0FMTE9XKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bG9hZFVSSUFuZFdhaXRGb3JB
dXRvUGxheWVkKHJlc291cmNlVVJMLmdldCgpLCBXRUJLSVRfQVVUT1BMQVlfQUxMT1dfV0lUSE9V
VF9TT1VORCkpOworCisgICAgLy8gTm93IGNoZWNrIGR5bmFtaWNhbGx5IHVwZGF0aW5nIHRoZSBs
b2FkZXIgcG9saWNpZXMKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5sb2FkVVJJQW5kV2FpdEZv
ckF1dG9QbGF5ZWQocmVzb3VyY2VVUkwuZ2V0KCksIFdFQktJVF9BVVRPUExBWV9ERU5ZKSk7Cisg
ICAgLy8gQ2hlY2sgdGhhdCBKUyBjYW4gbm90IHNpZGUtc3RlcCB0aGUgYWN0aXZlIHBvbGljeQor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPnJ1bkpTQW5kV2FpdEZvckF1dG9QbGF5ZWQoInBsYXlW
aWRlbygpOyIpKTsKKworICAgIC8vIFNpbGVudCBhdWRpbyB0cmFjayB0ZXN0cworICAgIHJlc291
cmNlTmFtZSA9ICJhdXRvcGxheS1uby1hdWRpby1jaGVjay5odG1sIjsKKyAgICByZXNvdXJjZVBh
dGgucmVzZXQoZ19idWlsZF9maWxlbmFtZShUZXN0OjpnZXRSZXNvdXJjZXNEaXIoVGVzdDo6V2Vi
S2l0MlJlc291cmNlcykuZGF0YSgpLCByZXNvdXJjZU5hbWUsIG51bGxwdHIpKTsKKyAgICByZXNv
dXJjZVVSTC5yZXNldChnX2ZpbGVuYW1lX3RvX3VyaShyZXNvdXJjZVBhdGguZ2V0KCksIG51bGxw
dHIsIG51bGxwdHIpKTsKKworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmxvYWRVUklBbmRXYWl0
Rm9yQXV0b1BsYXllZChyZXNvdXJjZVVSTC5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZX0RFTlkpKTsK
KyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmxvYWRVUklBbmRXYWl0Rm9yQXV0b1BsYXllZChyZXNv
dXJjZVVSTC5nZXQoKSwgV0VCS0lUX0FVVE9QTEFZX0FMTE9XKSk7CisgICAgZ19hc3NlcnRfdHJ1
ZSh0ZXN0LT5sb2FkVVJJQW5kV2FpdEZvckF1dG9QbGF5ZWQocmVzb3VyY2VVUkwuZ2V0KCksIFdF
QktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EKSk7Cit9CisKIHZvaWQgYmVmb3JlQWxs
KCkKIHsKICAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKQEAgLTI3Niw2ICsz
NTMsMTAgQEAgdm9pZCBiZWZvcmVBbGwoKQogCiAgICAgUG9saWN5Q2xpZW50VGVzdDo6YWRkKCJX
ZWJLaXRQb2xpY3lDbGllbnQiLCAibmF2aWdhdGlvbi1wb2xpY3kiLCB0ZXN0TmF2aWdhdGlvblBv
bGljeSk7CiAgICAgUG9saWN5Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRQb2xpY3lDbGllbnQiLCAi
cmVzcG9uc2UtcG9saWN5IiwgdGVzdFJlc3BvbnNlUG9saWN5KTsKKyAgICBQb2xpY3lDbGllbnRU
ZXN0OjphZGQoIldlYktpdFBvbGljeUNsaWVudCIsICJhdXRvcGxheS1wb2xpY3kiLCB0ZXN0QXV0
b3BsYXlQb2xpY3kpOworICAgIC8vIFdBUk5JTkc6IFRoaXMgdGVzdCBtdXN0IGNvbWUgbGFzdCwg
aXQgdXNlcyByYWNleSBjb25zdHJ1Y3RzIHRoYXQKKyAgICAvLyBpbnRlcmZlcmUgbm9uZGV0ZXJt
aW5pc2ljYWxseSB3aXRoIGFueSB0ZXN0IHJ1bm5pbmcgYWZ0ZXIgaXQuCisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzE5MAogICAgIFBvbGljeUNsaWVu
dFRlc3Q6OmFkZCgiV2ViS2l0UG9saWN5Q2xpZW50IiwgIm5ldy13aW5kb3ctcG9saWN5IiwgdGVz
dE5ld1dpbmRvd1BvbGljeSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGIwM2M5OTYy
NmYzMGFjYzY5MjIzZDk1NGFmYjhlNDIxYWViNDVhZjYuLmQ3Y2FmZmQwZTk5MmNjMzE1NzNkOGJi
NDVkOWYwZWQ2NzU5NjBmZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTE0Miw2ICsxMTQy
LDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SXNBdWRpb011dGVkKFdlYlZpZXdUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19n
ZXRfaXNfbXV0ZWQodGVzdC0+bV93ZWJWaWV3KSk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3QXV0b3BsYXlQb2xpY3koV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7Cisg
ICAgV2ViS2l0V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcyA9IHdlYmtpdF93ZWJfdmlld19nZXRf
d2Vic2l0ZV9wb2xpY2llcyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIGdfYXNzZXJ0X2NtcGludCh3
ZWJraXRfd2Vic2l0ZV9wb2xpY2llc19nZXRfYXV0b3BsYXlfcG9saWN5KHBvbGljaWVzKSwgPT0s
IFdFQktJVF9BVVRPUExBWV9BTExPV19XSVRIT1VUX1NPVU5EKTsKK30KKwogc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiB7CiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtMTM5OSw2ICsxNDA1LDcgQEAgdm9pZCBiZWZv
cmVBbGwoKQogICAgIEZyYW1lRGlzcGxheWVkVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImZy
YW1lLWRpc3BsYXllZCIsIHRlc3RXZWJWaWV3RnJhbWVEaXNwbGF5ZWQpOwogI2VuZGlmCiAgICAg
V2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJpcy1hdWRpby1tdXRlZCIsIHRlc3RX
ZWJWaWV3SXNBdWRpb011dGVkKTsKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgImF1dG9wbGF5LXBvbGljeSIsIHRlc3RXZWJWaWV3QXV0b3BsYXlQb2xpY3kpOwogfQogCiB2
b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYlZpZXdUZXN0LmNwcAppbmRleCA4ZTNmMzQ4ZDhhYjUxNGQ0NzgzZWNiMWFhZWEzYmJk
MjMwMjdhOWJlLi4xODJhMjRmOGUxNDFmODUwOWRjNGVlYWEwMjU4MjQ1ZTY1ZmFkOTJmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3Qu
Y3BwCkBAIC0yMCw2ICsyMCw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJWaWV3VGVzdC5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdJbnRlcm5hbC5oIgogCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KIApAQCAtMzE3LDYgKzMxOCwxOCBA
QCBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBXZWJWaWV3VGVzdDo6cnVuSmF2YVNjcmlwdEluV29y
bGRBbmRXYWl0VW50aWxGaW5pc2hlZChjbwogICAgIHJldHVybiBtX2phdmFzY3JpcHRSZXN1bHQ7
CiB9CiAKK1dlYktpdEphdmFzY3JpcHRSZXN1bHQqIFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0
V2l0aG91dEZvcmNlZFVzZXJHZXN0dXJlc0FuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIq
IGphdmFzY3JpcHQsIEdFcnJvcioqIGVycm9yKQoreworICAgIGlmIChtX2phdmFzY3JpcHRSZXN1
bHQpCisgICAgICAgIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZihtX2phdmFzY3JpcHRS
ZXN1bHQpOworICAgIG1famF2YXNjcmlwdFJlc3VsdCA9IDA7CisgICAgbV9qYXZhc2NyaXB0RXJy
b3IgPSBlcnJvcjsKKyAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YXNjcmlwdFdpdGhvdXRGb3JjZWRV
c2VyR2VzdHVyZXMobV93ZWJWaWV3LCBqYXZhc2NyaXB0LCAwLCByZWludGVycHJldF9jYXN0PEdB
c3luY1JlYWR5Q2FsbGJhY2s+KHJ1bkphdmFTY3JpcHRSZWFkeUNhbGxiYWNrKSwgdGhpcyk7Cisg
ICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworCisgICAgcmV0dXJuIG1famF2YXNjcmlw
dFJlc3VsdDsKK30KKwogY2hhciogV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJp
bmcoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKIHsKICAgICBhdXRv
KiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlw
dFJlc3VsdCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9XZWJWaWV3VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2Vi
Vmlld1Rlc3QuaAppbmRleCBjM2ZkZDk4MjU4OTExYjVlY2JmMzEwYzlhZWNlNGJjODUzYWNmNTBi
Li5iYjA3MDg4MDE5Yzg4ODE3ZWJiNjRkMTlhYmI4MjlkNTQ3NmNiNDdiIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKQEAgLTc4LDYg
Kzc4LDcgQEAgcHVibGljOgogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3Jp
cHRBbmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiBqYXZhc2NyaXB0LCBHRXJyb3IqKik7
CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdEZyb21HUmVzb3VyY2VB
bmRXYWl0VW50aWxGaW5pc2hlZChjb25zdCBjaGFyKiByZXNvdXJjZSwgR0Vycm9yKiopOwogICAg
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIHJ1bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVudGls
RmluaXNoZWQoY29uc3QgY2hhciogamF2YXNjcmlwdCwgY29uc3QgY2hhciogd29ybGQsIEdFcnJv
cioqKTsKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0V2l0aG91dEZv
cmNlZFVzZXJHZXN0dXJlc0FuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3Jp
cHQsIEdFcnJvcioqKTsKIAogICAgIC8vIEphdmFzY3JpcHQgcmVzdWx0IGhlbHBlcnMuCiAgICAg
c3RhdGljIGNoYXIqIGphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdCopOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>