<?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>98328</bug_id>
          
          <creation_ts>2012-10-03 16:44:51 -0700</creation_ts>
          <short_desc>[WK2] Activate plugins when user clicks on snapshot</short_desc>
          <delta_ts>2012-10-10 16:23:15 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.8</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>98318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>734198</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-03 16:44:51 -0700</bug_when>
    <thetext>Remove the placeholder and create a new plugin with the same initialization parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734200</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-10-03 16:45:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/12426681&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738183</commentid>
    <comment_count>2</comment_count>
      <attachid>167847</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-09 14:26:21 -0700</bug_when>
    <thetext>Created attachment 167847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738214</commentid>
    <comment_count>3</comment_count>
      <attachid>167847</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-09 14:51:43 -0700</bug_when>
    <thetext>Comment on attachment 167847
Patch

Attachment 167847 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14228797</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738224</commentid>
    <comment_count>4</comment_count>
      <attachid>167847</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-09 14:59:23 -0700</bug_when>
    <thetext>Comment on attachment 167847
Patch

Attachment 167847 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14238457</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738254</commentid>
    <comment_count>5</comment_count>
      <attachid>167847</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-09 15:24:21 -0700</bug_when>
    <thetext>Comment on attachment 167847
Patch

Attachment 167847 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14223887</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738258</commentid>
    <comment_count>6</comment_count>
      <attachid>167847</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-09 15:28:46 -0700</bug_when>
    <thetext>Comment on attachment 167847
Patch

Attachment 167847 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14218877</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738263</commentid>
    <comment_count>7</comment_count>
      <attachid>167847</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-09 15:34:21 -0700</bug_when>
    <thetext>Comment on attachment 167847
Patch

Attachment 167847 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14223883</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738268</commentid>
    <comment_count>8</comment_count>
      <attachid>167847</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-09 15:40:14 -0700</bug_when>
    <thetext>Comment on attachment 167847
Patch

Attachment 167847 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14228805</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738284</commentid>
    <comment_count>9</comment_count>
      <attachid>167869</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-09 15:57:35 -0700</bug_when>
    <thetext>Created attachment 167869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738320</commentid>
    <comment_count>10</comment_count>
      <attachid>167869</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-09 16:39:30 -0700</bug_when>
    <thetext>Comment on attachment 167869
Patch

Attachment 167869 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14245269</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738354</commentid>
    <comment_count>11</comment_count>
      <attachid>167869</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-09 17:22:05 -0700</bug_when>
    <thetext>Comment on attachment 167869
Patch

Attachment 167869 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14217984</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738355</commentid>
    <comment_count>12</comment_count>
      <attachid>167869</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-09 17:24:18 -0700</bug_when>
    <thetext>Comment on attachment 167869
Patch

Attachment 167869 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14249144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738383</commentid>
    <comment_count>13</comment_count>
      <attachid>167869</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-09 17:58:56 -0700</bug_when>
    <thetext>Comment on attachment 167869
Patch

Attachment 167869 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14214951</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738388</commentid>
    <comment_count>14</comment_count>
      <attachid>167869</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-09 18:02:17 -0700</bug_when>
    <thetext>Comment on attachment 167869
Patch

Attachment 167869 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14223932</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738392</commentid>
    <comment_count>15</comment_count>
      <attachid>167869</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-09 18:07:06 -0700</bug_when>
    <thetext>Comment on attachment 167869
Patch

Attachment 167869 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14244401</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738422</commentid>
    <comment_count>16</comment_count>
      <attachid>167891</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-09 18:41:42 -0700</bug_when>
    <thetext>Created attachment 167891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738459</commentid>
    <comment_count>17</comment_count>
      <attachid>167891</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-09 19:50:05 -0700</bug_when>
    <thetext>Comment on attachment 167891
Patch

Attachment 167891 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14231006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738464</commentid>
    <comment_count>18</comment_count>
      <attachid>167901</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-09 20:08:54 -0700</bug_when>
    <thetext>Created attachment 167901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738484</commentid>
    <comment_count>19</comment_count>
      <attachid>167901</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-09 20:44:26 -0700</bug_when>
    <thetext>Comment on attachment 167901
Patch

Attachment 167901 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14244439</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738501</commentid>
    <comment_count>20</comment_count>
      <attachid>167911</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-09 21:26:41 -0700</bug_when>
    <thetext>Created attachment 167911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738986</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-10 08:45:00 -0700</bug_when>
    <thetext>Holy mother, that passed EWS!!!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738999</commentid>
    <comment_count>22</comment_count>
      <attachid>167911</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-10 08:57:50 -0700</bug_when>
    <thetext>Comment on attachment 167911
Patch

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

This looks good, but I have a handful of comments.

&gt; Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp:139
&gt; +        if (Frame* frame = document()-&gt;frame())
&gt; +            frame-&gt;loader()-&gt;client()-&gt;recreatePlugin(plugInImageElement());
&gt; +        m_snapshotResource-&gt;setCachedImage(0);

It seems weird that we&apos;re only able to start the plug-in if there&apos;s a frame, but we clear the snapshot image whether or not we recreated the plugin.

If we weren&apos;t able to recreate the plug-in, shouldn&apos;t we hang on to the snapshot image?

Also, I&apos;m not sure clearing the snapshot image is ever correct, as we might need it for the page cache.  I can think about this two ways:
1 - When the user leaves the page we should snapshot the most recent thing they saw before destroying the plug-in.
Pro: We don&apos;t need to hang on to the snapshot image the whole time
Pro: When they return to the page, they&apos;re looking at something familiar
Con: If they clicked the &quot;more accurate&quot; snapshot, the plugin would still have to be restarting from scratch

2 - When the user leaves the page, we kill the plug-in and put the original snapshot back in place.
Pro: The experience after returning to the page might make more sense with regards to the experience they have once they click
Con: We have to hang on to the snapshot the whole time.

I&apos;m leaning towards #2, but it&apos;s certainly up for discussion.

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:197
&gt; +    // The plugin might have been shut down after the snapshot was taken for click-to-start plugins.
&gt; +    if (!m_pluginView-&gt;m_plugin)
&gt; +        return;

I think we need to stop a plug-in&apos;s streams when we kill it.

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:217
&gt; +    // The plugin might have been shut down after the snapshot was taken for click-to-start plugins.
&gt; +    if (!m_pluginView-&gt;m_plugin)
&gt; +        return;

Ditto.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1362
&gt; +void WebFrameLoaderClient::recreatePlugin(WebCore::HTMLPlugInElement* pluginElement)
&gt; +{
&gt; +    PluginView* widget = static_cast&lt;PluginView*&gt;(pluginElement-&gt;pluginWidget());
&gt; +    ASSERT(m_frame-&gt;page());
&gt; +    RefPtr&lt;Plugin&gt; plugin = m_frame-&gt;page()-&gt;createPlugin(m_frame, pluginElement, widget-&gt;initialParameters());
&gt; +    widget-&gt;recreateAndInitialize(plugin.release());
&gt; +}

I&apos;m not in love with the HTMLPluginElement being the argument to this function.  It seems like it is more possible to get &quot;RE-creating&quot; it wrong, as an HTMLPluginElement might never have created its widget.

I&apos;d rather it take a RenderWidget*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739020</commentid>
    <comment_count>23</comment_count>
      <attachid>167911</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-10 09:27:12 -0700</bug_when>
    <thetext>Comment on attachment 167911
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp:139
&gt;&gt; +        m_snapshotResource-&gt;setCachedImage(0);
&gt; 
&gt; It seems weird that we&apos;re only able to start the plug-in if there&apos;s a frame, but we clear the snapshot image whether or not we recreated the plugin.
&gt; 
&gt; If we weren&apos;t able to recreate the plug-in, shouldn&apos;t we hang on to the snapshot image?
&gt; 
&gt; Also, I&apos;m not sure clearing the snapshot image is ever correct, as we might need it for the page cache.  I can think about this two ways:
&gt; 1 - When the user leaves the page we should snapshot the most recent thing they saw before destroying the plug-in.
&gt; Pro: We don&apos;t need to hang on to the snapshot image the whole time
&gt; Pro: When they return to the page, they&apos;re looking at something familiar
&gt; Con: If they clicked the &quot;more accurate&quot; snapshot, the plugin would still have to be restarting from scratch
&gt; 
&gt; 2 - When the user leaves the page, we kill the plug-in and put the original snapshot back in place.
&gt; Pro: The experience after returning to the page might make more sense with regards to the experience they have once they click
&gt; Con: We have to hang on to the snapshot the whole time.
&gt; 
&gt; I&apos;m leaning towards #2, but it&apos;s certainly up for discussion.

I think we should do something similar to #2, but figured the experience for the user would be the same as when they first entered the page-- that is, when you go back, the plugin runs again to grab a new snapshot, so there is no need to hang on to the snapshot.

I guess if we couldn&apos;t recreate the plug-in, maybe we should switch to an error message? &quot;Plug-in error&quot; or something?

&gt;&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:197
&gt;&gt; +        return;
&gt; 
&gt; I think we need to stop a plug-in&apos;s streams when we kill it.

Are you suggesting I also call cancelStreams here? When we get the snapshot in platformSnapshotTimerFired(), I call destroyPluginAndReset(), which calls cancelAllStreams().

&gt;&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1362
&gt;&gt; +}
&gt; 
&gt; I&apos;m not in love with the HTMLPluginElement being the argument to this function.  It seems like it is more possible to get &quot;RE-creating&quot; it wrong, as an HTMLPluginElement might never have created its widget.
&gt; 
&gt; I&apos;d rather it take a RenderWidget*

Do you mean Widget?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739046</commentid>
    <comment_count>24</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-10 10:01:38 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 167911 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=167911&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp:139
&gt; &gt;&gt; +        m_snapshotResource-&gt;setCachedImage(0);
&gt; &gt; 
&gt; &gt; It seems weird that we&apos;re only able to start the plug-in if there&apos;s a frame, but we clear the snapshot image whether or not we recreated the plugin.
&gt; &gt; 
&gt; &gt; If we weren&apos;t able to recreate the plug-in, shouldn&apos;t we hang on to the snapshot image?
&gt; &gt; 
&gt; &gt; Also, I&apos;m not sure clearing the snapshot image is ever correct, as we might need it for the page cache.  I can think about this two ways:
&gt; &gt; 1 - When the user leaves the page we should snapshot the most recent thing they saw before destroying the plug-in.
&gt; &gt; Pro: We don&apos;t need to hang on to the snapshot image the whole time
&gt; &gt; Pro: When they return to the page, they&apos;re looking at something familiar
&gt; &gt; Con: If they clicked the &quot;more accurate&quot; snapshot, the plugin would still have to be restarting from scratch
&gt; &gt; 
&gt; &gt; 2 - When the user leaves the page, we kill the plug-in and put the original snapshot back in place.
&gt; &gt; Pro: The experience after returning to the page might make more sense with regards to the experience they have once they click
&gt; &gt; Con: We have to hang on to the snapshot the whole time.
&gt; &gt; 
&gt; &gt; I&apos;m leaning towards #2, but it&apos;s certainly up for discussion.
&gt; 
&gt; I think we should do something similar to #2, but figured the experience for the user would be the same as when they first entered the page-- that is, when you go back, the plugin runs again to grab a new snapshot, so there is no need to hang on to the snapshot.

That seems crazy, though, since the experience when they go back *could* be better than the first time they visited... assuming we hang on to the snapshot.

&gt; I guess if we couldn&apos;t recreate the plug-in, maybe we should switch to an error message? &quot;Plug-in error&quot; or something?

Sounds reasonable.

&gt; &gt;&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:197
&gt; &gt;&gt; +        return;
&gt; &gt; 
&gt; &gt; I think we need to stop a plug-in&apos;s streams when we kill it.
&gt; 
&gt; Are you suggesting I also call cancelStreams here? When we get the snapshot in platformSnapshotTimerFired(), I call destroyPluginAndReset(), which calls cancelAllStreams().

So if we *are* canceling all streams, then why do we need these new protections here?

&gt; &gt;&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1362
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; I&apos;m not in love with the HTMLPluginElement being the argument to this function.  It seems like it is more possible to get &quot;RE-creating&quot; it wrong, as an HTMLPluginElement might never have created its widget.
&gt; &gt; 
&gt; &gt; I&apos;d rather it take a RenderWidget*
&gt; 
&gt; Do you mean Widget?

I did, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739229</commentid>
    <comment_count>25</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-10 12:48:40 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; (From update of attachment 167911 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=167911&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp:139
&gt; &gt; &gt;&gt; +        m_snapshotResource-&gt;setCachedImage(0);
&gt; &gt; &gt; 
&gt; &gt; &gt; It seems weird that we&apos;re only able to start the plug-in if there&apos;s a frame, but we clear the snapshot image whether or not we recreated the plugin.
&gt; &gt; &gt; 
&gt; &gt; &gt; If we weren&apos;t able to recreate the plug-in, shouldn&apos;t we hang on to the snapshot image?
&gt; &gt; &gt; 
&gt; &gt; &gt; Also, I&apos;m not sure clearing the snapshot image is ever correct, as we might need it for the page cache.  I can think about this two ways:
&gt; &gt; &gt; 1 - When the user leaves the page we should snapshot the most recent thing they saw before destroying the plug-in.
&gt; &gt; &gt; Pro: We don&apos;t need to hang on to the snapshot image the whole time
&gt; &gt; &gt; Pro: When they return to the page, they&apos;re looking at something familiar
&gt; &gt; &gt; Con: If they clicked the &quot;more accurate&quot; snapshot, the plugin would still have to be restarting from scratch
&gt; &gt; &gt; 
&gt; &gt; &gt; 2 - When the user leaves the page, we kill the plug-in and put the original snapshot back in place.
&gt; &gt; &gt; Pro: The experience after returning to the page might make more sense with regards to the experience they have once they click
&gt; &gt; &gt; Con: We have to hang on to the snapshot the whole time.
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m leaning towards #2, but it&apos;s certainly up for discussion.
&gt; &gt; 
&gt; &gt; I think we should do something similar to #2, but figured the experience for the user would be the same as when they first entered the page-- that is, when you go back, the plugin runs again to grab a new snapshot, so there is no need to hang on to the snapshot.
&gt; 
&gt; That seems crazy, though, since the experience when they go back *could* be better than the first time they visited... assuming we hang on to the snapshot.

Ok. I will get rid of the cached image in the next patch. I had already filed bug 98529 to deal with fixing issues with back/forward.

&gt; 
&gt; &gt; I guess if we couldn&apos;t recreate the plug-in, maybe we should switch to an error message? &quot;Plug-in error&quot; or something?
&gt; 
&gt; Sounds reasonable.

Filed 98929 to cover this.

&gt; 
&gt; &gt; &gt;&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:197
&gt; &gt; &gt;&gt; +        return;
&gt; &gt; &gt; 
&gt; &gt; &gt; I think we need to stop a plug-in&apos;s streams when we kill it.
&gt; &gt; 
&gt; &gt; Are you suggesting I also call cancelStreams here? When we get the snapshot in platformSnapshotTimerFired(), I call destroyPluginAndReset(), which calls cancelAllStreams().
&gt; 
&gt; So if we *are* canceling all streams, then why do we need these new protections here?

Before, the lifetime of the PluginProxy and PluginView were the same. Any leftover stream callbacks could be forwarded to the PluginProxy, even when the plugin in the PluginProcess was getting destroyed. With plugin snapshotting we break that relationship, and PluginProxy might be null while the PluginView is alive. Hence these extra checks are needed.

&gt; &gt; &gt;&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1362
&gt; &gt; &gt;&gt; +}
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m not in love with the HTMLPluginElement being the argument to this function.  It seems like it is more possible to get &quot;RE-creating&quot; it wrong, as an HTMLPluginElement might never have created its widget.
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;d rather it take a RenderWidget*
&gt; &gt; 
&gt; &gt; Do you mean Widget?
&gt; 
&gt; I did, yes.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739263</commentid>
    <comment_count>26</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-10 13:34:30 -0700</bug_when>
    <thetext>&gt; &gt; So if we *are* canceling all streams, then why do we need these new protections here?
&gt; 
&gt; Before, the lifetime of the PluginProxy and PluginView were the same. Any leftover stream callbacks could be forwarded to the PluginProxy, even when the plugin in the PluginProcess was getting destroyed. With plugin snapshotting we break that relationship, and PluginProxy might be null while the PluginView is alive. Hence these extra checks are needed.

Looks like I was wrong. By canceling the streams, any pending callbacks should immediately be cancelled, obviating the need to do these extra checks. I will remove them in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739280</commentid>
    <comment_count>27</comment_count>
      <attachid>168068</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-10 14:00:51 -0700</bug_when>
    <thetext>Created attachment 168068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739293</commentid>
    <comment_count>28</comment_count>
      <attachid>168068</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-10 14:15:39 -0700</bug_when>
    <thetext>Comment on attachment 168068
Patch

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

&gt; Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp:141
&gt; +    if (event-&gt;type() == eventNames().clickEvent &amp;&amp; mouseEvent-&gt;button() == LeftButton) {
&gt; +        plugInImageElement()-&gt;setDisplayState(HTMLPlugInElement::Playing);
&gt; +        if (Frame* frame = document()-&gt;frame())
&gt; +            frame-&gt;loader()-&gt;client()-&gt;recreatePlugin(widget());
&gt; +        repaint();
&gt; +        event-&gt;setDefaultHandled();
&gt; +    }

Does the call to widget() just access a Widget, or does it sometimes create one?

This was the crux of my comment about making recreatePlugin() take a Widget instead of an Element.  If we don&apos;t already have a Widget, we shouldn&apos;t be calling recreatePlugin().

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1362
&gt; +    ASSERT(widget-&gt;isPluginViewBase());
&gt; +    PluginView* pluginView = static_cast&lt;PluginView*&gt;(widget);
&gt; +    ASSERT(m_frame-&gt;page());
&gt; +    RefPtr&lt;Plugin&gt; plugin = m_frame-&gt;page()-&gt;createPlugin(m_frame, pluginView-&gt;pluginElement(), pluginView-&gt;initialParameters());
&gt; +    pluginView-&gt;recreateAndInitialize(plugin.release());

Nit - I think the ASSERTs should both be at the head of the function, and separated by an empty line from the actual code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739318</commentid>
    <comment_count>29</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-10 14:59:41 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 168068 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=168068&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp:141
&gt; &gt; +    if (event-&gt;type() == eventNames().clickEvent &amp;&amp; mouseEvent-&gt;button() == LeftButton) {
&gt; &gt; +        plugInImageElement()-&gt;setDisplayState(HTMLPlugInElement::Playing);
&gt; &gt; +        if (Frame* frame = document()-&gt;frame())
&gt; &gt; +            frame-&gt;loader()-&gt;client()-&gt;recreatePlugin(widget());
&gt; &gt; +        repaint();
&gt; &gt; +        event-&gt;setDefaultHandled();
&gt; &gt; +    }
&gt; 
&gt; Does the call to widget() just access a Widget, or does it sometimes create one?

It just returns the widget pointer.

&gt; This was the crux of my comment about making recreatePlugin() take a Widget instead of an Element.  If we don&apos;t already have a Widget, we shouldn&apos;t be calling recreatePlugin().

I will add a check for widget().

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1362
&gt; &gt; +    ASSERT(widget-&gt;isPluginViewBase());
&gt; &gt; +    PluginView* pluginView = static_cast&lt;PluginView*&gt;(widget);
&gt; &gt; +    ASSERT(m_frame-&gt;page());
&gt; &gt; +    RefPtr&lt;Plugin&gt; plugin = m_frame-&gt;page()-&gt;createPlugin(m_frame, pluginView-&gt;pluginElement(), pluginView-&gt;initialParameters());
&gt; &gt; +    pluginView-&gt;recreateAndInitialize(plugin.release());
&gt; 
&gt; Nit - I think the ASSERTs should both be at the head of the function, and separated by an empty line from the actual code.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739319</commentid>
    <comment_count>30</comment_count>
      <attachid>168075</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-10 15:00:05 -0700</bug_when>
    <thetext>Created attachment 168075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739379</commentid>
    <comment_count>31</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-10 16:23:15 -0700</bug_when>
    <thetext>Committed r130977: &lt;http://trac.webkit.org/changeset/130977&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167847</attachid>
            <date>2012-10-09 14:26:21 -0700</date>
            <delta_ts>2012-10-09 15:57:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98328-20121009142521.patch</filename>
            <type>text/plain</type>
            <size>22978</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdlOTIzMDA1MWM2ZWQ3
YWRkZDVlODVlOTY2NmUyY2ZmMjYzNGFkNy4uOTVlOWViM2JjZjg1OGU1NGM0M2E3OTZlZmUyZjEy
OWZkODAzMDdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTA4ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5z
IHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQy
NjY4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
eHRlbmQgdGhlIGRlZmF1bHQgZXZlbnQgaGFuZGxlciB0byBkZWFsIHdpdGggcGx1Z2lucyB3aXRo
IHNuYXBzaG90cy4KKyAgICAgICAgV2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIHBsYWNlaG9s
ZGVyLCB0aGUgcGx1Z2luIGlzIHJlY3JlYXRlZCBhbmQgZGlzcGxheWVkLgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6IEFkZCBuZXcgY2xpZW50IGZ1bmN0aW9uIHJlY3Jl
YXRlUGx1Z2luKCksIHdoaWNoIGlzCisgICAgICAgIGV4cGVjdGVkIHRvIHJlLWNyZWF0ZSB0aGUg
cGx1Z2luIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyBhcyB3aGVuIGl0IHdhcyBydW4gdG8KKyAg
ICAgICAgb2J0YWluIHRoZSBwbHVnaW4ncyBzbmFwc2hvdCBwbGFjZWhvbGRlci4KKworICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3Jl
YXRlUGx1Z2luKCkuCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOiBFeHBvc2UgSFRNTFBsdWdJbkVsZW1lbnQ6OnBsdWdpbldpZGdldCgp
LgorCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFVwZGF0ZSB0byBs
b29rIGZvcgorICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi4gSWYgdGhlIHBsdWdpbiBp
cyBub3QgcGxheWluZywgaGF2ZSB0aGUgcmVuZGVyZXIgaGFuZGxlIHRoZQorICAgICAgICBldmVu
dC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdpbjo6Z2V0Q3Vyc29yKTogU2V0
IHRvIGhhbmQgY3Vyc29yIHdoZW4gdGhlIHBsdWdpbiBpcyBub3QKKyAgICAgICAgcGxheWluZy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudCk6
IElmIHRoZSB1c2VyIGNsaWNrZWQgb24gdGhlIHBsdWdpbiB1c2luZyB0aGUKKyAgICAgICAgbGVm
dCBidXR0b24sIHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIGVsZW1lbnQgdG8gcGxheWluZy4gUmVt
b3ZlIHRoZSBjYWNoZWQgc25hcHNob3QgaW1hZ2UsCisgICAgICAgIGFuZCByZWNyZWF0ZSB0aGUg
cGx1Z2luLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oOgor
ICAgICAgICAoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOgorCiAyMDEyLTEwLTA5ICBKb24gTGVl
ICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBIYXZlIHBsdWdpbnMgcmVuZGVy
IG9mZnNjcmVlbiB0byBjYXB0dXJlIHNuYXBzaG90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjJkMWU1
NDNiOGMxMjFhZTU5MjhiOGNlMWJkNGM4OWUzNDEyNzMyYi4uODY4OWEyZDJjMjE3NDk3ZjM0NjVh
NGQ5YzI3NGMwNDRkYmQ2Y2VhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTEwLTA4ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBB
Y3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNob3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAg
IChXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVhdGVQbHVnaW4pOiBTdHViIGltcGxlbWVudGF0
aW9uIG9mIHJlY3JlYXRlUGx1Z2luKCkuCisKIDIwMTItMTAtMDggIEtpcmFuIE11cHBhbGEgIDxj
bXVwcGFsYUBhcHBsZS5jb20+CiAKICAgICAgICAgVGhyb3R0bGUgRE9NIHRpbWVycyBvbiBoaWRk
ZW4gcGFnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTk2NDI3MWY1ODc4ZGZhMTgxZGJjYmUxZWM4NWExNTYw
MDM1MjUyYi4uMmViM2ExMWNiYjQwYTA5MjdlMWNlYmI0ZDg5YWIwODdhMWQ0OTU5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTEwLTA4ICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mg
b24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIHJlY3Jl
YXRpb24gb2YgdGhlIHBsdWdpbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVjcmVhdGVBbmRJbml0
aWFsaXplKTogV2UgY2FuIHJ1biBpbnRvIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSB1c2VyCisgICAg
ICAgIGRlY2lkZWQgdG8gcnVuIHRoZSBwbHVnaW4gYmVmb3JlIHRoZSBzbmFwc2hvdCB3YXMgcmVh
ZHkgdG8gYmUgdGFrZW4uIEluIHRoaXMgY2FzZSwgdGhlCisgICAgICAgIHBsdWdpbiBtZW1iZXIg
dmFyaWFibGUgaXMgbm9uLW51bGwsIGFuZCB0aGUgdGltZXIgaXMgc3RpbGwgYWN0aXZlLiBUdXJu
IG9mZiB0aGUgdGltZXIsIGFuZAorICAgICAgICBkZXN0cm95IHRoYXQgaW5zdGFuY2Ugb2YgdGhl
IHBsdWdpbi4gV2Ugc2V0IHRoZSBwbHVnaW4gdG8gdGhlIGluc3RhbmNlIHByb3ZpZGVkIGluIHRo
ZQorICAgICAgICBmaXJzdCBwYXJhbWV0ZXIgdG8gdGhpcyBmdW5jdGlvbiwgYW5kIHJlc2V0IHRo
ZSBtZW1iZXIgdmFyaWFibGVzIHNvIHRoYXQgdGhlIFBsdWdpblZpZXcgaXMKKyAgICAgICAgaW4g
YSBzdGF0ZSBzaW1pbGFyIHRvIHdoZW4gaXQgd2FzIGZpcnN0IGNyZWF0ZWQuIFdlIGFsc28gaW1t
ZWRpYXRlbHkgaW5pdGlhbGl6ZSB0aGUgcGx1Z2luLAorICAgICAgICB3aGljaCBtYXkgaGFwcGVu
IHN5bmNocm9ub3VzbHkgb3IgYXN5bmNocm9ub3VzbHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojppbml0
aWFsUGFyYW1ldGVycyk6IEV4cG9zZSB0aGUgaW5pdGlhbCBwYXJhbWV0ZXJzLiBVc2VkIHRvIHJl
Y3JlYXRlCisgICAgICAgIHRoZSBwbHVnaW4uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKTogQ3JlYXRlIGEgbmV3IFBsdWdpbiBp
bnN0YW5jZSB1c2luZyB0aGUgc2FtZQorICAgICAgICBwYXJhbWV0ZXJzIHVzZWQgdG8gY3JlYXRl
IHRoZSBwbHVnaW4gZm9yIHNuYXBzaG90dGluZy4gRm9yd2FyZCB0aGF0IGluc3RhbmNlIHRvIHRo
ZSB3aWRnZXQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQpOiBJbXBsZW1lbnQg
cmVjcmVhdGVQbHVnaW4oKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcDogVGhlIHBsdWdpbiB0aGF0IGZpcnN0IHJ1bnMgbWlnaHQgaGF2ZSBiZWVuIGRlc3Ry
b3llZAorICAgICAgICBhZnRlciB0aGUgc25hcHNob3Qgd2FzIHRha2VuLiBDaGVjayBmb3IgdGhl
IGV4aXN0ZW5jZSBvZiB0aGUgcGx1Z2luIGJlZm9yZSBmb3J3YXJkaW5nIHRoZQorICAgICAgICBj
YWxsYmFja3MuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkRmFpbCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyk6
CisKIDIwMTItMTAtMDkgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFtX
SzJdIEhhdmUgcGx1Z2lucyByZW5kZXIgb2Zmc2NyZWVuIHRvIGNhcHR1cmUgc25hcHNob3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KaW5kZXggMmI0Y2ZkYTliMWI1ZWRlZTc1MzgwMjNiMjk0ZjY0NTliNTdi
MjA2OC4uNDNlNTgxODMzOTI1MGEwOTFmZTBjMDY4ZDIxNDg2MjQ5ZGY5MDQ4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KQEAgLTEyMzEsNiArMTIzMSw3IEBAIF9fWk5LN1dlYkNvcmUxNlZpc2libGVT
ZWxlY3Rpb24xN3RvTm9ybWFsaXplZFJhbmdlRXYKIF9fWk5LN1dlYkNvcmUxNlZpc2libGVTZWxl
Y3Rpb24xOXJvb3RFZGl0YWJsZUVsZW1lbnRFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVj
dGlvbjIzaXNDb250ZW50UmljaGx5RWRpdGFibGVFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNl
bGVjdGlvbjVpc0FsbEVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKK19fWk5LN1dl
YkNvcmUxN0hUTUxQbHVnSW5FbGVtZW50MTJwbHVnaW5XaWRnZXRFdgogX19aTks3V2ViQ29yZTE3
SlNET01HbG9iYWxPYmplY3QyMnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRFdgogX19aTks3V2ViQ29y
ZTE3UmVndWxhckV4cHJlc3Npb24xM21hdGNoZWRMZW5ndGhFdgogX19aTks3V2ViQ29yZTE3UmVn
dWxhckV4cHJlc3Npb241bWF0Y2hFUktOM1dURjZTdHJpbmdFaVBpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCmluZGV4IGM2ZTUyY2EwZGYzNDNkYWJjNGNiMGQ1OWE0
YTQ2N2RlMWU2NDc1OWEuLmQ2MDIwOWEyYzc3Y2FhYTBhNDUyN2VlZWQyYTBiOGI3YzZkZGQ4Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJTbmFwc2hv
dHRlZFBsdWdpbi5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCkBAIC0xNzcsOSArMTc4LDE1IEBAIHZvaWQgSFRN
TFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIC8v
IEZJWE1FOiBNb3VzZSBkb3duIGFuZCBzY3JvbGwgZXZlbnRzIGFyZSBwYXNzZWQgZG93biB0byBw
bHVnLWluIHZpYSBjdXN0b20gY29kZSBpbiBFdmVudEhhbmRsZXI7IHRoZXNlIGNvZGUgcGF0aHMg
c2hvdWxkIGJlIHVuaXRlZC4KIAogICAgIFJlbmRlck9iamVjdCogciA9IHJlbmRlcmVyKCk7Ci0g
ICAgaWYgKHIgJiYgci0+aXNFbWJlZGRlZE9iamVjdCgpICYmIHRvUmVuZGVyRW1iZWRkZWRPYmpl
Y3QociktPnNob3dzVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IoKSkgewotICAgICAgICB0b1Jl
bmRlckVtYmVkZGVkT2JqZWN0KHIpLT5oYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2
ZW50KGV2ZW50KTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChyICYmIHItPmlzRW1iZWRkZWRP
YmplY3QoKSkgeworICAgICAgICBpZiAodG9SZW5kZXJFbWJlZGRlZE9iamVjdChyKS0+c2hvd3NV
bmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcigpKSB7CisgICAgICAgICAgICB0b1JlbmRlckVtYmVk
ZGVkT2JqZWN0KHIpLT5oYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50KGV2ZW50
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoci0+aXNTbmFw
c2hvdHRlZFBsdWdJbigpICYmIGRpc3BsYXlTdGF0ZSgpIDwgUGxheWluZykgeworICAgICAgICAg
ICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyKS0+aGFuZGxlRXZlbnQoZXZlbnQpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFyIHx8ICFyLT5p
c1dpZGdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA3ZjE2
ZjNkZmU5YWNiYTEzYWNjMjEwZDg0NGI5NTc2YWJjYWY3OWRjLi40NDEyYmFlZWE3NWRjOWNkNzZl
OTNlYzMxNTY5MjNlZjYyNTk5NzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRXJpYyBTZWlk
ZWwgPGVyaWNAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtMTQ2LDYgKzE0NiwxMCBAQCBQYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Zwog
ICAgIHJldHVybiAwOwogfQogCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRl
UGx1Z2luKEhUTUxQbHVnSW5FbGVtZW50KikKK3sKK30KKwogUGFzc1JlZlB0cjxXaWRnZXQ+IEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6
ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDM5MDI3OTAzODFhZmJjOGUxMzIzZTI0MGExZWY1YTNl
MTgxODcyNTkuLmUwNThkNzk0YjY0OTBlNmVlMGZkMjc3MmJkN2U5ZmUwZmJlMDg2NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0z
NDQsNiArMzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29u
c3QgS1VSTCYsIGJvb2wpIHsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRl
RnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCos
IGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5F
bGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjcmVhdGVQbHVnaW4oSFRNTFBsdWdJbkVsZW1lbnQqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNp
emUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgT1ZFUlJJREU7CiAjaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9YWV9GT1JfVklERU8pCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlTWVk
aWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTE1lZGlhRWxlbWVudCosIGNv
bnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCmluZGV4IDcwM2ZkM2JkM2NmNjMyYTdiOTBjNmJhYTQ1NmZhZTRlZGNiNGYwYWUu
LmQyMzliMjUzYWE1M2UwMTE5N2ZhYWFmZGI3OTI0ZjY5MDk4MTRkYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC0yNjIsNiArMjYyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50
IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVs
ZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihIVE1MUGx1Z0luRWxlbWVudCopID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lk
Z2V0KSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2
YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBL
VVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCA1NmJiZDc0NDEwMzI3
ZjIxZWIwNjcxYTVkYjhiNTc1ZTZjYWFlMmE2Li5hNzc5MTMyYjhmOWYwNjc4MTc3NWQ5OTFlOTU3
Mzc0MDRjZDVjMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTI3LDkgKzI3LDExIEBACiAjaW5jbHVkZSAiUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uaCIKIAogI2luY2x1ZGUgIkN1cnNvci5oIgorI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
R3JhZGllbnQuaCIKICNpbmNsdWRlICJIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVk
ZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlBhdGgu
aCIKIApAQCAtMTE1LDQgKzExNywyOSBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpw
YWludFJlcGxhY2VkU25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0CiAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIGFsaWdu
ZWRSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CiB9CiAKK0N1cnNvckRpcmVjdGl2ZSBSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vy
c29yJiBvdmVycmlkZUN1cnNvcikgY29uc3QKK3sKKyAgICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50
KCktPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcpIHsKKyAgICAg
ICAgb3ZlcnJpZGVDdXJzb3IgPSBoYW5kQ3Vyc29yKCk7CisgICAgICAgIHJldHVybiBTZXRDdXJz
b3I7CisgICAgfQorICAgIHJldHVybiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6Z2V0Q3Vyc29yKHBv
aW50LCBvdmVycmlkZUN1cnNvcik7Cit9CisKK3ZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
OmhhbmRsZUV2ZW50KEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIWV2ZW50LT5pc01vdXNlRXZl
bnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0
YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCk7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmNsaWNrRXZlbnQgJiYgbW91c2VFdmVudC0+YnV0dG9uKCkgPT0gTGVmdEJ1
dHRvbikgeworICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+c2V0RGlzcGxheVN0YXRlKEhU
TUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nKTsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgp
LT5yZWNyZWF0ZVBsdWdpbihwbHVnSW5JbWFnZUVsZW1lbnQoKSk7CisgICAgICAgIG1fc25hcHNo
b3RSZXNvdXJjZS0+c2V0Q2FjaGVkSW1hZ2UoMCk7CisgICAgICAgIHJlcGFpbnQoKTsKKyAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5oCmluZGV4IDgwYzJhMTRiMzNlMDlmNDM5ZDU1MDEwNDY4NGY3Njg4NjUwM2Jh
MTYuLjZhMTNhM2EzZmZmZThiZTVjZjFjMzFkMDA3OWE5YmQ2NmY4MmJkM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCkBAIC00
MiwxMCArNDIsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVTbmFwc2hvdChQYXNzUmVm
UHRyPEltYWdlPik7CiAKKyAgICB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50Kik7CisKIHByaXZhdGU6
CiAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCogcGx1Z0luSW1hZ2VFbGVtZW50KCkgY29uc3Q7
CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJl
bmRlclNuYXBzaG90dGVkUGx1Z0luIjsgfQogCisgICAgdmlydHVhbCBDdXJzb3JEaXJlY3RpdmUg
Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29yJikgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIGlzU25hcHNob3R0ZWRQbHVnSW4oKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IGQ5MDg4ODFhM2FjNzRlYzIxMjhlNzJhOTE5MTg4MWVmM2YzNDgyYmEuLjlmNTk4YzIwYTk0MDJk
MDY3MTM1MzIxMmYzMmFkNWE2NDE3ZTdjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4
LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTk4LDYgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVy
cmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVp
Z2h0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBj
cmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5F
bGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4m
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Kikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6
OldpZGdldCogcGx1Z2luV2lkZ2V0KSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGJhc2VVUkwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGRlMGY2MTgzZDI5MmI1ODIzZTMw
Y2UxZDZhYjE3OWNkMDZlYmQzNTYuLjVmYjc3ZTMzMmU1MTY4MTMxYjM0NDk1Y2VhNGU3OWRjMWM0
OTQzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xNzI0LDYgKzE3MjQsMTAgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRN
TFAKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVh
dGVQbHVnaW4oV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqKQoreworfQorCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdl
dCkKIHsKICAgICBpZiAoIXBsdWdpbldpZGdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBiYTg1ZTcyZGNiZjhmNDYxNTQzMTI4
NDQyNjA5ZjVlNjAyMmMyZmM5Li45NjhiN2NjMjdkMWVmMGMxMTE2Njk1YjA0NDExMWRkMjY3MWI3
MmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCkBAIC0xOTIsNiArMTkyLDEwIEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRIVFRQSGVhZGVy
cyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgbG9uZyBsb25nJiBleHBlCiAKIHZv
aWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKKyAgICAv
LyBUaGUgcGx1Z2luIG1pZ2h0IGhhdmUgYmVlbiBzaHV0IGRvd24gYWZ0ZXIgdGhlIHNuYXBzaG90
IHdhcyB0YWtlbiBmb3IgY2xpY2stdG8tc3RhcnQgcGx1Z2lucy4KKyAgICBpZiAoIW1fcGx1Z2lu
Vmlldy0+bV9wbHVnaW4pCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIENvbXB1dGUgdGhlIHN0
cmVhbSByZWxhdGVkIGRhdGEgZnJvbSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UuCiAgICAgY29uc3Qg
S1VSTCYgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKICAgICBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGUoKTsKQEAgLTIwOCw2ICsyMTIsOSBAQCB2b2lkIFBs
dWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgUgogCiB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURh
dGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxl
bmd0aCkKIHsKKyAgICAvLyBUaGUgcGx1Z2luIG1pZ2h0IGhhdmUgYmVlbiBzaHV0IGRvd24gYWZ0
ZXIgdGhlIHNuYXBzaG90IHdhcyB0YWtlbiBmb3IgY2xpY2stdG8tc3RhcnQgcGx1Z2lucy4KKyAg
ICBpZiAoIW1fcGx1Z2luVmlldy0+bV9wbHVnaW4pCisgICAgICAgIHJldHVybjsKICAgICBtX3Bs
dWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlRGF0YShtX3N0cmVhbUlELCBieXRl
cywgbGVuZ3RoKTsKIH0KIApAQCAtMjE3LDcgKzIyNCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6U3Ry
ZWFtOjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VF
cnJvCiAgICAgUmVmUHRyPFN0cmVhbT4gcHJvdGVjdCh0aGlzKTsKIAogICAgIC8vIFdlIG9ubHkg
d2FudCB0byBjYWxsIHN0cmVhbURpZEZhaWwgaWYgdGhlIHN0cmVhbSB3YXMgbm90IGV4cGxpY2l0
bHkgY2FuY2VsbGVkIGJ5IHRoZSBwbHVnLWluLgotICAgIGlmICghbV9zdHJlYW1XYXNDYW5jZWxs
ZWQpCisgICAgaWYgKCFtX3N0cmVhbVdhc0NhbmNlbGxlZCAmJiBtX3BsdWdpblZpZXctPm1fcGx1
Z2luKQogICAgICAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRGYWlsKG1fc3Ry
ZWFtSUQsIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpOwogCiAgICAgbV9wbHVnaW5WaWV3LT5yZW1v
dmVTdHJlYW0odGhpcyk7CkBAIC0yMzMsNyArMjQwLDggQEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJl
YW06OmRpZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKQogICAgIC8v
IFByb3RlY3QgdGhlIHBsdWctaW4gd2hpbGUgd2UncmUgY2FsbGluZyBpbnRvIGl0LgogICAgIE5Q
UnVudGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yIHBsdWdpblByb3RlY3RvcigmbV9wbHVn
aW5WaWV3LT5tX25wUnVudGltZU9iamVjdE1hcCk7CiAjZW5kaWYKLSAgICBtX3BsdWdpblZpZXct
Pm1fcGx1Z2luLT5zdHJlYW1EaWRGaW5pc2hMb2FkaW5nKG1fc3RyZWFtSUQpOworICAgIGlmICht
X3BsdWdpblZpZXctPm1fcGx1Z2luKQorICAgICAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5z
dHJlYW1EaWRGaW5pc2hMb2FkaW5nKG1fc3RyZWFtSUQpOwogCiAgICAgbV9wbHVnaW5WaWV3LT5y
ZW1vdmVTdHJlYW0odGhpcyk7CiAgICAgbV9wbHVnaW5WaWV3ID0gMDsKQEAgLTMxNiw2ICszMjQs
MjYgQEAgdm9pZCBQbHVnaW5WaWV3OjpkZXN0cm95UGx1Z2luQW5kUmVzZXQoKQogICAgIGNhbmNl
bEFsbFN0cmVhbXMoKTsKIH0KIAordm9pZCBQbHVnaW5WaWV3OjpyZWNyZWF0ZUFuZEluaXRpYWxp
emUoUGFzc1JlZlB0cjxQbHVnaW4+IHBsdWdpbikKK3sKKyAgICBpZiAobV9wbHVnaW4pIHsKKyAg
ICAgICAgaWYgKG1fcGx1Z2luU25hcHNob3RUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAg
bV9wbHVnaW5TbmFwc2hvdFRpbWVyLnN0b3AoKTsKKyAgICAgICAgZGVzdHJveVBsdWdpbkFuZFJl
c2V0KCk7CisgICAgfQorCisgICAgLy8gUmVzZXQgbWVtYmVyIHZhcmlhYmxlcyB0byBpbml0aWFs
IHZhbHVlcy4KKyAgICBtX3BsdWdpbiA9IHBsdWdpbjsKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBm
YWxzZTsKKyAgICBtX2lzV2FpdGluZ0ZvclN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSBmYWxz
ZTsKKyAgICBtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCA9IGZhbHNlOworICAgIG1faXNC
ZWluZ0Rlc3Ryb3llZCA9IGZhbHNlOworICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBTdHJlYW1T
dGF0ZUluaXRpYWw7CisgICAgbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90ID0gbnVsbHB0cjsK
KworICAgIGluaXRpYWxpemVQbHVnaW4oKTsKK30KKwogRnJhbWUqIFBsdWdpblZpZXc6OmZyYW1l
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLT5mcmFt
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgK
aW5kZXggZmQ0MWEzZmJmNzM3MTVlNGJmOTJkM2QyYzhjMDllMzJkNTE1YmVlYi4uZGQ3ODZhZWZm
YjQ5MWJhNGJjODVlZDZhMWYyOTlmODBjYTBkMDIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC01Myw2ICs1Myw4IEBAIGNsYXNzIFBs
dWdpblZpZXcgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z2luVmlld0Jhc2UsIHB1YmxpYyBQbHVnaW5D
b250cm9sbGVyLCBwcml2CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luVmll
dz4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ+LCBQYXNzUmVm
UHRyPFBsdWdpbj4sIGNvbnN0IFBsdWdpbjo6UGFyYW1ldGVycyYpOwogCisgICAgdm9pZCByZWNy
ZWF0ZUFuZEluaXRpYWxpemUoUGFzc1JlZlB0cjxQbHVnaW4+KTsKKwogICAgIFdlYkNvcmU6OkZy
YW1lKiBmcmFtZSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0JlaW5nRGVzdHJveWVkOyB9CkBAIC03Miw2ICs3NCw4IEBAIHB1YmxpYzoK
ICAgICBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmcoKSBjb25z
dCB7IHJldHVybiBtX3BsdWdpbi0+cGRmRG9jdW1lbnRGb3JQcmludGluZygpOyB9CiAjZW5kaWYK
IAorICAgIGNvbnN0IFBsdWdpbjo6UGFyYW1ldGVycyYgaW5pdGlhbFBhcmFtZXRlcnMoKSBjb25z
dCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KKwogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpczsg
bm9ib2R5IHNob3VsZCBoYXZlIHRvIGtub3cgYWJvdXQgdGhlIHBsdWctaW4gdmlldydzIHJlbmRl
cmVyIGV4Y2VwdCB0aGUgcGx1Zy1pbiB2aWV3IGl0c2VsZi4KICAgICBXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVuZGVyZXIoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA4NzYyMzRmODg5NjFkZDc5Njc3ZjE0NTU0YjUwNTA1ZDUzNDZlNGJm
Li43ZjcxYjAzMzA2YmRhYzcwOTY3MDE3OWI5MTgxNmZjYWE0MWI0ZTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM1Myw2ICsxMzUzLDE0IEBAIFBh
c3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0
IEludFNpemUmLCBIVE1MUGx1Z0luCiAgICAgcmV0dXJuIFBsdWdpblZpZXc6OmNyZWF0ZShwbHVn
aW5FbGVtZW50LCBwbHVnaW4ucmVsZWFzZSgpLCBwYXJhbWV0ZXJzKTsKIH0KIAordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6cmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1l
bnQqIHBsdWdpbkVsZW1lbnQpCit7CisgICAgUGx1Z2luVmlldyogd2lkZ2V0ID0gc3RhdGljX2Nh
c3Q8UGx1Z2luVmlldyo+KHBsdWdpbkVsZW1lbnQtPnBsdWdpbldpZGdldCgpKTsKKyAgICBBU1NF
UlQobV9mcmFtZS0+cGFnZSgpKTsKKyAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX2ZyYW1l
LT5wYWdlKCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVnaW5FbGVtZW50LCB3aWRnZXQtPmlu
aXRpYWxQYXJhbWV0ZXJzKCkpOworICAgIHdpZGdldC0+cmVjcmVhdGVBbmRJbml0aWFsaXplKHBs
dWdpbi5yZWxlYXNlKCkpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVj
dERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKIHsKICAgICBtX3BsdWdpblZpZXcg
PSBzdGF0aWNfY2FzdDxQbHVnaW5WaWV3Kj4ocGx1Z2luV2lkZ2V0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCA4NjZhZDNmNTQ0ZGIwMTE5ODlkMTIyNDBmMzQ3Y2QzYWIwMzQ5
NzhkLi41ZDk2ODY4ZTAxMDdkMGVmMjIzYWI3YWU0ODk2YzkxZDE0NDQ3YWQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xODgsNiArMTg4LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBt
YXJnaW5IZWlnaHQpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9h
ZE1hbnVhbGx5KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2Vi
Q29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVk
aXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpIE9WRVJSSURF
OwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUph
dmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBs
ZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgT1ZF
UlJJREU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167869</attachid>
            <date>2012-10-09 15:57:35 -0700</date>
            <delta_ts>2012-10-09 18:41:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98328-20121009155636.patch</filename>
            <type>text/plain</type>
            <size>22948</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIyYTFjMzU1NDIwZWM4
NGE3ZGFhYTY5Y2VjMzE3NzA2ZGMxM2QwYi4uMjFlMDFhODU1NTdjMWRkNTNjOGMxZWIzMGM0MTZk
YWYyOWFiNzlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTA4ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5z
IHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQy
NjY4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
eHRlbmQgdGhlIGRlZmF1bHQgZXZlbnQgaGFuZGxlciB0byBkZWFsIHdpdGggcGx1Z2lucyB3aXRo
IHNuYXBzaG90cy4KKyAgICAgICAgV2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIHBsYWNlaG9s
ZGVyLCB0aGUgcGx1Z2luIGlzIHJlY3JlYXRlZCBhbmQgZGlzcGxheWVkLgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6IEFkZCBuZXcgY2xpZW50IGZ1bmN0aW9uIHJlY3Jl
YXRlUGx1Z2luKCksIHdoaWNoIGlzCisgICAgICAgIGV4cGVjdGVkIHRvIHJlLWNyZWF0ZSB0aGUg
cGx1Z2luIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyBhcyB3aGVuIGl0IHdhcyBydW4gdG8KKyAg
ICAgICAgb2J0YWluIHRoZSBwbHVnaW4ncyBzbmFwc2hvdCBwbGFjZWhvbGRlci4KKworICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3Jl
YXRlUGx1Z2luKCkuCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOiBFeHBvc2UgSFRNTFBsdWdJbkVsZW1lbnQ6OnBsdWdpbldpZGdldCgp
LgorCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFVwZGF0ZSB0byBs
b29rIGZvcgorICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi4gSWYgdGhlIHBsdWdpbiBp
cyBub3QgcGxheWluZywgaGF2ZSB0aGUgcmVuZGVyZXIgaGFuZGxlIHRoZQorICAgICAgICBldmVu
dC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdpbjo6Z2V0Q3Vyc29yKTogU2V0
IHRvIGhhbmQgY3Vyc29yIHdoZW4gdGhlIHBsdWdpbiBpcyBub3QKKyAgICAgICAgcGxheWluZy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudCk6
IElmIHRoZSB1c2VyIGNsaWNrZWQgb24gdGhlIHBsdWdpbiB1c2luZyB0aGUKKyAgICAgICAgbGVm
dCBidXR0b24sIHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIGVsZW1lbnQgdG8gcGxheWluZy4gUmVt
b3ZlIHRoZSBjYWNoZWQgc25hcHNob3QgaW1hZ2UsCisgICAgICAgIGFuZCByZWNyZWF0ZSB0aGUg
cGx1Z2luLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oOgor
ICAgICAgICAoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOgorCiAyMDEyLTEwLTA5ICBKb24gTGVl
ICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggZm9yIFF0IFdpbmRvd3Mu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKaW5kZXggZjJkMWU1NDNiOGMxMjFhZTU5MjhiOGNlMWJkNGM4OWUzNDEy
NzMyYi4uODY4OWEyZDJjMjE3NDk3ZjM0NjVhNGQ5YzI3NGMwNDRkYmQ2Y2VhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTA4ICBKb24gTGVlICA8am9ubGVlQGFw
cGxlLmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlj
a3Mgb24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVh
dGVQbHVnaW4pOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3JlYXRlUGx1Z2luKCkuCisKIDIw
MTItMTAtMDggIEtpcmFuIE11cHBhbGEgIDxjbXVwcGFsYUBhcHBsZS5jb20+CiAKICAgICAgICAg
VGhyb3R0bGUgRE9NIHRpbWVycyBvbiBoaWRkZW4gcGFnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTk2NDI3
MWY1ODc4ZGZhMTgxZGJjYmUxZWM4NWExNTYwMDM1MjUyYi4uMmViM2ExMWNiYjQwYTA5MjdlMWNl
YmI0ZDg5YWIwODdhMWQ0OTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTEw
LTA4ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0
ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xMjQyNjY4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnQgdGhlIHJlY3JlYXRpb24gb2YgdGhlIHBsdWdpbi4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luVmlldzo6cmVjcmVhdGVBbmRJbml0aWFsaXplKTogV2UgY2FuIHJ1biBpbnRvIGEgc2l0
dWF0aW9uIHdoZXJlIHRoZSB1c2VyCisgICAgICAgIGRlY2lkZWQgdG8gcnVuIHRoZSBwbHVnaW4g
YmVmb3JlIHRoZSBzbmFwc2hvdCB3YXMgcmVhZHkgdG8gYmUgdGFrZW4uIEluIHRoaXMgY2FzZSwg
dGhlCisgICAgICAgIHBsdWdpbiBtZW1iZXIgdmFyaWFibGUgaXMgbm9uLW51bGwsIGFuZCB0aGUg
dGltZXIgaXMgc3RpbGwgYWN0aXZlLiBUdXJuIG9mZiB0aGUgdGltZXIsIGFuZAorICAgICAgICBk
ZXN0cm95IHRoYXQgaW5zdGFuY2Ugb2YgdGhlIHBsdWdpbi4gV2Ugc2V0IHRoZSBwbHVnaW4gdG8g
dGhlIGluc3RhbmNlIHByb3ZpZGVkIGluIHRoZQorICAgICAgICBmaXJzdCBwYXJhbWV0ZXIgdG8g
dGhpcyBmdW5jdGlvbiwgYW5kIHJlc2V0IHRoZSBtZW1iZXIgdmFyaWFibGVzIHNvIHRoYXQgdGhl
IFBsdWdpblZpZXcgaXMKKyAgICAgICAgaW4gYSBzdGF0ZSBzaW1pbGFyIHRvIHdoZW4gaXQgd2Fz
IGZpcnN0IGNyZWF0ZWQuIFdlIGFsc28gaW1tZWRpYXRlbHkgaW5pdGlhbGl6ZSB0aGUgcGx1Z2lu
LAorICAgICAgICB3aGljaCBtYXkgaGFwcGVuIHN5bmNocm9ub3VzbHkgb3IgYXN5bmNocm9ub3Vz
bHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojppbml0aWFsUGFyYW1ldGVycyk6IEV4cG9zZSB0aGUgaW5p
dGlhbCBwYXJhbWV0ZXJzLiBVc2VkIHRvIHJlY3JlYXRlCisgICAgICAgIHRoZSBwbHVnaW4uCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1
Z2luKTogQ3JlYXRlIGEgbmV3IFBsdWdpbiBpbnN0YW5jZSB1c2luZyB0aGUgc2FtZQorICAgICAg
ICBwYXJhbWV0ZXJzIHVzZWQgdG8gY3JlYXRlIHRoZSBwbHVnaW4gZm9yIHNuYXBzaG90dGluZy4g
Rm9yd2FyZCB0aGF0IGluc3RhbmNlIHRvIHRoZSB3aWRnZXQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQpOiBJbXBsZW1lbnQgcmVjcmVhdGVQbHVnaW4oKS4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDogVGhlIHBsdWdpbiB0aGF0IGZpcnN0
IHJ1bnMgbWlnaHQgaGF2ZSBiZWVuIGRlc3Ryb3llZAorICAgICAgICBhZnRlciB0aGUgc25hcHNo
b3Qgd2FzIHRha2VuLiBDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgcGx1Z2luIGJlZm9y
ZSBmb3J3YXJkaW5nIHRoZQorICAgICAgICBjYWxsYmFja3MuCisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OlN0cmVhbTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
OlN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyk6CisKIDIwMTItMTAtMDkgIEpvbiBMZWUgIDxqb25s
ZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIEhhdmUgcGx1Z2lucyByZW5kZXIgb2Zmc2Ny
ZWVuIHRvIGNhcHR1cmUgc25hcHNob3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYzQ4ZWUxYTFk
ZjIxNTkyYjdkYzc1MTBiMmZkYjNiMTliOGFmODk0ZS4uZGEzMzBmMmJhZmYxMGI3MmVhNDljYTUy
NWMyZjk4NzRkNmY4ZTJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEyMzEsNiArMTIzMSw3
IEBAIF9fWk5LN1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb24xN3RvTm9ybWFsaXplZFJhbmdlRXYK
IF9fWk5LN1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb24xOXJvb3RFZGl0YWJsZUVsZW1lbnRFdgog
X19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjIzaXNDb250ZW50UmljaGx5RWRpdGFibGVF
dgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjVpc0FsbEVOU18yN0VkaXRpbmdCb3Vu
ZGFyeUNyb3NzaW5nUnVsZUUKK19fWk5LN1dlYkNvcmUxN0hUTUxQbHVnSW5FbGVtZW50MTJwbHVn
aW5XaWRnZXRFdgogX19aTks3V2ViQ29yZTE3SlNET01HbG9iYWxPYmplY3QyMnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRFdgogX19aTks3V2ViQ29yZTE3UmVndWxhckV4cHJlc3Npb24xM21hdGNoZWRM
ZW5ndGhFdgogX19aTks3V2ViQ29yZTE3UmVndWxhckV4cHJlc3Npb241bWF0Y2hFUktOM1dURjZT
dHJpbmdFaVBpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCmluZGV4
IGM2ZTUyY2EwZGYzNDNkYWJjNGNiMGQ1OWE0YTQ2N2RlMWU2NDc1OWEuLjk5NDdhNzM2ZWM4ODZl
ODM0YzJhMmRkZjk2NDJiNjUzMzY2M2UyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmplY3Qu
aCIKKyNpbmNsdWRlICJSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIgogI2luY2x1ZGUgIlJlbmRl
cldpZGdldC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCkBA
IC0xNzcsOSArMTc4LDE1IEBAIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIC8vIEZJWE1FOiBNb3VzZSBkb3duIGFuZCBzY3JvbGwg
ZXZlbnRzIGFyZSBwYXNzZWQgZG93biB0byBwbHVnLWluIHZpYSBjdXN0b20gY29kZSBpbiBFdmVu
dEhhbmRsZXI7IHRoZXNlIGNvZGUgcGF0aHMgc2hvdWxkIGJlIHVuaXRlZC4KIAogICAgIFJlbmRl
ck9iamVjdCogciA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKHIgJiYgci0+aXNFbWJlZGRlZE9iamVj
dCgpICYmIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QociktPnNob3dzVW5hdmFpbGFibGVQbHVnaW5J
bmRpY2F0b3IoKSkgewotICAgICAgICB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHIpLT5oYW5kbGVV
bmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50KGV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChyICYmIHItPmlzRW1iZWRkZWRPYmplY3QoKSkgeworICAgICAgICBpZiAodG9SZW5k
ZXJFbWJlZGRlZE9iamVjdChyKS0+c2hvd3NVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcigpKSB7
CisgICAgICAgICAgICB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHIpLT5oYW5kbGVVbmF2YWlsYWJs
ZVBsdWdpbkluZGljYXRvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoci0+aXNTbmFwc2hvdHRlZFBsdWdJbigpICYmIGRpc3BsYXlTdGF0
ZSgpIDwgUGxheWluZykgeworICAgICAgICAgICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihy
KS0+aGFuZGxlRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgaWYgKCFyIHx8ICFyLT5pc1dpZGdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcAppbmRleCA3ZjE2ZjNkZmU5YWNiYTEzYWNjMjEwZDg0NGI5NTc2YWJj
YWY3OWRjLi40NDEyYmFlZWE3NWRjOWNkNzZlOTNlYzMxNTY5MjNlZjYyNTk5NzU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KLSAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTQ2LDYgKzE0NiwxMCBA
QCBQYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2lu
KGNvbnN0IEludFNpemUmLCBIVE1MUGx1ZwogICAgIHJldHVybiAwOwogfQogCit2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKEhUTUxQbHVnSW5FbGVtZW50KikKK3sK
K30KKwogUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUph
dmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3Qg
S1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQogewog
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDM5MDI3
OTAzODFhZmJjOGUxMzIzZTI0MGExZWY1YTNlMTgxODcyNTkuLmUwNThkNzk0YjY0OTBlNmVlMGZk
Mjc3MmJkN2U5ZmUwZmJlMDg2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEVyaWMgU2VpZGVsIChl
cmljQHdlYmtpdC5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zNDQsNiArMzQ0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpIHsgfQogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4o
Y29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29s
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oSFRNTFBsdWdJbkVs
ZW1lbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0
IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgT1ZF
UlJJREU7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBJbnRT
aXplJiwgSFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDcwM2ZkM2JkM2NmNjMy
YTdiOTBjNmJhYTQ1NmZhZTRlZGNiNGYwYWUuLmQyMzliMjUzYWE1M2UwMTE5N2ZhYWFmZGI3OTI0
ZjY5MDk4MTRkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNjIsNiArMjYy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
cmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhU
TUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihj
b25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wg
bG9hZE1hbnVhbGx5KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihI
VE1MUGx1Z0luRWxlbWVudCopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0
YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwg
SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1
Z0luLmNwcAppbmRleCA1NmJiZDc0NDEwMzI3ZjIxZWIwNjcxYTVkYjhiNTc1ZTZjYWFlMmE2Li5h
Nzc5MTMyYjhmOWYwNjc4MTc3NWQ5OTFlOTU3Mzc0MDRjZDVjMDhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTI3
LDkgKzI3LDExIEBACiAjaW5jbHVkZSAiUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCIKIAogI2lu
Y2x1ZGUgIkN1cnNvci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBh
aW50SW5mby5oIgogI2luY2x1ZGUgIlBhdGguaCIKIApAQCAtMTE1LDQgKzExNywyOSBAQCB2b2lk
IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFJlcGxhY2VkU25hcHNob3QoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0CiAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBz
dHlsZSgpLT5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBz
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CiB9
CiAKK0N1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKGNv
bnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlkZUN1cnNvcikgY29uc3QKK3sK
KyAgICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50KCktPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJ
bkVsZW1lbnQ6OlBsYXlpbmcpIHsKKyAgICAgICAgb3ZlcnJpZGVDdXJzb3IgPSBoYW5kQ3Vyc29y
KCk7CisgICAgICAgIHJldHVybiBTZXRDdXJzb3I7CisgICAgfQorICAgIHJldHVybiBSZW5kZXJF
bWJlZGRlZE9iamVjdDo6Z2V0Q3Vyc29yKHBvaW50LCBvdmVycmlkZUN1cnNvcik7Cit9CisKK3Zv
aWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmhhbmRsZUV2ZW50KEV2ZW50KiBldmVudCkKK3sK
KyAgICBpZiAoIWV2ZW50LT5pc01vdXNlRXZlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
TW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCk7
CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQgJiYgbW91
c2VFdmVudC0+YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgeworICAgICAgICBwbHVnSW5JbWFnZUVs
ZW1lbnQoKS0+c2V0RGlzcGxheVN0YXRlKEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nKTsKKyAg
ICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgICAg
ICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5yZWNyZWF0ZVBsdWdpbihwbHVnSW5JbWFnZUVs
ZW1lbnQoKSk7CisgICAgICAgIG1fc25hcHNob3RSZXNvdXJjZS0+c2V0Q2FjaGVkSW1hZ2UoMCk7
CisgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCmluZGV4IDgwYzJhMTRiMzNl
MDlmNDM5ZDU1MDEwNDY4NGY3Njg4NjUwM2JhMTYuLjZhMTNhM2EzZmZmZThiZTVjZjFjMzFkMDA3
OWE5YmQ2NmY4MmJkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5oCkBAIC00MiwxMCArNDIsMTMgQEAgcHVibGljOgogCiAgICAg
dm9pZCB1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPik7CiAKKyAgICB2b2lkIGhhbmRs
ZUV2ZW50KEV2ZW50Kik7CisKIHByaXZhdGU6CiAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCog
cGx1Z0luSW1hZ2VFbGVtZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNuYXBzaG90dGVkUGx1Z0luIjsgfQogCisg
ICAgdmlydHVhbCBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50Jiwg
Q3Vyc29yJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU25hcHNob3R0ZWRQ
bHVnSW4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBP
VkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGQ5MDg4ODFhM2FjNzRlYzIxMjhlNzJhOTE5MTg4
MWVmM2YzNDgyYmEuLjlmNTk4YzIwYTk0MDJkMDY3MTM1MzIxMmYzMmFkNWE2NDE3ZTdjM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTk4LDYg
KzE5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50
IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdl
YkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJl
ZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBPVkVSUklE
RTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBw
bGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CmluZGV4IGRlMGY2MTgzZDI5MmI1ODIzZTMwY2UxZDZhYjE3OWNkMDZlYmQzNTYuLjVmYjc3ZTMz
MmU1MTY4MTMxYjM0NDk1Y2VhNGU3OWRjMWM0OTQzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzI0LDYgKzE3MjQs
MTAgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVn
aW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTFAKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6SFRNTFBsdWdJbkVs
ZW1lbnQqKQoreworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFU
b1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKIHsKICAgICBpZiAoIXBsdWdpbldpZGdldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCBiYTg1ZTcyZGNiZjhmNDYxNTQzMTI4NDQyNjA5ZjVlNjAyMmMyZmM5Li45NjhiN2NjMjdk
MWVmMGMxMTE2Njk1YjA0NDExMWRkMjY3MWI3MmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xOTIsNiArMTkyLDEwIEBAIHN0
YXRpYyBTdHJpbmcgYnVpbGRIVFRQSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgbG9uZyBsb25nJiBleHBlCiAKIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNl
aXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKIHsKKyAgICAvLyBUaGUgcGx1Z2luIG1pZ2h0IGhhdmUgYmVlbiBz
aHV0IGRvd24gYWZ0ZXIgdGhlIHNuYXBzaG90IHdhcyB0YWtlbiBmb3IgY2xpY2stdG8tc3RhcnQg
cGx1Z2lucy4KKyAgICBpZiAoIW1fcGx1Z2luVmlldy0+bV9wbHVnaW4pCisgICAgICAgIHJldHVy
bjsKKwogICAgIC8vIENvbXB1dGUgdGhlIHN0cmVhbSByZWxhdGVkIGRhdGEgZnJvbSB0aGUgcmVz
b3VyY2UgcmVzcG9uc2UuCiAgICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51
cmwoKTsKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGUoKTsK
QEAgLTIwOCw2ICsyMTIsOSBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUgogCiB2b2lkIFBsdWdp
blZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKIHsKKyAgICAvLyBUaGUgcGx1Z2luIG1p
Z2h0IGhhdmUgYmVlbiBzaHV0IGRvd24gYWZ0ZXIgdGhlIHNuYXBzaG90IHdhcyB0YWtlbiBmb3Ig
Y2xpY2stdG8tc3RhcnQgcGx1Z2lucy4KKyAgICBpZiAoIW1fcGx1Z2luVmlldy0+bV9wbHVnaW4p
CisgICAgICAgIHJldHVybjsKICAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRS
ZWNlaXZlRGF0YShtX3N0cmVhbUlELCBieXRlcywgbGVuZ3RoKTsKIH0KIApAQCAtMjE3LDcgKzIy
NCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvCiAgICAgUmVmUHRyPFN0cmVhbT4gcHJvdGVj
dCh0aGlzKTsKIAogICAgIC8vIFdlIG9ubHkgd2FudCB0byBjYWxsIHN0cmVhbURpZEZhaWwgaWYg
dGhlIHN0cmVhbSB3YXMgbm90IGV4cGxpY2l0bHkgY2FuY2VsbGVkIGJ5IHRoZSBwbHVnLWluLgot
ICAgIGlmICghbV9zdHJlYW1XYXNDYW5jZWxsZWQpCisgICAgaWYgKCFtX3N0cmVhbVdhc0NhbmNl
bGxlZCAmJiBtX3BsdWdpblZpZXctPm1fcGx1Z2luKQogICAgICAgICBtX3BsdWdpblZpZXctPm1f
cGx1Z2luLT5zdHJlYW1EaWRGYWlsKG1fc3RyZWFtSUQsIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCkp
OwogCiAgICAgbV9wbHVnaW5WaWV3LT5yZW1vdmVTdHJlYW0odGhpcyk7CkBAIC0yMzMsNyArMjQw
LDggQEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqKQogICAgIC8vIFByb3RlY3QgdGhlIHBsdWctaW4gd2hpbGUgd2Un
cmUgY2FsbGluZyBpbnRvIGl0LgogICAgIE5QUnVudGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVj
dG9yIHBsdWdpblByb3RlY3RvcigmbV9wbHVnaW5WaWV3LT5tX25wUnVudGltZU9iamVjdE1hcCk7
CiAjZW5kaWYKLSAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRGaW5pc2hMb2Fk
aW5nKG1fc3RyZWFtSUQpOworICAgIGlmIChtX3BsdWdpblZpZXctPm1fcGx1Z2luKQorICAgICAg
ICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRGaW5pc2hMb2FkaW5nKG1fc3RyZWFt
SUQpOwogCiAgICAgbV9wbHVnaW5WaWV3LT5yZW1vdmVTdHJlYW0odGhpcyk7CiAgICAgbV9wbHVn
aW5WaWV3ID0gMDsKQEAgLTMxNiw2ICszMjQsMjYgQEAgdm9pZCBQbHVnaW5WaWV3OjpkZXN0cm95
UGx1Z2luQW5kUmVzZXQoKQogICAgIGNhbmNlbEFsbFN0cmVhbXMoKTsKIH0KIAordm9pZCBQbHVn
aW5WaWV3OjpyZWNyZWF0ZUFuZEluaXRpYWxpemUoUGFzc1JlZlB0cjxQbHVnaW4+IHBsdWdpbikK
K3sKKyAgICBpZiAobV9wbHVnaW4pIHsKKyAgICAgICAgaWYgKG1fcGx1Z2luU25hcHNob3RUaW1l
ci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9wbHVnaW5TbmFwc2hvdFRpbWVyLnN0b3AoKTsK
KyAgICAgICAgZGVzdHJveVBsdWdpbkFuZFJlc2V0KCk7CisgICAgfQorCisgICAgLy8gUmVzZXQg
bWVtYmVyIHZhcmlhYmxlcyB0byBpbml0aWFsIHZhbHVlcy4KKyAgICBtX3BsdWdpbiA9IHBsdWdp
bjsKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBtX2lzV2FpdGluZ0ZvclN5bmNo
cm9ub3VzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKKyAgICBtX2lzV2FpdGluZ1VudGlsTWVkaWFD
YW5TdGFydCA9IGZhbHNlOworICAgIG1faXNCZWluZ0Rlc3Ryb3llZCA9IGZhbHNlOworICAgIG1f
bWFudWFsU3RyZWFtU3RhdGUgPSBTdHJlYW1TdGF0ZUluaXRpYWw7CisgICAgbV90cmFuc2llbnRQ
YWludGluZ1NuYXBzaG90ID0gbnVsbHB0cjsKKworICAgIGluaXRpYWxpemVQbHVnaW4oKTsKK30K
KwogRnJhbWUqIFBsdWdpblZpZXc6OmZyYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wbHVn
aW5FbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZmQ0MWEzZmJmNzM3MTVlNGJmOTJkM2Qy
YzhjMDllMzJkNTE1YmVlYi4uZGQ3ODZhZWZmYjQ5MWJhNGJjODVlZDZhMWYyOTlmODBjYTBkMDIy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
CkBAIC01Myw2ICs1Myw4IEBAIGNsYXNzIFBsdWdpblZpZXcgOiBwdWJsaWMgV2ViQ29yZTo6UGx1
Z2luVmlld0Jhc2UsIHB1YmxpYyBQbHVnaW5Db250cm9sbGVyLCBwcml2CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luVmlldz4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6
SFRNTFBsdWdJbkVsZW1lbnQ+LCBQYXNzUmVmUHRyPFBsdWdpbj4sIGNvbnN0IFBsdWdpbjo6UGFy
YW1ldGVycyYpOwogCisgICAgdm9pZCByZWNyZWF0ZUFuZEluaXRpYWxpemUoUGFzc1JlZlB0cjxQ
bHVnaW4+KTsKKwogICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSgpIGNvbnN0OwogCiAgICAgYm9v
bCBpc0JlaW5nRGVzdHJveWVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0JlaW5nRGVzdHJveWVkOyB9
CkBAIC03Miw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBk
ZkRvY3VtZW50Rm9yUHJpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbi0+cGRmRG9jdW1l
bnRGb3JQcmludGluZygpOyB9CiAjZW5kaWYKIAorICAgIGNvbnN0IFBsdWdpbjo6UGFyYW1ldGVy
cyYgaW5pdGlhbFBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KKwog
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpczsgbm9ib2R5IHNob3VsZCBoYXZlIHRvIGtub3cgYWJv
dXQgdGhlIHBsdWctaW4gdmlldydzIHJlbmRlcmVyIGV4Y2VwdCB0aGUgcGx1Zy1pbiB2aWV3IGl0
c2VsZi4KICAgICBXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4NzYyMzRmODg5NjFk
ZDc5Njc3ZjE0NTU0YjUwNTA1ZDUzNDZlNGJmLi43ZjcxYjAzMzA2YmRhYzcwOTY3MDE3OWI5MTgx
NmZjYWE0MWI0ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTM1Myw2ICsxMzUzLDE0IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luCiAgICAgcmV0
dXJuIFBsdWdpblZpZXc6OmNyZWF0ZShwbHVnaW5FbGVtZW50LCBwbHVnaW4ucmVsZWFzZSgpLCBw
YXJhbWV0ZXJzKTsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVhdGVQbHVn
aW4oV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbkVsZW1lbnQpCit7CisgICAgUGx1
Z2luVmlldyogd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+KHBsdWdpbkVsZW1lbnQt
PnBsdWdpbldpZGdldCgpKTsKKyAgICBBU1NFUlQobV9mcmFtZS0+cGFnZSgpKTsKKyAgICBSZWZQ
dHI8UGx1Z2luPiBwbHVnaW4gPSBtX2ZyYW1lLT5wYWdlKCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1l
LCBwbHVnaW5FbGVtZW50LCB3aWRnZXQtPmluaXRpYWxQYXJhbWV0ZXJzKCkpOworICAgIHdpZGdl
dC0+cmVjcmVhdGVBbmRJbml0aWFsaXplKHBsdWdpbi5yZWxlYXNlKCkpOworfQorCiB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldp
ZGdldCkKIHsKICAgICBtX3BsdWdpblZpZXcgPSBzdGF0aWNfY2FzdDxQbHVnaW5WaWV3Kj4ocGx1
Z2luV2lkZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA4NjZhZDNmNTQ0
ZGIwMTE5ODlkMTIyNDBmMzQ3Y2QzYWIwMzQ5NzhkLi41ZDk2ODY4ZTAxMDdkMGVmMjIzYWI3YWU0
ODk2YzkxZDE0NDQ3YWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xODgsNiArMTg4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xs
aW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIE9WRVJSSURFOwogICAgIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lk
Z2V0KiBwbHVnaW5XaWRnZXQpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgT1ZFUlJJREU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167891</attachid>
            <date>2012-10-09 18:41:42 -0700</date>
            <delta_ts>2012-10-09 20:08:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98328-20121009184042.patch</filename>
            <type>text/plain</type>
            <size>31130</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIyYTFjMzU1NDIwZWM4
NGE3ZGFhYTY5Y2VjMzE3NzA2ZGMxM2QwYi4uMjFlMDFhODU1NTdjMWRkNTNjOGMxZWIzMGM0MTZk
YWYyOWFiNzlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTA4ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5z
IHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQy
NjY4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
eHRlbmQgdGhlIGRlZmF1bHQgZXZlbnQgaGFuZGxlciB0byBkZWFsIHdpdGggcGx1Z2lucyB3aXRo
IHNuYXBzaG90cy4KKyAgICAgICAgV2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIHBsYWNlaG9s
ZGVyLCB0aGUgcGx1Z2luIGlzIHJlY3JlYXRlZCBhbmQgZGlzcGxheWVkLgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6IEFkZCBuZXcgY2xpZW50IGZ1bmN0aW9uIHJlY3Jl
YXRlUGx1Z2luKCksIHdoaWNoIGlzCisgICAgICAgIGV4cGVjdGVkIHRvIHJlLWNyZWF0ZSB0aGUg
cGx1Z2luIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyBhcyB3aGVuIGl0IHdhcyBydW4gdG8KKyAg
ICAgICAgb2J0YWluIHRoZSBwbHVnaW4ncyBzbmFwc2hvdCBwbGFjZWhvbGRlci4KKworICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3Jl
YXRlUGx1Z2luKCkuCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOiBFeHBvc2UgSFRNTFBsdWdJbkVsZW1lbnQ6OnBsdWdpbldpZGdldCgp
LgorCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFVwZGF0ZSB0byBs
b29rIGZvcgorICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi4gSWYgdGhlIHBsdWdpbiBp
cyBub3QgcGxheWluZywgaGF2ZSB0aGUgcmVuZGVyZXIgaGFuZGxlIHRoZQorICAgICAgICBldmVu
dC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdpbjo6Z2V0Q3Vyc29yKTogU2V0
IHRvIGhhbmQgY3Vyc29yIHdoZW4gdGhlIHBsdWdpbiBpcyBub3QKKyAgICAgICAgcGxheWluZy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudCk6
IElmIHRoZSB1c2VyIGNsaWNrZWQgb24gdGhlIHBsdWdpbiB1c2luZyB0aGUKKyAgICAgICAgbGVm
dCBidXR0b24sIHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIGVsZW1lbnQgdG8gcGxheWluZy4gUmVt
b3ZlIHRoZSBjYWNoZWQgc25hcHNob3QgaW1hZ2UsCisgICAgICAgIGFuZCByZWNyZWF0ZSB0aGUg
cGx1Z2luLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oOgor
ICAgICAgICAoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOgorCiAyMDEyLTEwLTA5ICBKb24gTGVl
ICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggZm9yIFF0IFdpbmRvd3Mu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZiNzU2ZjhjMzJkMjA3ZDI3MmE0NTM0YjUz
MmZkZWRmM2ZmNzE3ZWEuLjIxYTBmM2M5MTBlYjVmZDJmM2NlMzlmMTFhZWE1ODlkYjVhMDdjYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMDkg
IEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFjdGl2YXRlIHBs
dWdpbnMgd2hlbiB1c2VyIGNsaWNrcyBvbiBzbmFwc2hvdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzEyNDI2NjgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNo
LCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAo
T09QUyEpLgorCisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OnJlY3JlYXRlUGx1Z2luKTogU3R1YiBp
bXBsZW1lbnRhdGlvbiBvZiByZWNyZWF0ZVBsdWdpbigpLgorCiAyMDEyLTEwLTA5ICBKdWxpZW4g
Q2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0g
Q2hyb21pdW0gREVQUyBoYXMgYSBzdHJheSBkaXJlY3RvcnksIHR1cm5pbmcgb3VyIFdpbiBib3Rz
IHJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDE3YzgwODhiMDc3NTVmODQ0MjY5NDQzNjFiYzE5M2Nj
ZDdkNzI5N2IuLmRhMWQwNDQ1OTBmYWVkMDI1MDQwMDBkYTIyZmU3ZDdmYzU0NmYyMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMC0wOSAgSm9uIExlZSAgPGpvbmxl
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWN0aXZhdGUgcGx1Z2lucyB3aGVuIHVzZXIg
Y2xpY2tzIG9uIHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI0MjY2ODE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBp
bmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxl
YXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVhdGVQbHVnaW4pOiBTdHViIGltcGxlbWVudGF0
aW9uIG9mIHJlY3JlYXRlUGx1Z2luKCkuCisKIDIwMTItMTAtMDcgIENhaW8gTWFyY2VsbyBkZSBP
bGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBS
ZW5hbWUgZmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IGYyZDFlNTQzYjhjMTIxYWU1OTI4YjhjZTFiZDRjODllMzQxMjczMmIu
Ljg2ODlhMmQyYzIxNzQ5N2YzNDY1YTRkOWMyNzRjMDQ0ZGJkNmNlYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0wOCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dLMl0gQWN0aXZhdGUgcGx1Z2lucyB3aGVuIHVzZXIgY2xpY2tzIG9u
IHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05ODMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI0MjY2ODE+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1
Z2luKTogU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiByZWNyZWF0ZVBsdWdpbigpLgorCiAyMDEyLTEw
LTA4ICBLaXJhbiBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgogCiAgICAgICAgIFRocm90
dGxlIERPTSB0aW1lcnMgb24gaGlkZGVuIHBhZ2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDgxMWFl
MGUyYzA5YjVhN2Q4NzNmOWQ1YTNmOWM4NjFkNWY2OTVkMWYuLjVlNDg4NTg1ZDRlYjZiNDg0NTA3
Y2QzYzM0ZGJmZjZjYzY4ZDMxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxMi0xMC0wOSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0g
QWN0aXZhdGUgcGx1Z2lucyB3aGVuIHVzZXIgY2xpY2tzIG9uIHNuYXBzaG90CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODMyOAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTI0MjY2ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2gg
YXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRp
b25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1
Z2luKTogU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiByZWNyZWF0ZVBsdWdpbigpLgorCiAyMDEyLTEw
LTA4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNv
bWUgR3JhcGhpY3NMYXllciBjbGVhbnVwIHRvIHNlcGFyYXRlIHRoZSBjb25jZXB0cyBvZiB1c2lu
ZyBhIHRpbGUgY2FjaGUsIGFuZCBiZWluZyB0aGUgbWFpbiB0aWxlIGNhY2hlIGxheWVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2lu
Y2UvQ2hhbmdlTG9nCmluZGV4IGM5NjkwZWZkYWJkODNiOGM3Yzc2ZThjMGQ3ZTFhYTdlZTI3ZjEx
MDIuLjliYjcyODA4ZGM1YzM5ZmNlODUyOTg3NDk0YWVhZTc3MjU0YTJhMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2Uv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMDkgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFjdGl2YXRlIHBsdWdpbnMgd2hlbiB1c2VyIGNs
aWNrcyBvbiBzbmFwc2hvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTgzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDI2NjgxPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5m
b3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFz
ZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpyZWNyZWF0ZVBsdWdpbik6IFN0dWIgaW1wbGVt
ZW50YXRpb24gb2YgcmVjcmVhdGVQbHVnaW4oKS4KKwogMjAxMi0xMC0wNyAgQ2FpbyBNYXJjZWxv
IGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAg
ICAgIFJlbmFtZSBmaXJzdC9zZWNvbmQgdG8ga2V5L3ZhbHVlIGluIEhhc2hNYXAgaXRlcmF0b3Jz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggYTk2NDI3MWY1ODc4ZGZhMTgxZGJjYmUxZWM4NWExNTYwMDM1MjUyYi4u
MmViM2ExMWNiYjQwYTA5MjdlMWNlYmI0ZDg5YWIwODdhMWQ0OTU5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQwIEBACisyMDEyLTEwLTA4ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNo
b3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIHJlY3JlYXRpb24gb2Yg
dGhlIHBsdWdpbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVjcmVhdGVBbmRJbml0aWFsaXplKTog
V2UgY2FuIHJ1biBpbnRvIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSB1c2VyCisgICAgICAgIGRlY2lk
ZWQgdG8gcnVuIHRoZSBwbHVnaW4gYmVmb3JlIHRoZSBzbmFwc2hvdCB3YXMgcmVhZHkgdG8gYmUg
dGFrZW4uIEluIHRoaXMgY2FzZSwgdGhlCisgICAgICAgIHBsdWdpbiBtZW1iZXIgdmFyaWFibGUg
aXMgbm9uLW51bGwsIGFuZCB0aGUgdGltZXIgaXMgc3RpbGwgYWN0aXZlLiBUdXJuIG9mZiB0aGUg
dGltZXIsIGFuZAorICAgICAgICBkZXN0cm95IHRoYXQgaW5zdGFuY2Ugb2YgdGhlIHBsdWdpbi4g
V2Ugc2V0IHRoZSBwbHVnaW4gdG8gdGhlIGluc3RhbmNlIHByb3ZpZGVkIGluIHRoZQorICAgICAg
ICBmaXJzdCBwYXJhbWV0ZXIgdG8gdGhpcyBmdW5jdGlvbiwgYW5kIHJlc2V0IHRoZSBtZW1iZXIg
dmFyaWFibGVzIHNvIHRoYXQgdGhlIFBsdWdpblZpZXcgaXMKKyAgICAgICAgaW4gYSBzdGF0ZSBz
aW1pbGFyIHRvIHdoZW4gaXQgd2FzIGZpcnN0IGNyZWF0ZWQuIFdlIGFsc28gaW1tZWRpYXRlbHkg
aW5pdGlhbGl6ZSB0aGUgcGx1Z2luLAorICAgICAgICB3aGljaCBtYXkgaGFwcGVuIHN5bmNocm9u
b3VzbHkgb3IgYXN5bmNocm9ub3VzbHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojppbml0aWFsUGFyYW1l
dGVycyk6IEV4cG9zZSB0aGUgaW5pdGlhbCBwYXJhbWV0ZXJzLiBVc2VkIHRvIHJlY3JlYXRlCisg
ICAgICAgIHRoZSBwbHVnaW4uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKTogQ3JlYXRlIGEgbmV3IFBsdWdpbiBpbnN0YW5jZSB1
c2luZyB0aGUgc2FtZQorICAgICAgICBwYXJhbWV0ZXJzIHVzZWQgdG8gY3JlYXRlIHRoZSBwbHVn
aW4gZm9yIHNuYXBzaG90dGluZy4gRm9yd2FyZCB0aGF0IGluc3RhbmNlIHRvIHRoZSB3aWRnZXQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQpOiBJbXBsZW1lbnQgcmVjcmVhdGVQ
bHVnaW4oKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDog
VGhlIHBsdWdpbiB0aGF0IGZpcnN0IHJ1bnMgbWlnaHQgaGF2ZSBiZWVuIGRlc3Ryb3llZAorICAg
ICAgICBhZnRlciB0aGUgc25hcHNob3Qgd2FzIHRha2VuLiBDaGVjayBmb3IgdGhlIGV4aXN0ZW5j
ZSBvZiB0aGUgcGx1Z2luIGJlZm9yZSBmb3J3YXJkaW5nIHRoZQorICAgICAgICBjYWxsYmFja3Mu
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkRmFpbCk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkRmluaXNoTG9hZGluZyk6CisKIDIwMTIt
MTAtMDkgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIEhhdmUg
cGx1Z2lucyByZW5kZXIgb2Zmc2NyZWVuIHRvIGNhcHR1cmUgc25hcHNob3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KaW5kZXggYzQ4ZWUxYTFkZjIxNTkyYjdkYzc1MTBiMmZkYjNiMTliOGFmODk0ZS4uZGEz
MzBmMmJhZmYxMGI3MmVhNDljYTUyNWMyZjk4NzRkNmY4ZTJmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KQEAgLTEyMzEsNiArMTIzMSw3IEBAIF9fWk5LN1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb24x
N3RvTm9ybWFsaXplZFJhbmdlRXYKIF9fWk5LN1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb24xOXJv
b3RFZGl0YWJsZUVsZW1lbnRFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjIzaXND
b250ZW50UmljaGx5RWRpdGFibGVFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjVp
c0FsbEVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKK19fWk5LN1dlYkNvcmUxN0hU
TUxQbHVnSW5FbGVtZW50MTJwbHVnaW5XaWRnZXRFdgogX19aTks3V2ViQ29yZTE3SlNET01HbG9i
YWxPYmplY3QyMnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRFdgogX19aTks3V2ViQ29yZTE3UmVndWxh
ckV4cHJlc3Npb24xM21hdGNoZWRMZW5ndGhFdgogX19aTks3V2ViQ29yZTE3UmVndWxhckV4cHJl
c3Npb241bWF0Y2hFUktOM1dURjZTdHJpbmdFaVBpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuY3BwCmluZGV4IGM2ZTUyY2EwZGYzNDNkYWJjNGNiMGQ1OWE0YTQ2N2RlMWU2
NDc1OWEuLjk5NDdhNzM2ZWM4ODZlODM0YzJhMmRkZjk2NDJiNjUzMzY2M2UyMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCiAjaW5jbHVkZSAi
UmVuZGVyRW1iZWRkZWRPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bi5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiV2lkZ2V0LmgiCkBAIC0xNzcsOSArMTc4LDE1IEBAIHZvaWQgSFRNTFBsdWdJbkVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIC8vIEZJWE1FOiBN
b3VzZSBkb3duIGFuZCBzY3JvbGwgZXZlbnRzIGFyZSBwYXNzZWQgZG93biB0byBwbHVnLWluIHZp
YSBjdXN0b20gY29kZSBpbiBFdmVudEhhbmRsZXI7IHRoZXNlIGNvZGUgcGF0aHMgc2hvdWxkIGJl
IHVuaXRlZC4KIAogICAgIFJlbmRlck9iamVjdCogciA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKHIg
JiYgci0+aXNFbWJlZGRlZE9iamVjdCgpICYmIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QociktPnNo
b3dzVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IoKSkgewotICAgICAgICB0b1JlbmRlckVtYmVk
ZGVkT2JqZWN0KHIpLT5oYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50KGV2ZW50
KTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChyICYmIHItPmlzRW1iZWRkZWRPYmplY3QoKSkg
eworICAgICAgICBpZiAodG9SZW5kZXJFbWJlZGRlZE9iamVjdChyKS0+c2hvd3NVbmF2YWlsYWJs
ZVBsdWdpbkluZGljYXRvcigpKSB7CisgICAgICAgICAgICB0b1JlbmRlckVtYmVkZGVkT2JqZWN0
KHIpLT5oYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50KGV2ZW50KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoci0+aXNTbmFwc2hvdHRlZFBs
dWdJbigpICYmIGRpc3BsYXlTdGF0ZSgpIDwgUGxheWluZykgeworICAgICAgICAgICAgdG9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbihyKS0+aGFuZGxlRXZlbnQoZXZlbnQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFyIHx8ICFyLT5pc1dpZGdldCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA3ZjE2ZjNkZmU5YWNi
YTEzYWNjMjEwZDg0NGI5NTc2YWJjYWY3OWRjLi40NDEyYmFlZWE3NWRjOWNkNzZlOTNlYzMxNTY5
MjNlZjYyNTk5NzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRXJpYyBTZWlkZWwgPGVyaWNA
d2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMTQ2LDYgKzE0NiwxMCBAQCBQYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1ZwogICAgIHJldHVy
biAwOwogfQogCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKEhU
TUxQbHVnSW5FbGVtZW50KikKK3sKK30KKwogUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxB
cHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCmluZGV4IDM5MDI3OTAzODFhZmJjOGUxMzIzZTI0MGExZWY1YTNlMTgxODcyNTku
LmUwNThkNzk0YjY0OTBlNmVlMGZkMjc3MmJkN2U5ZmUwZmJlMDg2NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA2IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zNDQsNiArMzQ0
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYs
IGJvb2wpIHsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0
cmluZyYsIGJvb2wsIGludCwgaW50KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50Kiwg
Y29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBTdHJpbmcmLCBib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjcmVh
dGVQbHVnaW4oSFRNTFBsdWdJbkVsZW1lbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1M
QXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikgT1ZFUlJJREU7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1Jf
VklERU8pCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlTWVkaWFQbGF5ZXJQ
cm94eVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IEtVUkwm
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3Ry
aW5nJikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
CmluZGV4IDcwM2ZkM2JkM2NmNjMyYTdiOTBjNmJhYTQ1NmZhZTRlZGNiNGYwYWUuLmQyMzliMjUz
YWE1M2UwMTE5N2ZhYWFmZGI3OTI0ZjY5MDk4MTRkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0yNjIsNiArMjYyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldp
ZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
aWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBj
b25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCByZWNyZWF0ZVBsdWdpbihIVE1MUGx1Z0luRWxlbWVudCopID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KSA9IDA7
CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNl
VVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtVmFsdWVzKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCA1NmJiZDc0NDEwMzI3ZjIxZWIwNjcx
YTVkYjhiNTc1ZTZjYWFlMmE2Li5hNzc5MTMyYjhmOWYwNjc4MTc3NWQ5OTFlOTU3Mzc0MDRjZDVj
MDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5jcHAKQEAgLTI3LDkgKzI3LDExIEBACiAjaW5jbHVkZSAiUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uaCIKIAogI2luY2x1ZGUgIkN1cnNvci5oIgorI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhZGllbnQu
aCIKICNpbmNsdWRlICJIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVkZSAiTW91c2VF
dmVudC5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlBhdGguaCIKIApAQCAt
MTE1LDQgKzExNywyOSBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFJlcGxh
Y2VkU25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0CiAgICAgY29udGV4dC0+ZHJh
d0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBD
b21wb3NpdGVTb3VyY2VPdmVyLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCB1c2VM
b3dRdWFsaXR5U2NhbGluZyk7CiB9CiAKK0N1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbjo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBvdmVy
cmlkZUN1cnNvcikgY29uc3QKK3sKKyAgICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50KCktPmRpc3Bs
YXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcpIHsKKyAgICAgICAgb3ZlcnJp
ZGVDdXJzb3IgPSBoYW5kQ3Vyc29yKCk7CisgICAgICAgIHJldHVybiBTZXRDdXJzb3I7CisgICAg
fQorICAgIHJldHVybiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6Z2V0Q3Vyc29yKHBvaW50LCBvdmVy
cmlkZUN1cnNvcik7Cit9CisKK3ZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmhhbmRsZUV2
ZW50KEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIWV2ZW50LT5pc01vdXNlRXZlbnQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0YXRpY19jYXN0
PE1vdXNlRXZlbnQqPihldmVudCk7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmNsaWNrRXZlbnQgJiYgbW91c2VFdmVudC0+YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewor
ICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+c2V0RGlzcGxheVN0YXRlKEhUTUxQbHVnSW5F
bGVtZW50OjpQbGF5aW5nKTsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkt
PmZyYW1lKCkpCisgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5yZWNyZWF0
ZVBsdWdpbihwbHVnSW5JbWFnZUVsZW1lbnQoKSk7CisgICAgICAgIG1fc25hcHNob3RSZXNvdXJj
ZS0+c2V0Q2FjaGVkSW1hZ2UoMCk7CisgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bi5oCmluZGV4IDgwYzJhMTRiMzNlMDlmNDM5ZDU1MDEwNDY4NGY3Njg4NjUwM2JhMTYuLjZhMTNh
M2EzZmZmZThiZTVjZjFjMzFkMDA3OWE5YmQ2NmY4MmJkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCkBAIC00MiwxMCArNDIs
MTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdl
Pik7CiAKKyAgICB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50Kik7CisKIHByaXZhdGU6CiAgICAgSFRN
TFBsdWdJbkltYWdlRWxlbWVudCogcGx1Z0luSW1hZ2VFbGVtZW50KCkgY29uc3Q7CiAgICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNuYXBz
aG90dGVkUGx1Z0luIjsgfQogCisgICAgdmlydHVhbCBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29y
KGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29yJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIGlzU25hcHNob3R0ZWRQbHVnSW4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXggZjJjNGQwNzBkOGRiYmU0OGYz
NmFmMGU1NzgxOWMwMDljM2M0YWRlNC4uZjYyZWYxN2U0MDk0NDA2ZGIyYjUzNDVhZmZhN2MzNDhl
NGZkNzUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgKQEAgLTE4Miw2ICsxODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdl
YkNvcmU6OktVUkwmLAogICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYsCiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCBs
b2FkTWFudWFsbHkpOworICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpI
VE1MUGx1Z0luRWxlbWVudCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1Bs
dWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldCgKICAgICAgICAgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBmNmUzZDRmNmVkOTcwNmRl
ZGIwOGVmZjJkMzQ3M2I0NGQwNmYyOGEwLi5kNzJlYzgyYWZjYjEzNDA1MWJlNTlhODllMDQyODBj
NDYzYTg3ZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVh
dGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBi
b29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsK
ICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2lu
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25z
dCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpOwor
ICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVu
dCopIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29y
ZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJh
c2VVUkwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAgICAgICAgIHZpcnR1YWwg
V1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IGQ5MDg4ODFhM2FjNzRlYzIxMjhlNzJhOTE5MTg4MWVmM2YzNDgyYmEuLjlmNTk4YzIwYTk0MDJk
MDY3MTM1MzIxMmYzMmFkNWE2NDE3ZTdjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4
LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTk4LDYgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVy
cmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVp
Z2h0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBj
cmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5F
bGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4m
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Kikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6
OldpZGdldCogcGx1Z2luV2lkZ2V0KSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGJhc2VVUkwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGRlMGY2MTgzZDI5MmI1ODIzZTMw
Y2UxZDZhYjE3OWNkMDZlYmQzNTYuLjVmYjc3ZTMzMmU1MTY4MTMxYjM0NDk1Y2VhNGU3OWRjMWM0
OTQzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xNzI0LDYgKzE3MjQsMTAgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRN
TFAKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVh
dGVQbHVnaW4oV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqKQoreworfQorCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdl
dCkKIHsKICAgICBpZiAoIXBsdWdpbldpZGdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGQ1MmY4MTIw
YThmNzIzMTc4M2E3MzQzMDY1Y2RhYjBhYTZjNzI5MjQuLmFkZTJiMzBkZGQxYmY5YjM2YTMyOTAw
MmYyM2E2ZmMxZDJjOTQxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTE1LDYgKzExNSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1l
KGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNv
cmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NT
Y3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpOworICAgIHZpcnR1YWwg
dm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCopIHsgfQogICAg
IHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdp
bldpZGdldCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlUGx1Z2luRG9jdW1lbnQoY29u
c3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oIGIvU291cmNl
L1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKaW5k
ZXggOTBlZTQ5NGE0YzUyYTE1NmVjMDkwMzdhNTNlZTNiOGExZWU2MzY2YS4uOGJlMGEyYzUyOTZi
MjkwYzc0ZDIyMGU4OWNlODU1NmVhZTM3ODUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKKysrIGIvU291cmNl
L1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKQEAg
LTEwOCw2ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVm
ZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5I
ZWlnaHQpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBs
dWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+Jiwg
Y29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29s
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6SFRNTFBsdWdJbkVs
ZW1lbnQqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29y
ZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVS
TCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6
OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKTsKICAgICB2aXJ0dWFsIFdURjo6U3Ry
aW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYmE4NWU3MmRjYmY4ZjQ2MTU0MzEy
ODQ0MjYwOWY1ZTYwMjJjMmZjOS4uOTY4YjdjYzI3ZDFlZjBjMTExNjY5NWIwNDQxMTFkZDI2NzFi
NzJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcApAQCAtMTkyLDYgKzE5MiwxMCBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkSFRUUEhlYWRl
cnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGxvbmcgbG9uZyYgZXhwZQogCiB2
b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CisgICAg
Ly8gVGhlIHBsdWdpbiBtaWdodCBoYXZlIGJlZW4gc2h1dCBkb3duIGFmdGVyIHRoZSBzbmFwc2hv
dCB3YXMgdGFrZW4gZm9yIGNsaWNrLXRvLXN0YXJ0IHBsdWdpbnMuCisgICAgaWYgKCFtX3BsdWdp
blZpZXctPm1fcGx1Z2luKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBDb21wdXRlIHRoZSBz
dHJlYW0gcmVsYXRlZCBkYXRhIGZyb20gdGhlIHJlc291cmNlIHJlc3BvbnNlLgogICAgIGNvbnN0
IEtVUkwmIHJlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJsKCk7CiAgICAgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCk7CkBAIC0yMDgsNiArMjEyLDkgQEAgdm9pZCBQ
bHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIGNvbnN0IFIKIAogdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpCiB7CisgICAgLy8gVGhlIHBsdWdpbiBtaWdodCBoYXZlIGJlZW4gc2h1dCBkb3duIGFm
dGVyIHRoZSBzbmFwc2hvdCB3YXMgdGFrZW4gZm9yIGNsaWNrLXRvLXN0YXJ0IHBsdWdpbnMuCisg
ICAgaWYgKCFtX3BsdWdpblZpZXctPm1fcGx1Z2luKQorICAgICAgICByZXR1cm47CiAgICAgbV9w
bHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnl0
ZXMsIGxlbmd0aCk7CiB9CiAKQEAgLTIxNyw3ICsyMjQsNyBAQCB2b2lkIFBsdWdpblZpZXc6OlN0
cmVhbTo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNl
RXJybwogICAgIFJlZlB0cjxTdHJlYW0+IHByb3RlY3QodGhpcyk7CiAKICAgICAvLyBXZSBvbmx5
IHdhbnQgdG8gY2FsbCBzdHJlYW1EaWRGYWlsIGlmIHRoZSBzdHJlYW0gd2FzIG5vdCBleHBsaWNp
dGx5IGNhbmNlbGxlZCBieSB0aGUgcGx1Zy1pbi4KLSAgICBpZiAoIW1fc3RyZWFtV2FzQ2FuY2Vs
bGVkKQorICAgIGlmICghbV9zdHJlYW1XYXNDYW5jZWxsZWQgJiYgbV9wbHVnaW5WaWV3LT5tX3Bs
dWdpbikKICAgICAgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkRmFpbChtX3N0
cmVhbUlELCBlcnJvci5pc0NhbmNlbGxhdGlvbigpKTsKIAogICAgIG1fcGx1Z2luVmlldy0+cmVt
b3ZlU3RyZWFtKHRoaXMpOwpAQCAtMjMzLDcgKzI0MCw4IEBAIHZvaWQgUGx1Z2luVmlldzo6U3Ry
ZWFtOjpkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikKICAgICAv
LyBQcm90ZWN0IHRoZSBwbHVnLWluIHdoaWxlIHdlJ3JlIGNhbGxpbmcgaW50byBpdC4KICAgICBO
UFJ1bnRpbWVPYmplY3RNYXA6OlBsdWdpblByb3RlY3RvciBwbHVnaW5Qcm90ZWN0b3IoJm1fcGx1
Z2luVmlldy0+bV9ucFJ1bnRpbWVPYmplY3RNYXApOwogI2VuZGlmCi0gICAgbV9wbHVnaW5WaWV3
LT5tX3BsdWdpbi0+c3RyZWFtRGlkRmluaXNoTG9hZGluZyhtX3N0cmVhbUlEKTsKKyAgICBpZiAo
bV9wbHVnaW5WaWV3LT5tX3BsdWdpbikKKyAgICAgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+
c3RyZWFtRGlkRmluaXNoTG9hZGluZyhtX3N0cmVhbUlEKTsKIAogICAgIG1fcGx1Z2luVmlldy0+
cmVtb3ZlU3RyZWFtKHRoaXMpOwogICAgIG1fcGx1Z2luVmlldyA9IDA7CkBAIC0zMTYsNiArMzI0
LDI2IEBAIHZvaWQgUGx1Z2luVmlldzo6ZGVzdHJveVBsdWdpbkFuZFJlc2V0KCkKICAgICBjYW5j
ZWxBbGxTdHJlYW1zKCk7CiB9CiAKK3ZvaWQgUGx1Z2luVmlldzo6cmVjcmVhdGVBbmRJbml0aWFs
aXplKFBhc3NSZWZQdHI8UGx1Z2luPiBwbHVnaW4pCit7CisgICAgaWYgKG1fcGx1Z2luKSB7Cisg
ICAgICAgIGlmIChtX3BsdWdpblNuYXBzaG90VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAg
IG1fcGx1Z2luU25hcHNob3RUaW1lci5zdG9wKCk7CisgICAgICAgIGRlc3Ryb3lQbHVnaW5BbmRS
ZXNldCgpOworICAgIH0KKworICAgIC8vIFJlc2V0IG1lbWJlciB2YXJpYWJsZXMgdG8gaW5pdGlh
bCB2YWx1ZXMuCisgICAgbV9wbHVnaW4gPSBwbHVnaW47CisgICAgbV9pc0luaXRpYWxpemVkID0g
ZmFsc2U7CisgICAgbV9pc1dhaXRpbmdGb3JTeW5jaHJvbm91c0luaXRpYWxpemF0aW9uID0gZmFs
c2U7CisgICAgbV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQgPSBmYWxzZTsKKyAgICBtX2lz
QmVpbmdEZXN0cm95ZWQgPSBmYWxzZTsKKyAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gU3RyZWFt
U3RhdGVJbml0aWFsOworICAgIG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdCA9IG51bGxwdHI7
CisKKyAgICBpbml0aWFsaXplUGx1Z2luKCk7Cit9CisKIEZyYW1lKiBQbHVnaW5WaWV3OjpmcmFt
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
CmluZGV4IGZkNDFhM2ZiZjczNzE1ZTRiZjkyZDNkMmM4YzA5ZTMyZDUxNWJlZWIuLmRkNzg2YWVm
ZmI0OTFiYTRiYzg1ZWQ2YTFmMjk5ZjgwY2EwZDAyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNTMsNiArNTMsOCBAQCBjbGFzcyBQ
bHVnaW5WaWV3IDogcHVibGljIFdlYkNvcmU6OlBsdWdpblZpZXdCYXNlLCBwdWJsaWMgUGx1Z2lu
Q29udHJvbGxlciwgcHJpdgogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblZp
ZXc+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50PiwgUGFzc1Jl
ZlB0cjxQbHVnaW4+LCBjb25zdCBQbHVnaW46OlBhcmFtZXRlcnMmKTsKIAorICAgIHZvaWQgcmVj
cmVhdGVBbmRJbml0aWFsaXplKFBhc3NSZWZQdHI8UGx1Z2luPik7CisKICAgICBXZWJDb3JlOjpG
cmFtZSogZnJhbWUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNCZWluZ0Rlc3Ryb3llZDsgfQpAQCAtNzIsNiArNzQsOCBAQCBwdWJsaWM6
CiAgICAgUmV0YWluUHRyPFBERkRvY3VtZW50PiBwZGZEb2N1bWVudEZvclByaW50aW5nKCkgY29u
c3QgeyByZXR1cm4gbV9wbHVnaW4tPnBkZkRvY3VtZW50Rm9yUHJpbnRpbmcoKTsgfQogI2VuZGlm
CiAKKyAgICBjb25zdCBQbHVnaW46OlBhcmFtZXRlcnMmIGluaXRpYWxQYXJhbWV0ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CisKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXM7
IG5vYm9keSBzaG91bGQgaGF2ZSB0byBrbm93IGFib3V0IHRoZSBwbHVnLWluIHZpZXcncyByZW5k
ZXJlciBleGNlcHQgdGhlIHBsdWctaW4gdmlldyBpdHNlbGYuCiAgICAgV2ViQ29yZTo6UmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlbmRlcmVyKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggODc2MjM0Zjg4OTYxZGQ3OTY3N2YxNDU1NGI1MDUwNWQ1MzQ2ZTRi
Zi4uN2Y3MWIwMzMwNmJkYWM3MDk2NzAxNzliOTE4MTZmY2FhNDFiNGUwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNTMsNiArMTM1MywxNCBAQCBQ
YXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25z
dCBJbnRTaXplJiwgSFRNTFBsdWdJbgogICAgIHJldHVybiBQbHVnaW5WaWV3OjpjcmVhdGUocGx1
Z2luRWxlbWVudCwgcGx1Z2luLnJlbGVhc2UoKSwgcGFyYW1ldGVycyk7CiB9CiAKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50KiBwbHVnaW5FbGVtZW50KQoreworICAgIFBsdWdpblZpZXcqIHdpZGdldCA9IHN0YXRpY19j
YXN0PFBsdWdpblZpZXcqPihwbHVnaW5FbGVtZW50LT5wbHVnaW5XaWRnZXQoKSk7CisgICAgQVNT
RVJUKG1fZnJhbWUtPnBhZ2UoKSk7CisgICAgUmVmUHRyPFBsdWdpbj4gcGx1Z2luID0gbV9mcmFt
ZS0+cGFnZSgpLT5jcmVhdGVQbHVnaW4obV9mcmFtZSwgcGx1Z2luRWxlbWVudCwgd2lkZ2V0LT5p
bml0aWFsUGFyYW1ldGVycygpKTsKKyAgICB3aWRnZXQtPnJlY3JlYXRlQW5kSW5pdGlhbGl6ZShw
bHVnaW4ucmVsZWFzZSgpKTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVkaXJl
Y3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCiB7CiAgICAgbV9wbHVnaW5WaWV3
ID0gc3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+KHBsdWdpbldpZGdldCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggODY2YWQzZjU0NGRiMDExOTg5ZDEyMjQwZjM0N2NkM2FiMDM0
OTc4ZC4uNWQ5Njg2OGUwMTA3ZDBlZjIyM2FiN2FlNDg5NmM5MWQxNDQ0N2FkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg4LDYgKzE4OCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQg
bWFyZ2luSGVpZ2h0KSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxv
YWRNYW51YWxseSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdl
YkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJl
ZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBPVkVSUklE
RTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBw
bGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIE9W
RVJSSURFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167901</attachid>
            <date>2012-10-09 20:08:54 -0700</date>
            <delta_ts>2012-10-09 21:26:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98328-20121009200754.patch</filename>
            <type>text/plain</type>
            <size>32471</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIyYTFjMzU1NDIwZWM4
NGE3ZGFhYTY5Y2VjMzE3NzA2ZGMxM2QwYi4uMjFlMDFhODU1NTdjMWRkNTNjOGMxZWIzMGM0MTZk
YWYyOWFiNzlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTA4ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5z
IHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQy
NjY4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
eHRlbmQgdGhlIGRlZmF1bHQgZXZlbnQgaGFuZGxlciB0byBkZWFsIHdpdGggcGx1Z2lucyB3aXRo
IHNuYXBzaG90cy4KKyAgICAgICAgV2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIHBsYWNlaG9s
ZGVyLCB0aGUgcGx1Z2luIGlzIHJlY3JlYXRlZCBhbmQgZGlzcGxheWVkLgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6IEFkZCBuZXcgY2xpZW50IGZ1bmN0aW9uIHJlY3Jl
YXRlUGx1Z2luKCksIHdoaWNoIGlzCisgICAgICAgIGV4cGVjdGVkIHRvIHJlLWNyZWF0ZSB0aGUg
cGx1Z2luIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyBhcyB3aGVuIGl0IHdhcyBydW4gdG8KKyAg
ICAgICAgb2J0YWluIHRoZSBwbHVnaW4ncyBzbmFwc2hvdCBwbGFjZWhvbGRlci4KKworICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3Jl
YXRlUGx1Z2luKCkuCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOiBFeHBvc2UgSFRNTFBsdWdJbkVsZW1lbnQ6OnBsdWdpbldpZGdldCgp
LgorCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFVwZGF0ZSB0byBs
b29rIGZvcgorICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi4gSWYgdGhlIHBsdWdpbiBp
cyBub3QgcGxheWluZywgaGF2ZSB0aGUgcmVuZGVyZXIgaGFuZGxlIHRoZQorICAgICAgICBldmVu
dC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdpbjo6Z2V0Q3Vyc29yKTogU2V0
IHRvIGhhbmQgY3Vyc29yIHdoZW4gdGhlIHBsdWdpbiBpcyBub3QKKyAgICAgICAgcGxheWluZy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudCk6
IElmIHRoZSB1c2VyIGNsaWNrZWQgb24gdGhlIHBsdWdpbiB1c2luZyB0aGUKKyAgICAgICAgbGVm
dCBidXR0b24sIHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIGVsZW1lbnQgdG8gcGxheWluZy4gUmVt
b3ZlIHRoZSBjYWNoZWQgc25hcHNob3QgaW1hZ2UsCisgICAgICAgIGFuZCByZWNyZWF0ZSB0aGUg
cGx1Z2luLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oOgor
ICAgICAgICAoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOgorCiAyMDEyLTEwLTA5ICBKb24gTGVl
ICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggZm9yIFF0IFdpbmRvd3Mu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZiNzU2ZjhjMzJkMjA3ZDI3MmE0NTM0YjUz
MmZkZWRmM2ZmNzE3ZWEuLmM1YWFkZjFhMzRiYjgzZTEyYzU5M2M3MWE3M2NlNjAxMzQ5NzE3OWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAtMDkg
IEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFjdGl2YXRlIHBs
dWdpbnMgd2hlbiB1c2VyIGNsaWNrcyBvbiBzbmFwc2hvdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzEyNDI2NjgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudEltcGw6OnJlY3JlYXRlUGx1Z2luKTogU3R1YiBpbXBsZW1lbnRhdGlvbiBv
ZiByZWNyZWF0ZVBsdWdpbigpLgorCiAyMDEyLTEwLTA5ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNo
YWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gQ2hyb21pdW0gREVQUyBo
YXMgYSBzdHJheSBkaXJlY3RvcnksIHR1cm5pbmcgb3VyIFdpbiBib3RzIHJlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCmluZGV4IDE3YzgwODhiMDc3NTVmODQ0MjY5NDQzNjFiYzE5M2NjZDdkNzI5N2IuLmU3M2Vh
N2JiOWYyZWNmYzYwOWMyZTAxYTRjZDkyYmFjOWZhN2E4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMi0xMC0wOSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dLMl0gQWN0aXZhdGUgcGx1Z2lucyB3aGVuIHVzZXIgY2xpY2tzIG9uIHNuYXBz
aG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODMy
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI0MjY2ODE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5oOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVh
dGVQbHVnaW4pOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3JlYXRlUGx1Z2luKCkuCisKIDIw
MTItMTAtMDcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFA
b3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZW5hbWUgZmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1
ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGYyZDFlNTQzYjhjMTIx
YWU1OTI4YjhjZTFiZDRjODllMzQxMjczMmIuLjg2ODlhMmQyYzIxNzQ5N2YzNDY1YTRkOWMyNzRj
MDQ0ZGJkNmNlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0w
OCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWN0aXZhdGUg
cGx1Z2lucyB3aGVuIHVzZXIgY2xpY2tzIG9uIHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODMyOAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTI0MjY2ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKTogU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBy
ZWNyZWF0ZVBsdWdpbigpLgorCiAyMDEyLTEwLTA4ICBLaXJhbiBNdXBwYWxhICA8Y211cHBhbGFA
YXBwbGUuY29tPgogCiAgICAgICAgIFRocm90dGxlIERPTSB0aW1lcnMgb24gaGlkZGVuIHBhZ2Vz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwppbmRleCA5ZTNjYTU4YzU2ZGJjOTg3Mzk3NmZmMjBhMmQ4YjZhNTI3MDEz
NDcyLi5kMGZhZDQ1OTY3YTc0ZTk4YWYzMTIyMjNhYmQxNGNlMTA4OTliYmIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTA5ICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mg
b24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OnJlY3JlYXRlUGx1Z2luKTogU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiByZWNyZWF0ZVBsdWdp
bigpLgorCiAyMDEyLTEwLTA4ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQGRpZ2lh
LmNvbT4KIAogICAgICAgICBbUXRdIE1ha2UgUmVuZGVyVGhlbWVRU3R5bGUvU2Nyb2xsYmFyVGhl
bWVRU3R5bGUgY29tcGlsZSB3aXRob3V0IFFTdHlsZS9RdFdpZGdldHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCA4MTFhZTBlMmMwOWI1YTdkODczZjlkNWEzZjljODYxZDVmNjk1ZDFmLi41MmFmZDBmMmVj
YjY5MjY4MTI3NmNmMDA4Mzc2N2Q0NDhkYjNhZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMTAtMDkgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXSzJdIEFjdGl2YXRlIHBsdWdpbnMgd2hlbiB1c2VyIGNsaWNrcyBvbiBzbmFwc2hvdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgzMjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDI2NjgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbik6
IFN0dWIgaW1wbGVtZW50YXRpb24gb2YgcmVjcmVhdGVQbHVnaW4oKS4KKwogMjAxMi0xMC0wOCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTb21lIEdy
YXBoaWNzTGF5ZXIgY2xlYW51cCB0byBzZXBhcmF0ZSB0aGUgY29uY2VwdHMgb2YgdXNpbmcgYSB0
aWxlIGNhY2hlLCBhbmQgYmVpbmcgdGhlIG1haW4gdGlsZSBjYWNoZSBsYXllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0No
YW5nZUxvZwppbmRleCBjOTY5MGVmZGFiZDgzYjhjN2M3NmU4YzBkN2UxYWE3ZWUyN2YxMTAyLi4y
YjMxMWZjMzNlMjBjODVmYTAwYTI3MzJkZGU1ZmQ0MGQ4OGZhZDk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTA5ICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mg
b24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V2luQ0UuaDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGll
bnRXaW5DRTo6cmVjcmVhdGVQbHVnaW4pOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3JlYXRl
UGx1Z2luKCkuCisKIDIwMTItMTAtMDcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAg
PGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZW5hbWUgZmlyc3Qvc2Vj
b25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGE5NjQy
NzFmNTg3OGRmYTE4MWRiY2JlMWVjODVhMTU2MDAzNTI1MmIuLjJlYjNhMTFjYmI0MGEwOTI3ZTFj
ZWJiNGQ4OWFiMDg3YTFkNDk1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMi0x
MC0wOCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWN0aXZh
dGUgcGx1Z2lucyB3aGVuIHVzZXIgY2xpY2tzIG9uIHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODMyOAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTI0MjY2ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IHRoZSByZWNyZWF0aW9uIG9mIHRoZSBwbHVnaW4uCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OnJlY3JlYXRlQW5kSW5pdGlhbGl6ZSk6IFdlIGNhbiBydW4gaW50byBhIHNp
dHVhdGlvbiB3aGVyZSB0aGUgdXNlcgorICAgICAgICBkZWNpZGVkIHRvIHJ1biB0aGUgcGx1Z2lu
IGJlZm9yZSB0aGUgc25hcHNob3Qgd2FzIHJlYWR5IHRvIGJlIHRha2VuLiBJbiB0aGlzIGNhc2Us
IHRoZQorICAgICAgICBwbHVnaW4gbWVtYmVyIHZhcmlhYmxlIGlzIG5vbi1udWxsLCBhbmQgdGhl
IHRpbWVyIGlzIHN0aWxsIGFjdGl2ZS4gVHVybiBvZmYgdGhlIHRpbWVyLCBhbmQKKyAgICAgICAg
ZGVzdHJveSB0aGF0IGluc3RhbmNlIG9mIHRoZSBwbHVnaW4uIFdlIHNldCB0aGUgcGx1Z2luIHRv
IHRoZSBpbnN0YW5jZSBwcm92aWRlZCBpbiB0aGUKKyAgICAgICAgZmlyc3QgcGFyYW1ldGVyIHRv
IHRoaXMgZnVuY3Rpb24sIGFuZCByZXNldCB0aGUgbWVtYmVyIHZhcmlhYmxlcyBzbyB0aGF0IHRo
ZSBQbHVnaW5WaWV3IGlzCisgICAgICAgIGluIGEgc3RhdGUgc2ltaWxhciB0byB3aGVuIGl0IHdh
cyBmaXJzdCBjcmVhdGVkLiBXZSBhbHNvIGltbWVkaWF0ZWx5IGluaXRpYWxpemUgdGhlIHBsdWdp
biwKKyAgICAgICAgd2hpY2ggbWF5IGhhcHBlbiBzeW5jaHJvbm91c2x5IG9yIGFzeW5jaHJvbm91
c2x5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6aW5pdGlhbFBhcmFtZXRlcnMpOiBFeHBvc2UgdGhlIGlu
aXRpYWwgcGFyYW1ldGVycy4gVXNlZCB0byByZWNyZWF0ZQorICAgICAgICB0aGUgcGx1Z2luLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBs
dWdpbik6IENyZWF0ZSBhIG5ldyBQbHVnaW4gaW5zdGFuY2UgdXNpbmcgdGhlIHNhbWUKKyAgICAg
ICAgcGFyYW1ldGVycyB1c2VkIHRvIGNyZWF0ZSB0aGUgcGx1Z2luIGZvciBzbmFwc2hvdHRpbmcu
IEZvcndhcmQgdGhhdCBpbnN0YW5jZSB0byB0aGUgd2lkZ2V0LgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50KTogSW1wbGVtZW50IHJlY3JlYXRlUGx1Z2luKCkuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6IFRoZSBwbHVnaW4gdGhhdCBmaXJz
dCBydW5zIG1pZ2h0IGhhdmUgYmVlbiBkZXN0cm95ZWQKKyAgICAgICAgYWZ0ZXIgdGhlIHNuYXBz
aG90IHdhcyB0YWtlbi4gQ2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhlIHBsdWdpbiBiZWZv
cmUgZm9yd2FyZGluZyB0aGUKKyAgICAgICAgY2FsbGJhY2tzLgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpTdHJlYW06OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpTdHJlYW06OmRpZEZpbmlzaExvYWRpbmcpOgorCiAyMDEyLTEwLTA5ICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBIYXZlIHBsdWdpbnMgcmVuZGVyIG9mZnNj
cmVlbiB0byBjYXB0dXJlIHNuYXBzaG90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGM0OGVlMWEx
ZGYyMTU5MmI3ZGM3NTEwYjJmZGIzYjE5YjhhZjg5NGUuLmRhMzMwZjJiYWZmMTBiNzJlYTQ5Y2E1
MjVjMmY5ODc0ZDZmOGUyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xMjMxLDYgKzEyMzEs
NyBAQCBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTd0b05vcm1hbGl6ZWRSYW5nZUV2
CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTlyb290RWRpdGFibGVFbGVtZW50RXYK
IF9fWk5LN1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb24yM2lzQ29udGVudFJpY2hseUVkaXRhYmxl
RXYKIF9fWk5LN1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb241aXNBbGxFTlNfMjdFZGl0aW5nQm91
bmRhcnlDcm9zc2luZ1J1bGVFCitfX1pOSzdXZWJDb3JlMTdIVE1MUGx1Z0luRWxlbWVudDEycGx1
Z2luV2lkZ2V0RXYKIF9fWk5LN1dlYkNvcmUxN0pTRE9NR2xvYmFsT2JqZWN0MjJzY3JpcHRFeGVj
dXRpb25Db250ZXh0RXYKIF9fWk5LN1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNzaW9uMTNtYXRjaGVk
TGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNzaW9uNW1hdGNoRVJLTjNXVEY2
U3RyaW5nRWlQaQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRl
eCBjNmU1MmNhMGRmMzQzZGFiYzRjYjBkNTlhNGE0NjdkZTFlNjQ3NTlhLi45OTQ3YTczNmVjODg2
ZTgzNGMyYTJkZGY5NjQyYjY1MzM2NjNlMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgogI2luY2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0
LmgiCisjaW5jbHVkZSAiUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCIKICNpbmNsdWRlICJSZW5k
ZXJXaWRnZXQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldpZGdldC5oIgpA
QCAtMTc3LDkgKzE3OCwxNSBAQCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAvLyBGSVhNRTogTW91c2UgZG93biBhbmQgc2Nyb2xs
IGV2ZW50cyBhcmUgcGFzc2VkIGRvd24gdG8gcGx1Zy1pbiB2aWEgY3VzdG9tIGNvZGUgaW4gRXZl
bnRIYW5kbGVyOyB0aGVzZSBjb2RlIHBhdGhzIHNob3VsZCBiZSB1bml0ZWQuCiAKICAgICBSZW5k
ZXJPYmplY3QqIHIgPSByZW5kZXJlcigpOwotICAgIGlmIChyICYmIHItPmlzRW1iZWRkZWRPYmpl
Y3QoKSAmJiB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHIpLT5zaG93c1VuYXZhaWxhYmxlUGx1Z2lu
SW5kaWNhdG9yKCkpIHsKLSAgICAgICAgdG9SZW5kZXJFbWJlZGRlZE9iamVjdChyKS0+aGFuZGxl
VW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JFdmVudChldmVudCk7Ci0gICAgICAgIHJldHVybjsK
KyAgICBpZiAociAmJiByLT5pc0VtYmVkZGVkT2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKHRvUmVu
ZGVyRW1iZWRkZWRPYmplY3QociktPnNob3dzVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IoKSkg
eworICAgICAgICAgICAgdG9SZW5kZXJFbWJlZGRlZE9iamVjdChyKS0+aGFuZGxlVW5hdmFpbGFi
bGVQbHVnaW5JbmRpY2F0b3JFdmVudChldmVudCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHItPmlzU25hcHNob3R0ZWRQbHVnSW4oKSAmJiBkaXNwbGF5U3Rh
dGUoKSA8IFBsYXlpbmcpIHsKKyAgICAgICAgICAgIHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4o
ciktPmhhbmRsZUV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmICghciB8fCAhci0+aXNXaWRnZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggN2YxNmYzZGZlOWFjYmExM2FjYzIxMGQ4NDRiOTU3NmFi
Y2FmNzlkYy4uNDQxMmJhZWVhNzVkYzljZDc2ZTkzZWMzMTU2OTIzZWY2MjU5OTc1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA2IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0gKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTE0Niw2ICsxNDYsMTAg
QEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdp
bihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWcKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbihIVE1MUGx1Z0luRWxlbWVudCopCit7
Cit9CisKIFBhc3NSZWZQdHI8V2lkZ2V0PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0
IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsK
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCAzOTAy
NzkwMzgxYWZiYzhlMTMyM2UyNDBhMWVmNWEzZTE4MTg3MjU5Li5lMDU4ZDc5NGI2NDkwZTZlZTBm
ZDI3NzJiZDdlOWZlMGZiZTA4Njc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBFcmljIFNlaWRlbCAo
ZXJpY0B3ZWJraXQub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMzQ0LDYgKzM0NCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sKSB7IH0KICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGlu
dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2lu
KGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9v
bCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKEhUTUxQbHVnSW5F
bGVtZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRl
SmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25z
dCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIE9W
RVJSSURFOwogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50
U2l6ZSYsIEhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA3MDNmZDNiZDNjZjYz
MmE3YjkwYzZiYWE0NTZmYWU0ZWRjYjRmMGFlLi5kMjM5YjI1M2FhNTNlMDExOTdmYWFhZmRiNzky
NGY2OTA5ODE0ZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjYyLDYgKzI2
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdo
dCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4o
Y29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29s
IGxvYWRNYW51YWxseSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4o
SFRNTFBsdWdJbkVsZW1lbnQqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERh
dGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYs
IEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbi5jcHAKaW5kZXggNTZiYmQ3NDQxMDMyN2YyMWViMDY3MWE1ZGI4YjU3NWU2Y2FhZTJhNi4u
YTc3OTEzMmI4ZjlmMDY3ODE3NzVkOTkxZTk1NzM3NDA0Y2Q1YzA4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC0y
Nyw5ICsyNywxMSBAQAogI2luY2x1ZGUgIlJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgiCiAKICNp
bmNsdWRlICJDdXJzb3IuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQ
YWludEluZm8uaCIKICNpbmNsdWRlICJQYXRoLmgiCiAKQEAgLTExNSw0ICsxMTcsMjkgQEAgdm9p
ZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRSZXBsYWNlZFNuYXBzaG90KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdAogICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwg
c3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlciwg
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOwog
fQogCitDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcihj
b25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNvbnN0Cit7
CisgICAgaWYgKHBsdWdJbkltYWdlRWxlbWVudCgpLT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVn
SW5FbGVtZW50OjpQbGF5aW5nKSB7CisgICAgICAgIG92ZXJyaWRlQ3Vyc29yID0gaGFuZEN1cnNv
cigpOworICAgICAgICByZXR1cm4gU2V0Q3Vyc29yOworICAgIH0KKyAgICByZXR1cm4gUmVuZGVy
RW1iZWRkZWRPYmplY3Q6OmdldEN1cnNvcihwb2ludCwgb3ZlcnJpZGVDdXJzb3IpOworfQorCit2
b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQpCit7
CisgICAgaWYgKCFldmVudC0+aXNNb3VzZUV2ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQp
OworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50ICYmIG1v
dXNlRXZlbnQtPmJ1dHRvbigpID09IExlZnRCdXR0b24pIHsKKyAgICAgICAgcGx1Z0luSW1hZ2VF
bGVtZW50KCktPnNldERpc3BsYXlTdGF0ZShIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZyk7Cisg
ICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICAg
ICAgZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+cmVjcmVhdGVQbHVnaW4ocGx1Z0luSW1hZ2VF
bGVtZW50KCkpOworICAgICAgICBtX3NuYXBzaG90UmVzb3VyY2UtPnNldENhY2hlZEltYWdlKDAp
OworICAgICAgICByZXBhaW50KCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgp
OworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAppbmRleCA4MGMyYTE0YjMz
ZTA5ZjQzOWQ1NTAxMDQ2ODRmNzY4ODY1MDNiYTE2Li42YTEzYTNhM2ZmZmU4YmU1Y2YxYzMxZDAw
NzlhOWJkNjZmODJiZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uaApAQCAtNDIsMTAgKzQyLDEzIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgdXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4pOwogCisgICAgdm9pZCBoYW5k
bGVFdmVudChFdmVudCopOworCiBwcml2YXRlOgogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQq
IHBsdWdJbkltYWdlRWxlbWVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiI7IH0KIAor
ICAgIHZpcnR1YWwgQ3Vyc29yRGlyZWN0aXZlIGdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYs
IEN1cnNvciYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1NuYXBzaG90dGVk
UGx1Z0luKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
T1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCmluZGV4IGYyYzRkMDcwZDhkYmJlNDhmMzZhZjBlNTc4MTljMDA5YzNjNGFk
ZTQuLmY2MmVmMTdlNDA5NDQwNmRiMmI1MzQ1YWZmYTdjMzQ4ZTRmZDc1M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCkBAIC0x
ODIsNiArMTgyLDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwKICAgICAg
ICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4m
LAogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0
KiBwbHVnaW5XaWRnZXQpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+
IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmgKaW5kZXggZjZlM2Q0ZjZlZDk3MDZkZWRiMDhlZmYyZDM0NzNiNDRkMDZm
MjhhMC4uMzhmNTc3NmEyOTAxNDFiNWNjNzg5ZjZjZWFmNzhhMzIxZTY5ZDFhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCkBAIC0xMTQsNiArMTE0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29y
ZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7CiAgICAgICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
Y29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KikgeyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdp
bldpZGdldCk7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNy
ZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhU
TUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RG
OjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6
OlN0cmluZz4mIHBhcmFtVmFsdWVzKTsKICAgICAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBvdmVy
cmlkZU1lZGlhVHlwZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZDkwODg4MWEzYWM3NGVj
MjEyOGU3MmE5MTkxODgxZWYzZjM0ODJiYS4uOWY1OThjMjBhOTQwMmQwNjcxMzUzMjEyZjMyYWQ1
YTY0MTdlN2MzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xOTgsNiArMTk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dz
U2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+Jiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
cmVhdGVQbHVnaW4oV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5X
aWRnZXQpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdl
YkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KaW5kZXggZGUwZjYxODNkMjkyYjU4MjNlMzBjZTFkNmFiMTc5Y2QwNmVi
ZDM1Ni4uNWZiNzdlMzMyZTUxNjgxMzFiMzQ0OTVjZWE0ZTc5ZGMxYzQ5NDNkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE3MjQsNiArMTcyNCwxMCBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MUAogICAgIHJldHVybiAw
OwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbihXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudCopCit7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KQogewogICAgIGlmICgh
cGx1Z2luV2lkZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAppbmRleCA1NDIxMjkyMzg5NmEyYTlkNjA2OWE5OWRlNzcw
ODU2YjFhNDM2YmM2Li43MWI1MzViNzVlMDI2N2U5N2Y5ZGExZTE5YjhmMTdkYmU3ODEwMzViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaApAQCAtMjA3LDYgKzIwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9s
bGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5F
bGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjcmVh
dGVQbHVnaW4oV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwogCiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRT
aXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IGQ1MmY4MTIwYThmNzIzMTc4M2E3MzQzMDY1Y2RhYjBhYTZj
NzI5MjQuLmFkZTJiMzBkZGQxYmY5YjM2YTMyOTAwMmYyM2E2ZmMxZDJjOTQxMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtMTE1LDYgKzExNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwg
Y29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCog
b3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6
U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwg
aW50IG1hcmdpbkhlaWdodCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdl
dD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9v
bCBsb2FkTWFudWFsbHkpOworICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFU
b1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkVXNlUGx1Z2luRG9jdW1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKaW5kZXggOTBlZTQ5NGE0YzUyYTE1NmVjMDkwMzdh
NTNlZTNiOGExZWU2MzY2YS4uOGJlMGEyYzUyOTZiMjkwYzc0ZDIyMGU4OWNlODU1NmVhZTM3ODUw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBX
ZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5n
LCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29u
c3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJp
bmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjcmVh
dGVQbHVnaW4oV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRX
aWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFt
VmFsdWVzKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKaW5kZXggYmE4NWU3MmRjYmY4ZjQ2MTU0MzEyODQ0MjYwOWY1ZTYwMjJjMmZjOS4uOTY4Yjdj
YzI3ZDFlZjBjMTExNjY5NWIwNDQxMTFkZDI2NzFiNzJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTkyLDYgKzE5MiwxMCBA
QCBzdGF0aWMgU3RyaW5nIGJ1aWxkSFRUUEhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGxvbmcgbG9uZyYgZXhwZQogCiB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CisgICAgLy8gVGhlIHBsdWdpbiBtaWdodCBoYXZlIGJl
ZW4gc2h1dCBkb3duIGFmdGVyIHRoZSBzbmFwc2hvdCB3YXMgdGFrZW4gZm9yIGNsaWNrLXRvLXN0
YXJ0IHBsdWdpbnMuCisgICAgaWYgKCFtX3BsdWdpblZpZXctPm1fcGx1Z2luKQorICAgICAgICBy
ZXR1cm47CisKICAgICAvLyBDb21wdXRlIHRoZSBzdHJlYW0gcmVsYXRlZCBkYXRhIGZyb20gdGhl
IHJlc291cmNlIHJlc3BvbnNlLgogICAgIGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJMID0gcmVzcG9u
c2UudXJsKCk7CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBl
KCk7CkBAIC0yMDgsNiArMjEyLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2Vp
dmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFIKIAogdm9pZCBQ
bHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiB7CisgICAgLy8gVGhlIHBsdWdp
biBtaWdodCBoYXZlIGJlZW4gc2h1dCBkb3duIGFmdGVyIHRoZSBzbmFwc2hvdCB3YXMgdGFrZW4g
Zm9yIGNsaWNrLXRvLXN0YXJ0IHBsdWdpbnMuCisgICAgaWYgKCFtX3BsdWdpblZpZXctPm1fcGx1
Z2luKQorICAgICAgICByZXR1cm47CiAgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFt
RGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnl0ZXMsIGxlbmd0aCk7CiB9CiAKQEAgLTIxNyw3
ICsyMjQsNyBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJybwogICAgIFJlZlB0cjxTdHJlYW0+IHBy
b3RlY3QodGhpcyk7CiAKICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gY2FsbCBzdHJlYW1EaWRGYWls
IGlmIHRoZSBzdHJlYW0gd2FzIG5vdCBleHBsaWNpdGx5IGNhbmNlbGxlZCBieSB0aGUgcGx1Zy1p
bi4KLSAgICBpZiAoIW1fc3RyZWFtV2FzQ2FuY2VsbGVkKQorICAgIGlmICghbV9zdHJlYW1XYXND
YW5jZWxsZWQgJiYgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbikKICAgICAgICAgbV9wbHVnaW5WaWV3
LT5tX3BsdWdpbi0+c3RyZWFtRGlkRmFpbChtX3N0cmVhbUlELCBlcnJvci5pc0NhbmNlbGxhdGlv
bigpKTsKIAogICAgIG1fcGx1Z2luVmlldy0+cmVtb3ZlU3RyZWFtKHRoaXMpOwpAQCAtMjMzLDcg
KzI0MCw4IEBAIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRGaW5pc2hMb2FkaW5nKE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKikKICAgICAvLyBQcm90ZWN0IHRoZSBwbHVnLWluIHdoaWxl
IHdlJ3JlIGNhbGxpbmcgaW50byBpdC4KICAgICBOUFJ1bnRpbWVPYmplY3RNYXA6OlBsdWdpblBy
b3RlY3RvciBwbHVnaW5Qcm90ZWN0b3IoJm1fcGx1Z2luVmlldy0+bV9ucFJ1bnRpbWVPYmplY3RN
YXApOwogI2VuZGlmCi0gICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkRmluaXNo
TG9hZGluZyhtX3N0cmVhbUlEKTsKKyAgICBpZiAobV9wbHVnaW5WaWV3LT5tX3BsdWdpbikKKyAg
ICAgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkRmluaXNoTG9hZGluZyhtX3N0
cmVhbUlEKTsKIAogICAgIG1fcGx1Z2luVmlldy0+cmVtb3ZlU3RyZWFtKHRoaXMpOwogICAgIG1f
cGx1Z2luVmlldyA9IDA7CkBAIC0zMTYsNiArMzI0LDI2IEBAIHZvaWQgUGx1Z2luVmlldzo6ZGVz
dHJveVBsdWdpbkFuZFJlc2V0KCkKICAgICBjYW5jZWxBbGxTdHJlYW1zKCk7CiB9CiAKK3ZvaWQg
UGx1Z2luVmlldzo6cmVjcmVhdGVBbmRJbml0aWFsaXplKFBhc3NSZWZQdHI8UGx1Z2luPiBwbHVn
aW4pCit7CisgICAgaWYgKG1fcGx1Z2luKSB7CisgICAgICAgIGlmIChtX3BsdWdpblNuYXBzaG90
VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fcGx1Z2luU25hcHNob3RUaW1lci5zdG9w
KCk7CisgICAgICAgIGRlc3Ryb3lQbHVnaW5BbmRSZXNldCgpOworICAgIH0KKworICAgIC8vIFJl
c2V0IG1lbWJlciB2YXJpYWJsZXMgdG8gaW5pdGlhbCB2YWx1ZXMuCisgICAgbV9wbHVnaW4gPSBw
bHVnaW47CisgICAgbV9pc0luaXRpYWxpemVkID0gZmFsc2U7CisgICAgbV9pc1dhaXRpbmdGb3JT
eW5jaHJvbm91c0luaXRpYWxpemF0aW9uID0gZmFsc2U7CisgICAgbV9pc1dhaXRpbmdVbnRpbE1l
ZGlhQ2FuU3RhcnQgPSBmYWxzZTsKKyAgICBtX2lzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZTsKKyAg
ICBtX21hbnVhbFN0cmVhbVN0YXRlID0gU3RyZWFtU3RhdGVJbml0aWFsOworICAgIG1fdHJhbnNp
ZW50UGFpbnRpbmdTbmFwc2hvdCA9IG51bGxwdHI7CisKKyAgICBpbml0aWFsaXplUGx1Z2luKCk7
Cit9CisKIEZyYW1lKiBQbHVnaW5WaWV3OjpmcmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
cGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGZkNDFhM2ZiZjczNzE1ZTRiZjky
ZDNkMmM4YzA5ZTMyZDUxNWJlZWIuLmRkNzg2YWVmZmI0OTFiYTRiYzg1ZWQ2YTFmMjk5ZjgwY2Ew
ZDAyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaApAQCAtNTMsNiArNTMsOCBAQCBjbGFzcyBQbHVnaW5WaWV3IDogcHVibGljIFdlYkNvcmU6
OlBsdWdpblZpZXdCYXNlLCBwdWJsaWMgUGx1Z2luQ29udHJvbGxlciwgcHJpdgogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblZpZXc+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50PiwgUGFzc1JlZlB0cjxQbHVnaW4+LCBjb25zdCBQbHVnaW46
OlBhcmFtZXRlcnMmKTsKIAorICAgIHZvaWQgcmVjcmVhdGVBbmRJbml0aWFsaXplKFBhc3NSZWZQ
dHI8UGx1Z2luPik7CisKICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUoKSBjb25zdDsKIAogICAg
IGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNCZWluZ0Rlc3Ryb3ll
ZDsgfQpAQCAtNzIsNiArNzQsOCBAQCBwdWJsaWM6CiAgICAgUmV0YWluUHRyPFBERkRvY3VtZW50
PiBwZGZEb2N1bWVudEZvclByaW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW4tPnBkZkRv
Y3VtZW50Rm9yUHJpbnRpbmcoKTsgfQogI2VuZGlmCiAKKyAgICBjb25zdCBQbHVnaW46OlBhcmFt
ZXRlcnMmIGluaXRpYWxQYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9
CisKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXM7IG5vYm9keSBzaG91bGQgaGF2ZSB0byBrbm93
IGFib3V0IHRoZSBwbHVnLWluIHZpZXcncyByZW5kZXJlciBleGNlcHQgdGhlIHBsdWctaW4gdmll
dyBpdHNlbGYuCiAgICAgV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggODc2MjM0Zjg4
OTYxZGQ3OTY3N2YxNDU1NGI1MDUwNWQ1MzQ2ZTRiZi4uN2Y3MWIwMzMwNmJkYWM3MDk2NzAxNzli
OTE4MTZmY2FhNDFiNGUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEzNTMsNiArMTM1MywxNCBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbgogICAg
IHJldHVybiBQbHVnaW5WaWV3OjpjcmVhdGUocGx1Z2luRWxlbWVudCwgcGx1Z2luLnJlbGVhc2Uo
KSwgcGFyYW1ldGVycyk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRl
UGx1Z2luKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBwbHVnaW5FbGVtZW50KQoreworICAg
IFBsdWdpblZpZXcqIHdpZGdldCA9IHN0YXRpY19jYXN0PFBsdWdpblZpZXcqPihwbHVnaW5FbGVt
ZW50LT5wbHVnaW5XaWRnZXQoKSk7CisgICAgQVNTRVJUKG1fZnJhbWUtPnBhZ2UoKSk7CisgICAg
UmVmUHRyPFBsdWdpbj4gcGx1Z2luID0gbV9mcmFtZS0+cGFnZSgpLT5jcmVhdGVQbHVnaW4obV9m
cmFtZSwgcGx1Z2luRWxlbWVudCwgd2lkZ2V0LT5pbml0aWFsUGFyYW1ldGVycygpKTsKKyAgICB3
aWRnZXQtPnJlY3JlYXRlQW5kSW5pdGlhbGl6ZShwbHVnaW4ucmVsZWFzZSgpKTsKK30KKwogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVn
aW5XaWRnZXQpCiB7CiAgICAgbV9wbHVnaW5WaWV3ID0gc3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+
KHBsdWdpbldpZGdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggODY2YWQz
ZjU0NGRiMDExOTg5ZDEyMjQwZjM0N2NkM2FiMDM0OTc4ZC4uNWQ5Njg2OGUwMTA3ZDBlZjIyM2Fi
N2FlNDg5NmM5MWQxNDQ0N2FkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTg4LDYgKzE4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Nj
cm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBPVkVSUklERTsKICAg
ICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4o
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Kikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6
OldpZGdldCogcGx1Z2luV2lkZ2V0KSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIE9WRVJSSURFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167911</attachid>
            <date>2012-10-09 21:26:41 -0700</date>
            <delta_ts>2012-10-10 14:00:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98328-20121009212540.patch</filename>
            <type>text/plain</type>
            <size>34315</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwODQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDExMTE5NTM4NzU5OGUw
OWJiNmI0MjVjNGE4NzFmM2VjYjlmMGVhNS4uZTJkZmRhNWUyYjQ0NDljYmUzYzU1NDE1ZjVkZGY0
OTBmNzNmNTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTA4ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5z
IHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQy
NjY4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
eHRlbmQgdGhlIGRlZmF1bHQgZXZlbnQgaGFuZGxlciB0byBkZWFsIHdpdGggcGx1Z2lucyB3aXRo
IHNuYXBzaG90cy4KKyAgICAgICAgV2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIHBsYWNlaG9s
ZGVyLCB0aGUgcGx1Z2luIGlzIHJlY3JlYXRlZCBhbmQgZGlzcGxheWVkLgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6IEFkZCBuZXcgY2xpZW50IGZ1bmN0aW9uIHJlY3Jl
YXRlUGx1Z2luKCksIHdoaWNoIGlzCisgICAgICAgIGV4cGVjdGVkIHRvIHJlLWNyZWF0ZSB0aGUg
cGx1Z2luIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyBhcyB3aGVuIGl0IHdhcyBydW4gdG8KKyAg
ICAgICAgb2J0YWluIHRoZSBwbHVnaW4ncyBzbmFwc2hvdCBwbGFjZWhvbGRlci4KKworICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3Jl
YXRlUGx1Z2luKCkuCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOiBFeHBvc2UgSFRNTFBsdWdJbkVsZW1lbnQ6OnBsdWdpbldpZGdldCgp
LgorCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFVwZGF0ZSB0byBs
b29rIGZvcgorICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi4gSWYgdGhlIHBsdWdpbiBp
cyBub3QgcGxheWluZywgaGF2ZSB0aGUgcmVuZGVyZXIgaGFuZGxlIHRoZQorICAgICAgICBldmVu
dC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdpbjo6Z2V0Q3Vyc29yKTogU2V0
IHRvIGhhbmQgY3Vyc29yIHdoZW4gdGhlIHBsdWdpbiBpcyBub3QKKyAgICAgICAgcGxheWluZy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudCk6
IElmIHRoZSB1c2VyIGNsaWNrZWQgb24gdGhlIHBsdWdpbiB1c2luZyB0aGUKKyAgICAgICAgbGVm
dCBidXR0b24sIHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIGVsZW1lbnQgdG8gcGxheWluZy4gUmVt
b3ZlIHRoZSBjYWNoZWQgc25hcHNob3QgaW1hZ2UsCisgICAgICAgIGFuZCByZWNyZWF0ZSB0aGUg
cGx1Z2luLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oOgor
ICAgICAgICAoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOgorCiAyMDEyLTEwLTA5ICBLZW50IFRh
bXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTaG91bGQgcmVqZWN0IGludmFs
aWQgZGF0ZXMgY29uc3RydWN0ZWQgd2l0aCBtdWx0aXBsZSBmaWVsZHMgVUkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggZTdmOGZhNGNjMDQ3MmM2YTMxZTM4ZGJhMzRjYmY1MTZmYzdkYzgz
NS4uOTExZTdjYTAxZmI2MmJiN2M1NjlmOWUxYWY1ZWQ3ZjhlMjlmY2VjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMC0wOSAgSm9uIExlZSAgPGpv
bmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWN0aXZhdGUgcGx1Z2lucyB3aGVuIHVz
ZXIgY2xpY2tzIG9uIHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05ODMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI0MjY2ODE+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6cmVjcmVhdGVQbHVnaW4pOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3JlYXRlUGx1
Z2luKCkuCisKIDIwMTItMTAtMDkgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVwZGF0ZSB0aGUgQ1NTIHByb3BlcnR5IHVzZWQgdG8gc3VwcG9ydCBkcmFnZ2FibGUg
cmVnaW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA1OTBmOTM0MGJhMzZhOTI0NmVjZTFlMWIwZDM0
OGM2NzBjZjNjZGExLi4wYWMwZjQ0NTNhYjA4ZjEyZDM2Mzc1YTA3YjExMzJkNjQ5NDgwNWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAtMDkgIEpvbiBMZWUgIDxq
b25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFjdGl2YXRlIHBsdWdpbnMgd2hlbiB1
c2VyIGNsaWNrcyBvbiBzbmFwc2hvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTgzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDI2NjgxPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpyZWNyZWF0ZVBsdWdpbik6IFN0dWIgaW1wbGVtZW50YXRpb24gb2Yg
cmVjcmVhdGVQbHVnaW4oKS4KKwogMjAxMi0xMC0wNyAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJh
IEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJlbmFtZSBm
aXJzdC9zZWNvbmQgdG8ga2V5L3ZhbHVlIGluIEhhc2hNYXAgaXRlcmF0b3JzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKaW5kZXggNzk2N2Y2ZTZlMGE2OTVjZDQyMjUzNGFlZDI2NDQ1MjJlYWU5NDc0My4uZjlmNDM4
YjdhMjAxY2Q2Y2U3OWY0NWQ4MWNlMDVkYmM1MzZlYTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEyLTEwLTA5ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNo
b3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmg6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0
ZVBsdWdpbik6IFN0dWIgaW1wbGVtZW50YXRpb24gb2YgcmVjcmVhdGVQbHVnaW4oKS4KKwogMjAx
Mi0xMC0wOSAgRGFuaWVsIERyYWtlICA8ZHNkQGxhcHRvcC5vcmc+CiAKICAgICAgICAgW0dUS10g
UGx1Z2lucyBkb24ndCBkaXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZDk1MWVlM2Y0MjhjYTFh
YzAzZTcwNGFkM2EyODJmOTg5Mjc5NzdkNC4uMDIzMjhjYzU3OWExMzlhY2JkZjM2MWU2MTQ5ODQ3
MDMxOGJlZDcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTA4
ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBw
bHVnaW5zIHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMjQyNjY4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6cmVjcmVhdGVQbHVnaW4pOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJl
Y3JlYXRlUGx1Z2luKCkuCisKIDIwMTItMTAtMDkgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVwZGF0ZSB0aGUgQ1NTIHByb3BlcnR5IHVzZWQgdG8gc3VwcG9ydCBk
cmFnZ2FibGUgcmVnaW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOWUzY2E1OGM1NmRiYzk4NzM5NzZm
ZjIwYTJkOGI2YTUyNzAxMzQ3Mi4uZDBmYWQ0NTk2N2E3NGU5OGFmMzEyMjIzYWJkMTRjZTEwODk5
YmJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMC0wOSAgSm9uIExl
ZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWN0aXZhdGUgcGx1Z2lucyB3
aGVuIHVzZXIgY2xpY2tzIG9uIHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05ODMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI0MjY2
ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpyZWNyZWF0ZVBsdWdpbik6IFN0dWIgaW1wbGVtZW50YXRpb24g
b2YgcmVjcmVhdGVQbHVnaW4oKS4KKwogMjAxMi0xMC0wOCAgU2ltb24gSGF1c21hbm4gIDxzaW1v
bi5oYXVzbWFubkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBNYWtlIFJlbmRlclRoZW1lUVN0
eWxlL1Njcm9sbGJhclRoZW1lUVN0eWxlIGNvbXBpbGUgd2l0aG91dCBRU3R5bGUvUXRXaWRnZXRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKaW5kZXggODExYWUwZTJjMDliNWE3ZDg3M2Y5ZDVhM2Y5Yzg2MWQ1ZjY5
NWQxZi4uNTJhZmQwZjJlY2I2OTI2ODEyNzZjZjAwODM3NjdkNDQ4ZGIzYWRmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTA5ICBKb24gTGVlICA8am9ubGVlQGFw
cGxlLmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlj
a3Mgb24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6
cmVjcmVhdGVQbHVnaW4pOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3JlYXRlUGx1Z2luKCku
CisKIDIwMTItMTAtMDggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgU29tZSBHcmFwaGljc0xheWVyIGNsZWFudXAgdG8gc2VwYXJhdGUgdGhlIGNvbmNl
cHRzIG9mIHVzaW5nIGEgdGlsZSBjYWNoZSwgYW5kIGJlaW5nIHRoZSBtYWluIHRpbGUgY2FjaGUg
bGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKaW5kZXggYzk2OTBlZmRhYmQ4M2I4YzdjNzZlOGMwZDdl
MWFhN2VlMjdmMTEwMi4uMmIzMTFmYzMzZTIwYzg1ZmEwMGEyNzMyZGRlNWZkNDBkODhmYWQ5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMC0wOSAgSm9uIExl
ZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWN0aXZhdGUgcGx1Z2lucyB3
aGVuIHVzZXIgY2xpY2tzIG9uIHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05ODMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI0MjY2
ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmg6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnJlY3JlYXRlUGx1Z2luKTogU3R1YiBpbXBsZW1lbnRh
dGlvbiBvZiByZWNyZWF0ZVBsdWdpbigpLgorCiAyMDEyLTEwLTA3ICBDYWlvIE1hcmNlbG8gZGUg
T2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAg
UmVuYW1lIGZpcnN0L3NlY29uZCB0byBrZXkvdmFsdWUgaW4gSGFzaE1hcCBpdGVyYXRvcnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCBhNzgxNGU2YTZkZTk2NjJiZTU2YzkzYzA5YmVhYjEwZTEyMzIxOGUxLi4xZmYz
MWU0M2RlYWM5YzExNzcwZjE1OWJlYmQ5YTg3M2M1MDQzZjllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDAgQEAKKzIwMTItMTAtMDggIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXSzJdIEFjdGl2YXRlIHBsdWdpbnMgd2hlbiB1c2VyIGNsaWNrcyBvbiBzbmFwc2hvdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgzMjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDI2NjgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgcmVjcmVhdGlvbiBvZiB0aGUg
cGx1Z2luLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWNyZWF0ZUFuZEluaXRpYWxpemUpOiBXZSBj
YW4gcnVuIGludG8gYSBzaXR1YXRpb24gd2hlcmUgdGhlIHVzZXIKKyAgICAgICAgZGVjaWRlZCB0
byBydW4gdGhlIHBsdWdpbiBiZWZvcmUgdGhlIHNuYXBzaG90IHdhcyByZWFkeSB0byBiZSB0YWtl
bi4gSW4gdGhpcyBjYXNlLCB0aGUKKyAgICAgICAgcGx1Z2luIG1lbWJlciB2YXJpYWJsZSBpcyBu
b24tbnVsbCwgYW5kIHRoZSB0aW1lciBpcyBzdGlsbCBhY3RpdmUuIFR1cm4gb2ZmIHRoZSB0aW1l
ciwgYW5kCisgICAgICAgIGRlc3Ryb3kgdGhhdCBpbnN0YW5jZSBvZiB0aGUgcGx1Z2luLiBXZSBz
ZXQgdGhlIHBsdWdpbiB0byB0aGUgaW5zdGFuY2UgcHJvdmlkZWQgaW4gdGhlCisgICAgICAgIGZp
cnN0IHBhcmFtZXRlciB0byB0aGlzIGZ1bmN0aW9uLCBhbmQgcmVzZXQgdGhlIG1lbWJlciB2YXJp
YWJsZXMgc28gdGhhdCB0aGUgUGx1Z2luVmlldyBpcworICAgICAgICBpbiBhIHN0YXRlIHNpbWls
YXIgdG8gd2hlbiBpdCB3YXMgZmlyc3QgY3JlYXRlZC4gV2UgYWxzbyBpbW1lZGlhdGVseSBpbml0
aWFsaXplIHRoZSBwbHVnaW4sCisgICAgICAgIHdoaWNoIG1heSBoYXBwZW4gc3luY2hyb25vdXNs
eSBvciBhc3luY2hyb25vdXNseS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3Lmg6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmluaXRpYWxQYXJhbWV0ZXJz
KTogRXhwb3NlIHRoZSBpbml0aWFsIHBhcmFtZXRlcnMuIFVzZWQgdG8gcmVjcmVhdGUKKyAgICAg
ICAgdGhlIHBsdWdpbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6cmVjcmVhdGVQbHVnaW4pOiBDcmVhdGUgYSBuZXcgUGx1Z2luIGluc3RhbmNlIHVzaW5n
IHRoZSBzYW1lCisgICAgICAgIHBhcmFtZXRlcnMgdXNlZCB0byBjcmVhdGUgdGhlIHBsdWdpbiBm
b3Igc25hcHNob3R0aW5nLiBGb3J3YXJkIHRoYXQgaW5zdGFuY2UgdG8gdGhlIHdpZGdldC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudCk6IEltcGxlbWVudCByZWNyZWF0ZVBsdWdp
bigpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOiBUaGUg
cGx1Z2luIHRoYXQgZmlyc3QgcnVucyBtaWdodCBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgICAg
IGFmdGVyIHRoZSBzbmFwc2hvdCB3YXMgdGFrZW4uIENoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9m
IHRoZSBwbHVnaW4gYmVmb3JlIGZvcndhcmRpbmcgdGhlCisgICAgICAgIGNhbGxiYWNrcy4KKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRGYWlsKToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRGaW5pc2hMb2FkaW5nKToKKwogMjAxMi0xMC0w
OSAgQnl1bmd3b28gTGVlICA8Ync4MC5sZWVAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1b
V0syXSBNb3ZlIHRpbWVvdXQgY2FsbGJhY2sgdG8gdGhlIENhbGxiYWNrRGF0YVRpbWVyIGNsYXNz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAyYzRmMTQzODM3ZGFhZGRiNGYwMzY4YWJlMzc1NDYz
ZDMwYzk5MGFmLi42ZGEzZTU3OWQ5ZWNiYWIzNzY3ZmVkYTQyMGI3YjZmOTdlNzM4NjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTIzMSw2ICsxMjMxLDcgQEAgX19aTks3V2ViQ29yZTE2Vmlz
aWJsZVNlbGVjdGlvbjE3dG9Ob3JtYWxpemVkUmFuZ2VFdgogX19aTks3V2ViQ29yZTE2VmlzaWJs
ZVNlbGVjdGlvbjE5cm9vdEVkaXRhYmxlRWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxl
U2VsZWN0aW9uMjNpc0NvbnRlbnRSaWNobHlFZGl0YWJsZUV2CiBfX1pOSzdXZWJDb3JlMTZWaXNp
YmxlU2VsZWN0aW9uNWlzQWxsRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQorX19a
Tks3V2ViQ29yZTE3SFRNTFBsdWdJbkVsZW1lbnQxMnBsdWdpbldpZGdldEV2CiBfX1pOSzdXZWJD
b3JlMTdKU0RPTUdsb2JhbE9iamVjdDIyc2NyaXB0RXhlY3V0aW9uQ29udGV4dEV2CiBfX1pOSzdX
ZWJDb3JlMTdSZWd1bGFyRXhwcmVzc2lvbjEzbWF0Y2hlZExlbmd0aEV2CiBfX1pOSzdXZWJDb3Jl
MTdSZWd1bGFyRXhwcmVzc2lvbjVtYXRjaEVSS04zV1RGNlN0cmluZ0VpUGkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggYzZlNTJjYTBkZjM0M2RhYmM0Y2Iw
ZDU5YTRhNDY3ZGUxZTY0NzU5YS4uOTk0N2E3MzZlYzg4NmU4MzRjMmEyZGRmOTY0MmI2NTMzNjYz
ZTIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2Uu
aCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKQEAgLTE3Nyw5ICsxNzgsMTUgQEAgdm9p
ZCBIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAg
ICAgLy8gRklYTUU6IE1vdXNlIGRvd24gYW5kIHNjcm9sbCBldmVudHMgYXJlIHBhc3NlZCBkb3du
IHRvIHBsdWctaW4gdmlhIGN1c3RvbSBjb2RlIGluIEV2ZW50SGFuZGxlcjsgdGhlc2UgY29kZSBw
YXRocyBzaG91bGQgYmUgdW5pdGVkLgogCiAgICAgUmVuZGVyT2JqZWN0KiByID0gcmVuZGVyZXIo
KTsKLSAgICBpZiAociAmJiByLT5pc0VtYmVkZGVkT2JqZWN0KCkgJiYgdG9SZW5kZXJFbWJlZGRl
ZE9iamVjdChyKS0+c2hvd3NVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcigpKSB7Ci0gICAgICAg
IHRvUmVuZGVyRW1iZWRkZWRPYmplY3QociktPmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNh
dG9yRXZlbnQoZXZlbnQpOwotICAgICAgICByZXR1cm47CisgICAgaWYgKHIgJiYgci0+aXNFbWJl
ZGRlZE9iamVjdCgpKSB7CisgICAgICAgIGlmICh0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHIpLT5z
aG93c1VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yKCkpIHsKKyAgICAgICAgICAgIHRvUmVuZGVy
RW1iZWRkZWRPYmplY3QociktPmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQo
ZXZlbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChyLT5p
c1NuYXBzaG90dGVkUGx1Z0luKCkgJiYgZGlzcGxheVN0YXRlKCkgPCBQbGF5aW5nKSB7CisgICAg
ICAgICAgICB0b1JlbmRlclNuYXBzaG90dGVkUGx1Z0luKHIpLT5oYW5kbGVFdmVudChldmVudCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXIgfHwg
IXItPmlzV2lkZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4
IDdmMTZmM2RmZTlhY2JhMTNhY2MyMTBkODQ0Yjk1NzZhYmNhZjc5ZGMuLjQ0MTJiYWVlYTc1ZGM5
Y2Q3NmU5M2VjMzE1NjkyM2VmNjI1OTk3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBFcmlj
IFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC0xNDYsNiArMTQ2LDEwIEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQ
bHVnCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6cmVj
cmVhdGVQbHVnaW4oSFRNTFBsdWdJbkVsZW1lbnQqKQoreworfQorCiBQYXNzUmVmUHRyPFdpZGdl
dD4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJ
bnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggMzkwMjc5MDM4MWFmYmM4ZTEzMjNlMjQwYTFl
ZjVhM2UxODE4NzI1OS4uZTA1OGQ3OTRiNjQ5MGU2ZWUwZmQyNzcyYmQ3ZTlmZTBmYmUwODY3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKLSAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
QEAgLTM0NCw2ICszNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCkgeyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBs
dWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihIVE1MUGx1Z0luRWxlbWVudCopIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3Qg
SW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBPVkVSUklERTsKICNpZiBFTkFCTEUoUExV
R0lOX1BST1hZX0ZPUl9WSURFTykKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVh
dGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50
KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggNzAzZmQzYmQzY2Y2MzJhN2I5MGM2YmFhNDU2ZmFlNGVkY2I0
ZjBhZS4uZDIzOWIyNTNhYTUzZTAxMTk3ZmFhYWZkYjc5MjRmNjkwOTgxNGRhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI2Miw2ICsyNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5n
LCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpID0gMDsKICAgICAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1
Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKEhUTUxQbHVnSW5FbGVtZW50KikgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVn
aW5XaWRnZXQpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNv
bnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IDU2YmJkNzQ0
MTAzMjdmMjFlYjA2NzFhNWRiOGI1NzVlNmNhYWUyYTYuLmE3NzkxMzJiOGY5ZjA2NzgxNzc1ZDk5
MWU5NTczNzQwNGNkNWMwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtMjcsOSArMjcsMTEgQEAKICNpbmNsdWRl
ICJSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIgogCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCisjaW5j
bHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNs
dWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAi
UGF0aC5oIgogCkBAIC0xMTUsNCArMTE3LDI5IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW46OnBhaW50UmVwbGFjZWRTbmFwc2hvdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QKICAg
ICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwg
YWxpZ25lZFJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKIH0KIAorQ3Vyc29yRGlyZWN0aXZlIFJl
bmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50
LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBjb25zdAoreworICAgIGlmIChwbHVnSW5JbWFnZUVs
ZW1lbnQoKS0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZykgewor
ICAgICAgICBvdmVycmlkZUN1cnNvciA9IGhhbmRDdXJzb3IoKTsKKyAgICAgICAgcmV0dXJuIFNl
dEN1cnNvcjsKKyAgICB9CisgICAgcmV0dXJuIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpnZXRDdXJz
b3IocG9pbnQsIG92ZXJyaWRlQ3Vyc29yKTsKK30KKwordm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQoreworICAgIGlmICghZXZlbnQtPmlzTW91
c2VFdmVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50
ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KTsKKyAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCAmJiBtb3VzZUV2ZW50LT5idXR0b24oKSA9PSBM
ZWZ0QnV0dG9uKSB7CisgICAgICAgIHBsdWdJbkltYWdlRWxlbWVudCgpLT5zZXREaXNwbGF5U3Rh
dGUoSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcpOworICAgICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xp
ZW50KCktPnJlY3JlYXRlUGx1Z2luKHBsdWdJbkltYWdlRWxlbWVudCgpKTsKKyAgICAgICAgbV9z
bmFwc2hvdFJlc291cmNlLT5zZXRDYWNoZWRJbWFnZSgwKTsKKyAgICAgICAgcmVwYWludCgpOwor
ICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmgKaW5kZXggODBjMmExNGIzM2UwOWY0MzlkNTUwMTA0Njg0Zjc2ODg2
NTAzYmExNi4uNmExM2EzYTNmZmZlOGJlNWNmMWMzMWQwMDc5YTliZDY2ZjgyYmQzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgK
QEAgLTQyLDEwICs0MiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZVNuYXBzaG90KFBh
c3NSZWZQdHI8SW1hZ2U+KTsKIAorICAgIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQqKTsKKwogcHJp
dmF0ZToKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVnSW5JbWFnZUVsZW1lbnQoKSBj
b25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVy
biAiUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4iOyB9CiAKKyAgICB2aXJ0dWFsIEN1cnNvckRpcmVj
dGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJzb3ImKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTbmFwc2hvdHRlZFBsdWdJbigpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZXBsYWNl
ZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAppbmRleCBmMmM0
ZDA3MGQ4ZGJiZTQ4ZjM2YWYwZTU3ODE5YzAwOWMzYzRhZGU0Li5mNjJlZjE3ZTQwOTQ0MDZkYjJi
NTM0NWFmZmE3YzM0OGU0ZmQ3NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaApAQCAtMTgyLDYgKzE4Miw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsCiAgICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwKICAgICAgICAgY29uc3QgV1RGOjpT
dHJpbmcmLCBib29sIGxvYWRNYW51YWxseSk7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1
Z2luKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJl
ZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KAogICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCmluZGV4IDZk
NjZlZThhYWQ2ZWUwZjhhNTk5OTE3ODQxMTUxZTRlYmJkNmU0NTAuLjFiZTQxZWU0NTRjOGI3Nzhm
NzlkYjQ3NjI2NjMxNDhkMmQ3Zjk1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaApAQCAtMTMyLDYgKzEzMiw3
IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0
KTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJ
bnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgV1RGOjpWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBi
b29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oSFRNTFBsdWdJbkVsZW1lbnQq
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVn
aW5XaWRnZXQpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBs
ZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYg
YmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RG
OjpWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJy
aWRlTWVkaWFUeXBlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBmNmUzZDRmNmVkOTcwNmRl
ZGIwOGVmZjJkMzQ3M2I0NGQwNmYyOGEwLi4zOGY1Nzc2YTI5MDE0MWI1Y2M3ODlmNmNlYWY3OGEz
MjFlNjlkMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVh
dGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBi
b29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsK
ICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2lu
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25z
dCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6SFRNTFBsdWdJbkVs
ZW1lbnQqKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdl
YkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBiYXNlVVJMLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogICAgICAgICB2aXJ0
dWFsIFdURjo6U3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCBkOTA4ODgxYTNhYzc0ZWMyMTI4ZTcyYTkxOTE4ODFlZjNmMzQ4MmJhLi45ZjU5OGMyMGE5
NDAyZDA2NzEzNTMyMTJmMzJhZDVhNjQxN2U3YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywg
MjAwOCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5OCw2ICsxOTgsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdp
bkhlaWdodCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdl
dD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZl
Y3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVu
dCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJD
b3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCkgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBiYXNlVVJMLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBkZTBmNjE4M2QyOTJiNTgy
M2UzMGNlMWQ2YWIxNzljZDA2ZWJkMzU2Li41ZmI3N2UzMzJlNTE2ODEzMWIzNDQ5NWNlYTRlNzlk
YzFjNDk0M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTcyNCw2ICsxNzI0LDEwIEBAIFBhc3NSZWZQdHI8V2lkZ2V0
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUs
IEhUTUxQCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJl
Y3JlYXRlUGx1Z2luKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KikKK3sKK30KKwogdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5X
aWRnZXQpCiB7CiAgICAgaWYgKCFwbHVnaW5XaWRnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCmluZGV4IDU0MjEyOTIz
ODk2YTJhOWQ2MDY5YTk5ZGU3NzA4NTZiMWE0MzZiYzYuLjcxYjUzNWI3NWUwMjY3ZTk3ZjlkYTFl
MTliOGYxN2RiZTc4MTAzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCkBAIC0yMDcsNiArMjA3LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWln
aHQpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJ
bnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOworICAg
IHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCop
IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdp
bldpZGdldCk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwm
IGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZDUyZjgxMjBhOGY3MjMx
NzgzYTczNDMwNjVjZGFiMGFhNmM3MjkyNC4uYWRlMmIzMGRkZDFiZjliMzZhMzI5MDAyZjIzYTZm
YzFkMmM5NDEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTUsNiArMTE1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3Qg
V2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRN
TEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGlu
ZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSk7CisgICAgdmlydHVhbCB2b2lkIHJl
Y3JlYXRlUGx1Z2luKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VQbHVnaW5Eb2N1bWVudChjb25zdCBXVEY6
OlN0cmluZyYgbWltZVR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmggYi9Tb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAppbmRleCA5MGVl
NDk0YTRjNTJhMTU2ZWMwOTAzN2E1M2VlM2I4YTFlZTYzNjZhLi44YmUwYTJjNTI5NmIyOTBjNzRk
MjIwZTg5Y2U4NTU2ZWFlMzc4NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaApAQCAtMTA4LDYg
KzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+
IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcm
IG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwg
Ym9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpOworICAg
IHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCop
IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRn
ZXQqIHBsdWdpbldpZGdldCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdl
dD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25z
dCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgb3Zl
cnJpZGVNZWRpYVR5cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBiYTg1ZTcyZGNiZjhmNDYxNTQzMTI4NDQyNjA5
ZjVlNjAyMmMyZmM5Li45NjhiN2NjMjdkMWVmMGMxMTE2Njk1YjA0NDExMWRkMjY3MWI3MmQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CkBAIC0xOTIsNiArMTkyLDEwIEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRIVFRQSGVhZGVycyhjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgbG9uZyBsb25nJiBleHBlCiAKIHZvaWQgUGx1
Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKKyAgICAvLyBUaGUg
cGx1Z2luIG1pZ2h0IGhhdmUgYmVlbiBzaHV0IGRvd24gYWZ0ZXIgdGhlIHNuYXBzaG90IHdhcyB0
YWtlbiBmb3IgY2xpY2stdG8tc3RhcnQgcGx1Z2lucy4KKyAgICBpZiAoIW1fcGx1Z2luVmlldy0+
bV9wbHVnaW4pCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIENvbXB1dGUgdGhlIHN0cmVhbSBy
ZWxhdGVkIGRhdGEgZnJvbSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UuCiAgICAgY29uc3QgS1VSTCYg
cmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
ID0gcmVzcG9uc2UubWltZVR5cGUoKTsKQEAgLTIwOCw2ICsyMTIsOSBAQCB2b2lkIFBsdWdpblZp
ZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
KiwgY29uc3QgUgogCiB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkK
IHsKKyAgICAvLyBUaGUgcGx1Z2luIG1pZ2h0IGhhdmUgYmVlbiBzaHV0IGRvd24gYWZ0ZXIgdGhl
IHNuYXBzaG90IHdhcyB0YWtlbiBmb3IgY2xpY2stdG8tc3RhcnQgcGx1Z2lucy4KKyAgICBpZiAo
IW1fcGx1Z2luVmlldy0+bV9wbHVnaW4pCisgICAgICAgIHJldHVybjsKICAgICBtX3BsdWdpblZp
ZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlRGF0YShtX3N0cmVhbUlELCBieXRlcywgbGVu
Z3RoKTsKIH0KIApAQCAtMjE3LDcgKzIyNCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpk
aWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvCiAg
ICAgUmVmUHRyPFN0cmVhbT4gcHJvdGVjdCh0aGlzKTsKIAogICAgIC8vIFdlIG9ubHkgd2FudCB0
byBjYWxsIHN0cmVhbURpZEZhaWwgaWYgdGhlIHN0cmVhbSB3YXMgbm90IGV4cGxpY2l0bHkgY2Fu
Y2VsbGVkIGJ5IHRoZSBwbHVnLWluLgotICAgIGlmICghbV9zdHJlYW1XYXNDYW5jZWxsZWQpCisg
ICAgaWYgKCFtX3N0cmVhbVdhc0NhbmNlbGxlZCAmJiBtX3BsdWdpblZpZXctPm1fcGx1Z2luKQog
ICAgICAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRGYWlsKG1fc3RyZWFtSUQs
IGVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpOwogCiAgICAgbV9wbHVnaW5WaWV3LT5yZW1vdmVTdHJl
YW0odGhpcyk7CkBAIC0yMzMsNyArMjQwLDggQEAgdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRp
ZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKQogICAgIC8vIFByb3Rl
Y3QgdGhlIHBsdWctaW4gd2hpbGUgd2UncmUgY2FsbGluZyBpbnRvIGl0LgogICAgIE5QUnVudGlt
ZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yIHBsdWdpblByb3RlY3RvcigmbV9wbHVnaW5WaWV3
LT5tX25wUnVudGltZU9iamVjdE1hcCk7CiAjZW5kaWYKLSAgICBtX3BsdWdpblZpZXctPm1fcGx1
Z2luLT5zdHJlYW1EaWRGaW5pc2hMb2FkaW5nKG1fc3RyZWFtSUQpOworICAgIGlmIChtX3BsdWdp
blZpZXctPm1fcGx1Z2luKQorICAgICAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1E
aWRGaW5pc2hMb2FkaW5nKG1fc3RyZWFtSUQpOwogCiAgICAgbV9wbHVnaW5WaWV3LT5yZW1vdmVT
dHJlYW0odGhpcyk7CiAgICAgbV9wbHVnaW5WaWV3ID0gMDsKQEAgLTMxNiw2ICszMjQsMjYgQEAg
dm9pZCBQbHVnaW5WaWV3OjpkZXN0cm95UGx1Z2luQW5kUmVzZXQoKQogICAgIGNhbmNlbEFsbFN0
cmVhbXMoKTsKIH0KIAordm9pZCBQbHVnaW5WaWV3OjpyZWNyZWF0ZUFuZEluaXRpYWxpemUoUGFz
c1JlZlB0cjxQbHVnaW4+IHBsdWdpbikKK3sKKyAgICBpZiAobV9wbHVnaW4pIHsKKyAgICAgICAg
aWYgKG1fcGx1Z2luU25hcHNob3RUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9wbHVn
aW5TbmFwc2hvdFRpbWVyLnN0b3AoKTsKKyAgICAgICAgZGVzdHJveVBsdWdpbkFuZFJlc2V0KCk7
CisgICAgfQorCisgICAgLy8gUmVzZXQgbWVtYmVyIHZhcmlhYmxlcyB0byBpbml0aWFsIHZhbHVl
cy4KKyAgICBtX3BsdWdpbiA9IHBsdWdpbjsKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTsK
KyAgICBtX2lzV2FpdGluZ0ZvclN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKKyAg
ICBtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCA9IGZhbHNlOworICAgIG1faXNCZWluZ0Rl
c3Ryb3llZCA9IGZhbHNlOworICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBTdHJlYW1TdGF0ZUlu
aXRpYWw7CisgICAgbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90ID0gbnVsbHB0cjsKKworICAg
IGluaXRpYWxpemVQbHVnaW4oKTsKK30KKwogRnJhbWUqIFBsdWdpblZpZXc6OmZyYW1lKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXgg
ZmQ0MWEzZmJmNzM3MTVlNGJmOTJkM2QyYzhjMDllMzJkNTE1YmVlYi4uZGQ3ODZhZWZmYjQ5MWJh
NGJjODVlZDZhMWYyOTlmODBjYTBkMDIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC01Myw2ICs1Myw4IEBAIGNsYXNzIFBsdWdpblZp
ZXcgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z2luVmlld0Jhc2UsIHB1YmxpYyBQbHVnaW5Db250cm9s
bGVyLCBwcml2CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luVmlldz4gY3Jl
YXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ+LCBQYXNzUmVmUHRyPFBs
dWdpbj4sIGNvbnN0IFBsdWdpbjo6UGFyYW1ldGVycyYpOwogCisgICAgdm9pZCByZWNyZWF0ZUFu
ZEluaXRpYWxpemUoUGFzc1JlZlB0cjxQbHVnaW4+KTsKKwogICAgIFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0JlaW5nRGVzdHJveWVkOyB9CkBAIC03Miw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICBS
ZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3BsdWdpbi0+cGRmRG9jdW1lbnRGb3JQcmludGluZygpOyB9CiAjZW5kaWYKIAorICAg
IGNvbnN0IFBsdWdpbjo6UGFyYW1ldGVycyYgaW5pdGlhbFBhcmFtZXRlcnMoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnM7IH0KKwogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpczsgbm9ib2R5
IHNob3VsZCBoYXZlIHRvIGtub3cgYWJvdXQgdGhlIHBsdWctaW4gdmlldydzIHJlbmRlcmVyIGV4
Y2VwdCB0aGUgcGx1Zy1pbiB2aWV3IGl0c2VsZi4KICAgICBXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVuZGVyZXIoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAppbmRleCA4NzYyMzRmODg5NjFkZDc5Njc3ZjE0NTU0YjUwNTA1ZDUzNDZlNGJmLi43Zjcx
YjAzMzA2YmRhYzcwOTY3MDE3OWI5MTgxNmZjYWE0MWI0ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM1Myw2ICsxMzUzLDE0IEBAIFBhc3NSZWZQ
dHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNp
emUmLCBIVE1MUGx1Z0luCiAgICAgcmV0dXJuIFBsdWdpblZpZXc6OmNyZWF0ZShwbHVnaW5FbGVt
ZW50LCBwbHVnaW4ucmVsZWFzZSgpLCBwYXJhbWV0ZXJzKTsKIH0KIAordm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6cmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIHBs
dWdpbkVsZW1lbnQpCit7CisgICAgUGx1Z2luVmlldyogd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UGx1
Z2luVmlldyo+KHBsdWdpbkVsZW1lbnQtPnBsdWdpbldpZGdldCgpKTsKKyAgICBBU1NFUlQobV9m
cmFtZS0+cGFnZSgpKTsKKyAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX2ZyYW1lLT5wYWdl
KCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVnaW5FbGVtZW50LCB3aWRnZXQtPmluaXRpYWxQ
YXJhbWV0ZXJzKCkpOworICAgIHdpZGdldC0+cmVjcmVhdGVBbmRJbml0aWFsaXplKHBsdWdpbi5y
ZWxlYXNlKCkpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFU
b1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKIHsKICAgICBtX3BsdWdpblZpZXcgPSBzdGF0
aWNfY2FzdDxQbHVnaW5WaWV3Kj4ocGx1Z2luV2lkZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAppbmRleCA4NjZhZDNmNTQ0ZGIwMTE5ODlkMTIyNDBmMzQ3Y2QzYWIwMzQ5NzhkLi41
ZDk2ODY4ZTAxMDdkMGVmMjIzYWI3YWU0ODk2YzkxZDE0NDQ3YWQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xODgsNiArMTg4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5I
ZWlnaHQpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVh
bGx5KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6
SFRNTFBsdWdJbkVsZW1lbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RE
YXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpIE9WRVJSSURFOwogICAg
IAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBs
ZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVt
ZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgT1ZFUlJJREU7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168068</attachid>
            <date>2012-10-10 14:00:51 -0700</date>
            <delta_ts>2012-10-10 15:00:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98328-20121010135950.patch</filename>
            <type>text/plain</type>
            <size>32095</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwOTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNkZDQ2OTM3MTY5OTg5
OGQyZjU0MTE2ZWU4OWI2ODJiY2IwOTRiOS4uZWFmN2YzNzhmMjBjMTllYmI3ZjYyODhiNWJiM2Yz
ZWYwZWQ1MmYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTEwICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5z
IHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQy
NjY4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
eHRlbmQgdGhlIGRlZmF1bHQgZXZlbnQgaGFuZGxlciB0byBkZWFsIHdpdGggcGx1Z2lucyB3aXRo
IHNuYXBzaG90cy4KKyAgICAgICAgV2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIHBsYWNlaG9s
ZGVyLCB0aGUgcGx1Z2luIGlzIHJlY3JlYXRlZCBhbmQgZGlzcGxheWVkLgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6IEFkZCBuZXcgY2xpZW50IGZ1bmN0aW9uIHJlY3Jl
YXRlUGx1Z2luKCksIHdoaWNoIGlzCisgICAgICAgIGV4cGVjdGVkIHRvIHJlLWNyZWF0ZSB0aGUg
cGx1Z2luIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyBhcyB3aGVuIGl0IHdhcyBydW4gdG8KKyAg
ICAgICAgb2J0YWluIHRoZSBwbHVnaW4ncyBzbmFwc2hvdCBwbGFjZWhvbGRlci4KKworICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3Jl
YXRlUGx1Z2luKCkuCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOiBFeHBvc2UgSFRNTFBsdWdJbkVsZW1lbnQ6OnBsdWdpbldpZGdldCgp
LgorCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFVwZGF0ZSB0byBs
b29rIGZvcgorICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi4gSWYgdGhlIHBsdWdpbiBp
cyBub3QgcGxheWluZywgaGF2ZSB0aGUgcmVuZGVyZXIgaGFuZGxlIHRoZQorICAgICAgICBldmVu
dC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdpbjo6Z2V0Q3Vyc29yKTogU2V0
IHRvIGhhbmQgY3Vyc29yIHdoZW4gdGhlIHBsdWdpbiBpcyBub3QKKyAgICAgICAgcGxheWluZy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudCk6
IElmIHRoZSB1c2VyIGNsaWNrZWQgb24gdGhlIHBsdWdpbiB1c2luZyB0aGUKKyAgICAgICAgbGVm
dCBidXR0b24sIHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIGVsZW1lbnQgdG8gcGxheWluZy4gUmVj
cmVhdGUgdGhlIHBsdWdpbi4gVGhlIGNhY2hlZAorICAgICAgICBzbmFwc2hvdCBpbWFnZSB3aWxs
IGJlIHNhdmVkIGZvciBwb3NzaWJsZSByZXVzZSBvbiBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbi4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaDoKKyAgICAgICAg
KFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKToKKwogMjAxMi0xMC0xMCAgVnNldm9sb2QgVmxhc292
ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbUmVncmVz
c2lvbl0gU3RhbGUgcmV2aXNpb25zIGFyZSBub3QgY2xlYXJlZCB3aGVuIGluc3BlY3RvciBpcyBv
cGVuZWQgZm9yIHRoZSBhbHJlYWR5IGxvYWRlZCBwYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCA1MDQ5YjRhMWIyNzRlMmU3N2IyMjVmNWJiM2NlZWJmMjEwZWE3YTUyLi5iOGI2M2Zh
N2IzNTllYWZhOTYyNmFlOTczOWViYjQzZjRkNjQ2MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTEwICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mg
b24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpyZWNy
ZWF0ZVBsdWdpbik6IFN0dWIgaW1wbGVtZW50YXRpb24gb2YgcmVjcmVhdGVQbHVnaW4oKS4KKwog
MjAxMi0xMC0wOCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0Nocm9taXVtXSBBZGQgV2ViRWxlbWVudDo6aGFzSFRNTFRhZ05hbWUsIGFuZCBkZXByZWNhdGUg
aGFzVGFnTmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDU4ZjU2MjkyMzVjYTBlN2VkYWI4NWFmOGIw
NTVhNjE2NGM3YWU0YzQuLjYyMDgxODQ1NThiY2M0MGU5NDkwMjZmZmEyOWUzZWRkMTZjOTU4Njgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMC0xMCAgSm9uIExlZSAg
PGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWN0aXZhdGUgcGx1Z2lucyB3aGVu
IHVzZXIgY2xpY2tzIG9uIHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05ODMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI0MjY2ODE+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OnJlY3JlYXRlUGx1Z2luKTogU3R1YiBpbXBsZW1lbnRhdGlvbiBv
ZiByZWNyZWF0ZVBsdWdpbigpLgorCiAyMDEyLTEwLTEwICBSeXVhbiBDaG9pICA8cnl1YW4uY2hv
aUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBVc2UgZXdrX3ZpZXdfcGFpbnQgaW5zdGVh
ZCBvZiBld2tfdmlld19wYWludF9jb250ZW50cyBpbiBld2tfdmlld19zaW5nbGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggNWViYTQwNmRjYTA5N2E1ZjQ3ZjkxN2YxNjhmYmE3NDdmY2IxOGYxNS4uYmVj
OGZmOGI0N2M0MjgxODQxN2E2N2QzMDljY2FlNGU1YzBjMjE0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTEwICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4K
KworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mgb24gc25h
cHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNy
ZWF0ZVBsdWdpbik6IFN0dWIgaW1wbGVtZW50YXRpb24gb2YgcmVjcmVhdGVQbHVnaW4oKS4KKwog
MjAxMi0xMC0xMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzMDg1My4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpp
bmRleCBkOTUxZWUzZjQyOGNhMWFjMDNlNzA0YWQzYTI4MmY5ODkyNzk3N2Q0Li42Mzg2YjBmZTgw
ODZlZWRhZDA1YzI5MzJhZGNmNzg5ZjQyZWU4MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMTAtMTAgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXSzJdIEFjdGl2YXRlIHBsdWdpbnMgd2hlbiB1c2VyIGNsaWNrcyBvbiBzbmFwc2hvdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgzMjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDI2NjgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbik6IFN0dWIg
aW1wbGVtZW50YXRpb24gb2YgcmVjcmVhdGVQbHVnaW4oKS4KKwogMjAxMi0xMC0wOSAgSmlhbiBM
aSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIHRoZSBDU1MgcHJvcGVy
dHkgdXNlZCB0byBzdXBwb3J0IGRyYWdnYWJsZSByZWdpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBm
NWMyZTExYzIxZDNmOTg4ZTM5ZmFiNjg3N2FhZTUzMjVhYjNjZWY5Li41NjA0NWIyMzY0MWUzNmNj
OGYwN2VjYmI0ZmNlZmRiNjZiMmE1MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEyLTEwLTEwICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0sy
XSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNob3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlY3JlYXRlUGx1Z2luKTog
U3R1YiBpbXBsZW1lbnRhdGlvbiBvZiByZWNyZWF0ZVBsdWdpbigpLgorCiAyMDEyLTEwLTEwICBC
YWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFRlc3Qg
ZHJpdmVycyBzaG91bGQgaGFuZGxlIHJlcGFpbnQgcmVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA4
MTFhZTBlMmMwOWI1YTdkODczZjlkNWEzZjljODYxZDVmNjk1ZDFmLi5iNDZjMDRmOTQwNzJmNTAz
OTYzMDRhN2MzZWE1NjRiMjJiYTQwMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTItMTAtMTAgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFtX
SzJdIEFjdGl2YXRlIHBsdWdpbnMgd2hlbiB1c2VyIGNsaWNrcyBvbiBzbmFwc2hvdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgzMjgKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzEyNDI2NjgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbik6IFN0dWIg
aW1wbGVtZW50YXRpb24gb2YgcmVjcmVhdGVQbHVnaW4oKS4KKwogMjAxMi0xMC0wOCAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTb21lIEdyYXBoaWNz
TGF5ZXIgY2xlYW51cCB0byBzZXBhcmF0ZSB0aGUgY29uY2VwdHMgb2YgdXNpbmcgYSB0aWxlIGNh
Y2hlLCBhbmQgYmVpbmcgdGhlIG1haW4gdGlsZSBjYWNoZSBsYXllcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxv
ZwppbmRleCBjOTY5MGVmZGFiZDgzYjhjN2M3NmU4YzBkN2UxYWE3ZWUyN2YxMTAyLi43OTBiM2Y5
YzFmYTM1N2NhN2NlNTY3YzIxM2MyZDNkZGNjYTQ1ODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbmNlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTEwICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4K
KworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mgb24gc25h
cHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0UuaDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRXaW5D
RTo6cmVjcmVhdGVQbHVnaW4pOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3JlYXRlUGx1Z2lu
KCkuCisKIDIwMTItMTAtMDcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8u
b2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZW5hbWUgZmlyc3Qvc2Vjb25kIHRv
IGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGFlYTA0ZmYzMmE2
NjBkMWI0MWU4N2FiY2JlOTQ4YTBkOWQ0ZGVhM2EuLmE5YjRkZDZhMjQ4ZjhjMDRlMTZjMzc0MzEw
ODg1YzQwN2IxN2E2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMi0xMC0xMCAg
Sm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWN0aXZhdGUgcGx1
Z2lucyB3aGVuIHVzZXIgY2xpY2tzIG9uIHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTI0MjY2ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW1wbGVtZW50IHRoZSByZWNyZWF0aW9uIG9mIHRoZSBwbHVnaW4uCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OnJlY3JlYXRlQW5kSW5pdGlhbGl6ZSk6IFdlIGNhbiBydW4gaW50byBhIHNpdHVhdGlv
biB3aGVyZSB0aGUgdXNlcgorICAgICAgICBkZWNpZGVkIHRvIHJ1biB0aGUgcGx1Z2luIGJlZm9y
ZSB0aGUgc25hcHNob3Qgd2FzIHJlYWR5IHRvIGJlIHRha2VuLiBJbiB0aGlzIGNhc2UsIHRoZQor
ICAgICAgICBwbHVnaW4gbWVtYmVyIHZhcmlhYmxlIGlzIG5vbi1udWxsLCBhbmQgdGhlIHRpbWVy
IGlzIHN0aWxsIGFjdGl2ZS4gVHVybiBvZmYgdGhlIHRpbWVyLCBhbmQKKyAgICAgICAgZGVzdHJv
eSB0aGF0IGluc3RhbmNlIG9mIHRoZSBwbHVnaW4uIFdlIHNldCB0aGUgcGx1Z2luIHRvIHRoZSBp
bnN0YW5jZSBwcm92aWRlZCBpbiB0aGUKKyAgICAgICAgZmlyc3QgcGFyYW1ldGVyIHRvIHRoaXMg
ZnVuY3Rpb24sIGFuZCByZXNldCB0aGUgbWVtYmVyIHZhcmlhYmxlcyBzbyB0aGF0IHRoZSBQbHVn
aW5WaWV3IGlzCisgICAgICAgIGluIGEgc3RhdGUgc2ltaWxhciB0byB3aGVuIGl0IHdhcyBmaXJz
dCBjcmVhdGVkLiBXZSBhbHNvIGltbWVkaWF0ZWx5IGluaXRpYWxpemUgdGhlIHBsdWdpbiwKKyAg
ICAgICAgd2hpY2ggbWF5IGhhcHBlbiBzeW5jaHJvbm91c2x5IG9yIGFzeW5jaHJvbm91c2x5Lgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luVmlldzo6aW5pdGlhbFBhcmFtZXRlcnMpOiBFeHBvc2UgdGhlIGluaXRpYWwg
cGFyYW1ldGVycy4gVXNlZCB0byByZWNyZWF0ZQorICAgICAgICB0aGUgcGx1Z2luLgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwbHVnaW5FbGVtZW50KTogRXhwb3NlIHRoZSBlbGVtZW50
IGFzc29jaWF0ZWQgd2l0aCB0aGUgd2lkZ2V0LiBVc2VkIHRvCisgICAgICAgIHJlY3JlYXRlIHRo
ZSBwbHVnaW4uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnJlY3JlYXRlUGx1Z2luKTogQ3JlYXRlIGEgbmV3IFBsdWdpbiBpbnN0YW5jZSB1c2luZyB0aGUg
c2FtZQorICAgICAgICBwYXJhbWV0ZXJzIHVzZWQgdG8gY3JlYXRlIHRoZSBwbHVnaW4gZm9yIHNu
YXBzaG90dGluZy4gRm9yd2FyZCB0aGF0IGluc3RhbmNlIHRvIHRoZSB3aWRnZXQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQpOiBJbXBsZW1lbnQgcmVjcmVhdGVQbHVnaW4oKS4K
KwogMjAxMi0xMC0xMCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEu
Y29tPgogCiAgICAgICAgIFtRdF1bV0syXSBSRUdSRVNTSU9OKHIxMzA4NzkpOiBJdCBtYWRlIGZh
c3QvZXZlbnRzL3RvdWNoLyogdGVzdHMgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMmM0
ZjE0MzgzN2RhYWRkYjRmMDM2OGFiZTM3NTQ2M2QzMGM5OTBhZi4uNmRhM2U1NzlkOWVjYmFiMzc2
N2ZlZGE0MjBiN2I2Zjk3ZTczODY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEyMzEsNiAr
MTIzMSw3IEBAIF9fWk5LN1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb24xN3RvTm9ybWFsaXplZFJh
bmdlRXYKIF9fWk5LN1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb24xOXJvb3RFZGl0YWJsZUVsZW1l
bnRFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjIzaXNDb250ZW50UmljaGx5RWRp
dGFibGVFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjVpc0FsbEVOU18yN0VkaXRp
bmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKK19fWk5LN1dlYkNvcmUxN0hUTUxQbHVnSW5FbGVtZW50
MTJwbHVnaW5XaWRnZXRFdgogX19aTks3V2ViQ29yZTE3SlNET01HbG9iYWxPYmplY3QyMnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRFdgogX19aTks3V2ViQ29yZTE3UmVndWxhckV4cHJlc3Npb24xM21h
dGNoZWRMZW5ndGhFdgogX19aTks3V2ViQ29yZTE3UmVndWxhckV4cHJlc3Npb241bWF0Y2hFUktO
M1dURjZTdHJpbmdFaVBpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3Bw
CmluZGV4IGM2ZTUyY2EwZGYzNDNkYWJjNGNiMGQ1OWE0YTQ2N2RlMWU2NDc1OWEuLjk5NDdhNzM2
ZWM4ODZlODM0YzJhMmRkZjk2NDJiNjUzMzY2M2UyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRP
YmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIgogI2luY2x1ZGUg
IlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2lkZ2V0
LmgiCkBAIC0xNzcsOSArMTc4LDE1IEBAIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIC8vIEZJWE1FOiBNb3VzZSBkb3duIGFuZCBz
Y3JvbGwgZXZlbnRzIGFyZSBwYXNzZWQgZG93biB0byBwbHVnLWluIHZpYSBjdXN0b20gY29kZSBp
biBFdmVudEhhbmRsZXI7IHRoZXNlIGNvZGUgcGF0aHMgc2hvdWxkIGJlIHVuaXRlZC4KIAogICAg
IFJlbmRlck9iamVjdCogciA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKHIgJiYgci0+aXNFbWJlZGRl
ZE9iamVjdCgpICYmIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QociktPnNob3dzVW5hdmFpbGFibGVQ
bHVnaW5JbmRpY2F0b3IoKSkgewotICAgICAgICB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHIpLT5o
YW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50KGV2ZW50KTsKLSAgICAgICAgcmV0
dXJuOworICAgIGlmIChyICYmIHItPmlzRW1iZWRkZWRPYmplY3QoKSkgeworICAgICAgICBpZiAo
dG9SZW5kZXJFbWJlZGRlZE9iamVjdChyKS0+c2hvd3NVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRv
cigpKSB7CisgICAgICAgICAgICB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHIpLT5oYW5kbGVVbmF2
YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBpZiAoci0+aXNTbmFwc2hvdHRlZFBsdWdJbigpICYmIGRpc3Bs
YXlTdGF0ZSgpIDwgUGxheWluZykgeworICAgICAgICAgICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbihyKS0+aGFuZGxlRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgaWYgKCFyIHx8ICFyLT5pc1dpZGdldCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA3ZjE2ZjNkZmU5YWNiYTEzYWNjMjEwZDg0NGI5
NTc2YWJjYWY3OWRjLi5jOWIzZjNhNmUxMDUxZjBlOTczNWY2NWQ0ZGViNjBmNzkyOTdmMDkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KLSAq
IENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTQ2LDYgKzE0
NiwxMCBAQCBQYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1ZwogICAgIHJldHVybiAwOwogfQogCit2b2lk
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKFdpZGdldCopCit7Cit9CisK
IFBhc3NSZWZQdHI8V2lkZ2V0PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwm
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsKICAgICBy
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCAzOTAyNzkwMzgx
YWZiYzhlMTMyM2UyNDBhMWVmNWEzZTE4MTg3MjU5Li45YzJjMjNkM2UwOGE4ZmQxNzhlMTg1YjU4
YWUxY2E5NTFhMmM0MDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBFcmljIFNlaWRlbCAoZXJpY0B3
ZWJraXQub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwg
MjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMzQ0LDYgKzM0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sKSB7IH0KICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBI
VE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGludCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0
IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBPVkVSUklERTsKICNpZiBFTkFC
TEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0
PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVkaWFF
bGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNzAzZmQzYmQzY2Y2MzJhN2I5MGM2YmFhNDU2ZmFl
NGVkY2I0ZjBhZS4uNGYyMzg4YWY1ZmJiNGM1ZDY1YzMwYmZmODg4NDU1NGM3YzhiOWMwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI2Miw2ICsyNjIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFt
ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Ny
b2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpID0gMDsKICAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBI
VE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCopID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lk
Z2V0KSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2
YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBL
VVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCA1NmJiZDc0NDEwMzI3
ZjIxZWIwNjcxYTVkYjhiNTc1ZTZjYWFlMmE2Li44NmRjMmY5Mzg0ZjQyY2E3MmE3MGIxYTBhY2Jh
Y2E3NmU2Yjg2OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTI3LDkgKzI3LDExIEBACiAjaW5jbHVkZSAiUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uaCIKIAogI2luY2x1ZGUgIkN1cnNvci5oIgorI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
R3JhZGllbnQuaCIKICNpbmNsdWRlICJIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVk
ZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlBhdGgu
aCIKIApAQCAtMTE1LDQgKzExNywyOCBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpw
YWludFJlcGxhY2VkU25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0CiAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIGFsaWdu
ZWRSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CiB9CiAKK0N1cnNvckRpcmVjdGl2ZSBSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vy
c29yJiBvdmVycmlkZUN1cnNvcikgY29uc3QKK3sKKyAgICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50
KCktPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmcpIHsKKyAgICAg
ICAgb3ZlcnJpZGVDdXJzb3IgPSBoYW5kQ3Vyc29yKCk7CisgICAgICAgIHJldHVybiBTZXRDdXJz
b3I7CisgICAgfQorICAgIHJldHVybiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6Z2V0Q3Vyc29yKHBv
aW50LCBvdmVycmlkZUN1cnNvcik7Cit9CisKK3ZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
OmhhbmRsZUV2ZW50KEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIWV2ZW50LT5pc01vdXNlRXZl
bnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0
YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCk7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmNsaWNrRXZlbnQgJiYgbW91c2VFdmVudC0+YnV0dG9uKCkgPT0gTGVmdEJ1
dHRvbikgeworICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+c2V0RGlzcGxheVN0YXRlKEhU
TUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nKTsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgp
LT5yZWNyZWF0ZVBsdWdpbih3aWRnZXQoKSk7CisgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5oCmluZGV4IDgwYzJhMTRiMzNlMDlmNDM5ZDU1MDEwNDY4NGY3Njg4NjUwM2JhMTYu
LjZhMTNhM2EzZmZmZThiZTVjZjFjMzFkMDA3OWE5YmQ2NmY4MmJkM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCkBAIC00Miwx
MCArNDIsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRy
PEltYWdlPik7CiAKKyAgICB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50Kik7CisKIHByaXZhdGU6CiAg
ICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCogcGx1Z0luSW1hZ2VFbGVtZW50KCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRl
clNuYXBzaG90dGVkUGx1Z0luIjsgfQogCisgICAgdmlydHVhbCBDdXJzb3JEaXJlY3RpdmUgZ2V0
Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29yJikgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGlzU25hcHNob3R0ZWRQbHVnSW4oKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXggZjJjNGQwNzBkOGRi
YmU0OGYzNmFmMGU1NzgxOWMwMDljM2M0YWRlNC4uMTJhNzZmZWVlMzUyNjA1YjkwNTc1MGE4NGU2
YzVmYjNiZGIxYTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTE4Miw2ICsxODIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmLAogICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+Jiwg
Y29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiwg
Ym9vbCBsb2FkTWFudWFsbHkpOworICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJD
b3JlOjpXaWRnZXQqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4o
V2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoCiAgICAgICAgIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKaW5kZXggNmQ2NmVlOGFhZDZlZTBmOGE1OTk5
MTc4NDExNTFlNGViYmQ2ZTQ1MC4uNzlkODY0NTY4OTMzYjc5MmZjNDM5NTY2YjdhMmJkOWQxNzJm
YzBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5oCkBAIC0xMzIsNiArMTMyLDcgQEAgY2xhc3MgRnJhbWVMb2Fk
ZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xs
aW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwogCiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0lu
RWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
V1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOworICAgIHZpcnR1YWwg
dm9pZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJl
Y3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxB
cHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMp
OwogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuaAppbmRleCBmNmUzZDRmNmVkOTcwNmRlZGIwOGVmZjJkMzQ3M2I0NGQwNmYyOGEwLi5mOWRi
N2JhYWJlNjhmYmI3YTUxOGY2ZWQ0NjhjYmJkOWY4NDBkZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAg
LTExNCw2ICsxMTQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1
cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdp
bldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6
OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBj
b25zdCBXVEY6OlN0cmluZyYsIGJvb2wpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQ
bHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVj
dERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7CiAgICAgICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+
JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVz
KTsKICAgICAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggZDkwODg4MWEzYWM3NGVjMjEyOGU3MmE5MTkxODgxZWYzZjM0
ODJiYS4uMjE3MGY3NDJhMmE3NDE5ZjhmNjM4ZWYwNTE4NDU0NTNhN2ZjOTljMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywg
MjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTgsNiArMTk4LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2lu
V2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBi
b29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6
V2lkZ2V0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2lu
KFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGRlMGY2MTgzZDI5
MmI1ODIzZTMwY2UxZDZhYjE3OWNkMDZlYmQzNTYuLjcyZGQ3YTk3NDc5MTI0NWUzY2FhZWQ4MTNl
OGRkYmI4NjZkODY4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzI0LDYgKzE3MjQsMTAgQEAgUGFzc1JlZlB0cjxX
aWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYg
c2l6ZSwgSFRNTFAKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6cmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikKK3sKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCiB7CiAgICAg
aWYgKCFwbHVnaW5XaWRnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCmluZGV4IDU0MjEyOTIzODk2YTJhOWQ2MDY5YTk5
ZGU3NzA4NTZiMWE0MzZiYzYuLjAzMTAyZGUzZTJiM2FjZmM2ODc0YjBlZThiYTE1NTBjZGE0YmEz
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5oCkBAIC0yMDcsNiArMjA3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dz
U2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBs
dWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRh
VG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxl
dEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CmluZGV4IGQ1MmY4MTIwYThmNzIzMTc4M2E3MzQzMDY1Y2RhYjBhYTZjNzI5MjQuLmNhMDJmODc5
OWFlZTJkYmYwZWYyMTlkNDExMjBjN2UxMmM0YmU1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTE1
LDYgKzExNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJp
bmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJl
ciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdo
dCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2lu
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkp
OworICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBw
bHVnaW5XaWRnZXQpOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZVBsdWdpbkRvY3VtZW50
KGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaCBiL1Nv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5o
CmluZGV4IDkwZWU0OTRhNGM1MmExNTZlYzA5MDM3YTUzZWUzYjhhMWVlNjM2NmEuLmMyNzQ4Y2Y0
NmVlNjZlMzg2MWZkYzU0NTJmMThlNzhjN2VlNGRhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5o
CkBAIC0xMDgsNiArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBX
VEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVs
ZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcm
IHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFy
Z2luSGVpZ2h0KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVh
dGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5n
PiYsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
Ym9vbCk7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCop
IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRn
ZXQqIHBsdWdpbldpZGdldCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdl
dD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25z
dCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgb3Zl
cnJpZGVNZWRpYVR5cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBiYTg1ZTcyZGNiZjhmNDYxNTQzMTI4NDQyNjA5
ZjVlNjAyMmMyZmM5Li5hMWU4MTI2M2Q5NjMwOWNkZTJhYjE5MjdhZDc2YzAwN2EyNjA5ZjIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CkBAIC0zMTYsNiArMzE2LDI2IEBAIHZvaWQgUGx1Z2luVmlldzo6ZGVzdHJveVBsdWdpbkFuZFJl
c2V0KCkKICAgICBjYW5jZWxBbGxTdHJlYW1zKCk7CiB9CiAKK3ZvaWQgUGx1Z2luVmlldzo6cmVj
cmVhdGVBbmRJbml0aWFsaXplKFBhc3NSZWZQdHI8UGx1Z2luPiBwbHVnaW4pCit7CisgICAgaWYg
KG1fcGx1Z2luKSB7CisgICAgICAgIGlmIChtX3BsdWdpblNuYXBzaG90VGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgICAgIG1fcGx1Z2luU25hcHNob3RUaW1lci5zdG9wKCk7CisgICAgICAgIGRl
c3Ryb3lQbHVnaW5BbmRSZXNldCgpOworICAgIH0KKworICAgIC8vIFJlc2V0IG1lbWJlciB2YXJp
YWJsZXMgdG8gaW5pdGlhbCB2YWx1ZXMuCisgICAgbV9wbHVnaW4gPSBwbHVnaW47CisgICAgbV9p
c0luaXRpYWxpemVkID0gZmFsc2U7CisgICAgbV9pc1dhaXRpbmdGb3JTeW5jaHJvbm91c0luaXRp
YWxpemF0aW9uID0gZmFsc2U7CisgICAgbV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQgPSBm
YWxzZTsKKyAgICBtX2lzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZTsKKyAgICBtX21hbnVhbFN0cmVh
bVN0YXRlID0gU3RyZWFtU3RhdGVJbml0aWFsOworICAgIG1fdHJhbnNpZW50UGFpbnRpbmdTbmFw
c2hvdCA9IG51bGxwdHI7CisKKyAgICBpbml0aWFsaXplUGx1Z2luKCk7Cit9CisKIEZyYW1lKiBQ
bHVnaW5WaWV3OjpmcmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGx1Z2luRWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCmluZGV4IGZkNDFhM2ZiZjczNzE1ZTRiZjkyZDNkMmM4YzA5ZTMyZDUx
NWJlZWIuLjEzZTBhOTdjY2JkNzY2YzExZTFiNDQ4YjgxNjdjN2I0ZGNjM2ZjOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNTMsNiAr
NTMsOCBAQCBjbGFzcyBQbHVnaW5WaWV3IDogcHVibGljIFdlYkNvcmU6OlBsdWdpblZpZXdCYXNl
LCBwdWJsaWMgUGx1Z2luQ29udHJvbGxlciwgcHJpdgogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBsdWdpblZpZXc+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkhUTUxQbHVnSW5F
bGVtZW50PiwgUGFzc1JlZlB0cjxQbHVnaW4+LCBjb25zdCBQbHVnaW46OlBhcmFtZXRlcnMmKTsK
IAorICAgIHZvaWQgcmVjcmVhdGVBbmRJbml0aWFsaXplKFBhc3NSZWZQdHI8UGx1Z2luPik7CisK
ICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNCZWluZ0Rl
c3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNCZWluZ0Rlc3Ryb3llZDsgfQpAQCAtNzIsNiAr
NzQsOSBAQCBwdWJsaWM6CiAgICAgUmV0YWluUHRyPFBERkRvY3VtZW50PiBwZGZEb2N1bWVudEZv
clByaW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW4tPnBkZkRvY3VtZW50Rm9yUHJpbnRp
bmcoKTsgfQogI2VuZGlmCiAKKyAgICBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogcGx1Z2lu
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRWxlbWVudC5nZXQoKTsgfQorICAgIGNv
bnN0IFBsdWdpbjo6UGFyYW1ldGVycyYgaW5pdGlhbFBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlcnM7IH0KKwogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpczsgbm9ib2R5IHNo
b3VsZCBoYXZlIHRvIGtub3cgYWJvdXQgdGhlIHBsdWctaW4gdmlldydzIHJlbmRlcmVyIGV4Y2Vw
dCB0aGUgcGx1Zy1pbiB2aWV3IGl0c2VsZi4KICAgICBXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVuZGVyZXIoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAppbmRleCA4NzYyMzRmODg5NjFkZDc5Njc3ZjE0NTU0YjUwNTA1ZDUzNDZlNGJmLi4wYmU5NWU1
N2RiOWMyMjk2NTUwNzg2OTg0OTExOWMyNDYyZGRmMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM1Myw2ICsxMzUzLDE1IEBAIFBhc3NSZWZQdHI8
V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MUGx1Z0luCiAgICAgcmV0dXJuIFBsdWdpblZpZXc6OmNyZWF0ZShwbHVnaW5FbGVtZW50
LCBwbHVnaW4ucmVsZWFzZSgpLCBwYXJhbWV0ZXJzKTsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6cmVjcmVhdGVQbHVnaW4oV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgQVNTRVJUKHdp
ZGdldC0+aXNQbHVnaW5WaWV3QmFzZSgpKTsKKyAgICBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0g
c3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+KHdpZGdldCk7CisgICAgQVNTRVJUKG1fZnJhbWUtPnBh
Z2UoKSk7CisgICAgUmVmUHRyPFBsdWdpbj4gcGx1Z2luID0gbV9mcmFtZS0+cGFnZSgpLT5jcmVh
dGVQbHVnaW4obV9mcmFtZSwgcGx1Z2luVmlldy0+cGx1Z2luRWxlbWVudCgpLCBwbHVnaW5WaWV3
LT5pbml0aWFsUGFyYW1ldGVycygpKTsKKyAgICBwbHVnaW5WaWV3LT5yZWNyZWF0ZUFuZEluaXRp
YWxpemUocGx1Z2luLnJlbGVhc2UoKSk7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KQogewogICAgIG1fcGx1
Z2luVmlldyA9IHN0YXRpY19jYXN0PFBsdWdpblZpZXcqPihwbHVnaW5XaWRnZXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDg2NmFkM2Y1NDRkYjAxMTk4OWQxMjI0MGYzNDdj
ZDNhYjAzNDk3OGQuLjU2ZTEyMWY1MjI5MTY3MWYyYThiMmQ3OTIzOGRhZWRkNjEwZWVmMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE4OCw2ICsxODgsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0
aCwgaW50IG1hcmdpbkhlaWdodCkgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCBsb2FkTWFudWFsbHkpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBs
dWdpbihXZWJDb3JlOjpXaWRnZXQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJl
Y3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpIE9WRVJSSURFOwog
ICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFB
cHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRF
bGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgT1ZFUlJJ
REU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168075</attachid>
            <date>2012-10-10 15:00:05 -0700</date>
            <delta_ts>2012-10-10 16:12:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98328-20121010145904.patch</filename>
            <type>text/plain</type>
            <size>32190</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwOTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNkZDQ2OTM3MTY5OTg5
OGQyZjU0MTE2ZWU4OWI2ODJiY2IwOTRiOS4uMTUzZjc2OWYzOGVjYjY3NjJlMGMyN2E3NmM1ZTAz
ZjU5ZWExNGNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTEwICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5z
IHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQy
NjY4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
eHRlbmQgdGhlIGRlZmF1bHQgZXZlbnQgaGFuZGxlciB0byBkZWFsIHdpdGggcGx1Z2lucyB3aXRo
IHNuYXBzaG90cy4KKyAgICAgICAgV2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIHBsYWNlaG9s
ZGVyLCB0aGUgcGx1Z2luIGlzIHJlY3JlYXRlZCBhbmQgZGlzcGxheWVkLgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6IEFkZCBuZXcgY2xpZW50IGZ1bmN0aW9uIHJlY3Jl
YXRlUGx1Z2luKCksIHdoaWNoIGlzCisgICAgICAgIGV4cGVjdGVkIHRvIHJlLWNyZWF0ZSB0aGUg
cGx1Z2luIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyBhcyB3aGVuIGl0IHdhcyBydW4gdG8KKyAg
ICAgICAgb2J0YWluIHRoZSBwbHVnaW4ncyBzbmFwc2hvdCBwbGFjZWhvbGRlci4KKworICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3Jl
YXRlUGx1Z2luKCkuCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOiBFeHBvc2UgSFRNTFBsdWdJbkVsZW1lbnQ6OnBsdWdpbldpZGdldCgp
LgorCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFVwZGF0ZSB0byBs
b29rIGZvcgorICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi4gSWYgdGhlIHBsdWdpbiBp
cyBub3QgcGxheWluZywgaGF2ZSB0aGUgcmVuZGVyZXIgaGFuZGxlIHRoZQorICAgICAgICBldmVu
dC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdpbjo6Z2V0Q3Vyc29yKTogU2V0
IHRvIGhhbmQgY3Vyc29yIHdoZW4gdGhlIHBsdWdpbiBpcyBub3QKKyAgICAgICAgcGxheWluZy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudCk6
IElmIHRoZSB1c2VyIGNsaWNrZWQgb24gdGhlIHBsdWdpbiB1c2luZyB0aGUKKyAgICAgICAgbGVm
dCBidXR0b24sIHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIGVsZW1lbnQgdG8gcGxheWluZy4gUmVj
cmVhdGUgdGhlIHBsdWdpbiBpZiB0aGUgd2lkZ2V0IGV4aXN0cworICAgICAgICB0byBiZWdpbiB3
aXRoLiBUaGUgY2FjaGVkIHNuYXBzaG90IGltYWdlIHdpbGwgYmUgc2F2ZWQgZm9yIHBvc3NpYmxl
IHJldXNlIG9uIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oOgorICAgICAgICAoUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4pOgorCiAyMDEyLTEwLTEwICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtSZWdyZXNzaW9uXSBTdGFsZSByZXZpc2lvbnMg
YXJlIG5vdCBjbGVhcmVkIHdoZW4gaW5zcGVjdG9yIGlzIG9wZW5lZCBmb3IgdGhlIGFscmVhZHkg
bG9hZGVkIHBhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDUwNDliNGExYjI3NGUy
ZTc3YjIyNWY1YmIzY2VlYmYyMTBlYTdhNTIuLmI4YjYzZmE3YjM1OWVhZmE5NjI2YWU5NzM5ZWJi
NDNmNGQ2NDYwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMTAtMTAgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJd
IEFjdGl2YXRlIHBsdWdpbnMgd2hlbiB1c2VyIGNsaWNrcyBvbiBzbmFwc2hvdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgzMjgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzEyNDI2NjgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OnJlY3JlYXRlUGx1Z2luKTogU3R1YiBpbXBs
ZW1lbnRhdGlvbiBvZiByZWNyZWF0ZVBsdWdpbigpLgorCiAyMDEyLTEwLTA4ICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEFkZCBXZWJFbGVt
ZW50OjpoYXNIVE1MVGFnTmFtZSwgYW5kIGRlcHJlY2F0ZSBoYXNUYWdOYW1lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKaW5kZXggNThmNTYyOTIzNWNhMGU3ZWRhYjg1YWY4YjA1NWE2MTY0YzdhZTRjNC4uNjIwODE4
NDU1OGJjYzQwZTk0OTAyNmZmYTI5ZTNlZGQxNmM5NTg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEyLTEwLTEwICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mgb24gc25hcHNo
b3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzI4
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6cmVj
cmVhdGVQbHVnaW4pOiBTdHViIGltcGxlbWVudGF0aW9uIG9mIHJlY3JlYXRlUGx1Z2luKCkuCisK
IDIwMTItMTAtMTAgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIFtFRkxdIFVzZSBld2tfdmlld19wYWludCBpbnN0ZWFkIG9mIGV3a192aWV3X3BhaW50X2Nv
bnRlbnRzIGluIGV3a192aWV3X3NpbmdsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA1ZWJhNDA2ZGNh
MDk3YTVmNDdmOTE3ZjE2OGZiYTc0N2ZjYjE4ZjE1Li5iZWM4ZmY4YjQ3YzQyODE4NDE3YTY3ZDMw
OWNjYWU0ZTVjMGMyMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTIt
MTAtMTAgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFjdGl2
YXRlIHBsdWdpbnMgd2hlbiB1c2VyIGNsaWNrcyBvbiBzbmFwc2hvdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgzMjgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzEyNDI2NjgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKyAgICAg
ICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKTogU3R1YiBpbXBs
ZW1lbnRhdGlvbiBvZiByZWNyZWF0ZVBsdWdpbigpLgorCiAyMDEyLTEwLTEwICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTMwODUzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGQ5NTFlZTNmNDI4Y2ExYWMw
M2U3MDRhZDNhMjgyZjk4OTI3OTc3ZDQuLjYzODZiMGZlODA4NmVlZGFkMDVjMjkzMmFkY2Y3ODlm
NDJlZTgxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0xMCAg
Sm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWN0aXZhdGUgcGx1
Z2lucyB3aGVuIHVzZXIgY2xpY2tzIG9uIHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTI0MjY2ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKTogU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiByZWNy
ZWF0ZVBsdWdpbigpLgorCiAyMDEyLTEwLTA5ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVcGRhdGUgdGhlIENTUyBwcm9wZXJ0eSB1c2VkIHRvIHN1cHBvcnQgZHJh
Z2dhYmxlIHJlZ2lvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGY1YzJlMTFjMjFkM2Y5ODhlMzlmYWI2
ODc3YWFlNTMyNWFiM2NlZjkuLjU2MDQ1YjIzNjQxZTM2Y2M4ZjA3ZWNiYjRmY2VmZGI2NmIyYTUz
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAtMTAgIEpvbiBMZWUg
IDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFjdGl2YXRlIHBsdWdpbnMgd2hl
biB1c2VyIGNsaWNrcyBvbiBzbmFwc2hvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTgzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDI2Njgx
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6cmVjcmVhdGVQbHVnaW4pOiBTdHViIGltcGxlbWVudGF0aW9uIG9m
IHJlY3JlYXRlUGx1Z2luKCkuCisKIDIwMTItMTAtMTAgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6
c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVGVzdCBkcml2ZXJzIHNob3VsZCBoYW5kbGUg
cmVwYWludCByZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDgxMWFlMGUyYzA5YjVhN2Q4NzNmOWQ1
YTNmOWM4NjFkNWY2OTVkMWYuLmI0NmMwNGY5NDA3MmY1MDM5NjMwNGE3YzNlYTU2NGIyMmJhNDAz
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMC0xMCAgSm9uIExl
ZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gQWN0aXZhdGUgcGx1Z2lucyB3
aGVuIHVzZXIgY2xpY2tzIG9uIHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05ODMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI0MjY2
ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKTogU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiByZWNy
ZWF0ZVBsdWdpbigpLgorCiAyMDEyLTEwLTA4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFNvbWUgR3JhcGhpY3NMYXllciBjbGVhbnVwIHRvIHNlcGFy
YXRlIHRoZSBjb25jZXB0cyBvZiB1c2luZyBhIHRpbGUgY2FjaGUsIGFuZCBiZWluZyB0aGUgbWFp
biB0aWxlIGNhY2hlIGxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGM5NjkwZWZkYWJkODNi
OGM3Yzc2ZThjMGQ3ZTFhYTdlZTI3ZjExMDIuLjc5MGIzZjljMWZhMzU3Y2E3Y2U1NjdjMjEzYzJk
M2RkY2NhNDU4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTIt
MTAtMTAgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFjdGl2
YXRlIHBsdWdpbnMgd2hlbiB1c2VyIGNsaWNrcyBvbiBzbmFwc2hvdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgzMjgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzEyNDI2NjgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpyZWNyZWF0ZVBsdWdpbik6IFN0
dWIgaW1wbGVtZW50YXRpb24gb2YgcmVjcmVhdGVQbHVnaW4oKS4KKwogMjAxMi0xMC0wNyAgQ2Fp
byBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3Jn
PgogCiAgICAgICAgIFJlbmFtZSBmaXJzdC9zZWNvbmQgdG8ga2V5L3ZhbHVlIGluIEhhc2hNYXAg
aXRlcmF0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWVhMDRmZjMyYTY2MGQxYjQxZTg3YWJjYmU5NDhhMGQ5
ZDRkZWEzYS4uYTliNGRkNmEyNDhmOGMwNGUxNmMzNzQzMTA4ODVjNDA3YjE3YTY0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTEwLTEwICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4gdXNlciBjbGlja3Mg
b24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIHJlY3Jl
YXRpb24gb2YgdGhlIHBsdWdpbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVjcmVhdGVBbmRJbml0
aWFsaXplKTogV2UgY2FuIHJ1biBpbnRvIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSB1c2VyCisgICAg
ICAgIGRlY2lkZWQgdG8gcnVuIHRoZSBwbHVnaW4gYmVmb3JlIHRoZSBzbmFwc2hvdCB3YXMgcmVh
ZHkgdG8gYmUgdGFrZW4uIEluIHRoaXMgY2FzZSwgdGhlCisgICAgICAgIHBsdWdpbiBtZW1iZXIg
dmFyaWFibGUgaXMgbm9uLW51bGwsIGFuZCB0aGUgdGltZXIgaXMgc3RpbGwgYWN0aXZlLiBUdXJu
IG9mZiB0aGUgdGltZXIsIGFuZAorICAgICAgICBkZXN0cm95IHRoYXQgaW5zdGFuY2Ugb2YgdGhl
IHBsdWdpbi4gV2Ugc2V0IHRoZSBwbHVnaW4gdG8gdGhlIGluc3RhbmNlIHByb3ZpZGVkIGluIHRo
ZQorICAgICAgICBmaXJzdCBwYXJhbWV0ZXIgdG8gdGhpcyBmdW5jdGlvbiwgYW5kIHJlc2V0IHRo
ZSBtZW1iZXIgdmFyaWFibGVzIHNvIHRoYXQgdGhlIFBsdWdpblZpZXcgaXMKKyAgICAgICAgaW4g
YSBzdGF0ZSBzaW1pbGFyIHRvIHdoZW4gaXQgd2FzIGZpcnN0IGNyZWF0ZWQuIFdlIGFsc28gaW1t
ZWRpYXRlbHkgaW5pdGlhbGl6ZSB0aGUgcGx1Z2luLAorICAgICAgICB3aGljaCBtYXkgaGFwcGVu
IHN5bmNocm9ub3VzbHkgb3IgYXN5bmNocm9ub3VzbHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojppbml0
aWFsUGFyYW1ldGVycyk6IEV4cG9zZSB0aGUgaW5pdGlhbCBwYXJhbWV0ZXJzLiBVc2VkIHRvIHJl
Y3JlYXRlCisgICAgICAgIHRoZSBwbHVnaW4uCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
OnBsdWdpbkVsZW1lbnQpOiBFeHBvc2UgdGhlIGVsZW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSB3
aWRnZXQuIFVzZWQgdG8KKyAgICAgICAgcmVjcmVhdGUgdGhlIHBsdWdpbi4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVhdGVQbHVnaW4pOiBDcmVh
dGUgYSBuZXcgUGx1Z2luIGluc3RhbmNlIHVzaW5nIHRoZSBzYW1lCisgICAgICAgIHBhcmFtZXRl
cnMgdXNlZCB0byBjcmVhdGUgdGhlIHBsdWdpbiBmb3Igc25hcHNob3R0aW5nLiBGb3J3YXJkIHRo
YXQgaW5zdGFuY2UgdG8gdGhlIHdpZGdldC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudCk6IEltcGxlbWVudCByZWNyZWF0ZVBsdWdpbigpLgorCiAyMDEyLTEwLTEwICBKb2NlbHlu
IFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XVtX
SzJdIFJFR1JFU1NJT04ocjEzMDg3OSk6IEl0IG1hZGUgZmFzdC9ldmVudHMvdG91Y2gvKiB0ZXN0
cyBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAyYzRmMTQzODM3ZGFhZGRiNGYwMzY4YWJl
Mzc1NDYzZDMwYzk5MGFmLi42ZGEzZTU3OWQ5ZWNiYWIzNzY3ZmVkYTQyMGI3YjZmOTdlNzM4Njdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTIzMSw2ICsxMjMxLDcgQEAgX19aTks3V2ViQ29y
ZTE2VmlzaWJsZVNlbGVjdGlvbjE3dG9Ob3JtYWxpemVkUmFuZ2VFdgogX19aTks3V2ViQ29yZTE2
VmlzaWJsZVNlbGVjdGlvbjE5cm9vdEVkaXRhYmxlRWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlMTZW
aXNpYmxlU2VsZWN0aW9uMjNpc0NvbnRlbnRSaWNobHlFZGl0YWJsZUV2CiBfX1pOSzdXZWJDb3Jl
MTZWaXNpYmxlU2VsZWN0aW9uNWlzQWxsRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxl
RQorX19aTks3V2ViQ29yZTE3SFRNTFBsdWdJbkVsZW1lbnQxMnBsdWdpbldpZGdldEV2CiBfX1pO
SzdXZWJDb3JlMTdKU0RPTUdsb2JhbE9iamVjdDIyc2NyaXB0RXhlY3V0aW9uQ29udGV4dEV2CiBf
X1pOSzdXZWJDb3JlMTdSZWd1bGFyRXhwcmVzc2lvbjEzbWF0Y2hlZExlbmd0aEV2CiBfX1pOSzdX
ZWJDb3JlMTdSZWd1bGFyRXhwcmVzc2lvbjVtYXRjaEVSS04zV1RGNlN0cmluZ0VpUGkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggYzZlNTJjYTBkZjM0M2Rh
YmM0Y2IwZDU5YTRhNDY3ZGUxZTY0NzU5YS4uOTk0N2E3MzZlYzg4NmU4MzRjMmEyZGRmOTY0MmI2
NTMzNjYzZTIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmll
d0Jhc2UuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgorI2luY2x1ZGUgIlJl
bmRlclNuYXBzaG90dGVkUGx1Z0luLmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKQEAgLTE3Nyw5ICsxNzgsMTUg
QEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCiAgICAgLy8gRklYTUU6IE1vdXNlIGRvd24gYW5kIHNjcm9sbCBldmVudHMgYXJlIHBhc3Nl
ZCBkb3duIHRvIHBsdWctaW4gdmlhIGN1c3RvbSBjb2RlIGluIEV2ZW50SGFuZGxlcjsgdGhlc2Ug
Y29kZSBwYXRocyBzaG91bGQgYmUgdW5pdGVkLgogCiAgICAgUmVuZGVyT2JqZWN0KiByID0gcmVu
ZGVyZXIoKTsKLSAgICBpZiAociAmJiByLT5pc0VtYmVkZGVkT2JqZWN0KCkgJiYgdG9SZW5kZXJF
bWJlZGRlZE9iamVjdChyKS0+c2hvd3NVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcigpKSB7Ci0g
ICAgICAgIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QociktPmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2lu
SW5kaWNhdG9yRXZlbnQoZXZlbnQpOwotICAgICAgICByZXR1cm47CisgICAgaWYgKHIgJiYgci0+
aXNFbWJlZGRlZE9iamVjdCgpKSB7CisgICAgICAgIGlmICh0b1JlbmRlckVtYmVkZGVkT2JqZWN0
KHIpLT5zaG93c1VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yKCkpIHsKKyAgICAgICAgICAgIHRv
UmVuZGVyRW1iZWRkZWRPYmplY3QociktPmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9y
RXZlbnQoZXZlbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlm
IChyLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkgJiYgZGlzcGxheVN0YXRlKCkgPCBQbGF5aW5nKSB7
CisgICAgICAgICAgICB0b1JlbmRlclNuYXBzaG90dGVkUGx1Z0luKHIpLT5oYW5kbGVFdmVudChl
dmVudCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAo
IXIgfHwgIXItPmlzV2lkZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CmluZGV4IDdmMTZmM2RmZTlhY2JhMTNhY2MyMTBkODQ0Yjk1NzZhYmNhZjc5ZGMuLmM5YjNmM2E2
ZTEwNTFmMGU5NzM1ZjY1ZDRkZWI2MGY3OTI5N2YwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
NiBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xNDYsNiArMTQ2LDEwIEBAIFBhc3NSZWZQdHI8V2lk
Z2V0PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYs
IEhUTUxQbHVnCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6cmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikKK3sKK30KKwogUGFzc1JlZlB0cjxXaWRnZXQ+IEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6
ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDM5MDI3OTAzODFhZmJjOGUxMzIzZTI0MGExZWY1YTNl
MTgxODcyNTkuLjljMmMyM2QzZTA4YThmZDE3OGUxODViNThhZTFjYTk1MWEyYzQwNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0z
NDQsNiArMzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29u
c3QgS1VSTCYsIGJvb2wpIHsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRl
RnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCos
IGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5F
bGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFw
cGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpIE9WRVJSSURFOwogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJ
REVPKQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVyUHJv
eHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBLVVJMJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmlu
ZyYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCA3MDNmZDNiZDNjZjYzMmE3YjkwYzZiYWE0NTZmYWU0ZWRjYjRmMGFlLi40ZjIzODhhZjVm
YmI0YzVkNjVjMzBiZmY4ODg0NTU0YzdjOGI5YzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dApAQCAtMjYyLDYgKzI2Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0
aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lk
Z2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29u
c3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBj
b25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVk
aXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpID0gMDsKIAogICAgICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IElu
dFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1
ZXMpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwCmluZGV4IDU2YmJkNzQ0MTAzMjdmMjFlYjA2NzFhNWRiOGI1NzVlNmNh
YWUyYTYuLmE3YTlmNGFlZTM1OTNlNTBjNmQ1NzkyMzFkODczZTMxMGI0YTg2NzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNw
cApAQCAtMjcsOSArMjcsMTEgQEAKICNpbmNsdWRlICJSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5o
IgogCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUg
IkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5j
bHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogCkBAIC0xMTUsNCArMTE3LDMw
IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50UmVwbGFjZWRTbmFwc2hvdChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QKICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2Uu
Z2V0KCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2Fs
aW5nKTsKIH0KIAorQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRD
dXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBj
b25zdAoreworICAgIGlmIChwbHVnSW5JbWFnZUVsZW1lbnQoKS0+ZGlzcGxheVN0YXRlKCkgPCBI
VE1MUGx1Z0luRWxlbWVudDo6UGxheWluZykgeworICAgICAgICBvdmVycmlkZUN1cnNvciA9IGhh
bmRDdXJzb3IoKTsKKyAgICAgICAgcmV0dXJuIFNldEN1cnNvcjsKKyAgICB9CisgICAgcmV0dXJu
IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpnZXRDdXJzb3IocG9pbnQsIG92ZXJyaWRlQ3Vyc29yKTsK
K30KKwordm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2
ZW50KQoreworICAgIGlmICghZXZlbnQtPmlzTW91c2VFdmVudCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+
KGV2ZW50KTsKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVu
dCAmJiBtb3VzZUV2ZW50LT5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7CisgICAgICAgIHBsdWdJ
bkltYWdlRWxlbWVudCgpLT5zZXREaXNwbGF5U3RhdGUoSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlp
bmcpOworICAgICAgICBpZiAod2lkZ2V0KCkpIHsKKyAgICAgICAgICAgIGlmIChGcmFtZSogZnJh
bWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIo
KS0+Y2xpZW50KCktPnJlY3JlYXRlUGx1Z2luKHdpZGdldCgpKTsKKyAgICAgICAgICAgIHJlcGFp
bnQoKTsKKyAgICAgICAgfQorICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAg
ICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgKaW5kZXggODBjMmExNGIzM2UwOWY0
MzlkNTUwMTA0Njg0Zjc2ODg2NTAzYmExNi4uNmExM2EzYTNmZmZlOGJlNWNmMWMzMWQwMDc5YTli
ZDY2ZjgyYmQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmgKQEAgLTQyLDEwICs0MiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHVwZGF0ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+KTsKIAorICAgIHZvaWQgaGFuZGxlRXZl
bnQoRXZlbnQqKTsKKwogcHJpdmF0ZToKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVn
SW5JbWFnZUVsZW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4iOyB9CiAKKyAgICB2
aXJ0dWFsIEN1cnNvckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJz
b3ImKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTbmFwc2hvdHRlZFBsdWdJ
bigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJS
SURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaAppbmRleCBmMmM0ZDA3MGQ4ZGJiZTQ4ZjM2YWYwZTU3ODE5YzAwOWMzYzRhZGU0Li4x
MmE3NmZlZWUzNTI2MDViOTA1NzUwYTg0ZTZjNWZiM2JkYjFhM2JjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaApAQCAtMTgyLDYg
KzE4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsCiAgICAgICAgIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwKICAg
ICAgICAgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSk7CisgICAgdmlydHVh
bCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIHsgfQogICAgIHZpcnR1YWwg
dm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxl
dFdpZGdldCgKICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaApp
bmRleCA2ZDY2ZWU4YWFkNmVlMGY4YTU5OTkxNzg0MTE1MWU0ZWJiZDZlNDUwLi43OWQ4NjQ1Njg5
MzNiNzkyZmM0Mzk1NjZiN2EyYmQ5ZDE3MmZjMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKQEAgLTEzMiw2
ICsxMzIsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRl
ckNsaWVudCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdp
bkhlaWdodCk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4o
Y29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFdU
Rjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3Ry
aW5nJiwgYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCopIHsg
fQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldp
ZGdldCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNl
VVJMLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZl
Y3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAgICAgdmlydHVhbCBTdHJpbmcgb3ZlcnJpZGVN
ZWRpYVR5cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCmluZGV4IGY2ZTNkNGY2ZWQ5NzA2ZGVkYjA4
ZWZmMmQzNDczYjQ0ZDA2ZjI4YTAuLmY5ZGI3YmFhYmU2OGZiYjdhNTE4ZjZlZDQ2OGNiYmQ5Zjg0
MGRlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuaApAQCAtMTE0LDYgKzExNCw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZy
YW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wg
YWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwogICAg
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdU
Rjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSB7IH0KICAg
ICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCog
cGx1Z2luV2lkZ2V0KTsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdl
dD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25z
dCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogICAgICAgICB2aXJ0dWFsIFdURjo6U3RyaW5n
IG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBkOTA4ODgxYTNh
Yzc0ZWMyMTI4ZTcyYTkxOTE4ODFlZjNmMzQ4MmJhLi4yMTcwZjc0MmEyYTc0MTlmOGY2MzhlZjA1
MTg0NTQ1M2E3ZmM5OWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE5OCw2ICsxOTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBh
bGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2lu
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQp
IE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+
IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6
OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KaW5kZXggZGUwZjYxODNkMjkyYjU4MjNlMzBjZTFkNmFiMTc5Y2QwNmViZDM1Ni4u
NzJkZDdhOTc0NzkxMjQ1ZTNjYWFlZDgxM2U4ZGRiYjg2NmQ4Njg5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MjQs
NiArMTcyNCwxMCBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MUAogICAgIHJldHVybiAwOwogfQog
Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbihXaWRnZXQqKQorewor
fQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRn
ZXQqIHBsdWdpbldpZGdldCkKIHsKICAgICBpZiAoIXBsdWdpbldpZGdldCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKaW5k
ZXggNTQyMTI5MjM4OTZhMmE5ZDYwNjlhOTlkZTc3MDg1NmIxYTQzNmJjNi4uMDMxMDJkZTNlMmIz
YWNmYzY4NzRiMGVlOGJhMTU1MGNkYTRiYTMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKQEAgLTIwNyw2ICsyMDcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50
IG1hcmdpbkhlaWdodCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1
Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCk7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCopIHsgfQogICAg
IHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCk7
CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmIGJhc2VVUkws
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZDUyZjgxMjBhOGY3MjMxNzgzYTczNDMw
NjVjZGFiMGFhNmM3MjkyNC4uY2EwMmY4Nzk5YWVlMmRiZjBlZjIxOWQ0MTEyMGM3ZTEyYzRiZTU3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTUsNiArMTE1LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6
S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3du
ZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1h
cmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBib29sIGxvYWRNYW51YWxseSk7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1
Z2luKFdlYkNvcmU6OldpZGdldCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFU
b1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkVXNlUGx1Z2luRG9jdW1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKaW5kZXggOTBlZTQ5NGE0YzUyYTE1NmVjMDkwMzdh
NTNlZTNiOGExZWU2MzY2YS4uYzI3NDhjZjQ2ZWU2NmUzODYxZmRjNTQ1MmYxOGU3OGM3ZWU0ZGFl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBX
ZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5n
LCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29u
c3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJp
bmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjcmVh
dGVQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0
RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFy
YW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAg
ICAgdmlydHVhbCBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGJh
ODVlNzJkY2JmOGY0NjE1NDMxMjg0NDI2MDlmNWU2MDIyYzJmYzkuLmExZTgxMjYzZDk2MzA5Y2Rl
MmFiMTkyN2FkNzZjMDA3YTI2MDlmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTMxNiw2ICszMTYsMjYgQEAgdm9pZCBQbHVn
aW5WaWV3OjpkZXN0cm95UGx1Z2luQW5kUmVzZXQoKQogICAgIGNhbmNlbEFsbFN0cmVhbXMoKTsK
IH0KIAordm9pZCBQbHVnaW5WaWV3OjpyZWNyZWF0ZUFuZEluaXRpYWxpemUoUGFzc1JlZlB0cjxQ
bHVnaW4+IHBsdWdpbikKK3sKKyAgICBpZiAobV9wbHVnaW4pIHsKKyAgICAgICAgaWYgKG1fcGx1
Z2luU25hcHNob3RUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9wbHVnaW5TbmFwc2hv
dFRpbWVyLnN0b3AoKTsKKyAgICAgICAgZGVzdHJveVBsdWdpbkFuZFJlc2V0KCk7CisgICAgfQor
CisgICAgLy8gUmVzZXQgbWVtYmVyIHZhcmlhYmxlcyB0byBpbml0aWFsIHZhbHVlcy4KKyAgICBt
X3BsdWdpbiA9IHBsdWdpbjsKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBtX2lz
V2FpdGluZ0ZvclN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKKyAgICBtX2lzV2Fp
dGluZ1VudGlsTWVkaWFDYW5TdGFydCA9IGZhbHNlOworICAgIG1faXNCZWluZ0Rlc3Ryb3llZCA9
IGZhbHNlOworICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBTdHJlYW1TdGF0ZUluaXRpYWw7Cisg
ICAgbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90ID0gbnVsbHB0cjsKKworICAgIGluaXRpYWxp
emVQbHVnaW4oKTsKK30KKwogRnJhbWUqIFBsdWdpblZpZXc6OmZyYW1lKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZmQ0MWEzZmJm
NzM3MTVlNGJmOTJkM2QyYzhjMDllMzJkNTE1YmVlYi4uMTNlMGE5N2NjYmQ3NjZjMTFlMWI0NDhi
ODE2N2M3YjRkY2MzZmM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCkBAIC01Myw2ICs1Myw4IEBAIGNsYXNzIFBsdWdpblZpZXcgOiBwdWJs
aWMgV2ViQ29yZTo6UGx1Z2luVmlld0Jhc2UsIHB1YmxpYyBQbHVnaW5Db250cm9sbGVyLCBwcml2
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luVmlldz4gY3JlYXRlKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ+LCBQYXNzUmVmUHRyPFBsdWdpbj4sIGNv
bnN0IFBsdWdpbjo6UGFyYW1ldGVycyYpOwogCisgICAgdm9pZCByZWNyZWF0ZUFuZEluaXRpYWxp
emUoUGFzc1JlZlB0cjxQbHVnaW4+KTsKKwogICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSgpIGNv
bnN0OwogCiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Jl
aW5nRGVzdHJveWVkOyB9CkBAIC03Miw2ICs3NCw5IEBAIHB1YmxpYzoKICAgICBSZXRhaW5QdHI8
UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3Bs
dWdpbi0+cGRmRG9jdW1lbnRGb3JQcmludGluZygpOyB9CiAjZW5kaWYKIAorICAgIFdlYkNvcmU6
OkhUTUxQbHVnSW5FbGVtZW50KiBwbHVnaW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9wbHVn
aW5FbGVtZW50LmdldCgpOyB9CisgICAgY29uc3QgUGx1Z2luOjpQYXJhbWV0ZXJzJiBpbml0aWFs
UGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorCiAgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzOyBub2JvZHkgc2hvdWxkIGhhdmUgdG8ga25vdyBhYm91dCB0aGUgcGx1
Zy1pbiB2aWV3J3MgcmVuZGVyZXIgZXhjZXB0IHRoZSBwbHVnLWluIHZpZXcgaXRzZWxmLgogICAg
IFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDg3NjIzNGY4ODk2MWRkNzk2NzdmMTQ1
NTRiNTA1MDVkNTM0NmU0YmYuLmViMTdlZGNhNDdkNjI2YTk1NWNlMzAxYWE5MDIxZWFjOGM0ZjA0
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzUz
LDYgKzEzNTMsMTYgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW4KICAgICByZXR1cm4gUGx1Z2lu
Vmlldzo6Y3JlYXRlKHBsdWdpbkVsZW1lbnQsIHBsdWdpbi5yZWxlYXNlKCksIHBhcmFtZXRlcnMp
OwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbihXaWRnZXQq
IHdpZGdldCkKK3sKKyAgICBBU1NFUlQod2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5WaWV3QmFz
ZSgpKTsKKyAgICBBU1NFUlQobV9mcmFtZS0+cGFnZSgpKTsKKworICAgIFBsdWdpblZpZXcqIHBs
dWdpblZpZXcgPSBzdGF0aWNfY2FzdDxQbHVnaW5WaWV3Kj4od2lkZ2V0KTsKKyAgICBSZWZQdHI8
UGx1Z2luPiBwbHVnaW4gPSBtX2ZyYW1lLT5wYWdlKCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1lLCBw
bHVnaW5WaWV3LT5wbHVnaW5FbGVtZW50KCksIHBsdWdpblZpZXctPmluaXRpYWxQYXJhbWV0ZXJz
KCkpOworICAgIHBsdWdpblZpZXctPnJlY3JlYXRlQW5kSW5pdGlhbGl6ZShwbHVnaW4ucmVsZWFz
ZSgpKTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVkaXJlY3REYXRhVG9QbHVn
aW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCiB7CiAgICAgbV9wbHVnaW5WaWV3ID0gc3RhdGljX2Nh
c3Q8UGx1Z2luVmlldyo+KHBsdWdpbldpZGdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKaW5kZXggODY2YWQzZjU0NGRiMDExOTg5ZDEyMjQwZjM0N2NkM2FiMDM0OTc4ZC4uNTZlMTIx
ZjUyMjkxNjcxZjJhOGIyZDc5MjM4ZGFlZGQ2MTBlZWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg4LDYgKzE4OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0
KSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVn
SW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdl
dCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJD
b3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCkgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBPVkVSUklERTsK
</data>
<flag name="review"
          id="180965"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>