<?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>84270</bug_id>
          
          <creation_ts>2012-04-18 13:09:25 -0700</creation_ts>
          <short_desc>[chromium] Set contents texture manager preferred memory limit based on GpuMemoryManager suggestion.</short_desc>
          <delta_ts>2012-05-02 13:42:27 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michal Mocny">mmocny</reporter>
          <assigned_to name="Michal Mocny">mmocny</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>605022</commentid>
    <comment_count>0</comment_count>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-04-18 13:09:25 -0700</bug_when>
    <thetext>[chromium] GpuMemoryManager suggests values for Contents Texture Managers&apos; preferred memory limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605025</commentid>
    <comment_count>1</comment_count>
      <attachid>137751</attachid>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-04-18 13:14:33 -0700</bug_when>
    <thetext>Created attachment 137751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605028</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-18 13:16:38 -0700</bug_when>
    <thetext>Attachment 137751 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605038</commentid>
    <comment_count>3</comment_count>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-04-18 13:28:14 -0700</bug_when>
    <thetext>This is an early first version, not ready for format review.  Putting patch up early for any interested eyeballs.

Requires chromium patch https://chromiumcodereview.appspot.com/10083056.


TODO:
- With single threaded compositor, gpu memory allocations are processed by the main thread not the impl thread and we don&apos;t use a DebugScopedSetImplThread in LRC to change that.
- Tracing seems to be producing odd results.  Not sure if bug is in my tracing instrumentation, in memory allocations sent, or simply in my expectations.
- There seems to already be some texture memory tracing data, perhaps I should integrate with that?
- Remove some of the texture manager logic out of CCLTH::didBecomeInvisibleOnImplThread.
- Tests!
- Android?

Work for subsequent patches:
- LRC render layer texture manager assumes contents&apos; reclaim texture limit is always the default.  Will need to plumb the actual value down.  Its not a regression to not do this, and I&apos;m not 100% clear that we even want to, so I&apos;ll leave for a subsequent patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605926</commentid>
    <comment_count>4</comment_count>
      <attachid>137976</attachid>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-04-19 14:37:59 -0700</bug_when>
    <thetext>Created attachment 137976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605935</commentid>
    <comment_count>5</comment_count>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-04-19 14:43:10 -0700</bug_when>
    <thetext>Patch fixes serious oversight where MaxMemoryLimitBytes was not being updated along with Reclaim limit.

I have written a test to experiment with the effects of running out of texture memory and to confirm that this patch is now working.  I haven&apos;t uploaded because I am not sure yet where browser tests like this should go, or if they should.  Looking into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606798</commentid>
    <comment_count>6</comment_count>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-04-20 12:18:19 -0700</bug_when>
    <thetext>I just got and assertion failure in TextureManager::setMaxMemoryLimitBytes(111).

Code is:

reduceMemoryToLimit(memoryLimitBytes);
ASSERT(currentMemoryUseBytes() &lt;= memoryLimitBytes);

Which seems to imply that either reduceMemoryToLimit is not working, or currentMemoryUseBytes() increases between the two lines.  Perhaps I am reducing memory on the wrong thread.

Current we change TextureManager memory limits on impl thread but I wonder if it should not be posted to main thread?  Investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606802</commentid>
    <comment_count>7</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-20 12:21:45 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Current we change TextureManager memory limits on impl thread but I wonder if it should not be posted to main thread?  Investigating.

Main thread is blocked at CCThreadProxy.cpp:328 during this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606804</commentid>
    <comment_count>8</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-20 12:22:56 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Current we change TextureManager memory limits on impl thread but I wonder if it should not be posted to main thread?  Investigating.
&gt; 
&gt; Main thread is blocked at CCThreadProxy.cpp:328 during this.

Oh nevermind, I misread your comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606807</commentid>
    <comment_count>9</comment_count>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-04-20 12:26:45 -0700</bug_when>
    <thetext>Dana does bring up a good point, though, while we did currently change limits on impl thread that was while main was blocked, and here it isn&apos;t.

I can either post to main thread, or (very) preferably set a hint which main thread to pick up and adjust later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606844</commentid>
    <comment_count>10</comment_count>
      <attachid>137976</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-04-20 13:09:48 -0700</bug_when>
    <thetext>Comment on attachment 137976
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:3
&gt; +        [chromium] GpuMemoryManager suggests values for Contents Texture Managers&apos; preferred memory limit.

Probably can get a better name by swapping the order of the words. Set contents texture manager preferred memory limit based on GpuMemoryManager suggestion? :)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:358
&gt; +#if defined(OS_ANDROID)

any reason for #if android?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:360
&gt; +        m_contentsTextureManager-&gt;setMaxMemoryLimitBytes(TextureManager::defaultHighLimitBytes(viewportSize));

Isn&apos;t this clobbering the value we got from the callback? Can we make things clearer by restructuring the texture manager to have a setViewportSize method and a setMaxMemoryLImitBytes(). But, not a setPreferredMemoryLimitBytes --- that should be sealed in the class.

Then, the accessor can say &quot;if m_maxMemoryBytes == 0, use the &quot;default&quot; accessors&quot;

Does this make sense?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:314
&gt; +    m_layerTreeHost-&gt;setContentsPreferredMemoryLimitBytesOnImplThread(bytes);

This is thread UNSAFE. You need to postTask this command over.

The rules are:
- Variables suffixed with implThread are only safe to access from functions with  onImplThread suffixes.
- Variables with no suffix are only safe to access from functions with no suffix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610011</commentid>
    <comment_count>11</comment_count>
      <attachid>137976</attachid>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-04-25 13:33:07 -0700</bug_when>
    <thetext>Comment on attachment 137976
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:358
&gt;&gt; +#if defined(OS_ANDROID)
&gt; 
&gt; any reason for #if android?

The reason is to only clobber allocation values on android (not sure if viewport size ever changes?..).
There is another #if guard inside the memory allocation changed callback so we only adjust the allocation limit on !android.

This is because GpuMemoryManager has a hardcoded large upper allocation limit, and I dont think that number is appropriate for android.
This will need to be fixed, but I wanted to delay that to another patch and leave android unharmed for now.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:360
&gt;&gt; +        m_contentsTextureManager-&gt;setMaxMemoryLimitBytes(TextureManager::defaultHighLimitBytes(viewportSize));
&gt; 
&gt; Isn&apos;t this clobbering the value we got from the callback? Can we make things clearer by restructuring the texture manager to have a setViewportSize method and a setMaxMemoryLImitBytes(). But, not a setPreferredMemoryLimitBytes --- that should be sealed in the class.
&gt; 
&gt; Then, the accessor can say &quot;if m_maxMemoryBytes == 0, use the &quot;default&quot; accessors&quot;
&gt; 
&gt; Does this make sense?

(see note above about only clobbering on android)

I am working on restructuring TextureManager, but a few things are a little nasty.

I wanted to confirm: should preferred memory limit also adjust when given a new allocation, or leave preferred as the default and just adjust max?

If former, should preferred == max (at which point, do we even bother distinguishing the two numbers?) or should preferred == 1/2max (this has always been the case until now, and it may make the code path more in line with android).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610715</commentid>
    <comment_count>12</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-04-26 10:30:54 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 137976 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137976&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:358
&gt; &gt;&gt; +#if defined(OS_ANDROID)
&gt; &gt; 
&gt; &gt; any reason for #if android?
&gt; 
&gt; The reason is to only clobber allocation values on android (not sure if viewport size ever changes?..).
&gt; There is another #if guard inside the memory allocation changed callback so we only adjust the allocation limit on !android.
&gt; 
&gt; This is because GpuMemoryManager has a hardcoded large upper allocation limit, and I dont think that number is appropriate for android.
&gt; This will need to be fixed, but I wanted to delay that to another patch and leave android unharmed for now.

Just have the GPU memory manager give out less #if android. I think this makes sense.

&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:360
&gt; &gt;&gt; +        m_contentsTextureManager-&gt;setMaxMemoryLimitBytes(TextureManager::defaultHighLimitBytes(viewportSize));
&gt; &gt; 
&gt; &gt; Isn&apos;t this clobbering the value we got from the callback? Can we make things clearer by restructuring the texture manager to have a setViewportSize method and a setMaxMemoryLImitBytes(). But, not a setPreferredMemoryLimitBytes --- that should be sealed in the class.
&gt; &gt; 
&gt; &gt; Then, the accessor can say &quot;if m_maxMemoryBytes == 0, use the &quot;default&quot; accessors&quot;
&gt; &gt; 
&gt; &gt; Does this make sense?
&gt; 
&gt; (see note above about only clobbering on android)
&gt; 
&gt; I am working on restructuring TextureManager, but a few things are a little nasty.
&gt; 
&gt; I wanted to confirm: should preferred memory limit also adjust when given a new allocation, or leave preferred as the default and just adjust max?
&gt; 
&gt; If former, should preferred == max (at which point, do we even bother distinguishing the two numbers?) or should preferred == 1/2max (this has always been the case until now, and it may make the code path more in line with android).

I dont follow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610716</commentid>
    <comment_count>13</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-26 10:36:15 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 137976 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137976&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:358
&gt; &gt; &gt;&gt; +#if defined(OS_ANDROID)
&gt; &gt; &gt; 
&gt; &gt; &gt; any reason for #if android?
&gt; &gt; 
&gt; &gt; The reason is to only clobber allocation values on android (not sure if viewport size ever changes?..).
&gt; &gt; There is another #if guard inside the memory allocation changed callback so we only adjust the allocation limit on !android.
&gt; &gt; 
&gt; &gt; This is because GpuMemoryManager has a hardcoded large upper allocation limit, and I dont think that number is appropriate for android.
&gt; &gt; This will need to be fixed, but I wanted to delay that to another patch and leave android unharmed for now.
&gt; 
&gt; Just have the GPU memory manager give out less #if android. I think this makes sense.

+1

&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:360
&gt; &gt; &gt;&gt; +        m_contentsTextureManager-&gt;setMaxMemoryLimitBytes(TextureManager::defaultHighLimitBytes(viewportSize));
&gt; &gt; &gt; 
&gt; &gt; &gt; Isn&apos;t this clobbering the value we got from the callback? Can we make things clearer by restructuring the texture manager to have a setViewportSize method and a setMaxMemoryLImitBytes(). But, not a setPreferredMemoryLimitBytes --- that should be sealed in the class.
&gt; &gt; &gt; 
&gt; &gt; &gt; Then, the accessor can say &quot;if m_maxMemoryBytes == 0, use the &quot;default&quot; accessors&quot;
&gt; &gt; &gt; 
&gt; &gt; &gt; Does this make sense?
&gt; &gt; 
&gt; &gt; (see note above about only clobbering on android)
&gt; &gt; 
&gt; &gt; I am working on restructuring TextureManager, but a few things are a little nasty.
&gt; &gt; 
&gt; &gt; I wanted to confirm: should preferred memory limit also adjust when given a new allocation, or leave preferred as the default and just adjust max?
&gt; &gt; 
&gt; &gt; If former, should preferred == max (at which point, do we even bother distinguishing the two numbers?) or should preferred == 1/2max (this has always been the case until now, and it may make the code path more in line with android).
&gt; 
&gt; I dont follow

Our goal is to prepaint more aggressively. Make it == to max for now I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611133</commentid>
    <comment_count>14</comment_count>
      <attachid>139110</attachid>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-04-26 17:54:07 -0700</bug_when>
    <thetext>Created attachment 139110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612942</commentid>
    <comment_count>15</comment_count>
      <attachid>139514</attachid>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-04-30 14:18:49 -0700</bug_when>
    <thetext>Created attachment 139514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612957</commentid>
    <comment_count>16</comment_count>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-04-30 14:30:21 -0700</bug_when>
    <thetext>I&apos;ve simplified this patch to only those parts that are necessary to update the memory allocation limit received from the GpuMemoryManager.

I had started to refactor TextureManager to remove the concept of a &quot;preferred&quot; lower reclaim limit, however:
- On android, we still want a lower reclaim limit
- Viewport size is still needed to set the default size on android
- The are many unittests which expect to have both values, and expect them to be respected (its not just a matter of renaming).

For now, this patch uses setMemoryAllocationLimitBytes as a wrapper around the two existing setMax/setPreferred functions, and the use of those explicit functions is limited to the few places where exact control is still desired (limiting pre-painting on android).

On android, setPreferred will be 1/2 of max (to match current behavior).  In the future we could move this logic inside GpuMemoryManager, or better yet, remove the need for a preferred limit on android once we have TextureManager giving allocation size hints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613093</commentid>
    <comment_count>17</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-04-30 17:31:54 -0700</bug_when>
    <thetext>Ok. I&apos;m backed up on codereviews, but I think overall it makes sense to not touch texture manager now because @epenner is working on a complete replacement. Its just wasted work to adjust tmv1 for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613101</commentid>
    <comment_count>18</comment_count>
      <attachid>139514</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-04-30 17:41:38 -0700</bug_when>
    <thetext>Comment on attachment 139514
Patch

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

Also note, Android can regress slightly while we bring the memory manager online. They&apos;re not releasing continuously off of the upstream compositor tree. This enables us to do the right thing.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:397
&gt; +    // FIXME: Read the actual TextureManager maxMemoryLimitBytes value, do not assume it is the default.

i dont get this fixme

&gt; Source/WebCore/platform/graphics/chromium/TextureManager.cpp:111
&gt; +#if defined(OS_ANDROID)

Put a comment explaining why this is here.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:286
&gt; +    // DebugScopedSetMainThread main;

I agree this isn&apos;t easy to fix. Just assert main thread and put a comment saying this is called via a graphics context callback and thus hard to affect any other way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613556</commentid>
    <comment_count>19</comment_count>
      <attachid>139514</attachid>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-05-01 11:33:44 -0700</bug_when>
    <thetext>Comment on attachment 139514
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:397
&gt;&gt; +    // FIXME: Read the actual TextureManager maxMemoryLimitBytes value, do not assume it is the default.
&gt; 
&gt; i dont get this fixme

The following line assumes the content texture manager max limit is the &quot;default&quot; value for a given viewport size.  Since the GpuMemoryManager may have upped the limit, it is a very conservative assumption.  I am not sure if we want to be giving render surface texture manager more memory here, but I suspect so.
At the moment, LRC only has access to contentsTextureAllocator which does not have that information -- I am not sure how to solve the problem, or if it is worth solving before TMv2 at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613690</commentid>
    <comment_count>20</comment_count>
      <attachid>139686</attachid>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-05-01 14:51:13 -0700</bug_when>
    <thetext>Created attachment 139686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613705</commentid>
    <comment_count>21</comment_count>
      <attachid>139514</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-01 15:01:44 -0700</bug_when>
    <thetext>Comment on attachment 139514
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:397
&gt;&gt;&gt; +    // FIXME: Read the actual TextureManager maxMemoryLimitBytes value, do not assume it is the default.
&gt;&gt; 
&gt;&gt; i dont get this fixme
&gt; 
&gt; The following line assumes the content texture manager max limit is the &quot;default&quot; value for a given viewport size.  Since the GpuMemoryManager may have upped the limit, it is a very conservative assumption.  I am not sure if we want to be giving render surface texture manager more memory here, but I suspect so.
&gt; At the moment, LRC only has access to contentsTextureAllocator which does not have that information -- I am not sure how to solve the problem, or if it is worth solving before TMv2 at all.

The render surface texture manager should not use the same limit as the contents texture manager once this lands, and I don&apos;t think the FIXME is exactly clear/correct about that.

Keeping it at some fixed value seems fine for now IMO. It&apos;s a bit of a separate issue to refactor how render surface memory is managed than how contents memory is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614041</commentid>
    <comment_count>22</comment_count>
      <attachid>139514</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-05-02 00:01:42 -0700</bug_when>
    <thetext>Comment on attachment 139514
Patch

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

Are you going to post an updated patch so we can get this landed?

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:397
&gt;&gt;&gt;&gt; +    // FIXME: Read the actual TextureManager maxMemoryLimitBytes value, do not assume it is the default.
&gt;&gt;&gt; 
&gt;&gt;&gt; i dont get this fixme
&gt;&gt; 
&gt;&gt; The following line assumes the content texture manager max limit is the &quot;default&quot; value for a given viewport size.  Since the GpuMemoryManager may have upped the limit, it is a very conservative assumption.  I am not sure if we want to be giving render surface texture manager more memory here, but I suspect so.
&gt;&gt; At the moment, LRC only has access to contentsTextureAllocator which does not have that information -- I am not sure how to solve the problem, or if it is worth solving before TMv2 at all.
&gt; 
&gt; The render surface texture manager should not use the same limit as the contents texture manager once this lands, and I don&apos;t think the FIXME is exactly clear/correct about that.
&gt; 
&gt; Keeping it at some fixed value seems fine for now IMO. It&apos;s a bit of a separate issue to refactor how render surface memory is managed than how contents memory is.

Remove the comment, then, and file a bug for &quot;figure out how to manage render surface memory with gpu memory manager.&quot;

&gt;&gt; Source/WebCore/platform/graphics/chromium/TextureManager.cpp:111
&gt;&gt; +#if defined(OS_ANDROID)
&gt; 
&gt; Put a comment explaining why this is here.

Not done yet?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614044</commentid>
    <comment_count>23</comment_count>
      <attachid>139686</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-05-02 00:04:10 -0700</bug_when>
    <thetext>Comment on attachment 139686
Patch

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

Oh, look. Sorry, didn&apos;t see this patch. Nice. LGTM with nit.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:397
&gt; +    // FIXME: Read the actual TextureManager maxMemoryLimitBytes value, do not assume it is the default.

Just update this to point at a bug I suggested filing, or remove the comment completely. This comment really doesn&apos;t make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614234</commentid>
    <comment_count>24</comment_count>
      <attachid>139798</attachid>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-05-02 06:24:21 -0700</bug_when>
    <thetext>Created attachment 139798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614235</commentid>
    <comment_count>25</comment_count>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-05-02 06:25:10 -0700</bug_when>
    <thetext>Done.

I know that many reviewers are out of town this week.  Is there anyone you can suggest for this?  I was told @kbr may be around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614598</commentid>
    <comment_count>26</comment_count>
      <attachid>139798</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-02 13:25:26 -0700</bug_when>
    <thetext>Comment on attachment 139798
Patch

rs=me based on Nat&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614613</commentid>
    <comment_count>27</comment_count>
      <attachid>139798</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-02 13:42:11 -0700</bug_when>
    <thetext>Comment on attachment 139798
Patch

Clearing flags on attachment: 139798

Committed r115881: &lt;http://trac.webkit.org/changeset/115881&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614615</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-02 13:42:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137751</attachid>
            <date>2012-04-18 13:14:33 -0700</date>
            <delta_ts>2012-04-19 14:37:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84270-20120418161431.patch</filename>
            <type>text/plain</type>
            <size>22663</size>
            <attacher name="Michal Mocny">mmocny</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJhYzk1ZjIwNjA0MGE5
MDc3OGUyOWM0NzEzNzc0YTY0YzgwNDk1Ni4uYTcyZmQ0NTYxYTViMmJjYmI0MTZmYzhkZjM3MzRi
MWYxYjkwZjkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA0LTE4ICBNaWNo
YWwgTW9jbnkgIDxtbW9jbnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEdwdU1l
bW9yeU1hbmFnZXIgc3VnZ2VzdHMgdmFsdWVzIGZvciBDb250ZW50cyBUZXh0dXJlIE1hbmFnZXJz
JyBwcmVmZXJyZWQgbWVtb3J5IGxpbWl0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFj
a0FkYXB0ZXI6Om9uR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmpl
Y3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRIaWdoTGltaXRCeXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdFJlY2xhaW1MaW1pdEJ5dGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5o
OgorICAgICAgICAoVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChzdGQpOgorICAgICAg
ICAoc3RkOjpkaWRDb250ZW50c1ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXNDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRWaWV3cG9ydFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRDb250ZW50c1ByZWZlcnJlZE1l
bW9yeUxpbWl0Qnl0ZXNPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6c2V0Q29udGVudHNQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0
Q29udGVudHNQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzT25JbXBsVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNl
dENvbnRlbnRzUHJlZmVycmVkTWVtb3J5TGltaXRCeXRlc09uSW1wbFRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKwogMjAxMi0wNC0xOCAgTHVr
ZSBNYWNwaGVyc29uICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3Zl
IHVubmVjZXNzYXJ5IHZhcmlhYmxlIHJlYXNzaWdubWVudCBpbiBDU1NQYXJzZXI6OnBhcnNlSW1h
Z2VTZXQoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOGJhNDRmMjQxOWQwODQ3ZTBk
ODI4YWJhNDQxODdmMmJhMzM0NjhiYy4uMmI2ZThiODI2MjMzM2VlOTM3M2ZiNjA1ODNlMWMxNDBm
NzBkNWQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0wNC0xOCAgTWljaGFsIE1vY255ICA8bW1vY255QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2No
cm9taXVtXSBHcHVNZW1vcnlNYW5hZ2VyIHN1Z2dlc3RzIHZhbHVlcyBmb3IgQ29udGVudHMgVGV4
dHVyZSBNYW5hZ2VycycgcHJlZmVycmVkIG1lbW9yeSBsaW1pdC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MjcwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAg
ICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTZXRWaWV3cG9ydFNpemU6OmJlZ2luVGVzdCk6
CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHA6CisKIDIwMTIt
MDQtMTcgIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbTXV0YXRpb25PYnNlcnZlcnNdIGVuYWJsZSBWOFJlY3Vyc2lvblNjb3BlIGRlYnVnIEFTU0VS
VCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCBiNDM3Y2U4ZTU2
ZDk2NDU1MWFmNjliNWFhY2RkNThmOTY2ZGNmMTAwLi5mMjQyN2Q3ZDljMDc2MGYwYzkxZjI2NzY5
OTQ1YTY1M2Y2ZGZmM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
QEAgLTE4NCw2ICsxODQsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXIt
PmRpc2NhcmRGcmFtZWJ1ZmZlcigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2xheWVy
UmVuZGVyZXItPmVuc3VyZUZyYW1lYnVmZmVyKCk7CisjaWYgIWRlZmluZWQoT1NfQU5EUk9JRCkK
KyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5tX2NsaWVudC0+c2V0Q29udGVudHNQcmVmZXJyZWRN
ZW1vcnlMaW1pdEJ5dGVzKGFsbG9jYXRpb24uZ3B1UmVzb3VyY2VTaXplSW5CeXRlcyk7CisjZW5k
aWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0zOTcsNyArNDAwLDcgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmJlZ2luRHJhd2luZ0ZyYW1lKENDUmVuZGVyU3VyZmFjZSogZGVmYXVsdFJl
bmRlclN1cmYKICAgICBBU1NFUlQobV9kZWZhdWx0UmVuZGVyU3VyZmFjZSk7CiAKICAgICBzaXpl
X3QgY29udGVudHNNZW1vcnlVc2VCeXRlcyA9IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLT5j
dXJyZW50TWVtb3J5VXNlQnl0ZXMoKTsKLSAgICBzaXplX3QgbWF4TGltaXQgPSBUZXh0dXJlTWFu
YWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpOworICAgIHNpemVfdCBtYXhMaW1p
dCA9IFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0SGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkp
OwogICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5
dGVzKG1heExpbWl0IC0gY29udGVudHNNZW1vcnlVc2VCeXRlcyk7CiAKICAgICBpZiAodmlld3Bv
cnRTaXplKCkuaXNFbXB0eSgpKQpAQCAtMTEwNCw3ICsxMTA3LDcgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSgpCiAgICAgR0xDKG1fY29udGV4dC5nZXQo
KSwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwogCiAgICAg
c2l6ZV90IGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgPSBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
ci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCk7Ci0gICAgc2l6ZV90IHJlY2xhaW1MaW1pdCA9IFRl
eHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSk7CisgICAgc2l6
ZV90IHJlY2xhaW1MaW1pdCA9IFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0UmVjbGFpbUxpbWl0Qnl0
ZXModmlld3BvcnRTaXplKCkpOwogICAgIHNpemVfdCBwcmVmZXJyZWRMaW1pdCA9IHJlY2xhaW1M
aW1pdCA+IGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgPyByZWNsYWltTGltaXQgLSBjb250ZW50c01l
bW9yeVVzZUJ5dGVzIDogMDsKICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+c2V0
UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhwcmVmZXJyZWRMaW1pdCk7CiAgICAgbV9yZW5kZXJT
dXJmYWNlVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXQp
OwpAQCAtMTQwNCw4ICsxNDA3LDggQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRp
YWxpemVTaGFyZWRPYmplY3RzKCkKIAogICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4
dC0+Zmx1c2goKSk7CiAKLSAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlciA9IFRleHR1
cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0
U2l6ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6
ZSgpKSwKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2Vy
OjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRIaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNp
emUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0UmVjbGFpbUxpbWl0Qnl0ZXModmlld3Bv
cnRTaXplKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSk7CiAgICAgbV90ZXh0
dXJlQ29waWVyID0gQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjcmVhdGUobV9jb250ZXh0Lmdl
dCgpKTsKICAgICBtX3RleHR1cmVVcGxvYWRlciA9IEFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVy
OjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKaW5kZXggNTI3ZmNkZDJiNDA5YmRkMjEzZTQyYTg5NTU4N2U0ZTZkMDcxZmJiNy4uNTQxNWY1
MmMxNDllOTUwMzNkZWY2YzI2MWI4ZjFjMjdmN2Y3MDlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRMb3NlQ29udGV4dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0Nv
bXBsZXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0
ZXMoc2l6ZV90KSA9IDA7CiB9OwogCiAvLyBDbGFzcyB0aGF0IGhhbmRsZXMgZHJhd2luZyBvZiBj
b21wb3NpdGVkIHJlbmRlciBsYXllcnMgdXNpbmcgR0wuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAK
aW5kZXggZDRkOGMxODJjZmU1MjVmNTYwMDg4YWExMjY2OThkOWQ5MzI0YWUxMi4uYmJjZWJjZWNm
MDVhMDlmMGI3ZjVkYjc2NDZhZTM1NDRiNzc4MWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNw
cApAQCAtNDcsNyArNDcsNyBAQCBzaXplX3QgbWVtb3J5TGltaXRCeXRlcyhzaXplX3Qgdmlld3Bv
cnRNdWx0aXBsaWVyLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsCiB9CiB9CiAKLXNpemVf
dCBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRT
aXplKQorc2l6ZV90IFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0SGlnaExpbWl0Qnl0ZXMoY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIHNpemVfdCB2aWV3cG9ydE11bHRpcGxpZXIs
IG1pbk1lZ2FieXRlcywgbWF4TWVnYWJ5dGVzOwogI2lmIE9TKEFORFJPSUQpCkBAIC02Miw3ICs2
Miw3IEBAIHNpemVfdCBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMoY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplKQogICAgIHJldHVybiBtZW1vcnlMaW1pdEJ5dGVzKHZpZXdwb3J0TXVs
dGlwbGllciwgdmlld3BvcnRTaXplLCBtaW5NZWdhYnl0ZXMsIG1heE1lZ2FieXRlcyk7CiB9CiAK
LXNpemVfdCBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXMoY29uc3QgSW50U2l6ZSYg
dmlld3BvcnRTaXplKQorc2l6ZV90IFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0UmVjbGFpbUxpbWl0
Qnl0ZXMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIHNpemVfdCB2aWV3cG9y
dE11bHRpcGxpZXIsIG1pbk1lZ2FieXRlcywgbWF4TWVnYWJ5dGVzOwogI2lmIE9TKEFORFJPSUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGV4dHVyZU1hbmFnZXIuaAppbmRleCA3MGQwODYxYzU3ODZmYmVjMDI1YjRjOTZjOTFiZThi
ZGRmZDU4ZGNhLi5iYjAxYWFiY2I5OWUxNjZhODZjNWJmMzE1YjJhNzk0ZjVlMTJjNjFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVNYW5hZ2VyLmgKQEAgLTU5LDkgKzU5LDkgQEAgcHVibGljOgogICAgIH5UZXh0dXJl
TWFuYWdlcigpOwogCiAgICAgLy8gQWJzb2x1dGUgbWF4aW11bSBsaW1pdCBmb3IgdGV4dHVyZSBh
bGxvY2F0aW9ucyBmb3IgdGhpcyBpbnN0YW5jZS4KLSAgICBzdGF0aWMgc2l6ZV90IGhpZ2hMaW1p
dEJ5dGVzKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSk7CisgICAgc3RhdGljIHNpemVfdCBk
ZWZhdWx0SGlnaExpbWl0Qnl0ZXMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKTsKICAgICAv
LyBQcmVmZXJyZWQgdGV4dHVyZSBzaXplIGxpbWl0IGdpdmVuIHRoZSB2aWV3cG9ydCBzaXplLgot
ICAgIHN0YXRpYyBzaXplX3QgcmVjbGFpbUxpbWl0Qnl0ZXMoY29uc3QgSW50U2l6ZSYgdmlld3Bv
cnRTaXplKTsKKyAgICBzdGF0aWMgc2l6ZV90IGRlZmF1bHRSZWNsYWltTGltaXRCeXRlcyhjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUpOwogCiAgICAgc3RhdGljIHNpemVfdCBtZW1vcnlVc2VC
eXRlcyhjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKaW5kZXggYzRhMzg1ZWI0NTY3MjU1MzA0NGNiZDI1ZDg1ZWQ0MjgzMzZm
YTIwMi4uMDU4NDdiNDgwNTJhODRkMmFkOWY1NTIzN2U5MDA1ZDdkNjA5YmVmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00Niw2ICs0NiwxNCBAQCB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBuYW1lc3BhY2Ugewogc3RhdGljIGludCBudW1MYXllclRyZWVJbnN0YW5jZXM7
CisKK3ZvaWQgZGlkQ29udGVudHNQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzQ2hhbmdlZChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3QqIGlkLCBzaXplX3QgYnl0ZXMsIGJvb2wgaXNJbml0KQorewor
ICAgIGlmICghaXNJbml0KQorICAgICAgVFJBQ0VfRVZFTlRfQVNZTkNfRU5EMSgiY2MiLCAiQ0NM
YXllclRyZWVIb3N0ICBzZXRDb250ZW50c1ByZWZlcnJlZE1lbW9yeUxpbWl0IiwgaWQsICJDQ0xh
eWVyVHJlZUhvc3QiLCBpZCk7CisgICAgVFJBQ0VfRVZFTlRfQVNZTkNfQkVHSU4yKCJjYyIsICJD
Q0xheWVyVHJlZUhvc3QgIHNldENvbnRlbnRzUHJlZmVycmVkTWVtb3J5TGltaXQiLCBpZCwgIkND
TGF5ZXJUcmVlSG9zdCIsIGlkLCAibWVtb3J5TGltaXRCeXRlcyIsIHN0YXRpY19jYXN0PGxvbmcg
bG9uZyB1bnNpZ25lZD4oYnl0ZXMpKTsKK30KKwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xMzgsOSArMTQ2LDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJS
ZW5kZXJlcigpCiAgICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gcGFydGlhbCB1cGRh
dGUgY2FwYWJpbGl0eS4KICAgICBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9
IG1pbihtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcywgbV9wcm94eS0+bWF4UGFy
dGlhbFRleHR1cmVVcGRhdGVzKCkpOwogCi0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0g
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmll
d3BvcnRTaXplKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6
ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7
CisgICAgc2l6ZV90IGhpZ2hMaW1pdCA9IFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0SGlnaExpbWl0
Qnl0ZXModmlld3BvcnRTaXplKCkpOworICAgIHNpemVfdCByZWNsYWltTGltaXQgPSBUZXh0dXJl
TWFuYWdlcjo6ZGVmYXVsdFJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKTsKKyAgICBt
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKGhpZ2hMaW1p
dCwgcmVjbGFpbUxpbWl0LCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4
VGV4dHVyZVNpemUpOworICAgIGRpZENvbnRlbnRzUHJlZmVycmVkTWVtb3J5TGltaXRCeXRlc0No
YW5nZWQodGhpcywgcmVjbGFpbUxpbWl0LCB0cnVlKTsKIAogICAgIG1fbGF5ZXJSZW5kZXJlcklu
aXRpYWxpemVkID0gdHJ1ZTsKIH0KQEAgLTM0NiwxMCArMzU1LDEzIEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogICAg
IGlmICh2aWV3cG9ydFNpemUgPT0gbV92aWV3cG9ydFNpemUpCiAgICAgICAgIHJldHVybjsKIAor
I2lmIGRlZmluZWQoT1NfQU5EUk9JRCkKICAgICBpZiAobV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
KSB7Ci0gICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRC
eXRlcyhUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKSk7Ci0gICAg
ICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRl
cyhUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKSk7CisgICAg
ICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhUZXh0
dXJlTWFuYWdlcjo6ZGVmYXVsdEhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSkpOworICAgICAg
ICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMo
VGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRSZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpKTsK
ICAgICB9CisjZW5kaWYKKwogICAgIG1fdmlld3BvcnRTaXplID0gdmlld3BvcnRTaXplOwogICAg
IHNldE5lZWRzQ29tbWl0KCk7CiB9CkBAIC00MDYsNiArNDE4LDE2IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpkaWRCZWNvbWVJbnZpc2libGVPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCogaG9zdEltCiAgICAgfQogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Q29udGVudHNQ
cmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzT25JbXBsVGhyZWFkKHNpemVfdCBieXRlcykKK3sKKyAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIGlmICghbV9sYXllclJlbmRl
cmVySW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGVudHNUZXh0dXJl
TWFuYWdlci0+c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhieXRlcyk7CisgICAgZGlkQ29u
dGVudHNQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzQ2hhbmdlZCh0aGlzLCBieXRlcywgZmFsc2Up
OworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29u
c3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwg
ZG91YmxlIGR1cmF0aW9uU2VjKQogewogICAgIG1fcHJveHktPnN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlvblNlYyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDIwMjg4MDQ4MzkwMjE0MmViMmFmNGNiNGFiNTUz
ZDNlYzIyY2E2NjIuLmJlZjk3ZTI5MGM2MzliNGUzM2VmZWQyYzQxZTEwYjE0MTE5MDgzOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0yMDUsNiArMjA1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2JhY2tn
cm91bmRDb2xvciA9IGNvbG9yOyB9CiAKICAgICBUZXh0dXJlTWFuYWdlciogY29udGVudHNUZXh0
dXJlTWFuYWdlcigpIGNvbnN0OworICAgIHZvaWQgc2V0Q29udGVudHNQcmVmZXJyZWRNZW1vcnlM
aW1pdEJ5dGVzT25JbXBsVGhyZWFkKHNpemVfdCk7CiAKICAgICBib29sIHZpc2libGUoKSBjb25z
dCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDVlZjVhMzIwMjcwODE3OGNj
MzgzNzc0OWI3MDU5Y2RkYmI3MWRkYzkuLjQyOGU2NjBmNDZkZTQ4ZWY3NWEwMDkwZDdhNWMyZjgz
NWU5NzAwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0z
ODcsNiArMzg3LDExIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyhG
cmFtZURhdGEmIGZyYW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIENDTGF5ZXJUcmVl
SG9zdEltcGw6OnNldENvbnRlbnRzUHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhzaXplX3QgYnl0
ZXMpCit7CisgICAgbV9jbGllbnQtPnNldENvbnRlbnRzUHJlZmVycmVkTWVtb3J5TGltaXRCeXRl
c09uSW1wbFRocmVhZChieXRlcyk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJh
d0xheWVycyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzIiwgdGhpcywgMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggNTdiMjliYzVmYzE4N2VlOGYzNGExMDQ4NGQ2MzYzNTEy
MjA1NzdkMy4uOTZlMzgyZmRiZTExZmU2MWI5ZmM2YWU3NDBhZGQzMjM0OGRiOGQ3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNz
T3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVz
T25JbXBsVGhyZWFkKHNpemVfdCkgPSAwOwogfTsKIAogLy8gQ0NMYXllclRyZWVIb3N0SW1wbCBv
d25zIHRoZSBDQ0xheWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2NpYXRlZCByZW5kZXJpbmcg
c3RhdGUKQEAgLTEwMCw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZExv
c2VDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21w
bGV0ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdl
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzUHJlZmVycmVkTWVtb3J5
TGltaXRCeXRlcyhzaXplX3QpIE9WRVJSSURFOwogCiAgICAgLy8gSW1wbGVtZW50YXRpb24KICAg
ICBib29sIGNhbkRyYXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
aW5kZXggMTYxNGQ5M2U2Yjg2OWJkNmFhMTQyMWY4YzFiN2EwNzhkZWNhMzMzZi4uZTYxZmRkMWNl
NDc2ZmNjODBjN2M5OThkMmJjYjlmM2FjM2E2N2MzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAKQEAgLTI3Myw2ICsyNzMsMTYgQEAgdm9pZCBDQ1NpbmdsZVRocmVh
ZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NP
d25QdHIKICAgICBtX2xheWVyVHJlZUhvc3QtPnNldEFuaW1hdGlvbkV2ZW50cyhldmVudHMsIHdh
bGxDbG9ja1RpbWUpOwogfQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldENvbnRlbnRz
UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlc09uSW1wbFRocmVhZChzaXplX3QgYnl0ZXMpCit7Cisg
ICAgLy8gRklYTUU6IHRoaXMgaXMgY2FsbGVkIGFzLWlmLWZyb20gdGhlIG1haW4gdGhyZWFkIGlu
IHNpbmdsZSB0aHJlYWRlZCBtb2RlLCBzaW5jZSBMUkMgR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5n
ZWRDYWxsYmFjayBkb2VzIG5vdCBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKKyAgICAvLyBBU1NF
UlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIC8vIERlYnVnU2NvcGVkU2V0TWFpblRo
cmVhZCBtYWluOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOworICAgIEFTU0VS
VChtX2xheWVyVHJlZUhvc3QpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Q29udGVudHNQcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzT25JbXBsVGhyZWFkKGJ5dGVzKTsKK30KKwogLy8gQ2FsbGVk
IGJ5IHRoZSBsZWdhY3kgc2NoZWR1bGluZyBwYXRoIChlLmcuIHdoZXJlIHJlbmRlcl93aWRnZXQg
ZG9lcyB0aGUgc2NoZWR1bGluZykKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tcG9zaXRl
SW1tZWRpYXRlbHkoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4
IGJlYzA0ODYwOGQ3MGVjY2ViNGQ3YjM0OTk1MDhiODMwODAxNTM5ZWUuLjdiMGMxOGE0ZjA5YmYy
MzAxNWJhZTFhNjQ4MjQxZDk3ZjIwYzBkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIE9WRVJSSURFIHsgbV9sYXllclRyZWVIb3N0LT5zZXRO
ZWVkc0NvbW1pdCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhy
ZWFkKCkgT1ZFUlJJREUgeyBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0KCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVh
ZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1Rp
bWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1ByZWZlcnJlZE1lbW9y
eUxpbWl0Qnl0ZXNPbkltcGxUaHJlYWQoc2l6ZV90KSBPVkVSUklERTsKIAogICAgIC8vIENhbGxl
ZCBieSB0aGUgbGVnYWN5IHBhdGggd2hlcmUgUmVuZGVyV2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxp
bmcuCiAgICAgdm9pZCBjb21wb3NpdGVJbW1lZGlhdGVseSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcAppbmRleCA1YzY0MTE0YTg2MTZkZGE4N2Q3YzdjZmI4MmE5MGVmY2VmOWFjZTA5Li5l
ZGFiMzY4YTUyMjM3ZWNkMzhlNjdkZmQ4NDUzOGZlOGE3ZTM2ODc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcApAQCAtMzA2LDYgKzMwNiwxNCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnBv
c3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0Fu
aQogICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhp
cywgJkNDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cywgZXZlbnRzLCB3YWxsQ2xvY2tU
aW1lKSk7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0Q29udGVudHNQcmVmZXJyZWRNZW1v
cnlMaW1pdEJ5dGVzT25JbXBsVGhyZWFkKHNpemVfdCBieXRlcykKK3sKKyAgICBBU1NFUlQoaXNJ
bXBsVGhyZWFkKCkpOworICAgIGlmICghbV9sYXllclRyZWVIb3N0KQorICAgICAgICByZXR1cm47
CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRDb250ZW50c1ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0
ZXNPbkltcGxUaHJlYWQoYnl0ZXMpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRz
UmVkcmF3KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oCmluZGV4IGY5Njk3ZDM2ZjI3YjRiYjIzZGNkMGM2YWE5NmIyMTc3MDFkZjg5ODEuLjJl
OGYxY2M5YWYyZWJkNmVkZmFkYmJkZjVmZDQ5NTY1ZjZhMWI5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0
QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmlt
YXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzUHJlZmVycmVkTWVtb3J5TGltaXRCeXRlc09uSW1wbFRo
cmVhZChzaXplX3QpIE9WRVJSSURFOwogCiAgICAgLy8gQ0NTY2hlZHVsZXJDbGllbnQgaW1wbGVt
ZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcAppbmRleCAwNzdlNGMyMzliZDM1Mzc4OWE5NzIxNWYxMmFlOTgwOTMwNzgwODk5Li41M2Iy
YjdlMjU1Y2RkNDZmZjQ4MTI4Y2E3ZjY4NGQ5NWE5NzlhNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApA
QCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3
T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBtX2RpZFJlcXVlc3RSZWRyYXcgPSB0cnVlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBt
X2RpZFJlcXVlc3RDb21taXQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRp
b25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2
ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGVudHNQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzT25JbXBsVGhyZWFk
KHNpemVfdCBieXRlcykgT1ZFUlJJREUgeyB9CiAKICAgICBzdGF0aWMgdm9pZCBleHBlY3RDbGVh
cmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cAppbmRleCA4OWIzZGUyNzE5ZTE3MTE1OWUwMWYwOWRiZWJlNGNkOTJhMjJlMjRjLi5kZjJlYzUw
YmRkYWEyMjVlZTZkNDYxM2RiMjhjZDhjYmRhMTQ1MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTE1MTgsMTcg
KzE1MTgsMTcgQEAgcHVibGljOgogICAgICAgICBsYXllclRyZWVIb3N0KCktPnVwZGF0ZUxheWVy
cyh1cGRhdGVyKTsKIAogICAgICAgICBFWFBFQ1RfRVEodmlld3BvcnRTaXplLCBsYXllclRyZWVI
b3N0KCktPnZpZXdwb3J0U2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRKFRleHR1cmVNYW5hZ2Vy
OjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpLCBsYXllclRyZWVIb3N0KCktPmNvbnRlbnRz
VGV4dHVyZU1hbmFnZXIoKS0+bWF4TWVtb3J5TGltaXRCeXRlcygpKTsKLSAgICAgICAgRVhQRUNU
X0VRKFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpLCBsYXll
clRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cHJlZmVycmVkTWVtb3J5TGlt
aXRCeXRlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0SGln
aExpbWl0Qnl0ZXModmlld3BvcnRTaXplKSwgbGF5ZXJUcmVlSG9zdCgpLT5jb250ZW50c1RleHR1
cmVNYW5hZ2VyKCktPm1heE1lbW9yeUxpbWl0Qnl0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUShU
ZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdFJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSksIGxh
eWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5wcmVmZXJyZWRNZW1vcnlM
aW1pdEJ5dGVzKCkpOwogCiAgICAgICAgIC8vIHNldFZpZXdwb3J0U2l6ZSgpIHNob3VsZCBub3Qg
Y2FsbCBUZXh0dXJlTWFuYWdlcjo6c2V0TWF4TWVtb3J5TGltaXRCeXRlcygpIG9yIFRleHR1cmVN
YW5hZ2VyOjpzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKCkKICAgICAgICAgLy8gaWYgdGhl
IHZpZXdwb3J0IHNpemUgaXMgbm90IGNoYW5nZWQuCiAgICAgICAgIEludFNpemUgZmFrZVNpemUo
NSwgNSk7Ci0gICAgICAgIGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigp
LT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyhm
YWtlU2l6ZSkpOwotICAgICAgICBsYXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFn
ZXIoKS0+c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhUZXh0dXJlTWFuYWdlcjo6cmVjbGFp
bUxpbWl0Qnl0ZXMoZmFrZVNpemUpKTsKKyAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5jb250ZW50
c1RleHR1cmVNYW5hZ2VyKCktPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6
OmRlZmF1bHRIaWdoTGltaXRCeXRlcyhmYWtlU2l6ZSkpOworICAgICAgICBsYXllclRyZWVIb3N0
KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRl
cyhUZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdFJlY2xhaW1MaW1pdEJ5dGVzKGZha2VTaXplKSk7CiAg
ICAgICAgIGxheWVyVHJlZUhvc3QoKS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7Ci0g
ICAgICAgIEVYUEVDVF9FUShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMoZmFrZVNpemUp
LCBsYXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+bWF4TWVtb3J5TGlt
aXRCeXRlcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGlt
aXRCeXRlcyhmYWtlU2l6ZSksIGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdl
cigpLT5wcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoVGV4
dHVyZU1hbmFnZXI6OmRlZmF1bHRIaWdoTGltaXRCeXRlcyhmYWtlU2l6ZSksIGxheWVyVHJlZUhv
c3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5tYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoVGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRSZWNsYWltTGltaXRCeXRl
cyhmYWtlU2l6ZSksIGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5w
cmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKCkpOwogCiAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJD
aHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRl
cmVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBkMmZhMDkxYzAyMmQ0OTU5ZTgyYmJkMGM5N2M2MmZj
ODllMWRjNTUxLi42MTcyYjZiMDY2YTkwYjJhODAzYTZiZjUxYTE5ODJhZTZhMjc3M2JmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJl
ckNocm9taXVtVGVzdC5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN3
YXBCdWZmZXJzQ29tcGxldGUoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RnVs
bFJvb3RMYXllckRhbWFnZSgpIE9WRVJSSURFIHsgbV9zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291
bnQrKzsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1ByZWZlcnJlZE1lbW9yeUxpbWl0
Qnl0ZXMoc2l6ZV90KSBPVkVSUklERSB7IH0KIAogICAgIC8vIE1ldGhvZHMgYWRkZWQgZm9yIHRl
c3QuCiAgICAgaW50IHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50OyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137976</attachid>
            <date>2012-04-19 14:37:59 -0700</date>
            <delta_ts>2012-04-26 17:54:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84270-20120419173758.patch</filename>
            <type>text/plain</type>
            <size>22720</size>
            <attacher name="Michal Mocny">mmocny</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWEyNWQ2NjQ3MzhlNDQz
YTMyYzQ5ODkyMzE2NjBkYTgyZmZmMGFmYi4uZDgxN2RjNTU4ZDRhMGE1MGRhYjE2MjlkMGQxYmUw
YzQ5MzQ0MThjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA0LTE5ICBNaWNo
YWwgTW9jbnkgIDxtbW9jbnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEdwdU1l
bW9yeU1hbmFnZXIgc3VnZ2VzdHMgdmFsdWVzIGZvciBDb250ZW50cyBUZXh0dXJlIE1hbmFnZXJz
JyBwcmVmZXJyZWQgbWVtb3J5IGxpbWl0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFj
a0FkYXB0ZXI6Om9uR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmpl
Y3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRIaWdoTGltaXRCeXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdFJlY2xhaW1MaW1pdEJ5dGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5o
OgorICAgICAgICAoVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChzdGQpOgorICAgICAg
ICAoc3RkOjpkaWRDb250ZW50c1ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXNDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRWaWV3cG9ydFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRDb250ZW50c1ByZWZlcnJlZE1l
bW9yeUxpbWl0Qnl0ZXNPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6c2V0Q29udGVudHNQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0
Q29udGVudHNQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzT25JbXBsVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNl
dENvbnRlbnRzUHJlZmVycmVkTWVtb3J5TGltaXRCeXRlc09uSW1wbFRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKwogMjAxMi0wNC0xOSAgTm8n
YW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0g
Rml4IFF0LU1hYyBidWlsZCBhZnRlciBsaWJ4bWwgcGF0Y2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggMDQ0MDllYTI4ZWRjNDY3YTk5NjA3ZDg4MzE4ODI1YTI1YzE0NmYzZS4uMzVjNzM4
YmMyZTBkNTdjNDY1YjVhMjFiN2ExYTVjNjFiYWFkMmQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNC0xOSAgTWljaGFsIE1vY255ICA8bW1vY255
QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBHcHVNZW1vcnlNYW5hZ2VyIHN1Z2dl
c3RzIHZhbHVlcyBmb3IgQ29udGVudHMgVGV4dHVyZSBNYW5hZ2VycycgcHJlZmVycmVkIG1lbW9y
eSBsaW1pdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg0MjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RT
ZXRWaWV3cG9ydFNpemU6OmJlZ2luVGVzdCk6CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJl
ckNocm9taXVtVGVzdC5jcHA6CisKIDIwMTItMDQtMTggIE5pY28gV2ViZXIgIDx0aGFraXNAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bS9tYWNdIEZpeCBidWlsZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDdmYTNjMzU2Nzk5MmY1M2RiZTY1NDU4
NDcxOTc2ZGY3YzYwM2RjY2EuLjQ1NjFiZjNhZDYzNWFmZGFhNWNjZDJmZDgyMWM2MzBmMjA3YzBj
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMTg0LDYgKzE4
NCw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+ZGlzY2FyZEZyYW1l
YnVmZmVyKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+ZW5z
dXJlRnJhbWVidWZmZXIoKTsKKyNpZiAhZGVmaW5lZChPU19BTkRST0lEKQorICAgICAgICBtX2xh
eWVyUmVuZGVyZXItPm1fY2xpZW50LT5zZXRDb250ZW50c1ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0
ZXMoYWxsb2NhdGlvbi5ncHVSZXNvdXJjZVNpemVJbkJ5dGVzKTsKKyNlbmRpZgogICAgIH0KIAog
cHJpdmF0ZToKQEAgLTM5Nyw3ICs0MDAsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
YmVnaW5EcmF3aW5nRnJhbWUoQ0NSZW5kZXJTdXJmYWNlKiBkZWZhdWx0UmVuZGVyU3VyZgogICAg
IEFTU0VSVChtX2RlZmF1bHRSZW5kZXJTdXJmYWNlKTsKIAogICAgIHNpemVfdCBjb250ZW50c01l
bW9yeVVzZUJ5dGVzID0gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3ItPmN1cnJlbnRNZW1vcnlV
c2VCeXRlcygpOwotICAgIHNpemVfdCBtYXhMaW1pdCA9IFRleHR1cmVNYW5hZ2VyOjpoaWdoTGlt
aXRCeXRlcyh2aWV3cG9ydFNpemUoKSk7CisgICAgc2l6ZV90IG1heExpbWl0ID0gVGV4dHVyZU1h
bmFnZXI6OmRlZmF1bHRIaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSk7CiAgICAgbV9yZW5k
ZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWF4TGltaXQg
LSBjb250ZW50c01lbW9yeVVzZUJ5dGVzKTsKIAogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0Vt
cHR5KCkpCkBAIC0xMTA4LDcgKzExMTEsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZmluaXNoRHJhd2luZ0ZyYW1lKCkKICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQt
PmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAKICAgICBzaXplX3QgY29udGVu
dHNNZW1vcnlVc2VCeXRlcyA9IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLT5jdXJyZW50TWVt
b3J5VXNlQnl0ZXMoKTsKLSAgICBzaXplX3QgcmVjbGFpbUxpbWl0ID0gVGV4dHVyZU1hbmFnZXI6
OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKTsKKyAgICBzaXplX3QgcmVjbGFpbUxp
bWl0ID0gVGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRSZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNp
emUoKSk7CiAgICAgc2l6ZV90IHByZWZlcnJlZExpbWl0ID0gcmVjbGFpbUxpbWl0ID4gY29udGVu
dHNNZW1vcnlVc2VCeXRlcyA/IHJlY2xhaW1MaW1pdCAtIGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMg
OiAwOwogICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJyZWRNZW1v
cnlMaW1pdEJ5dGVzKHByZWZlcnJlZExpbWl0KTsKICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJl
TWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChwcmVmZXJyZWRMaW1pdCk7CkBAIC0xNDA4LDgg
KzE0MTEsOCBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9i
amVjdHMoKQogCiAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5mbHVzaCgpKTsK
IAotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAorICAgIG1f
cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShUZXh0
dXJlTWFuYWdlcjo6ZGVmYXVsdEhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZU1hbmFnZXI6OmRlZmF1bHRSZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKICAgICBtX3RleHR1cmVDb3BpZXIgPSBB
Y2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIG1f
dGV4dHVyZVVwbG9hZGVyID0gQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZShtX2Nv
bnRleHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCA1Mjdm
Y2RkMmI0MDliZGQyMTNlNDJhODk1NTg3ZTRlNmQwNzFmYmI3Li41NDE1ZjUyYzE0OWU5NTAzM2Rl
ZjZjMjYxYjhmMWMyN2Y3ZjcwOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250
ZXh0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2UoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldENvbnRlbnRzUHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhzaXplX3QpID0g
MDsKIH07CiAKIC8vIENsYXNzIHRoYXQgaGFuZGxlcyBkcmF3aW5nIG9mIGNvbXBvc2l0ZWQgcmVu
ZGVyIGxheWVycyB1c2luZyBHTC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcAppbmRleCBkNGQ4YzE4
MmNmZTUyNWY1NjAwODhhYTEyNjY5OGQ5ZDkzMjRhZTEyLi5iYmNlYmNlY2YwNWEwOWYwYjdmNWRi
NzY0NmFlMzU0NGI3NzgxZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCB2aWV3cG9ydE11bHRpcGxpZXIs
IGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwKIH0KIH0KIAotc2l6ZV90IFRleHR1cmVNYW5h
Z2VyOjpoaWdoTGltaXRCeXRlcyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCitzaXplX3Qg
VGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRIaWdoTGltaXRCeXRlcyhjb25zdCBJbnRTaXplJiB2aWV3
cG9ydFNpemUpCiB7CiAgICAgc2l6ZV90IHZpZXdwb3J0TXVsdGlwbGllciwgbWluTWVnYWJ5dGVz
LCBtYXhNZWdhYnl0ZXM7CiAjaWYgT1MoQU5EUk9JRCkKQEAgLTYyLDcgKzYyLDcgQEAgc2l6ZV90
IFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUpCiAgICAgcmV0dXJuIG1lbW9yeUxpbWl0Qnl0ZXModmlld3BvcnRNdWx0aXBsaWVyLCB2aWV3
cG9ydFNpemUsIG1pbk1lZ2FieXRlcywgbWF4TWVnYWJ5dGVzKTsKIH0KIAotc2l6ZV90IFRleHR1
cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUp
CitzaXplX3QgVGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRSZWNsYWltTGltaXRCeXRlcyhjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUpCiB7CiAgICAgc2l6ZV90IHZpZXdwb3J0TXVsdGlwbGllciwg
bWluTWVnYWJ5dGVzLCBtYXhNZWdhYnl0ZXM7CiAjaWYgT1MoQU5EUk9JRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFu
YWdlci5oCmluZGV4IDcwZDA4NjFjNTc4NmZiZWMwMjViNGM5NmM5MWJlOGJkZGZkNThkY2EuLmJi
MDFhYWJjYjk5ZTE2NmE4NmM1YmYzMTViMmE3OTRmNWUxMmM2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFn
ZXIuaApAQCAtNTksOSArNTksOSBAQCBwdWJsaWM6CiAgICAgflRleHR1cmVNYW5hZ2VyKCk7CiAK
ICAgICAvLyBBYnNvbHV0ZSBtYXhpbXVtIGxpbWl0IGZvciB0ZXh0dXJlIGFsbG9jYXRpb25zIGZv
ciB0aGlzIGluc3RhbmNlLgotICAgIHN0YXRpYyBzaXplX3QgaGlnaExpbWl0Qnl0ZXMoY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplKTsKKyAgICBzdGF0aWMgc2l6ZV90IGRlZmF1bHRIaWdoTGlt
aXRCeXRlcyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpOwogICAgIC8vIFByZWZlcnJlZCB0
ZXh0dXJlIHNpemUgbGltaXQgZ2l2ZW4gdGhlIHZpZXdwb3J0IHNpemUuCi0gICAgc3RhdGljIHNp
emVfdCByZWNsYWltTGltaXRCeXRlcyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpOworICAg
IHN0YXRpYyBzaXplX3QgZGVmYXVsdFJlY2xhaW1MaW1pdEJ5dGVzKGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSk7CiAKICAgICBzdGF0aWMgc2l6ZV90IG1lbW9yeVVzZUJ5dGVzKGNvbnN0IElu
dFNpemUmLCBHQzNEZW51bSBmb3JtYXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cAppbmRleCBjOWJhODRkNGEyMmI4YjYwNmE0OWMwZTU0ZGJlYTczNDg0MjA4MmY4Li5kNmRhOWM0
ZjJkMjQ2YWE4MDgwMWUxMjMzMGRhNzA3ODgyNDU3ZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAKQEAgLTQ2LDYgKzQ2LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5h
bWVzcGFjZSB7CiBzdGF0aWMgaW50IG51bUxheWVyVHJlZUluc3RhbmNlczsKKwordm9pZCBkaWRD
b250ZW50c1ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXNDaGFuZ2VkKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdCogaWQsIHNpemVfdCBieXRlcywgYm9vbCBpc0luaXQpCit7CisgICAgaWYgKCFpc0lu
aXQpCisgICAgICBUUkFDRV9FVkVOVF9BU1lOQ19FTkQxKCJjYyIsICJDQ0xheWVyVHJlZUhvc3Qg
IHNldENvbnRlbnRzUHJlZmVycmVkTWVtb3J5TGltaXQiLCBpZCwgIkNDTGF5ZXJUcmVlSG9zdCIs
IGlkKTsKKyAgICBUUkFDRV9FVkVOVF9BU1lOQ19CRUdJTjIoImNjIiwgIkNDTGF5ZXJUcmVlSG9z
dCAgc2V0Q29udGVudHNQcmVmZXJyZWRNZW1vcnlMaW1pdCIsIGlkLCAiQ0NMYXllclRyZWVIb3N0
IiwgaWQsICJtZW1vcnlMaW1pdEJ5dGVzIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nIHVuc2lnbmVk
PihieXRlcykpOworfQorCiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzOCw5ICsxNDYs
MTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkKICAg
ICAvLyBVcGRhdGUgbV9zZXR0aW5ncyBiYXNlZCBvbiBwYXJ0aWFsIHVwZGF0ZSBjYXBhYmlsaXR5
LgogICAgIG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVzID0gbWluKG1fc2V0dGlu
Z3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVzLCBtX3Byb3h5LT5tYXhQYXJ0aWFsVGV4dHVyZVVw
ZGF0ZXMoKSk7CiAKLSAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wcm94eS0+
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKKyAgICBzaXplX3Qg
aGlnaExpbWl0ID0gVGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRIaWdoTGltaXRCeXRlcyh2aWV3cG9y
dFNpemUoKSk7CisgICAgc2l6ZV90IHJlY2xhaW1MaW1pdCA9IFRleHR1cmVNYW5hZ2VyOjpkZWZh
dWx0UmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpOworICAgIG1fY29udGVudHNUZXh0
dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoaGlnaExpbWl0LCByZWNsYWltTGlt
aXQsIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7
CisgICAgZGlkQ29udGVudHNQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzQ2hhbmdlZCh0aGlzLCBy
ZWNsYWltTGltaXQsIHRydWUpOwogCiAgICAgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQgPSB0
cnVlOwogfQpAQCAtMzQ2LDEwICszNTUsMTMgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFZp
ZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgaWYgKHZpZXdwb3J0
U2l6ZSA9PSBtX3ZpZXdwb3J0U2l6ZSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgZGVmaW5lZChP
U19BTkRST0lEKQogICAgIGlmIChtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIpIHsKLSAgICAgICAg
bV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVN
YW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpKTsKLSAgICAgICAgbV9jb250ZW50
c1RleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVNYW5h
Z2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpKTsKKyAgICAgICAgbV9jb250ZW50
c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpk
ZWZhdWx0SGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKSk7CisgICAgICAgIG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlci0+c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhUZXh0dXJlTWFuYWdl
cjo6ZGVmYXVsdFJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSkpOwogICAgIH0KKyNlbmRp
ZgorCiAgICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7CiAgICAgc2V0TmVlZHNDb21t
aXQoKTsKIH0KQEAgLTQwNiw2ICs0MTgsMTcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZEJl
Y29tZUludmlzaWJsZU9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW0KICAg
ICB9CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRDb250ZW50c1ByZWZlcnJlZE1lbW9y
eUxpbWl0Qnl0ZXNPbkltcGxUaHJlYWQoc2l6ZV90IGJ5dGVzKQoreworICAgIEFTU0VSVChDQ1By
b3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgaWYgKCFtX2xheWVyUmVuZGVyZXJJbml0aWFsaXpl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRQ
cmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKGJ5dGVzKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1h
bmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoc3RkOjptYXgoYnl0ZXMsIFRleHR1cmVNYW5h
Z2VyOjpkZWZhdWx0SGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpKSk7CisgICAgZGlkQ29u
dGVudHNQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzQ2hhbmdlZCh0aGlzLCBieXRlcywgZmFsc2Up
OworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29u
c3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwg
ZG91YmxlIGR1cmF0aW9uU2VjKQogewogICAgIG1fcHJveHktPnN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKHRhcmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlvblNlYyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDIwMjg4MDQ4MzkwMjE0MmViMmFmNGNiNGFiNTUz
ZDNlYzIyY2E2NjIuLmJlZjk3ZTI5MGM2MzliNGUzM2VmZWQyYzQxZTEwYjE0MTE5MDgzOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0yMDUsNiArMjA1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2JhY2tn
cm91bmRDb2xvciA9IGNvbG9yOyB9CiAKICAgICBUZXh0dXJlTWFuYWdlciogY29udGVudHNUZXh0
dXJlTWFuYWdlcigpIGNvbnN0OworICAgIHZvaWQgc2V0Q29udGVudHNQcmVmZXJyZWRNZW1vcnlM
aW1pdEJ5dGVzT25JbXBsVGhyZWFkKHNpemVfdCk7CiAKICAgICBib29sIHZpc2libGUoKSBjb25z
dCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGZiN2FiZTViMzNhZThlZTI4
MTljODcxMzk2NjI1MmRkNTIxMWNlODEuLmJhY2E1NjZmN2VkNjk3YjY1ZDVmOGRjYzZhZGYxMGUz
MWU1MTcxYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0z
NzksNiArMzc5LDExIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyhG
cmFtZURhdGEmIGZyYW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIENDTGF5ZXJUcmVl
SG9zdEltcGw6OnNldENvbnRlbnRzUHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhzaXplX3QgYnl0
ZXMpCit7CisgICAgbV9jbGllbnQtPnNldENvbnRlbnRzUHJlZmVycmVkTWVtb3J5TGltaXRCeXRl
c09uSW1wbFRocmVhZChieXRlcyk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJh
d0xheWVycyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzIiwgdGhpcywgMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggNTdiMjliYzVmYzE4N2VlOGYzNGExMDQ4NGQ2MzYzNTEy
MjA1NzdkMy4uOTZlMzgyZmRiZTExZmU2MWI5ZmM2YWU3NDBhZGQzMjM0OGRiOGQ3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNz
T3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVz
T25JbXBsVGhyZWFkKHNpemVfdCkgPSAwOwogfTsKIAogLy8gQ0NMYXllclRyZWVIb3N0SW1wbCBv
d25zIHRoZSBDQ0xheWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2NpYXRlZCByZW5kZXJpbmcg
c3RhdGUKQEAgLTEwMCw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZExv
c2VDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21w
bGV0ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdl
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzUHJlZmVycmVkTWVtb3J5
TGltaXRCeXRlcyhzaXplX3QpIE9WRVJSSURFOwogCiAgICAgLy8gSW1wbGVtZW50YXRpb24KICAg
ICBib29sIGNhbkRyYXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
aW5kZXggMTYxNGQ5M2U2Yjg2OWJkNmFhMTQyMWY4YzFiN2EwNzhkZWNhMzMzZi4uZTYxZmRkMWNl
NDc2ZmNjODBjN2M5OThkMmJjYjlmM2FjM2E2N2MzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAKQEAgLTI3Myw2ICsyNzMsMTYgQEAgdm9pZCBDQ1NpbmdsZVRocmVh
ZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NP
d25QdHIKICAgICBtX2xheWVyVHJlZUhvc3QtPnNldEFuaW1hdGlvbkV2ZW50cyhldmVudHMsIHdh
bGxDbG9ja1RpbWUpOwogfQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldENvbnRlbnRz
UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlc09uSW1wbFRocmVhZChzaXplX3QgYnl0ZXMpCit7Cisg
ICAgLy8gRklYTUU6IHRoaXMgaXMgY2FsbGVkIGFzLWlmLWZyb20gdGhlIG1haW4gdGhyZWFkIGlu
IHNpbmdsZSB0aHJlYWRlZCBtb2RlLCBzaW5jZSBMUkMgR3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5n
ZWRDYWxsYmFjayBkb2VzIG5vdCBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKKyAgICAvLyBBU1NF
UlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIC8vIERlYnVnU2NvcGVkU2V0TWFpblRo
cmVhZCBtYWluOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOworICAgIEFTU0VS
VChtX2xheWVyVHJlZUhvc3QpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Q29udGVudHNQcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzT25JbXBsVGhyZWFkKGJ5dGVzKTsKK30KKwogLy8gQ2FsbGVk
IGJ5IHRoZSBsZWdhY3kgc2NoZWR1bGluZyBwYXRoIChlLmcuIHdoZXJlIHJlbmRlcl93aWRnZXQg
ZG9lcyB0aGUgc2NoZWR1bGluZykKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tcG9zaXRl
SW1tZWRpYXRlbHkoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4
IGJlYzA0ODYwOGQ3MGVjY2ViNGQ3YjM0OTk1MDhiODMwODAxNTM5ZWUuLjdiMGMxOGE0ZjA5YmYy
MzAxNWJhZTFhNjQ4MjQxZDk3ZjIwYzBkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIE9WRVJSSURFIHsgbV9sYXllclRyZWVIb3N0LT5zZXRO
ZWVkc0NvbW1pdCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhy
ZWFkKCkgT1ZFUlJJREUgeyBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0KCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVh
ZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1Rp
bWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1ByZWZlcnJlZE1lbW9y
eUxpbWl0Qnl0ZXNPbkltcGxUaHJlYWQoc2l6ZV90KSBPVkVSUklERTsKIAogICAgIC8vIENhbGxl
ZCBieSB0aGUgbGVnYWN5IHBhdGggd2hlcmUgUmVuZGVyV2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxp
bmcuCiAgICAgdm9pZCBjb21wb3NpdGVJbW1lZGlhdGVseSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcAppbmRleCBiOGQwNTEzZWZlNDk5YTVlZjc2MWMzNGQ5YzFmNDE2YmNkNTNiOTg1Li45
MzFmZmQxOTU3MmM5MDc5N2Y1ZGMxY2MzNmExMTUxYTk1NjBlNTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcApAQCAtMzA2LDYgKzMwNiwxNCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnBv
c3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0Fu
aQogICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhp
cywgJkNDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cywgZXZlbnRzLCB3YWxsQ2xvY2tU
aW1lKSk7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0Q29udGVudHNQcmVmZXJyZWRNZW1v
cnlMaW1pdEJ5dGVzT25JbXBsVGhyZWFkKHNpemVfdCBieXRlcykKK3sKKyAgICBBU1NFUlQoaXNJ
bXBsVGhyZWFkKCkpOworICAgIGlmICghbV9sYXllclRyZWVIb3N0KQorICAgICAgICByZXR1cm47
CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRDb250ZW50c1ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0
ZXNPbkltcGxUaHJlYWQoYnl0ZXMpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRz
UmVkcmF3KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oCmluZGV4IGY5Njk3ZDM2ZjI3YjRiYjIzZGNkMGM2YWE5NmIyMTc3MDFkZjg5ODEuLjJl
OGYxY2M5YWYyZWJkNmVkZmFkYmJkZjVmZDQ5NTY1ZjZhMWI5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0
QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmlt
YXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzUHJlZmVycmVkTWVtb3J5TGltaXRCeXRlc09uSW1wbFRo
cmVhZChzaXplX3QpIE9WRVJSSURFOwogCiAgICAgLy8gQ0NTY2hlZHVsZXJDbGllbnQgaW1wbGVt
ZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcAppbmRleCAwNzdlNGMyMzliZDM1Mzc4OWE5NzIxNWYxMmFlOTgwOTMwNzgwODk5Li41M2Iy
YjdlMjU1Y2RkNDZmZjQ4MTI4Y2E3ZjY4NGQ5NWE5NzlhNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApA
QCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3
T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBtX2RpZFJlcXVlc3RSZWRyYXcgPSB0cnVlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBt
X2RpZFJlcXVlc3RDb21taXQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRp
b25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2
ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGVudHNQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzT25JbXBsVGhyZWFk
KHNpemVfdCBieXRlcykgT1ZFUlJJREUgeyB9CiAKICAgICBzdGF0aWMgdm9pZCBleHBlY3RDbGVh
cmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cAppbmRleCA4OWIzZGUyNzE5ZTE3MTE1OWUwMWYwOWRiZWJlNGNkOTJhMjJlMjRjLi5kZjJlYzUw
YmRkYWEyMjVlZTZkNDYxM2RiMjhjZDhjYmRhMTQ1MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTE1MTgsMTcg
KzE1MTgsMTcgQEAgcHVibGljOgogICAgICAgICBsYXllclRyZWVIb3N0KCktPnVwZGF0ZUxheWVy
cyh1cGRhdGVyKTsKIAogICAgICAgICBFWFBFQ1RfRVEodmlld3BvcnRTaXplLCBsYXllclRyZWVI
b3N0KCktPnZpZXdwb3J0U2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRKFRleHR1cmVNYW5hZ2Vy
OjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpLCBsYXllclRyZWVIb3N0KCktPmNvbnRlbnRz
VGV4dHVyZU1hbmFnZXIoKS0+bWF4TWVtb3J5TGltaXRCeXRlcygpKTsKLSAgICAgICAgRVhQRUNU
X0VRKFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpLCBsYXll
clRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cHJlZmVycmVkTWVtb3J5TGlt
aXRCeXRlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0SGln
aExpbWl0Qnl0ZXModmlld3BvcnRTaXplKSwgbGF5ZXJUcmVlSG9zdCgpLT5jb250ZW50c1RleHR1
cmVNYW5hZ2VyKCktPm1heE1lbW9yeUxpbWl0Qnl0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUShU
ZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdFJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSksIGxh
eWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5wcmVmZXJyZWRNZW1vcnlM
aW1pdEJ5dGVzKCkpOwogCiAgICAgICAgIC8vIHNldFZpZXdwb3J0U2l6ZSgpIHNob3VsZCBub3Qg
Y2FsbCBUZXh0dXJlTWFuYWdlcjo6c2V0TWF4TWVtb3J5TGltaXRCeXRlcygpIG9yIFRleHR1cmVN
YW5hZ2VyOjpzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKCkKICAgICAgICAgLy8gaWYgdGhl
IHZpZXdwb3J0IHNpemUgaXMgbm90IGNoYW5nZWQuCiAgICAgICAgIEludFNpemUgZmFrZVNpemUo
NSwgNSk7Ci0gICAgICAgIGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigp
LT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyhm
YWtlU2l6ZSkpOwotICAgICAgICBsYXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFn
ZXIoKS0+c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhUZXh0dXJlTWFuYWdlcjo6cmVjbGFp
bUxpbWl0Qnl0ZXMoZmFrZVNpemUpKTsKKyAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5jb250ZW50
c1RleHR1cmVNYW5hZ2VyKCktPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6
OmRlZmF1bHRIaWdoTGltaXRCeXRlcyhmYWtlU2l6ZSkpOworICAgICAgICBsYXllclRyZWVIb3N0
KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRl
cyhUZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdFJlY2xhaW1MaW1pdEJ5dGVzKGZha2VTaXplKSk7CiAg
ICAgICAgIGxheWVyVHJlZUhvc3QoKS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7Ci0g
ICAgICAgIEVYUEVDVF9FUShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMoZmFrZVNpemUp
LCBsYXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+bWF4TWVtb3J5TGlt
aXRCeXRlcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGlt
aXRCeXRlcyhmYWtlU2l6ZSksIGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdl
cigpLT5wcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoVGV4
dHVyZU1hbmFnZXI6OmRlZmF1bHRIaWdoTGltaXRCeXRlcyhmYWtlU2l6ZSksIGxheWVyVHJlZUhv
c3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5tYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoVGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRSZWNsYWltTGltaXRCeXRl
cyhmYWtlU2l6ZSksIGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5w
cmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKCkpOwogCiAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJD
aHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRl
cmVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBkMmZhMDkxYzAyMmQ0OTU5ZTgyYmJkMGM5N2M2MmZj
ODllMWRjNTUxLi42MTcyYjZiMDY2YTkwYjJhODAzYTZiZjUxYTE5ODJhZTZhMjc3M2JmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJl
ckNocm9taXVtVGVzdC5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN3
YXBCdWZmZXJzQ29tcGxldGUoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RnVs
bFJvb3RMYXllckRhbWFnZSgpIE9WRVJSSURFIHsgbV9zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291
bnQrKzsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1ByZWZlcnJlZE1lbW9yeUxpbWl0
Qnl0ZXMoc2l6ZV90KSBPVkVSUklERSB7IH0KIAogICAgIC8vIE1ldGhvZHMgYWRkZWQgZm9yIHRl
c3QuCiAgICAgaW50IHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50OyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139110</attachid>
            <date>2012-04-26 17:54:07 -0700</date>
            <delta_ts>2012-04-30 14:18:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84270-20120426205405.patch</filename>
            <type>text/plain</type>
            <size>54968</size>
            <attacher name="Michal Mocny">mmocny</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0YzViYTc4YzQ2YmU0
MWZhOGFkNDI2MzljOWJjZGE1OTVmM2ZiNi4uNWI1ZjNhZmI3ZmU2YjczZDRiMmIwM2E1YWM1ODZl
NTBlN2QxZjlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA0LTI2ICBNaWNo
YWwgTW9jbnkgIDxtbW9jbnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFNldCBj
b250ZW50cyB0ZXh0dXJlIG1hbmFnZXIgcHJlZmVycmVkIG1lbW9yeSBsaW1pdCBiYXNlZCBvbiBH
cHVNZW1vcnlNYW5hZ2VyIHN1Z2dlc3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJHcHVNZW1v
cnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrQWRhcHRlcjo6b25HcHVNZW1vcnlBbGxvY2F0aW9u
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2lu
RHJhd2luZ0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZmluaXNoRHJhd2luZ0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJSZW5k
ZXJlckNocm9taXVtQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6
ZGVmYXVsdE1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFuYWdlcjo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6OnNldE1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjptZW1vcnlBbGxvY2F0aW9uTGltaXRC
eXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmg6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFRl
eHR1cmVNYW5hZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoc3RkKToKKyAgICAgICAgKHN0ZDo6ZGlkQ29u
dGVudHNNZW1vcnlMaW1pdEJ5dGVzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6YmVnaW5Db21taXRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0OjpkaWRCZWNvbWVJbnZpc2libGVPbkltcGxUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25M
aW1pdEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0Ojp1cGRhdGVMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldENvbnRl
bnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
OgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpwb3N0U2V0Q29udGVudHNNZW1vcnlBbGxv
Y2F0aW9uTGltaXRCeXRlc1RvTWFpblRocmVhZE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpwb3N0U2V0
Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlc1RvTWFpblRocmVhZE9uSW1wbFRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhy
ZWFkUHJveHkpOgorCiAyMDEyLTA0LTI1ICAnUGF2ZWwgRmVsZG1hbicgIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkOiBmb2xsb3cgdXAgdG8gcjExNTE5NCwg
cmVtb3ZlZCBkZWJ1ZyBvdXRwdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDRkYzYy
MDQ5ZDFlZDcxNGNkNzI4MjEyYmM0NTEzNmI3NjJlY2QxOGYuLjM0YTczMmFhY2JmMjRiYjMxY2I4
NTI0NTg2NDVjODQwYzQxNTVjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTItMDQtMjYgIE1pY2hhbCBNb2NueSAgPG1tb2NueUBnb29nbGUuY29tPgor
CisgICAgICAgIFtjaHJvbWl1bV0gU2V0IGNvbnRlbnRzIHRleHR1cmUgbWFuYWdlciBwcmVmZXJy
ZWQgbWVtb3J5IGxpbWl0IGJhc2VkIG9uIEdwdU1lbW9yeU1hbmFnZXIgc3VnZ2VzdGlvbi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MjcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTZXRWaWV3cG9ydFNp
emU6OmJlZ2luVGVzdCk6CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVz
dC5jcHA6CisgICAgICAgICogdGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0LmNwcDoKKyAgICAgICAg
KFdURjo6VGV4dHVyZU1hbmFnZXJUZXN0OjpjcmVhdGVUZXh0dXJlTWFuYWdlcik6CisgICAgICAg
IChXVEY6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgIChXVEY6OlRFU1QpOgorCiAyMDEyLTA0LTI0ICBEYW5hIEphbnNlbnMgIDxk
YW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVW5ib3VuZGVkIGRyYXdz
IHNob3VsZCB1c2UgY2xpcCB0byBsaW1pdCB0aGVpciBkYW1hZ2UgdG8gb3BhcXVlIHRyYWNraW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA2MzQ4ZTE0OTY4N2Y0
MzU1MDk2NWNhODZkNDQxYmQ2ZDhmZjYyYjIxLi5jNDZmMDNlYjRlOTExOWQxMTcxYmFiNTE4ZGE4
OThjOGE3NzY0NjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAg
LTE4Myw2ICsxODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPmRp
c2NhcmRGcmFtZWJ1ZmZlcigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2xheWVyUmVu
ZGVyZXItPmVuc3VyZUZyYW1lYnVmZmVyKCk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+bV9j
bGllbnQtPnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoYWxsb2NhdGlvbi5n
cHVSZXNvdXJjZVNpemVJbkJ5dGVzKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0zOTYsOCArMzk3
LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2luRHJhd2luZ0ZyYW1lKENDUmVu
ZGVyU3VyZmFjZSogZGVmYXVsdFJlbmRlclN1cmYKICAgICBBU1NFUlQobV9kZWZhdWx0UmVuZGVy
U3VyZmFjZSk7CiAKICAgICBzaXplX3QgY29udGVudHNNZW1vcnlVc2VCeXRlcyA9IG1fY29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKTsKLSAgICBzaXplX3Qg
bWF4TGltaXQgPSBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkp
OwotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5
dGVzKG1heExpbWl0IC0gY29udGVudHNNZW1vcnlVc2VCeXRlcyk7CisgICAgLy8gVE9ETyhtbW9j
bnkpOgorICAgIHNpemVfdCBjb250ZW50c01lbW9yeUxpbWl0ID0gVGV4dHVyZU1hbmFnZXI6OmRl
ZmF1bHRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSk7CisgICAgbV9y
ZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPnNldE1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVz
KGNvbnRlbnRzTWVtb3J5TGltaXQgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVzKTsKIAogICAgIGlm
ICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExMDcsMTAg
KzExMDksMTAgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFt
ZSgpCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4
dDNEOjpCTEVORCkpOwogCiAgICAgc2l6ZV90IGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgPSBtX2Nv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCk7Ci0gICAgc2l6
ZV90IHJlY2xhaW1MaW1pdCA9IFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3
cG9ydFNpemUoKSk7Ci0gICAgc2l6ZV90IHByZWZlcnJlZExpbWl0ID0gcmVjbGFpbUxpbWl0ID4g
Y29udGVudHNNZW1vcnlVc2VCeXRlcyA/IHJlY2xhaW1MaW1pdCAtIGNvbnRlbnRzTWVtb3J5VXNl
Qnl0ZXMgOiAwOwotICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJy
ZWRNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZExpbWl0KTsKLSAgICBtX3JlbmRlclN1cmZhY2VU
ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChwcmVmZXJyZWRMaW1pdCk7CisgICAg
Ly8gVE9ETyhtbW9jbnkpOgorICAgIHNpemVfdCBjb250ZW50c01lbW9yeUxpbWl0ID0gVGV4dHVy
ZU1hbmFnZXI6OmRlZmF1bHRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyh2aWV3cG9ydFNpemUo
KSk7CisgICAgc2l6ZV90IHJlbmRlclN1cmZhY2VNZW1vcnlMaW1pdCA9IGNvbnRlbnRzTWVtb3J5
TGltaXQgPiBjb250ZW50c01lbW9yeVVzZUJ5dGVzID8gY29udGVudHNNZW1vcnlMaW1pdCAtIGNv
bnRlbnRzTWVtb3J5VXNlQnl0ZXMgOiAwOworICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5h
Z2VyLT5zZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhyZW5kZXJTdXJmYWNlTWVtb3J5TGlt
aXQpOwogICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4
dHVyZXMobV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiB9CiAKQEAgLTE0
MDcsOCArMTQwOSw4IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hh
cmVkT2JqZWN0cygpCiAKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZsdXNoKCkpOwog
Ci0gICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3Jl
YXRlKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCisgICAgbV9y
ZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKHZpZXdw
b3J0U2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlcjo6a1VzZURlZmF1bHRNZW1vcnlBbGxvY2F0aW9u
TGltaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKICAgICBtX3RleHR1cmVD
b3BpZXIgPSBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkp
OwogICAgIG1fdGV4dHVyZVVwbG9hZGVyID0gQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI6OmNy
ZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApp
bmRleCAzN2IxN2VkYWUwZGE4ZDk3ZDFlNzRlMjQzZDc2YWE5ZDgxMWJhZmM4Li5hNzg5ZjdiOTc1
YTMxZDc5OTA0OWEzZjIzNTllYmMwZmNmMDE2OWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZExvc2VDb250ZXh0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxl
dGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2UoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMo
c2l6ZV90KSA9IDA7CiB9OwogCiAvLyBDbGFzcyB0aGF0IGhhbmRsZXMgZHJhd2luZyBvZiBjb21w
b3NpdGVkIHJlbmRlciBsYXllcnMgdXNpbmcgR0wuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKaW5k
ZXggZDRkOGMxODJjZmU1MjVmNTYwMDg4YWExMjY2OThkOWQ5MzI0YWUxMi4uZmU5M2QxZTY0NTJk
ZGNmMDFhYWExNDM4ZGU5ODg4Y2Y4NGM4NjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcApA
QCAtNDcsMjIgKzQ3LDcgQEAgc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IHZpZXdwb3J0
TXVsdGlwbGllciwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLAogfQogfQogCi1zaXplX3Qg
VGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6
ZSkKLXsKLSAgICBzaXplX3Qgdmlld3BvcnRNdWx0aXBsaWVyLCBtaW5NZWdhYnl0ZXMsIG1heE1l
Z2FieXRlczsKLSNpZiBPUyhBTkRST0lEKQotICAgIHZpZXdwb3J0TXVsdGlwbGllciA9IDE2Owot
ICAgIG1pbk1lZ2FieXRlcyA9IDMyOwotICAgIG1heE1lZ2FieXRlcyA9IDY0OwotI2Vsc2UKLSAg
ICB2aWV3cG9ydE11bHRpcGxpZXIgPSAwOwotICAgIG1pbk1lZ2FieXRlcyA9IDA7Ci0gICAgbWF4
TWVnYWJ5dGVzID0gMTI4OwotI2VuZGlmCi0gICAgcmV0dXJuIG1lbW9yeUxpbWl0Qnl0ZXModmll
d3BvcnRNdWx0aXBsaWVyLCB2aWV3cG9ydFNpemUsIG1pbk1lZ2FieXRlcywgbWF4TWVnYWJ5dGVz
KTsKLX0KLQotc2l6ZV90IFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyhjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUpCitzaXplX3QgVGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRNZW1v
cnlBbGxvY2F0aW9uTGltaXRCeXRlcyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7CiAg
ICAgc2l6ZV90IHZpZXdwb3J0TXVsdGlwbGllciwgbWluTWVnYWJ5dGVzLCBtYXhNZWdhYnl0ZXM7
CiAjaWYgT1MoQU5EUk9JRCkKQEAgLTg5LDEwICs3NCw5IEBAIHNpemVfdCBUZXh0dXJlTWFuYWdl
cjo6bWVtb3J5VXNlQnl0ZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gdGV4dHVyZUZv
cm1hCiAgICAgcmV0dXJuIHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCkgKiBjb21wb25lbnRz
UGVyUGl4ZWwgKiBieXRlc1BlckNvbXBvbmVudDsKIH0KIAotCi1UZXh0dXJlTWFuYWdlcjo6VGV4
dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVfdCBwcmVmZXJyZWRN
ZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpCi0gICAgOiBtX21heE1lbW9yeUxp
bWl0Qnl0ZXMobWF4TWVtb3J5TGltaXRCeXRlcykKLSAgICAsIG1fcHJlZmVycmVkTWVtb3J5TGlt
aXRCeXRlcyhwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKQorVGV4dHVyZU1hbmFnZXI6OlRleHR1
cmVNYW5hZ2VyKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgc2l6ZV90IG1lbW9yeUFsbG9j
YXRpb25MaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpCisgICAgOiBtX3ZpZXdwb3J0U2l6
ZSh2aWV3cG9ydFNpemUpCisgICAgLCBtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKG1lbW9y
eUFsbG9jYXRpb25MaW1pdEJ5dGVzKQogICAgICwgbV9tZW1vcnlVc2VCeXRlcygwKQogICAgICwg
bV9tYXhUZXh0dXJlU2l6ZShtYXhUZXh0dXJlU2l6ZSkKICAgICAsIG1fbmV4dFRva2VuKDEpCkBA
IC0xMDUsMTYgKzg5LDIzIEBAIFRleHR1cmVNYW5hZ2VyOjp+VGV4dHVyZU1hbmFnZXIoKQogICAg
ICAgICAoKml0KS0+Y2xlYXJNYW5hZ2VyKCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hbmFnZXI6OnNl
dE1heE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMpCit2b2lkIFRleHR1
cmVNYW5hZ2VyOjpzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQor
eworICAgIG1fdmlld3BvcnRTaXplID0gdmlld3BvcnRTaXplOworfQorCit2b2lkIFRleHR1cmVN
YW5hZ2VyOjpzZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QgbWVtb3J5TGltaXRC
eXRlcykKIHsKLSAgICByZWR1Y2VNZW1vcnlUb0xpbWl0KG1lbW9yeUxpbWl0Qnl0ZXMpOworICAg
IG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMgPSBtZW1vcnlMaW1pdEJ5dGVzOworICAgIHJl
ZHVjZU1lbW9yeVRvTGltaXQobWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoKSk7CiAgICAgQVNT
RVJUKGN1cnJlbnRNZW1vcnlVc2VCeXRlcygpIDw9IG1lbW9yeUxpbWl0Qnl0ZXMpOwotICAgIG1f
bWF4TWVtb3J5TGltaXRCeXRlcyA9IG1lbW9yeUxpbWl0Qnl0ZXM7CiB9CiAKLXZvaWQgVGV4dHVy
ZU1hbmFnZXI6OnNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxpbWl0
Qnl0ZXMpCitzaXplX3QgVGV4dHVyZU1hbmFnZXI6Om1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVz
KCkgY29uc3QKIHsKLSAgICBtX3ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMgPSBtZW1vcnlMaW1p
dEJ5dGVzOworICAgIGlmIChtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzID09IGtVc2VEZWZh
dWx0TWVtb3J5QWxsb2NhdGlvbkxpbWl0KQorICAgICAgICByZXR1cm4gZGVmYXVsdE1lbW9yeUFs
bG9jYXRpb25MaW1pdEJ5dGVzKG1fdmlld3BvcnRTaXplKTsKKyAgICByZXR1cm4gbV9tZW1vcnlB
bGxvY2F0aW9uTGltaXRCeXRlczsKIH0KIAogdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVnaXN0ZXJU
ZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQpAQCAtMjgwLDExICsyNzEsMTEgQEAgYm9v
bCBUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBJbnRT
aXplIHNpemUsIHVuc2lnbmVkIGYKICAgICB9CiAKICAgICBzaXplX3QgbWVtb3J5UmVxdWlyZWRC
eXRlcyA9IG1lbW9yeVVzZUJ5dGVzKHNpemUsIGZvcm1hdCk7Ci0gICAgaWYgKG1lbW9yeVJlcXVp
cmVkQnl0ZXMgPiBtX21heE1lbW9yeUxpbWl0Qnl0ZXMpCisgICAgaWYgKG1lbW9yeVJlcXVpcmVk
Qnl0ZXMgPiBtZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICByZWR1Y2VNZW1vcnlUb0xpbWl0KG1fbWF4TWVtb3J5TGltaXRCeXRlcyAtIG1l
bW9yeVJlcXVpcmVkQnl0ZXMpOwotICAgIGlmIChtX21lbW9yeVVzZUJ5dGVzICsgbWVtb3J5UmVx
dWlyZWRCeXRlcyA+IG1fbWF4TWVtb3J5TGltaXRCeXRlcykKKyAgICByZWR1Y2VNZW1vcnlUb0xp
bWl0KG1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKCkgLSBtZW1vcnlSZXF1aXJlZEJ5dGVzKTsK
KyAgICBpZiAobV9tZW1vcnlVc2VCeXRlcyArIG1lbW9yeVJlcXVpcmVkQnl0ZXMgPiBtZW1vcnlB
bGxvY2F0aW9uTGltaXRCeXRlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBUZXh0
dXJlSW5mbyBpbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKaW5kZXggNzBkMDg2MWM1Nzg2ZmJlYzAy
NWI0Yzk2YzkxYmU4YmRkZmQ1OGRjYS4uMDQ0MmZkN2Q2OWUxODc4ZDk3NTJlZmMwZTBmODFhYzFm
MWE3ZmVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCkBAIC01MiwyMyArNTIsMjEgQEAgcHJvdGVj
dGVkOgogY2xhc3MgVGV4dHVyZU1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRl
eHR1cmVNYW5hZ2VyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxUZXh0dXJlTWFu
YWdlcj4gY3JlYXRlKHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBzaXplX3QgcHJlZmVycmVk
TWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKQorICAgIHN0YXRpYyBQYXNzT3du
UHRyPFRleHR1cmVNYW5hZ2VyPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBz
aXplX3QgbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZU1hbmFnZXIobWF4TWVtb3J5
TGltaXRCeXRlcywgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcywgbWF4VGV4dHVyZVNpemUpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlTWFuYWdlcih2aWV3cG9ydFNpemUs
IG1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzLCBtYXhUZXh0dXJlU2l6ZSkpOwogICAgIH0KLSAg
ICB+VGV4dHVyZU1hbmFnZXIoKTsKIAotICAgIC8vIEFic29sdXRlIG1heGltdW0gbGltaXQgZm9y
IHRleHR1cmUgYWxsb2NhdGlvbnMgZm9yIHRoaXMgaW5zdGFuY2UuCi0gICAgc3RhdGljIHNpemVf
dCBoaWdoTGltaXRCeXRlcyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpOwotICAgIC8vIFBy
ZWZlcnJlZCB0ZXh0dXJlIHNpemUgbGltaXQgZ2l2ZW4gdGhlIHZpZXdwb3J0IHNpemUuCi0gICAg
c3RhdGljIHNpemVfdCByZWNsYWltTGltaXRCeXRlcyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUpOworICAgIH5UZXh0dXJlTWFuYWdlcigpOwogCisgICAgc3RhdGljIHNpemVfdCBkZWZhdWx0
TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKTsK
ICAgICBzdGF0aWMgc2l6ZV90IG1lbW9yeVVzZUJ5dGVzKGNvbnN0IEludFNpemUmLCBHQzNEZW51
bSBmb3JtYXQpOwogCi0gICAgdm9pZCBzZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCk7Ci0g
ICAgc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMoKSB7IHJldHVybiBtX21heE1lbW9yeUxpbWl0
Qnl0ZXM7IH0KLSAgICB2b2lkIHNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90KTsK
LSAgICBzaXplX3QgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcygpIHsgcmV0dXJuIG1fcHJlZmVy
cmVkTWVtb3J5TGltaXRCeXRlczsgfQorICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IElu
dFNpemUmKTsKKworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga1VzZURlZmF1bHRNZW1vcnlBbGxv
Y2F0aW9uTGltaXQgPSAtMTsKKyAgICB2b2lkIHNldE1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVz
KHNpemVfdCk7CisgICAgc2l6ZV90IG1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKCkgY29uc3Q7
CiAKICAgICB2b2lkIHJlZ2lzdGVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSopOwogICAgIHZvaWQg
dW5yZWdpc3RlclRleHR1cmUoTWFuYWdlZFRleHR1cmUqKTsKQEAgLTkzLDcgKzkxLDcgQEAgcHVi
bGljOgogICAgIHNpemVfdCBjdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSBjb25zdCB7IHJldHVybiBt
X21lbW9yeVVzZUJ5dGVzOyB9CiAKIHByaXZhdGU6Ci0gICAgVGV4dHVyZU1hbmFnZXIoc2l6ZV90
IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVfdCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBp
bnQgbWF4VGV4dHVyZVNpemUpOworICAgIFRleHR1cmVNYW5hZ2VyKGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSwgc2l6ZV90IG1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzLCBpbnQgbWF4VGV4
dHVyZVNpemUpOwogCiAgICAgc3RydWN0IFRleHR1cmVJbmZvIHsKICAgICAgICAgSW50U2l6ZSBz
aXplOwpAQCAtMTE1LDggKzExMyw4IEBAIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcCBtX3RleHR1
cmVzOwogICAgIExpc3RIYXNoU2V0PFRleHR1cmVUb2tlbj4gbV90ZXh0dXJlTFJVU2V0OwogCi0g
ICAgc2l6ZV90IG1fbWF4TWVtb3J5TGltaXRCeXRlczsKLSAgICBzaXplX3QgbV9wcmVmZXJyZWRN
ZW1vcnlMaW1pdEJ5dGVzOworICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7CisgICAgc2l6ZV90
IG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXM7CiAgICAgc2l6ZV90IG1fbWVtb3J5VXNlQnl0
ZXM7CiAgICAgaW50IG1fbWF4VGV4dHVyZVNpemU7CiAgICAgVGV4dHVyZVRva2VuIG1fbmV4dFRv
a2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNThlNWFkZGQ0ZmQ4NmVj
OGM3M2U1MzkzZTRjZmEwZDI2ZjNkYTAwNC4uMjE1ZGE3Mjg5OGFhMzdiOWY3ZGExODA5NDU5YmE4
ZjFhMTlkOTUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00Niw2ICs0
NiwxNCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2Ugewogc3RhdGljIGludCBu
dW1MYXllclRyZWVJbnN0YW5jZXM7CisKK3ZvaWQgZGlkQ29udGVudHNNZW1vcnlMaW1pdEJ5dGVz
Q2hhbmdlZChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3QqIGlkLCBzaXplX3QgYnl0ZXMsIGJvb2wg
aXNJbml0KQoreworICAgIGlmICghaXNJbml0KQorICAgICAgVFJBQ0VfRVZFTlRfQVNZTkNfRU5E
MSgiY2MiLCAiQ0NMYXllclRyZWVIb3N0ICBzZXRDb250ZW50c01lbW9yeUxpbWl0IiwgaWQsICJD
Q0xheWVyVHJlZUhvc3QiLCBpZCk7CisgICAgVFJBQ0VfRVZFTlRfQVNZTkNfQkVHSU4yKCJjYyIs
ICJDQ0xheWVyVHJlZUhvc3QgIHNldENvbnRlbnRzTWVtb3J5TGltaXQiLCBpZCwgIkNDTGF5ZXJU
cmVlSG9zdCIsIGlkLCAibWVtb3J5TGltaXRCeXRlcyIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZyB1
bnNpZ25lZD4oYnl0ZXMpKTsKK30KKwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDMs
OSArMTUxLDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJl
cigpCiAgICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gcGFydGlhbCB1cGRhdGUgY2Fw
YWJpbGl0eS4KICAgICBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IG1pbiht
X3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcywgbV9wcm94eS0+bWF4UGFydGlhbFRl
eHR1cmVVcGRhdGVzKCkpOwogCi0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRT
aXplKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwK
KyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKHZp
ZXdwb3J0U2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OmtVc2VEZWZhdWx0TWVtb3J5QWxsb2NhdGlvbkxp
bWl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsK
KyAgICBkaWRDb250ZW50c01lbW9yeUxpbWl0Qnl0ZXNDaGFuZ2VkKHRoaXMsIG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoKSwgdHJ1ZSk7CiAKICAg
ICBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCA9IHRydWU7CiB9CkBAIC0yMTAsOCArMjE5LDcg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdEltcGwqIGhvc3RJbXBsKQogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQo
KSk7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iLCB0aGlzLCAw
KTsKIAotICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCht
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoKSk7Ci0g
ICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdElt
cGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAvLyBUT0RPKG1tb2NueSk6IE5l
ZWQgdG8gcmVkdWNlTWVtIGFuZCBldmljdD8KIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBjb21taXRz
IHRoZSBDQ0xheWVyVHJlZUhvc3QgdG8gYW4gaW1wbCB0cmVlLiBXaGVuIG1vZGlmeWluZwpAQCAt
MzUxLDEwICszNTksOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld3BvcnRTaXplKGNv
bnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKICAgICBpZiAodmlld3BvcnRTaXplID09IG1fdmll
d3BvcnRTaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9jb250ZW50c1RleHR1cmVN
YW5hZ2VyKSB7Ci0gICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5
TGltaXRCeXRlcyhUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKSk7
Ci0gICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0UHJlZmVycmVkTWVtb3J5TGlt
aXRCeXRlcyhUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKSk7
Ci0gICAgfQorICAgIGlmIChtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIpCisgICAgICAgIG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlci0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CisKICAg
ICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwog
fQpAQCAtMzk0LDEwICs0MDEsOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGlkQmVjb21lSW52
aXNpYmxlT25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbQogICAgICAgICBt
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7CiAgICAgICAg
IG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCgwKTsKICAgICB9
IGVsc2UgewotICAgICAgICAvLyBEZWxldGUgYWxsIHVucHJvdGVjdGVkIHRleHR1cmVzLCBhbmQg
b25seSBzYXZlIHRleHR1cmVzIHRoYXQgZml0IGluIHRoZSBwcmVmZXJyZWQgbWVtb3J5IGxpbWl0
LgorICAgICAgICAvLyBEZWxldGUgYWxsIHVucHJvdGVjdGVkIHRleHR1cmVzLgogICAgICAgICBt
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQoMCk7CiAgICAgICAg
IG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKLSAgICAg
ICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KG1fY29udGVu
dHNUZXh0dXJlTWFuYWdlci0+cHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcygpKTsKICAgICB9CiAg
ICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdElt
cGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKIApAQCAtNDExLDYgKzQxNywxNiBAQCB2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqIGhvc3RJbQogICAgIH0KIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKQorewor
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX2xheWVyUmVu
ZGVyZXJJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZW50c1RleHR1
cmVNYW5hZ2VyLT5zZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhieXRlcyk7CisgICAgZGlk
Q29udGVudHNNZW1vcnlMaW1pdEJ5dGVzQ2hhbmdlZCh0aGlzLCBieXRlcywgZmFsc2UpOworfQor
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50
U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91Ymxl
IGR1cmF0aW9uU2VjKQogewogICAgIG1fcHJveHktPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKHRh
cmdldFBvc2l0aW9uLCB1c2VBbmNob3IsIHNjYWxlLCBkdXJhdGlvblNlYyk7CkBAIC00ODksMTgg
KzUwNSw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1
bSogcm9vdExheWVyLCBDQ1RleHR1cmVVcGRhdGVyJiB1CiAgICAgaWYgKCFtX3RyaWdnZXJJZGxl
UGFpbnRzKQogICAgICAgICByZXR1cm47CiAKLSAgICBzaXplX3QgcHJlZmVycmVkTGltaXRCeXRl
cyA9IG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+cHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcygp
OwotICAgIHNpemVfdCBtYXhMaW1pdEJ5dGVzID0gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5t
YXhNZW1vcnlMaW1pdEJ5dGVzKCk7Ci0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1
Y2VNZW1vcnlUb0xpbWl0KHByZWZlcnJlZExpbWl0Qnl0ZXMpOwotICAgIGlmIChtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpID49IHByZWZlcnJlZExpbWl0
Qnl0ZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElkbGUgcGFpbnRpbmcgc2hvdWxkIGZh
aWwgd2hlbiB3ZSBoaXQgdGhlIHByZWZlcnJlZCBtZW1vcnkgbGltaXQsCi0gICAgLy8gb3RoZXJ3
aXNlIGl0IHdpbGwgYWx3YXlzIHB1c2ggdXMgdG93YXJkcyB0aGUgbWF4aW11bSBsaW1pdC4KLSAg
ICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMocHJlZmVy
cmVkTGltaXRCeXRlcyk7CiAgICAgLy8gVGhlIHNlY29uZCAoaWRsZSkgcGFpbnQgd2lsbCBiZSBh
IG5vLW9wIGluIGxheWVycyB3aGVyZSBwYWludGluZyBhbHJlYWR5IG9jY3VyZWQgYWJvdmUuCiAg
ICAgcGFpbnRMYXllckNvbnRlbnRzKHVwZGF0ZUxpc3QsIFBhaW50SWRsZSwgdXBkYXRlcik7Ci0g
ICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1heExp
bWl0Qnl0ZXMpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1cGRhdGVMaXN0LnNpemUo
KTsgKytpKQogICAgICAgICB1cGRhdGVMaXN0W2ldLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggMDQzMDI1YmIxNzBmZTg5Y2ZkZmVjODgxMjk3
NDcxMTY5YjkxZjM0ZS4uNTE0ODI0MWM5MTIyMTJhZjlkNjEwMTIxZWEwNTZkOWYzYTdjOGVkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTIxMyw2ICsyMTMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fYmFj
a2dyb3VuZENvbG9yID0gY29sb3I7IH0KIAogICAgIFRleHR1cmVNYW5hZ2VyKiBjb250ZW50c1Rl
eHR1cmVNYW5hZ2VyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDb250ZW50c01lbW9yeUFsbG9jYXRp
b25MaW1pdEJ5dGVzKHNpemVfdCk7CiAKICAgICBib29sIHZpc2libGUoKSBjb25zdCB7IHJldHVy
biBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGI2ZjlkYjk5NTYyZjc5YzQ0MTc1NTE1NzY2
NjdlN2EyZmY2YzA4MzkuLmY5Y2NmN2VmODJjZjExNTA5N2I5ZTdiY2ZjMzU1MTM2MzY3MjMxNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0zOTgsNiArMzk4
LDExIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyhGcmFtZURhdGEm
IGZyYW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6
OnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKQorewor
ICAgIG1fY2xpZW50LT5wb3N0U2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlc1Rv
TWFpblRocmVhZE9uSW1wbFRocmVhZChieXRlcyk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6ZHJhd0xheWVycyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQogewogICAgIFRSQUNFX0VW
RU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzIiwgdGhpcywgMCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggMTc3YjRiNTZmZjg3NjJmMjA3M2VmMzM2
OWEyMjY4MWIwYjVjMTlkYy4uYTI1MTI4ZTkxOGFkYmE3NGM3YjQxNTcwNzVlNDM1Nzk3NThjZmIz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNTksNiArNTksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRo
cmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9j
a1RpbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFNldENvbnRlbnRzTWVtb3J5QWxsb2Nh
dGlvbkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoc2l6ZV90KSA9IDA7CiB9Owog
CiAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsIG93bnMgdGhlIENDTGF5ZXJJbXBsIHRyZWUgYXMgd2Vs
bCBhcyBhc3NvY2lhdGVkIHJlbmRlcmluZyBzdGF0ZQpAQCAtMTAyLDYgKzEwMyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QpIE9WRVJSSURFOwog
CiAgICAgLy8gSW1wbGVtZW50YXRpb24KICAgICBib29sIGNhbkRyYXcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggYWFjZmU1NGFiNjA2MjZiYTIzM2Y1NDJh
MjJlMGNkZjkwYWNhZWViZC4uN2RhMmZjOGEwNWM3M2EzZGQ5Y2E0ZDFiMDhjOWQ5OTRjOGQyYjk5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI3OCw2ICsy
NzgsMTUgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9N
YWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHIKICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dEFuaW1hdGlvbkV2ZW50cyhldmVudHMsIHdhbGxDbG9ja1RpbWUpOwogfQogCit2b2lkIENDU2lu
Z2xlVGhyZWFkUHJveHk6OnBvc3RTZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVz
VG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKHNpemVfdCBieXRlcykKK3sKKyAgICAvLyBGSVhNRTog
dGhpcyBpcyBjYWxsZWQgYXMtaWYtZnJvbSB0aGUgbWFpbiB0aHJlYWQgaW4gc2luZ2xlIHRocmVh
ZGVkIG1vZGUsIHNpbmNlIExSQyBHcHVNZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrIGRv
ZXMgbm90IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZAorICAgIC8vIEFTU0VSVChDQ1Byb3h5Ojpp
c0ltcGxUaHJlYWQoKSk7CisgICAgLy8gRGVidWdTY29wZWRTZXRNYWluVGhyZWFkIG1haW47Cisg
ICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRDb250
ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKGJ5dGVzKTsKK30KKwogLy8gQ2FsbGVkIGJ5
IHRoZSBsZWdhY3kgc2NoZWR1bGluZyBwYXRoIChlLmcuIHdoZXJlIHJlbmRlcl93aWRnZXQgZG9l
cyB0aGUgc2NoZWR1bGluZykKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tcG9zaXRlSW1t
ZWRpYXRlbHkoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDQw
NzgyNTA3YTgxMDNlNDMyYzAzMTUxNjQzZjdlMThmYzYyYWY5N2IuLjhmYWRjZGFiZmQ5ZmFmMTJm
Mzg4MmIyMjM4MjE4YjYxNzRiMjdmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c1JlZHJhd09uSW1wbFRocmVhZCgpIE9WRVJSSURFIHsgbV9sYXllclRyZWVIb3N0LT5zZXROZWVk
c0NvbW1pdCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFk
KCkgT1ZFUlJJREUgeyBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0KCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQ
YXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwb3N0U2V0Q29udGVudHNNZW1vcnlBbGxvY2F0
aW9uTGltaXRCeXRlc1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChzaXplX3QpIE9WRVJSSURFOwog
CiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBsZWdhY3kgcGF0aCB3aGVyZSBSZW5kZXJXaWRnZXQgZG9l
cyB0aGUgc2NoZWR1bGluZy4KICAgICB2b2lkIGNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDEzOGM3MjM0OThiZDFmOGNjYjEyZThlZGI5MzNi
ZjQ4YWRkOTA0OTcuLjBjZjg5YWNjMmEzNTNlZjA1OTZiNjdlZjIxYTFlZWMyOTczYzNhYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zMTgsNiArMzE4LDEyIEBAIHZvaWQgQ0NU
aHJlYWRQcm94eTo6cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQ
YXNzT3duUHRyPENDQW5pCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUND
VGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0aW9uRXZlbnRzLCBldmVu
dHMsIHdhbGxDbG9ja1RpbWUpKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojpwb3N0U2V0Q29u
dGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlc1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChz
aXplX3QgYnl0ZXMpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBtX21haW5U
aHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFBy
b3h5OjpzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzLCBieXRlcykpOworfQor
CiB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KCkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwpAQCAtNjc1LDYgKzY4MSwxNCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNl
dEFuaW1hdGlvbkV2ZW50cyhQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiBldmVu
dAogICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0QW5pbWF0aW9uRXZlbnRzKGV2ZW50cywgd2FsbENs
b2NrVGltZSk7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0Q29udGVudHNNZW1vcnlBbGxv
Y2F0aW9uTGltaXRCeXRlcyhzaXplX3QgYnl0ZXMpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhieXRl
cyk7Cit9CisKIGNsYXNzIENDVGhyZWFkUHJveHlDb250ZXh0UmVjcmVhdGlvblRpbWVyIDogcHVi
bGljIENDVGltZXIsIENDVGltZXJDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPENDVGhyZWFkUHJveHlDb250ZXh0UmVjcmVhdGlvblRpbWVyPiBjcmVhdGUoQ0NUaHJlYWRQ
cm94eSogcHJveHkpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RocmVhZFByb3h5Q29udGV4dFJl
Y3JlYXRpb25UaW1lcihwcm94eSkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMDhl
ZTUzNGZkZjEzYzI3NjBjZDlkNDQ1NzU2NDRhY2VkMjdmYTA1OS4uZGRhMjU2ODY4OTA3ZjM4YmI2
ZTJmNWUwNjZhNTg2ZDNjMTQ3MmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtODAs
NiArODAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBs
VGhyZWFkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBs
VGhyZWFkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNU
b01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rv
cj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9z
dFNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRPbkltcGxU
aHJlYWQoc2l6ZV90KSBPVkVSUklERTsKIAogICAgIC8vIENDU2NoZWR1bGVyQ2xpZW50IGltcGxl
bWVudGF0aW9uCiAgICAgdmlydHVhbCBib29sIGNhbkRyYXcoKSBPVkVSUklERTsKQEAgLTExNCw2
ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CiAg
ICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7CiAgICAgdm9pZCBzZXRBbmltYXRpb25F
dmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xv
Y2tUaW1lKTsKKyAgICB2b2lkIHNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMo
c2l6ZV90KTsKICAgICB2b2lkIGJlZ2luQ29udGV4dFJlY3JlYXRpb24oKTsKICAgICB2b2lkIHRy
eVRvUmVjcmVhdGVDb250ZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggMGNiMmYwZGYzYTRl
NmUyMzg1YjZmMjZkNTg5NGZlNTlkYjUxMjU0OC4uYzAxOWJhOTc1ZjE3OGNjMTVlOTQ3YjgyMGRm
NDY4ZTcyZTAyNzI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIE9WRVJSSURF
IHsgbV9kaWRSZXF1ZXN0UmVkcmF3ID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c0NvbW1pdE9uSW1wbFRocmVhZCgpIE9WRVJSSURFIHsgbV9kaWRSZXF1ZXN0Q29tbWl0ID0gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25J
bXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2Fs
bENsb2NrVGltZSkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHBvc3RTZXRDb250ZW50
c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKHNpemVf
dCBieXRlcykgT1ZFUlJJREUgeyB9CiAKICAgICBzdGF0aWMgdm9pZCBleHBlY3RDbGVhcmVkU2Ny
b2xsRGVsdGFzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRl
eCBlMTY3NmM0ZjhkZjIwYTliMTc5ZTExZjU5OWQ0OGI0ODM5ZGExMTU2Li5kMmY0MTk2Yjk1ZWVi
ODIxZWM4YmM5NmYzYjkzZDgxYzMzMTI4YTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTE1MjAsMTcgKzE1MjAs
MTQgQEAgcHVibGljOgogICAgICAgICBsYXllclRyZWVIb3N0KCktPnVwZGF0ZUxheWVycyh1cGRh
dGVyKTsKIAogICAgICAgICBFWFBFQ1RfRVEodmlld3BvcnRTaXplLCBsYXllclRyZWVIb3N0KCkt
PnZpZXdwb3J0U2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRKFRleHR1cmVNYW5hZ2VyOjpoaWdo
TGltaXRCeXRlcyh2aWV3cG9ydFNpemUpLCBsYXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVy
ZU1hbmFnZXIoKS0+bWF4TWVtb3J5TGltaXRCeXRlcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKFRl
eHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpLCBsYXllclRyZWVI
b3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cHJlZmVycmVkTWVtb3J5TGltaXRCeXRl
cygpKTsKKyAgICAgICAgc2l6ZV90IGNvbnRlbnRzTWVtb3J5TGltaXQgPSBUZXh0dXJlTWFuYWdl
cjo6ZGVmYXVsdE1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSk7CisgICAg
ICAgIGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5zZXRNZW1vcnlB
bGxvY2F0aW9uTGltaXRCeXRlcyhjb250ZW50c01lbW9yeUxpbWl0KTsKKyAgICAgICAgRVhQRUNU
X0VRKGNvbnRlbnRzTWVtb3J5TGltaXQsIGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJl
TWFuYWdlcigpLT5tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcygpKTsKIAotICAgICAgICAvLyBz
ZXRWaWV3cG9ydFNpemUoKSBzaG91bGQgbm90IGNhbGwgVGV4dHVyZU1hbmFnZXI6OnNldE1heE1l
bW9yeUxpbWl0Qnl0ZXMoKSBvciBUZXh0dXJlTWFuYWdlcjo6c2V0UHJlZmVycmVkTWVtb3J5TGlt
aXRCeXRlcygpCi0gICAgICAgIC8vIGlmIHRoZSB2aWV3cG9ydCBzaXplIGlzIG5vdCBjaGFuZ2Vk
LgorICAgICAgICAvLyBzZXRWaWV3cG9ydFNpemUoKSBzaG91bGQgbm90IGNhbGwgVGV4dHVyZU1h
bmFnZXI6OnNldE1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKCkKICAgICAgICAgSW50U2l6ZSBm
YWtlU2l6ZSg1LCA1KTsKLSAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5jb250ZW50c1RleHR1cmVN
YW5hZ2VyKCktPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1p
dEJ5dGVzKGZha2VTaXplKSk7Ci0gICAgICAgIGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0
dXJlTWFuYWdlcigpLT5zZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2Vy
OjpyZWNsYWltTGltaXRCeXRlcyhmYWtlU2l6ZSkpOwotICAgICAgICBsYXllclRyZWVIb3N0KCkt
PnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOwotICAgICAgICBFWFBFQ1RfRVEoVGV4dHVy
ZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKGZha2VTaXplKSwgbGF5ZXJUcmVlSG9zdCgpLT5jb250
ZW50c1RleHR1cmVNYW5hZ2VyKCktPm1heE1lbW9yeUxpbWl0Qnl0ZXMoKSk7Ci0gICAgICAgIEVY
UEVDVF9FUShUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXMoZmFrZVNpemUpLCBsYXll
clRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cHJlZmVycmVkTWVtb3J5TGlt
aXRCeXRlcygpKTsKKyAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5zZXRWaWV3cG9ydFNpemUoZmFr
ZVNpemUpOworICAgICAgICBFWFBFQ1RfRVEoY29udGVudHNNZW1vcnlMaW1pdCwgbGF5ZXJUcmVl
SG9zdCgpLT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPm1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5
dGVzKCkpOwogCiAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApp
bmRleCBkMmZhMDkxYzAyMmQ0OTU5ZTgyYmJkMGM5N2M2MmZjODllMWRjNTUxLi5mMzBmMmI4MWVj
MTg4N2M1MGU5NDk2ODFlMTBhY2I2OGY2NmJiMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKQEAg
LTc2LDYgKzc2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgp
IE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKSBP
VkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpIE9W
RVJSSURFIHsgbV9zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQrKzsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKHNpemVfdCkgT1ZFUlJJ
REUgeyB9CiAKICAgICAvLyBNZXRob2RzIGFkZGVkIGZvciB0ZXN0LgogICAgIGludCBzZXRGdWxs
Um9vdExheWVyRGFtYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3NldEZ1bGxSb290TGF5ZXJE
YW1hZ2VDb3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
ZXh0dXJlTWFuYWdlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0
dXJlTWFuYWdlclRlc3QuY3BwCmluZGV4IGQ1MzEzZjVkYzIzNTBhMWU4ODg5NjRlMTJkZWViNTU4
MzJmMmY4NzAuLjNhYTFjOWZmNDQyMDZhODgwMjRhNzIzNjkzZjRiMzg5YzUxMGRmMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5j
cHAKQEAgLTUzLDkgKzUzLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gVGV4dHVyZU1hbmFn
ZXI6Om1lbW9yeVVzZUJ5dGVzKG1fdGV4dHVyZVNpemUsIG1fdGV4dHVyZUZvcm1hdCkgKiB0ZXh0
dXJlQ291bnQ7CiAgICAgfQogCi0gICAgUGFzc093blB0cjxUZXh0dXJlTWFuYWdlcj4gY3JlYXRl
VGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heFRleHR1cmVzLCBzaXplX3QgcHJlZmVycmVkVGV4dHVy
ZXMpCisgICAgUGFzc093blB0cjxUZXh0dXJlTWFuYWdlcj4gY3JlYXRlVGV4dHVyZU1hbmFnZXIo
c2l6ZV90IG1heFRleHR1cmVzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYW5hZ2Vy
OjpjcmVhdGUodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZXNNZW1vcnlT
aXplKHByZWZlcnJlZFRleHR1cmVzKSwgMTAyNCk7CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKEludFNpemUoKSwgdGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwg
MTAyNCk7CiAgICAgfQogCiAgICAgYm9vbCByZXF1ZXN0VGV4dHVyZShUZXh0dXJlTWFuYWdlciog
bWFuYWdlciwgVGV4dHVyZVRva2VuIHRva2VuKQpAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgog
VEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgcmVxdWVzdFRleHR1cmVJblByZWZlcnJlZExpbWl0
KQogewogICAgIGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9IDg7Ci0gICAgT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKHBy
ZWZlcnJlZFRleHR1cmVzICogMiwgcHJlZmVycmVkVGV4dHVyZXMpOworICAgIE93blB0cjxUZXh0
dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBjcmVhdGVUZXh0dXJlTWFuYWdlcihwcmVmZXJy
ZWRUZXh0dXJlcyAqIDIpOwogICAgIFRleHR1cmVUb2tlbiB0b2tlbnNbcHJlZmVycmVkVGV4dHVy
ZXNdOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVkVGV4dHVyZXM7ICsraSkg
ewogICAgICAgICB0b2tlbnNbaV0gPSB0ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKTsKQEAgLTk2
LDcgKzk2LDcgQEAgVEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNl
ZWRpbmdQcmVmZXJyZWRMaW1pdCkKIHsKICAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4
OwogICAgIGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9IDQ7Ci0gICAgT3duUHRyPFRl
eHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKG1heFRl
eHR1cmVzLCBwcmVmZXJyZWRUZXh0dXJlcyk7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0
ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKG1heFRleHR1cmVzKTsKICAgICBU
ZXh0dXJlVG9rZW4gdG9rZW5zW21heFRleHR1cmVzXTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHByZWZlcnJlZFRleHR1cmVzOyArK2kpIHsKICAgICAgICAgdG9rZW5zW2ldID0gdGV4dHVy
ZU1hbmFnZXItPmdldFRva2VuKCk7CkBAIC0xMzUsOCArMTM1LDcgQEAgVEVTVF9GKFRleHR1cmVN
YW5hZ2VyVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRpbmdQcmVmZXJyZWRMaW1pdCkKIFRFU1Rf
RihUZXh0dXJlTWFuYWdlclRlc3QsIHJlcXVlc3RUZXh0dXJlRXhjZWVkaW5nTWF4TGltaXQpCiB7
CiAgICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVzID0gODsKLSAgICBjb25zdCBzaXplX3QgcHJl
ZmVycmVkVGV4dHVyZXMgPSA0OwotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIgPSBjcmVhdGVUZXh0dXJlTWFuYWdlcihtYXhUZXh0dXJlcywgcHJlZmVycmVkVGV4dHVy
ZXMpOworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBjcmVhdGVU
ZXh0dXJlTWFuYWdlcihtYXhUZXh0dXJlcyk7CiAgICAgVGV4dHVyZVRva2VuIHRva2Vuc1ttYXhU
ZXh0dXJlc107CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKSB7
CiAgICAgICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwpAQCAtMTY4
LDcgKzE2Nyw3IEBAIFRFU1RfRihUZXh0dXJlTWFuYWdlclRlc3QsIHJlZHVjZU1lbW9yeVRvTGlt
aXQpCiB7CiAgICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVzID0gODsKICAgICBjb25zdCBzaXpl
X3QgcHJlZmVycmVkVGV4dHVyZXMgPSA0OwotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBjcmVhdGVUZXh0dXJlTWFuYWdlcihtYXhUZXh0dXJlcywgcHJlZmVycmVk
VGV4dHVyZXMpOworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBj
cmVhdGVUZXh0dXJlTWFuYWdlcihtYXhUZXh0dXJlcyk7CiAgICAgVGV4dHVyZVRva2VuIHRva2Vu
c1ttYXhUZXh0dXJlc107CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsg
KytpKSB7CiAgICAgICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwpA
QCAtMTkzLDE1ICsxOTIsMTQgQEAgVEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgcmVkdWNlTWVt
b3J5VG9MaW1pdCkKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVz
IC0gdW5wcm90ZWN0ZWRUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNl
Qnl0ZXMoKSk7CiAKICAgICAvLyByZWR1Y2VNZW1vcnlUb0xpbWl0IGRvZXNuJ3QgY2hhbmdlIHRo
ZSBjdXJyZW50IG1lbW9yeSBsaW1pdHMuCi0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6
ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5tYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwot
ICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpLCB0ZXh0
dXJlTWFuYWdlci0+cHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcygpKTsKKyAgICBFWFBFQ1RfRVEo
dGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFs
bG9jYXRpb25MaW1pdEJ5dGVzKCkpOwogfQogCiBURVNUX0YoVGV4dHVyZU1hbmFnZXJUZXN0LCBz
ZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKQogewogICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlcyA9
IDg7CiAgICAgY29uc3Qgc2l6ZV90IHByZWZlcnJlZFRleHR1cmVzID0gNDsKLSAgICBPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIobWF4
VGV4dHVyZXMsIHByZWZlcnJlZFRleHR1cmVzKTsKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIobWF4VGV4dHVyZXMpOwogICAg
IFRleHR1cmVUb2tlbiB0b2tlbnNbbWF4VGV4dHVyZXNdOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbWF4VGV4dHVyZXM7ICsraSkgewogICAgICAgICB0b2tlbnNbaV0gPSB0ZXh0dXJlTWFu
YWdlci0+Z2V0VG9rZW4oKTsKQEAgLTIxNCw0MSArMjEyLDE2IEBAIFRFU1RfRihUZXh0dXJlTWFu
YWdlclRlc3QsIHNldE1heE1lbW9yeUxpbWl0Qnl0ZXMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB1bnByb3RlY3RlZFRleHR1cmVzOyArK2kpCiAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT51
bnByb3RlY3RUZXh0dXJlKHRva2Vuc1tpXSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4
TWVtb3J5TGltaXRCeXRlcyh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpKTsKKyAgICB0
ZXh0dXJlTWFuYWdlci0+c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXModGV4dHVyZXNNZW1v
cnlTaXplKG1heFRleHR1cmVzKSk7CiAgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSht
YXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0g
ICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlT
aXplKHByZWZlcnJlZFRleHR1cmVzKSk7CisgICAgdGV4dHVyZU1hbmFnZXItPnNldE1lbW9yeUFs
bG9jYXRpb25MaW1pdEJ5dGVzKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcykp
OwogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpLCB0
ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0
ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+bWF4
TWVtb3J5TGltaXRCeXRlcygpKTsKLX0KLQotVEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgc2V0
UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcykKLXsKLSAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVy
ZXMgPSA4OwotICAgIGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9IDQ7Ci0gICAgT3du
UHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2Vy
KG1heFRleHR1cmVzLCBwcmVmZXJyZWRUZXh0dXJlcyk7Ci0gICAgVGV4dHVyZVRva2VuIHRva2Vu
c1ttYXhUZXh0dXJlc107Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsg
KytpKSB7Ci0gICAgICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwot
ICAgICAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwg
dG9rZW5zW2ldKSk7Ci0gICAgfQotCi0gICAgY29uc3Qgc2l6ZV90IHVucHJvdGVjdGVkVGV4dHVy
ZXMgPSBwcmVmZXJyZWRUZXh0dXJlcyArIDE7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1
bnByb3RlY3RlZFRleHR1cmVzOyArK2kpCi0gICAgICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3Rl
Y3RUZXh0dXJlKHRva2Vuc1tpXSk7Ci0KLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXpl
KG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsK
LSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1h
bmFnZXItPm1heE1lbW9yeUxpbWl0Qnl0ZXMoKSk7Ci0KLSAgICAvLyBTZXR0aW5nIHByZWZlcnJl
ZCBtZW1vcnkgbGltaXQgb25seSB3b24ndCBmb3JjZSByZWR1Y2VNZW1vcnlUb0xpbWl0LgotICAg
IHRleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKHRleHR1cmVzTWVt
b3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcykpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9y
eVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVz
KCkpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0
dXJlTWFuYWdlci0+bWF4TWVtb3J5TGltaXRCeXRlcygpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVy
ZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPnByZWZlcnJl
ZE1lbW9yeUxpbWl0Qnl0ZXMoKSk7CisgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShw
cmVmZXJyZWRUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBbGxvY2F0aW9uTGltaXRC
eXRlcygpKTsKIH0KIAogVEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgdGV4dHVyZU1hbmFnZXJE
ZXN0cm95ZWRCZWZvcmVNYW5hZ2VkVGV4dHVyZSkKIHsKLSAgICBPd25QdHI8VGV4dHVyZU1hbmFn
ZXI+IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIoMSwgMSk7CisgICAgT3du
UHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2Vy
KDEpOwogICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbWFuYWdlZFRleHR1cmUgPSBNYW5hZ2Vk
VGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyLmdldCgpKTsKIAogICAgIEludFNpemUgc2l6
ZSg1MCwgNTApOwpAQCAtMjY4LDggKzI0MSw4IEBAIFRFU1RfRihUZXh0dXJlTWFuYWdlclRlc3Qs
IHRleHR1cmVNYW5hZ2VyRGVzdHJveWVkQmVmb3JlTWFuYWdlZFRleHR1cmUpCiAKIFRFU1RfRihU
ZXh0dXJlTWFuYWdlclRlc3QsIHRleHR1cmVNb3ZlZFRvTmV3TWFuYWdlcikKIHsKLSAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyT25lID0gY3JlYXRlVGV4dHVyZU1hbmFn
ZXIoMSwgMSk7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlclR3byA9
IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKDEsIDEpOworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXJPbmUgPSBjcmVhdGVUZXh0dXJlTWFuYWdlcigxKTsKKyAgICBPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyVHdvID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIo
MSk7CiAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtYW5hZ2VkVGV4dHVyZSA9IE1hbmFnZWRU
ZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXJPbmUuZ2V0KCkpOwogCiAgICAgSW50U2l6ZSBz
aXplKDUwLCA1MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
aWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA1YjdjYjBkZjc1Yzk3MjQ4OWNiYzFjZTI0
Nzc1YmI0ZTljOGYxYmQ0Li42NjU5MDA1YzU4OTJhNTc4MmRjNzdjMWIzNTYyOTFjYjRiODBjN2Zj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKIAogVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKIHsKLSAgICBPd25QdHI8VGV4dHVy
ZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQq
MTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKEludFNpemUoKSwgNCoxMDI0KjEw
MjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7
CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5
ZXJJbXBsKDApKSk7CkBAIC05OSw3ICs5OSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcHVzaERpcnR5VGlsZXMpCiAKIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaE9j
Y2x1ZGVkRGlydHlUaWxlcykKIHsKLSAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQs
IDEwMjQpOworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKEludFNpemUoKSwgNCoxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJl
ZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGls
ZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CkBAIC0x
NDMsNyArMTQzLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2NjbHVkZWRE
aXJ0eVRpbGVzKQogCiBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGls
ZXMpCiB7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1
cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZShJbnRTaXplKCksIDQqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFk
b3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwpAQCAtMTYyLDggKzE2Miw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKICAgICBFWFBF
Q1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7CiAKICAgICB0ZXh0dXJlTWFuYWdl
ci0+ZXZpY3RBbmREZWxldGVBbGxUZXh0dXJlcygmYWxsb2NhdG9yKTsKLSAgICB0ZXh0dXJlTWFu
YWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyg0KjEwMjQqMTAyNCk7Ci0gICAgdGV4dHVyZU1h
bmFnZXItPnNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoNCoxMDI0KjEwMjQpOworICAgIHRl
eHR1cmVNYW5hZ2VyLT5zZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyg0KjEwMjQqMTAyNCk7
CiAKICAgICAvLyBUaGlzIHNob3VsZCBkcm9wIHRoZSB0aWxlcyBvbiB0aGUgaW1wbCB0aHJlYWQu
CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKQEAgLTE4Myw3
ICsxODIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGlsZXMp
CiAKIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogewot
ICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPFRl
eHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoSW50
U2l6ZSgpLCA0KjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hy
b21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVy
ZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihu
ZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKQEAgLTIzNyw3ICsyMzYsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKIAogVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKIHsKLSAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZSgxMDI0KjEwMjQsIDEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPFRleHR1cmVNYW5h
Z2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoSW50U2l6ZSgpLCAx
MDI0KjEwMjQsIDEwMjQpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFk
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllcjEgPSBhZG9wdFJlZihu
ZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIE93
blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsMShhZG9wdFB0cihuZXcgRmFrZUND
VGlsZWRMYXllckltcGwoMCkpKTsKQEAgLTMxNSw3ICszMTQsNyBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogCiBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRlZE9jY2x1ZGVkVGlsZXMpCiB7Ci0gICAg
T3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpj
cmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8VGV4dHVy
ZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShJbnRTaXpl
KCksIDQqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFu
YWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwog
ICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBG
YWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwpAQCAtMzQwLDcgKzMzOSw3IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludGVkT2NjbHVkZWRUaWxlcykKIAogVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQog
ewotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUo
SW50U2l6ZSgpLCA0KjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVy
Q2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4
dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRo
cmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0
cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKQEAgLTM2Myw3ICszNjIsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc01hcmtlZERpcnR5RHVyaW5nUGFpbnQp
CiAKIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0
eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIpCiB7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0
ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAy
NCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
ID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShJbnRTaXplKCksIDQqMTAyNCoxMDI0LCAxMDI0KTsK
ICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIxID0gYWRvcHRSZWYobmV3
IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBSZWZQ
dHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIyID0gYWRvcHRSZWYobmV3IEZha2VUaWxl
ZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKQEAgLTM5NSw3ICszOTQsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uTmV4
dExheWVyKQogCiBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFy
a2VkRGlydHlEdXJpbmdQYWludE9uUHJldmlvdXNMYXllcikKIHsKLSAgICBPd25QdHI8VGV4dHVy
ZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQq
MTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKEludFNpemUoKSwgNCoxMDI0KjEw
MjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllcjEgPSBh
ZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkp
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllcjIgPSBhZG9wdFJlZihu
ZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwpAQCAtNDM1LDcgKzQzNCw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgLy8g
V2UgaGF2ZSBlbm91Z2ggbWVtb3J5IGZvciBvbmx5IHRoZSB2aXNpYmxlIHJlY3QsIHNvIHdlIHdp
bGwgcnVuIG91dCBvZiBtZW1vcnkgaW4gZmlyc3QgaWRsZSBwYWludC4KICAgICBpbnQgbWVtb3J5
TGltaXQgPSA0ICogMTAwICogMTAwOyAvLyAyIHRpbGVzLCA0IGJ5dGVzIHBlciBwaXhlbC4KIAot
ICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKG1lbW9yeUxpbWl0LCBtZW1vcnlMaW1pdCAvIDIsIDEwMjQpOworICAgIE93blB0
cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRl
KEludFNpemUoKSwgbWVtb3J5TGltaXQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXll
ckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRl
eHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxU
aHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQ
dHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CkBAIC00NjgsNyArNDY3LDcgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKIAogVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJvU2l6ZWRMYXllcikKIHsKLSAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZSgyMDAwMCwgMTAwMDAsIDEwMjQpOworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKEludFNpemUoKSwgMjAwMDAsIDEw
MjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVm
KG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBs
KDApKSk7CkBAIC01MDgsNyArNTA3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBp
ZGxlUGFpbnRaZXJvU2l6ZWRMYXllcikKIAogVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBp
ZGxlUGFpbnRaZXJvU2l6ZWRBbmltYXRpbmdMYXllcikKIHsKLSAgICBPd25QdHI8VGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgyMDAwMCwgMTAw
MDAsIDEwMjQpOworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKEludFNpemUoKSwgMjAwMDAsIDEwMjQpOwogICAgIFJlZlB0
cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRM
YXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CkBAIC01NTQs
NyArNTUzLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNp
YmxlTGF5ZXJzKQogICAgIEludFNpemUgY29udGVudEJvdW5kcygxMDAsIDEwMCk7CiAgICAgSW50
UmVjdCBjb250ZW50UmVjdChJbnRQb2ludDo6emVybygpLCBjb250ZW50Qm91bmRzKTsKIAotICAg
IE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDIwMDAwLCAxMDAwMCwgMTAyNCk7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0
ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoSW50U2l6ZSgpLCAyMDAwMCwg
MTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRS
ZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUND
VGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllcklt
cGwoMCkpKTsKQEAgLTYwNyw3ICs2MDYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SGF2ZU91dGVyVGls
ZXMoRmFrZUNDVGlsZWRMYXllckltcGwqIGxheWVySW1wbCwgaW50IHdpZHRoLCBpbnQgaAogCiBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdM
YXllcnMpCiB7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoODAwMCo4MDAwKjgsIDgwMDAqODAwMCo0LCAxMDI0KTsKKyAg
ICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6
OmNyZWF0ZShJbnRTaXplKCksIDgwMDAqODAwMCo4LCAxMDI0KTsKICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKIAogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsK
QEAgLTY2MSw3ICs2NjAsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWlu
dE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAKIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogewotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEw
MjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoSW50U2l6ZSgpLCA0KjEwMjQqMTAyNCwgMTAyNCk7
CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3
IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRM
YXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkp
KTsKQEAgLTcxMSw3ICs3MTAsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlm
eVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAgICAvLyBUaGUgdXBkYXRl
UmVjdCAodGhhdCBpbmRpY2F0ZXMgd2hhdCB3YXMgYWN0dWFsbHkgcGFpbnRlZCkgc2hvdWxkIGJl
IGluCiAgICAgLy8gbGF5ZXIgc3BhY2UsIG5vdCB0aGUgY29udGVudCBzcGFjZS4KIAotICAgIE93
blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3Jl
YXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPFRleHR1cmVN
YW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoSW50U2l6ZSgp
LCA0KjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyV2l0aFNjYWxl
ZEJvdW5kcz4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJXaXRoU2NhbGVkQm91
bmRzKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0
ZXI7CkBAIC03NDMsNyArNzQyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJp
ZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAKIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2Vz
KQogewotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3du
UHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGUoSW50U2l6ZSgpLCA0KjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExh
eWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0o
dGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9w
dFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKQEAgLTgwMiw3ICs4MDEsNyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBzRHJhd0dldHNSZXNldCkKIAogICAgIC8v
IFdlIGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSBvbmUgb2YgdGhlIHR3byBsYXllcnMuCiAg
ICAgaW50IG1lbW9yeUxpbWl0ID0gNCAqIDMwMCAqIDMwMDsgLy8gNCBieXRlcyBwZXIgcGl4ZWwu
Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5h
Z2VyOjpjcmVhdGUobWVtb3J5TGltaXQsIG1lbW9yeUxpbWl0LCBtZW1vcnlMaW1pdCk7CisgICAg
T3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpj
cmVhdGUoSW50U2l6ZSgpLCBtZW1vcnlMaW1pdCwgbWVtb3J5TGltaXQpOwogCiAgICAgUmVmUHRy
PEZha2VUaWxlZExheWVyQ2hyb21pdW0+IHJvb3RMYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGls
ZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgUmVmUHRyPEZha2VU
aWxlZExheWVyQ2hyb21pdW0+IGNoaWxkTGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwpAQCAtODE5LDcgKzgxOCw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogCiAgICAgY2NM
YXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICBjY0xheWVyVHJlZUhv
c3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgdGV4dHVyZU1hbmFn
ZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXQpOworICAgIHRleHR1cmVNYW5h
Z2VyLT5zZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhtZW1vcnlMaW1pdCk7CiAgICAgY2NM
YXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAKICAgICAvLyBXZSdsbCBza2lw
IHRoZSByb290IGxheWVyLgpAQCAtODQyLDcgKzg0MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogCiBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHJlc2l6ZVRvU21hbGxlcikKIHsKLSAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg2MCoxMDI0KjEwMjQsIDYwKjEwMjQq
MTAyNCwgMTAyNCk7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9
IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoSW50U2l6ZSgpLCA2MCoxMDI0KjEwMjQsIDEwMjQpOwog
ICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBG
YWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyOwogCkBAIC04NTYsNyArODU1LDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCByZXNpemVUb1NtYWxsZXIpCiAKIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgaHVnZUxheWVyVXBkYXRlQ3Jhc2gpCiB7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNjAqMTAyNCoxMDI0LCA2
MCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKEludFNpemUoKSwgNjAqMTAyNCoxMDI0LCAx
MDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJl
ZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAg
IENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKIApAQCAtODgxLDcgKzg4MCw3IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgSW50U2l6ZSBjb250ZW50
Qm91bmRzKDMwMCwgMjAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIGNvbnRlbnRCb3VuZHMpOwogCi0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNjAqMTAyNCoxMDI0LCA2MCoxMDI0KjEw
MjQsIDEwMjQpOworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKEludFNpemUoKSwgNjAqMTAyNCoxMDI0LCAxMDI0KTsKICAg
ICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFr
ZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIGxheWVyLT5z
ZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9p
bnQoMTUwLCAxNTApKTsKQEAgLTk4Miw3ICs5ODEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogCiBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRp
bGVzUGFpbnRlZFdpdGhvdXRPY2NsdXNpb24pCiB7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIq
MTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5h
Z2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShJbnRTaXplKCksIDQqMTAyNCoxMDI0LCAxMDI0
KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihu
ZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIEND
VGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKIApAQCAtOTk2LDcgKzk5NSw3IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aG91dE9jY2x1c2lvbikKIAogVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQogewotICAg
IE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPFRleHR1
cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoSW50U2l6
ZSgpLCA0KjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21p
dW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1h
bmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOwogICAg
IENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKQEAgLTEwNDEsNyArMTA0MCw3IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikKIAogVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJs
aXR5Q29uc3RyYWludHMpCiB7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFu
YWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAx
MDI0KTsKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZShJbnRTaXplKCksIDQqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQ
dHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXIgb2NjbHVkZWQ7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwpAQCAtMTA5
Miw3ICsxMDkxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRX
aXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiAKIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKIHsKLSAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxUZXh0dXJl
TWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKEludFNpemUo
KSwgNCoxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVt
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5h
Z2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKICAgICBD
Q1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CkBAIC0xMTI1LDcgKzExMjQsNyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJbnZhbGlkYXRpb24pCiAK
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFu
ZFRyYW5zZm9ybXMpCiB7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0
KTsKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1h
bmFnZXI6OmNyZWF0ZShJbnRTaXplKCksIDQqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRy
YWNrZXIgb2NjbHVkZWQ7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwpAQCAtMTE1Myw3
ICsxMTUyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRo
T2NjbHVzaW9uQW5kVHJhbnNmb3JtcykKIAogVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0
aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKIHsKLSAgICBPd25QdHI8VGV4dHVy
ZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQq
MTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKEludFNpemUoKSwgNCoxMDI0KjEw
MjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7
CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKICAgICBDQ1RleHR1cmVVcGRh
dGVyIHVwZGF0ZXI7CkBAIC0xMjE2LDcgKzEyMTUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogCiBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogewotICAgIE93
blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3Jl
YXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPFRleHR1cmVN
YW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoSW50U2l6ZSgp
LCA0KjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+
IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOwogICAgIEND
VGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKQEAgLTEzMTAsNyArMTMwOSw3IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAKIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcGl4ZWxzUGFpbnRlZE1ldHJpY3MpCiB7Ci0gICAgT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUo
NCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFn
ZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShJbnRTaXplKCksIDQq
MTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5n
ZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAgICAgQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139514</attachid>
            <date>2012-04-30 14:18:49 -0700</date>
            <delta_ts>2012-05-02 00:01:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84270-20120430171848.patch</filename>
            <type>text/plain</type>
            <size>17047</size>
            <attacher name="Michal Mocny">mmocny</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDcwNWRmNDRlYjEwYTQ1
MzY3NjhlOGRjOTYwODlmOWM4MjQ1MjRiNy4uZTlhYjNlMTFkNTg2NDNiNWI4ODJiZWE1ZGYzMTc2
Mzg3N2EyZDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA0LTMwICBNaWNo
YWwgTW9jbnkgIDxtbW9jbnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFNldCBj
b250ZW50cyB0ZXh0dXJlIG1hbmFnZXIgcHJlZmVycmVkIG1lbW9yeSBsaW1pdCBiYXNlZCBvbiBH
cHVNZW1vcnlNYW5hZ2VyIHN1Z2dlc3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJHcHVNZW1v
cnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrQWRhcHRlcjo6b25HcHVNZW1vcnlBbGxvY2F0aW9u
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2lu
RHJhd2luZ0ZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6OnNldE1lbW9yeUFsbG9jYXRp
b25MaW1pdEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmg6CisgICAgICAgIChUZXh0dXJlTWFuYWdl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld3BvcnRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0Q29udGVudHNNZW1v
cnlBbGxvY2F0aW9uTGltaXRCeXRlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAg
KENDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6cG9zdFNl
dENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRPbkltcGxUaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aHJlYWRQcm94eTo6cG9zdFNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXNUb01h
aW5UaHJlYWRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RocmVhZFByb3h5OjpzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKwogMjAxMi0wNC0zMCAgTm8nYW0gUm9zZW50
aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgogCiAgICAgICAgIFtUZXhtYXBdIFRleHR1
cmVNYXBwZXJMYXllciB1c2VzIGludGVybWVkaWF0ZSBzdXJmYWNlcyB0b28gZWFnZXJseQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxODViZmRjNGYyZjFmZjlmYzQ1OTAxZjM4NGY1NjRh
ZWY5MzUwMDg3Li44M2M4ZjgyMzRiMmJhYTY5OTIwN2ZiNWZkNzc5MDViN2IzYTYyZTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA0LTMwICBNaWNo
YWwgTW9jbnkgIDxtbW9jbnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFNldCBj
b250ZW50cyB0ZXh0dXJlIG1hbmFnZXIgcHJlZmVycmVkIG1lbW9yeSBsaW1pdCBiYXNlZCBvbiBH
cHVNZW1vcnlNYW5hZ2VyIHN1Z2dlc3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgor
ICAgICAgICAqIHRlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwOgorCiAyMDEyLTA0
LTMwICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIFVzZSBuZXcgc3ludGF4IHRvIGNhbGwgY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlIGRp
cmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA4YTJhZmQx
YzEyNTM5OWQ1M2NhMWVkZjcyNGU2ODJiOGRiYTFmYWQ5Li4zMGZhMzkwODAzOTMyNTA2MmEwZDll
Y2FkMmQ0MzJjOWQ1OGRkY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKQEAgLTE4MCw2ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2xheWVyUmVuZGVy
ZXItPmRpc2NhcmRGcmFtZWJ1ZmZlcigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2xh
eWVyUmVuZGVyZXItPmVuc3VyZUZyYW1lYnVmZmVyKCk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJl
ci0+bV9jbGllbnQtPnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoYWxsb2Nh
dGlvbi5ncHVSZXNvdXJjZVNpemVJbkJ5dGVzKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0zOTMs
NiArMzk0LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2luRHJhd2luZ0ZyYW1l
KENDUmVuZGVyU3VyZmFjZSogZGVmYXVsdFJlbmRlclN1cmYKICAgICBBU1NFUlQobV9kZWZhdWx0
UmVuZGVyU3VyZmFjZSk7CiAKICAgICBzaXplX3QgY29udGVudHNNZW1vcnlVc2VCeXRlcyA9IG1f
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKTsKKyAgICAv
LyBGSVhNRTogUmVhZCB0aGUgYWN0dWFsIFRleHR1cmVNYW5hZ2VyIG1heE1lbW9yeUxpbWl0Qnl0
ZXMgdmFsdWUsIGRvIG5vdCBhc3N1bWUgaXQgaXMgdGhlIGRlZmF1bHQuCiAgICAgc2l6ZV90IG1h
eExpbWl0ID0gVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKTsK
ICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRl
cyhtYXhMaW1pdCAtIGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oCmluZGV4IDQ0YmYyOGQ5NDgyOGI3ZmMxZmFmZGQ4YjljZjlmZGY5NGY4
YTEyOWUuLjUzMGJhODQ4ZTk0NTQ2MmRmY2EyMjYzYmNmMDliNTNhZTkyNjJjODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9u
U3dhcEJ1ZmZlcnNDb21wbGV0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RM
YXllckRhbWFnZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNNZW1vcnlBbGxv
Y2F0aW9uTGltaXRCeXRlcyhzaXplX3QpID0gMDsKIH07CiAKIC8vIENsYXNzIHRoYXQgaGFuZGxl
cyBkcmF3aW5nIG9mIGNvbXBvc2l0ZWQgcmVuZGVyIGxheWVycyB1c2luZyBHTC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVNYW5hZ2VyLmNwcAppbmRleCBkNGQ4YzE4MmNmZTUyNWY1NjAwODhhYTEyNjY5OGQ5ZDkzMjRh
ZTEyLi43OWI1ZGE5YjIxOTY4MTU3OWNmMjZkMThlMzNlOTdjOTY2ZjAyNDhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZU1hbmFnZXIuY3BwCkBAIC0xMDUsNiArMTA1LDE2IEBAIFRleHR1cmVNYW5hZ2VyOjp+VGV4
dHVyZU1hbmFnZXIoKQogICAgICAgICAoKml0KS0+Y2xlYXJNYW5hZ2VyKCk7CiB9CiAKK3ZvaWQg
VGV4dHVyZU1hbmFnZXI6OnNldE1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKHNpemVfdCBtZW1v
cnlMaW1pdEJ5dGVzKQoreworICAgIHNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXRC
eXRlcyk7CisjaWYgZGVmaW5lZChPU19BTkRST0lEKQorICAgIHNldFByZWZlcnJlZE1lbW9yeUxp
bWl0Qnl0ZXMobWVtb3J5TGltaXRCeXRlcyAvIDIpOworI2Vsc2UKKyAgICBzZXRQcmVmZXJyZWRN
ZW1vcnlMaW1pdEJ5dGVzKG1lbW9yeUxpbWl0Qnl0ZXMpOworI2VuZGlmCit9CisKIHZvaWQgVGV4
dHVyZU1hbmFnZXI6OnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxpbWl0Qnl0
ZXMpCiB7CiAgICAgcmVkdWNlTWVtb3J5VG9MaW1pdChtZW1vcnlMaW1pdEJ5dGVzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0
dXJlTWFuYWdlci5oCmluZGV4IDcwZDA4NjFjNTc4NmZiZWMwMjViNGM5NmM5MWJlOGJkZGZkNThk
Y2EuLjMxNDc2MzVhODBkZmQ4MTk5NTJlNjFkZjY4Y2Y1MWM5YjM1ZGU2YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZU1hbmFnZXIuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgc2l6ZV90
IG1lbW9yeVVzZUJ5dGVzKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpOwogCisgICAg
dm9pZCBzZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QpOwogICAgIHZvaWQgc2V0
TWF4TWVtb3J5TGltaXRCeXRlcyhzaXplX3QpOwogICAgIHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5
dGVzKCkgeyByZXR1cm4gbV9tYXhNZW1vcnlMaW1pdEJ5dGVzOyB9CiAgICAgdm9pZCBzZXRQcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcAppbmRleCAzNjlhNGMzZTQxZDJlMDhkZDZiNDgxYTAzMzkxMDkyOTAxZGRkYWE2Li4wY2Y4
MGIyMTlmNDNkNjJhYTk1Njc4MTdkY2Y3MDI0NDcyNzU1ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKQEAgLTM1NywxMCArMzU3LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgaWYgKHZp
ZXdwb3J0U2l6ZSA9PSBtX3ZpZXdwb3J0U2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KG1fY29udGVudHNUZXh0dXJlTWFuYWdlcikgewotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1h
bmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5
dGVzKHZpZXdwb3J0U2l6ZSkpOwotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNl
dFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5
dGVzKHZpZXdwb3J0U2l6ZSkpOwotICAgIH0KICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0
U2l6ZTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQpAQCAtNDE3LDYgKzQxMywxNiBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdEltcGwqIGhvc3RJbQogICAgIH0KIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNl
dENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKQoreworICAg
IEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX2xheWVyUmVuZGVy
ZXJJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZW50c1RleHR1cmVN
YW5hZ2VyLT5zZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhieXRlcyk7Cit9CisKKwogdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUm
IHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJh
dGlvblNlYykKIHsKICAgICBtX3Byb3h5LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQ
b3NpdGlvbiwgdXNlQW5jaG9yLCBzY2FsZSwgZHVyYXRpb25TZWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaAppbmRleCAyNWJkYjUwYjVjNjNiYTc1ZmRhYWYzZWUyNDg4ZmQwNWQ1NGZmYjk2
Li40MDYxMmVhZjA5NzZhZGNmZWFlMTMwYzc1M2E5MmFmYjk2OTk4MTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaApAQCAtMjE0LDYgKzIxNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3Ig
PSBjb2xvcjsgfQogCiAgICAgVGV4dHVyZU1hbmFnZXIqIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIo
KSBjb25zdDsKKyAgICB2b2lkIHNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMo
c2l6ZV90KTsKIAogICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsg
fQogICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAKaW5kZXggMTQ3YjJjNGY4MzJmYWJiYjQ1NjdkM2ExY2ZhMmRkYWM3ZTg1OTgw
OC4uNWU0Yzc1MjM2NDQwYjA1NWE2MTU2MzMzZjZkMmMxNDk2NWViNjFkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTQwMCw2ICs0MDAsMTEgQEAgYm9vbCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Q29udGVudHNN
ZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QgYnl0ZXMpCit7CisgICAgbV9jbGllbnQt
PnBvc3RTZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzVG9NYWluVGhyZWFkT25J
bXBsVGhyZWFkKGJ5dGVzKTsKK30KKwogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5
ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJU
cmVlSG9zdEltcGw6OmRyYXdMYXllcnMiLCB0aGlzLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaAppbmRleCA0NDIxZTQ5YzA4NjMyNTgzNjI1OWNlYTc5MTJjNjBkMjY5OTlk
YzNjLi40NGU4OWEwOGM5M2ZiYjQyYjEwZWI3OWY1Zjg4YTI5NzFlODg2MDA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25Q
dHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBwb3N0U2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRl
c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChzaXplX3QpID0gMDsKIH07CiAKIC8vIENDTGF5ZXJU
cmVlSG9zdEltcGwgb3ducyB0aGUgQ0NMYXllckltcGwgdHJlZSBhcyB3ZWxsIGFzIGFzc29jaWF0
ZWQgcmVuZGVyaW5nIHN0YXRlCkBAIC0xMDksNiArMTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBvblN3
YXBCdWZmZXJzQ29tcGxldGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJv
b3RMYXllckRhbWFnZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c01l
bW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKHNpemVfdCkgT1ZFUlJJREU7CiAKICAgICAvLyBJbXBs
ZW1lbnRhdGlvbgogICAgIGJvb2wgY2FuRHJhdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmNwcAppbmRleCA1NjFiMTQyYzZhMjFkOGM3NTkxYTYyMGM0NGZkYmJjNzIxZDE2
MDYzLi41MmFkMGQzNzUxMWE5OGQ2ODA5MjU0Y2M2NjI0ZWVhNWI2YjM2Mzc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMjc5LDYgKzI3OSwxNSBAQCB2b2lk
IENDU2luZ2xlVGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbklt
cGxUaHJlYWQoUGFzc093blB0cgogICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0QW5pbWF0aW9uRXZl
bnRzKGV2ZW50cywgd2FsbENsb2NrVGltZSk7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94
eTo6cG9zdFNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRP
bkltcGxUaHJlYWQoc2l6ZV90IGJ5dGVzKQoreworICAgIC8vIEZJWE1FOiB0aGlzIGlzIGNhbGxl
ZCBhcy1pZi1mcm9tIHRoZSBtYWluIHRocmVhZCBpbiBzaW5nbGUgdGhyZWFkZWQgbW9kZSwgc2lu
Y2UgTFJDIEdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2sgZG9lcyBub3QgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkCisgICAgLy8gQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgp
KTsKKyAgICAvLyBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWQgbWFpbjsKKyAgICBBU1NFUlQobV9s
YXllclRyZWVIb3N0KTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnNldENvbnRlbnRzTWVtb3J5QWxs
b2NhdGlvbkxpbWl0Qnl0ZXMoYnl0ZXMpOworfQorCiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBz
Y2hlZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hlZHVs
aW5nKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggZmI2MDU0ZmM0ZDdlODUx
ZTlhOWY2MjJhNTZkMjY2ZjY4MGE0OTRiNy4uMTU2YmRkY2ExMTg3OWJlOTcxNWRlM2QwYjljZTM0
NWRhMDVmZTgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtNzIs
NiArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBs
VGhyZWFkKCkgT1ZFUlJJREUgeyBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0KCk7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7
IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBw
b3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NB
bmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHBvc3RTZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVz
VG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKHNpemVfdCkgT1ZFUlJJREU7CiAKICAgICAvLyBDYWxs
ZWQgYnkgdGhlIGxlZ2FjeSBwYXRoIHdoZXJlIFJlbmRlcldpZGdldCBkb2VzIHRoZSBzY2hlZHVs
aW5nLgogICAgIHZvaWQgY29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAKaW5kZXggYWNiZmE1M2VhMmRmM2M0NWNjOGJmM2M0ODE1MjExZmFlYzI1YWY3YS4u
MWE3MDYxODllNjFjN2M2OTIxMjIwM2Y3YmZjNjRlNTI4NDUxNDIzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKQEAgLTMyMSw2ICszMjEsMTIgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpw
b3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NB
bmkKICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRo
aXMsICZDQ1RocmVhZFByb3h5OjpzZXRBbmltYXRpb25FdmVudHMsIGV2ZW50cywgd2FsbENsb2Nr
VGltZSkpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnBvc3RTZXRDb250ZW50c01lbW9yeUFs
bG9jYXRpb25MaW1pdEJ5dGVzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKHNpemVfdCBieXRlcykK
K3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIG1fbWFpblRocmVhZFByb3h5LT5w
b3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldENvbnRl
bnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMsIGJ5dGVzKSk7Cit9CisKIHZvaWQgQ0NUaHJl
YWRQcm94eTo6c2V0TmVlZHNSZWRyYXcoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CkBAIC03MTksNiArNzI1LDE0IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0aW9uRXZl
bnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+IGV2ZW50CiAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRBbmltYXRpb25FdmVudHMoZXZlbnRzLCB3YWxsQ2xvY2tUaW1lKTsKIH0K
IAordm9pZCBDQ1RocmVhZFByb3h5OjpzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5
dGVzKHNpemVfdCBieXRlcykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
ICghbV9sYXllclRyZWVIb3N0KQorICAgICAgICByZXR1cm47CisgICAgbV9sYXllclRyZWVIb3N0
LT5zZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKGJ5dGVzKTsKK30KKwogY2xh
c3MgQ0NUaHJlYWRQcm94eUNvbnRleHRSZWNyZWF0aW9uVGltZXIgOiBwdWJsaWMgQ0NUaW1lciwg
Q0NUaW1lckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaHJlYWRQ
cm94eUNvbnRleHRSZWNyZWF0aW9uVGltZXI+IGNyZWF0ZShDQ1RocmVhZFByb3h5KiBwcm94eSkg
eyByZXR1cm4gYWRvcHRQdHIobmV3IENDVGhyZWFkUHJveHlDb250ZXh0UmVjcmVhdGlvblRpbWVy
KHByb3h5KSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCBkZTFiMWYyZGJlMDc2OTEw
NjhlZWQyYjA3MjJjNzJkYTMwODM5ZmI0Li4yOTE1YTgxMTllN2ZjNGE2OGUyYTNmMjI1MDc3ZjI5
Zjg5OTdkN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC04MSw2ICs4MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9u
SW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdh
bGxDbG9ja1RpbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwb3N0U2V0Q29udGVudHNN
ZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlc1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChzaXplX3Qp
IE9WRVJSSURFOwogCiAgICAgLy8gQ0NTY2hlZHVsZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAg
ICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpIE9WRVJSSURFOwpAQCAtMTE2LDYgKzExNyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKICAgICB2b2lkIGRpZENv
bXBsZXRlU3dhcEJ1ZmZlcnMoKTsKICAgICB2b2lkIHNldEFuaW1hdGlvbkV2ZW50cyhQYXNzT3du
UHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOworICAg
IHZvaWQgc2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QpOwogICAg
IHZvaWQgYmVnaW5Db250ZXh0UmVjcmVhdGlvbigpOwogICAgIHZvaWQgdHJ5VG9SZWNyZWF0ZUNv
bnRleHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCAxMDE4ZTE1YTA1OGUxODgyYjJiNTkxOTI0
NTRkZTM1Mjc0ZTkwOTg2Li44N2MwMGQ3ZmU3NGNhNzNmOTMxMTcyYzQ0MjA3ZGZiZTgwMzk0OTM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyBtX2RpZFJlcXVl
c3RSZWRyYXcgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBs
VGhyZWFkKCkgT1ZFUlJJREUgeyBtX2RpZFJlcXVlc3RDb21taXQgPSB0cnVlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFz
c093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBP
VkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFNldENvbnRlbnRzTWVtb3J5QWxsb2Nh
dGlvbkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoc2l6ZV90KSBPVkVSUklERSB7
IH0KIAogICAgIHN0YXRpYyB2b2lkIGV4cGVjdENsZWFyZWRTY3JvbGxEZWx0YXNSZWN1cnNpdmUo
Q0NMYXllckltcGwqIGxheWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDk5M2Jh
OTUzMDhiNWEzN2RmYTMzOTRlNmZhMzgwYmI5OTg4ZTgyMGEuLmRkYWIxNzU2NGM3MTVjNWE2YzQ0
NDM4Mjk4MDgwZDdiYTc5YTBhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNzYsNiArNzYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpIE9WRVJSSURFIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlKCkgT1ZFUlJJREUgeyBt
X3NldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCsrOyB9CisgICAgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90KSBPVkVSUklERSB7IH0KIAog
ICAgIC8vIE1ldGhvZHMgYWRkZWQgZm9yIHRlc3QuCiAgICAgaW50IHNldEZ1bGxSb290TGF5ZXJE
YW1hZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50
OyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139686</attachid>
            <date>2012-05-01 14:51:13 -0700</date>
            <delta_ts>2012-05-02 06:24:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84270-20120501175111.patch</filename>
            <type>text/plain</type>
            <size>18087</size>
            <attacher name="Michal Mocny">mmocny</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg3NzQ0MGUwYTdjYjM3
NjM4ZjVhYzBjZDQ4NzJjYTk3YmIzZDUyZS4uZDc1N2NmZTNmZWU0OGFmY2JlZTQ1NzQ3ZTIxZDEx
YjE5MDE1ZDBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA0LTMwICBNaWNo
YWwgTW9jbnkgIDxtbW9jbnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFNldCBj
b250ZW50cyB0ZXh0dXJlIG1hbmFnZXIgcHJlZmVycmVkIG1lbW9yeSBsaW1pdCBiYXNlZCBvbiBH
cHVNZW1vcnlNYW5hZ2VyIHN1Z2dlc3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZXMgdGhlIGNvbnRlbnQgdGV4dHVyZSBtYW5hZ2VyIG1l
bW9yeSBsaW1pdHMgYmFzZWQgb24gR3B1TWVtb3J5TWFuYWdlciBtZW1vcnkgYWxsb2NhdGlvbiBz
dWdnZXN0aW9ucy4KKworICAgICAgICBUaGUgbWVtb3J5IGFsbG9jYXRpb24gc2l6ZSAoaW4gYnl0
ZXMpIGlzIGZlZCBmcm9tIExheWVyUmVuZGVyZXJDaHJvbWl1bSBtZW1vcnkgYWxsb2NhdGlvbiBj
aGFuZ2VkIGNhbGxiYWNrCisgICAgICAgIGhhbmRsZXIgdG8gQ0NMYXllclRyZWVIb3N0LiAgQXQg
dGhhdCBwb2ludCB3ZSBhZGp1c3QgdGhlIGxpbWl0cywgdXNpbmcgdGhlIGV4aXN0aW5nIG5vdGlv
bnMgb2YgcHJlZmVycmVkIGFuZAorICAgICAgICBtYXggbGltaXRzLgorCisgICAgICAgIE9uIGFu
ZHJvaWQsIHRoZSBwcmVmZXJyZWQgbGltaXQgaXMgaGFsZiB0aGUgbWF4aW11bSAoYXMgaXQgaGFz
IGFsd2F5cyBiZWVuKSwgYnV0IG9uIGFsbCBvdGhlciBwbGF0Zm9ybXMgdGhlCisgICAgICAgIHBy
ZWZlcnJlZCBsaW1pdCBpcyBub3cgZXF1YWwgdG8gbWF4LCBpbiBvcmRlciB0byBhbGxvdyBtb3Jl
IGFncmVzc2l2ZSBwcmVwYWludGluZy4KKworICAgICAgICBGaW5hbGx5LCBhbmRyb2lkIGhhcyBt
ZW1vcnkgY29uc3RyYWludHMgZGVwZW5kYW50IG9uIHZpZXdwb3J0U2l6ZSwgYnV0IHRoYXQgbG9n
aWMgaGFzIGJlZW4gcHVzaGVkIGludG8KKyAgICAgICAgdGhlIEdwdU1lbW9yeU1hbmFnZXIuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckdwdU1lbW9yeUFsbG9jYXRp
b25DaGFuZ2VkQ2FsbGJhY2tBZGFwdGVyOjpvbkdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVnaW5EcmF3aW5nRnJh
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYW5hZ2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRWaWV3cG9ydFNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRDb250ZW50c01lbW9yeUFsbG9jYXRp
b25MaW1pdEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoQ0NMYXllclRy
ZWVIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6
OnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpwb3N0U2V0Q29udGVudHNN
ZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlc1RvTWFpblRocmVhZE9uSW1wbFRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojpwb3N0U2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlc1RvTWFpblRocmVhZE9u
SW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHk6OnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAg
ICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTA1LTAxICBEYW5hIEphbnNlbnMgIDxkYW5ha2pA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEVhcmx5LW91dCBmb3Igc3VidHJhY3RpbmcgYSBub24t
aW50ZXJzZWN0aW5nIHJlZ2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxZWY0MTA4
NmEzZGY2OGUxYzM1MmFkM2IwYTMxZjlhMzkxMGZiYzYzLi4zYjIwMzQzNDQ1NzZlNDBiODdiNDYz
N2Y2OGRhNWQxZWU1Y2RkYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDEyLTA0LTMwICBNaWNoYWwgTW9jbnkgIDxtbW9jbnlAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBbY2hyb21pdW1dIFNldCBjb250ZW50cyB0ZXh0dXJlIG1hbmFnZXIgcHJlZmVycmVk
IG1lbW9yeSBsaW1pdCBiYXNlZCBvbiBHcHVNZW1vcnlNYW5hZ2VyIHN1Z2dlc3Rpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDI3MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0xheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QuY3BwOgorCiAyMDEyLTA1LTAxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYktpdCB1bml0IHRlc3RzIFJlbmRlclRhYmxlQ2VsbERl
YXRoVGVzdC5DYW5TZXRSb3cqIGFyZSBmYWlsaW5nIGFzIG9mIHIxMTU3MDUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDhhMmFmZDFjMTI1Mzk5ZDUzY2ExZWRmNzI0
ZTY4MmI4ZGJhMWZhZDkuLjMwZmEzOTA4MDM5MzI1MDYyYTBkOWVjYWQyZDQzMmM5ZDU4ZGRjYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMTgwLDYgKzE4MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+ZGlzY2FyZEZyYW1lYnVm
ZmVyKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+ZW5zdXJl
RnJhbWVidWZmZXIoKTsKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5tX2NsaWVudC0+c2V0Q29u
dGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhhbGxvY2F0aW9uLmdwdVJlc291cmNlU2l6
ZUluQnl0ZXMpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTM5Myw2ICszOTQsNyBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVnaW5EcmF3aW5nRnJhbWUoQ0NSZW5kZXJTdXJmYWNlKiBk
ZWZhdWx0UmVuZGVyU3VyZgogICAgIEFTU0VSVChtX2RlZmF1bHRSZW5kZXJTdXJmYWNlKTsKIAog
ICAgIHNpemVfdCBjb250ZW50c01lbW9yeVVzZUJ5dGVzID0gbV9jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3ItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpOworICAgIC8vIEZJWE1FOiBSZWFkIHRoZSBh
Y3R1YWwgVGV4dHVyZU1hbmFnZXIgbWF4TWVtb3J5TGltaXRCeXRlcyB2YWx1ZSwgZG8gbm90IGFz
c3VtZSBpdCBpcyB0aGUgZGVmYXVsdC4KICAgICBzaXplX3QgbWF4TGltaXQgPSBUZXh0dXJlTWFu
YWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpOwogICAgIG1fcmVuZGVyU3VyZmFj
ZVRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1heExpbWl0IC0gY29udGVu
dHNNZW1vcnlVc2VCeXRlcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5k
ZXggNDRiZjI4ZDk0ODI4YjdmYzFmYWZkZDhiOWNmOWZkZjk0ZjhhMTI5ZS4uNTMwYmE4NDhlOTQ1
NDYyZGZjYTIyNjNiY2YwOWI1M2FlOTI2MmM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRM
b3NlQ29udGV4dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRl
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKHNp
emVfdCkgPSAwOwogfTsKIAogLy8gQ2xhc3MgdGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9z
aXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdMLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4
IGQ0ZDhjMTgyY2ZlNTI1ZjU2MDA4OGFhMTI2Njk4ZDlkOTMyNGFlMTIuLjk3ZTYyYjkxYzZiOWNj
MjIyNzE4MmVkZTAwNTNmMzcxYTA5MTZkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKQEAg
LTEwNSw2ICsxMDUsMjAgQEAgVGV4dHVyZU1hbmFnZXI6On5UZXh0dXJlTWFuYWdlcigpCiAgICAg
ICAgICgqaXQpLT5jbGVhck1hbmFnZXIoKTsKIH0KIAordm9pZCBUZXh0dXJlTWFuYWdlcjo6c2V0
TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMpCit7Cisg
ICAgc2V0TWF4TWVtb3J5TGltaXRCeXRlcyhtZW1vcnlMaW1pdEJ5dGVzKTsKKyNpZiBkZWZpbmVk
KE9TX0FORFJPSUQpCisgICAgLy8gT24gYW5kcm9pZCwgd2UgYXJlIHNldHRpbmcgdGhlIHByZWZl
cnJlZCBtZW1vcnkgbGltaXQgdG8gaGFsZiBvZiBvdXIKKyAgICAvLyBtYXhpbXVtIGFsbG9jYXRp
b24sIGJlY2F1c2Ugd2Ugd291bGQgbGlrZSB0byBzdGF5IHNpZ25pZmljYW50bHkgYmVsb3cKKyAg
ICAvLyB0aGUgYWJzb2x1dGUgbWVtb3J5IGxpbWl0IHdoZW5ldmVyIHdlIGNhbi4gU3BlY2lmaWNh
bGx5LCBieSBsaW1pdHRpbmcKKyAgICAvLyBwcmVwYWludGluZyBvbmx5IHRvIHRoZSBoYWxmd2F5
IG1lbW9yeSBtYXJrLgorICAgIHNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGlt
aXRCeXRlcyAvIDIpOworI2Vsc2UKKyAgICBzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKG1l
bW9yeUxpbWl0Qnl0ZXMpOworI2VuZGlmCit9CisKIHZvaWQgVGV4dHVyZU1hbmFnZXI6OnNldE1h
eE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMpCiB7CiAgICAgcmVkdWNl
TWVtb3J5VG9MaW1pdChtZW1vcnlMaW1pdEJ5dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCmluZGV4
IDcwZDA4NjFjNTc4NmZiZWMwMjViNGM5NmM5MWJlOGJkZGZkNThkY2EuLjMxNDc2MzVhODBkZmQ4
MTk5NTJlNjFkZjY4Y2Y1MWM5YjM1ZGU2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaApAQCAtNjUs
NiArNjUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgc2l6ZV90IG1lbW9yeVVzZUJ5dGVzKGNv
bnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpOwogCisgICAgdm9pZCBzZXRNZW1vcnlBbGxv
Y2F0aW9uTGltaXRCeXRlcyhzaXplX3QpOwogICAgIHZvaWQgc2V0TWF4TWVtb3J5TGltaXRCeXRl
cyhzaXplX3QpOwogICAgIHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzKCkgeyByZXR1cm4gbV9t
YXhNZW1vcnlMaW1pdEJ5dGVzOyB9CiAgICAgdm9pZCBzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5
dGVzKHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCAzNjlhNGMz
ZTQxZDJlMDhkZDZiNDgxYTAzMzkxMDkyOTAxZGRkYWE2Li4wY2Y4MGIyMTlmNDNkNjJhYTk1Njc4
MTdkY2Y3MDI0NDcyNzU1ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTM1NywxMCArMzU3LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFZpZXdwb3J0U2l6ZShj
b25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSA9PSBtX3Zp
ZXdwb3J0U2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fY29udGVudHNUZXh0dXJl
TWFuYWdlcikgewotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9y
eUxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSkp
OwotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldFByZWZlcnJlZE1lbW9yeUxp
bWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSkp
OwotICAgIH0KICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKICAgICBzZXROZWVk
c0NvbW1pdCgpOwogfQpAQCAtNDE3LDYgKzQxMywxNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJ
bQogICAgIH0KIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldENvbnRlbnRzTWVtb3J5QWxs
b2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojpp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNZW1vcnlB
bGxvY2F0aW9uTGltaXRCeXRlcyhieXRlcyk7Cit9CisKKwogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBi
b29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKIHsKICAgICBt
X3Byb3h5LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgdXNlQW5jaG9y
LCBzY2FsZSwgZHVyYXRpb25TZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCAy
NWJkYjUwYjVjNjNiYTc1ZmRhYWYzZWUyNDg4ZmQwNWQ1NGZmYjk2Li40MDYxMmVhZjA5NzZhZGNm
ZWFlMTMwYzc1M2E5MmFmYjk2OTk4MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApA
QCAtMjE0LDYgKzIxNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogCiAgICAg
VGV4dHVyZU1hbmFnZXIqIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSBjb25zdDsKKyAgICB2b2lk
IHNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90KTsKIAogICAgIGJv
b2wgdmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQogICAgIHZvaWQgc2V0Vmlz
aWJsZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXgg
MTQ3YjJjNGY4MzJmYWJiYjQ1NjdkM2ExY2ZhMmRkYWM3ZTg1OTgwOC4uNWU0Yzc1MjM2NDQwYjA1
NWE2MTU2MzMzZjZkMmMxNDk2NWViNjFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAKQEAgLTQwMCw2ICs0MDAsMTEgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGlt
aXRCeXRlcyhzaXplX3QgYnl0ZXMpCit7CisgICAgbV9jbGllbnQtPnBvc3RTZXRDb250ZW50c01l
bW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKGJ5dGVzKTsK
K30KKwogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKGNvbnN0IEZyYW1lRGF0
YSYgZnJhbWUpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdM
YXllcnMiLCB0aGlzLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRl
eCA0NDIxZTQ5YzA4NjMyNTgzNjI1OWNlYTc5MTJjNjBkMjY5OTlkYzNjLi40NGU4OWEwOGM5M2Zi
YjQyYjEwZWI3OWY1Zjg4YTI5NzFlODg2MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
Q29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9u
RXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVu
dHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
b3N0U2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlc1RvTWFpblRocmVhZE9uSW1w
bFRocmVhZChzaXplX3QpID0gMDsKIH07CiAKIC8vIENDTGF5ZXJUcmVlSG9zdEltcGwgb3ducyB0
aGUgQ0NMYXllckltcGwgdHJlZSBhcyB3ZWxsIGFzIGFzc29jaWF0ZWQgcmVuZGVyaW5nIHN0YXRl
CkBAIC0xMDksNiArMTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29u
dGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1p
dEJ5dGVzKHNpemVfdCkgT1ZFUlJJREU7CiAKICAgICAvLyBJbXBsZW1lbnRhdGlvbgogICAgIGJv
b2wgY2FuRHJhdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRl
eCA1NjFiMTQyYzZhMjFkOGM3NTkxYTYyMGM0NGZkYmJjNzIxZDE2MDYzLi5iMzk3MzZkZDBiNGUx
MGRkMmQ1YmY1MDgxODkxMTViYzNlM2I4NzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmNwcApAQCAtMjc5LDYgKzI3OSwxNCBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJv
eHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0
cgogICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0QW5pbWF0aW9uRXZlbnRzKGV2ZW50cywgd2FsbENs
b2NrVGltZSk7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cG9zdFNldENvbnRlbnRz
TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoc2l6ZV90
IGJ5dGVzKQoreworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGNhbGxlZCB2aWEgYSBncmFwaGljcyBj
b250ZXh0IGNhbGxiYWNrLCBvbiBtYWluIHRocmVhZCBpbiBzaW5nbGUgdGhyZWFkZWQgbW9kZSwg
YmVjYXVzZSBpdHMgaGFyZCB0byBmYWtlIHRoZSBpbXBsIHRocmVhZC4gVGhpcyBzaG91bGQgbmVl
ZCB0byBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWQsIGJ1dCBpcyBhY3R1YWxseSBhbHJlYWR5IG9u
IHRoZSBtYWluIHRocmVhZC4KKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3QpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Q29u
dGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhieXRlcyk7Cit9CisKIC8vIENhbGxlZCBi
eSB0aGUgbGVnYWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRv
ZXMgdGhlIHNjaGVkdWxpbmcpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUlt
bWVkaWF0ZWx5KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBm
YjYwNTRmYzRkN2U4NTFlOWE5ZjYyMmE1NmQyNjZmNjgwYTQ5NGI3Li4xNTZiZGRjYTExODc5YmU5
NzE1ZGUzZDBiOWNlMzQ1ZGEwNWZlODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5oCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNSZWRyYXdPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVl
ZHNDb21taXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVh
ZCgpIE9WRVJSSURFIHsgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOyB9CiAgICAg
dmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQo
UGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1l
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFNldENvbnRlbnRzTWVtb3J5QWxsb2Nh
dGlvbkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoc2l6ZV90KSBPVkVSUklERTsK
IAogICAgIC8vIENhbGxlZCBieSB0aGUgbGVnYWN5IHBhdGggd2hlcmUgUmVuZGVyV2lkZ2V0IGRv
ZXMgdGhlIHNjaGVkdWxpbmcuCiAgICAgdm9pZCBjb21wb3NpdGVJbW1lZGlhdGVseSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBhY2JmYTUzZWEyZGYzYzQ1Y2M4YmYzYzQ4MTUy
MTFmYWVjMjVhZjdhLi4xYTcwNjE4OWU2MWM3YzY5MjEyMjAzZjdiZmM2NGU1Mjg0NTE0MjM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzIxLDYgKzMyMSwxMiBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQo
UGFzc093blB0cjxDQ0FuaQogICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVD
Q1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2ZW50cywgZXZl
bnRzLCB3YWxsQ2xvY2tUaW1lKSk7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cG9zdFNldENv
bnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQo
c2l6ZV90IGJ5dGVzKQoreworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgbV9tYWlu
VGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQ
cm94eTo6c2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcywgYnl0ZXMpKTsKK30K
Kwogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdygpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKQEAgLTcxOSw2ICs3MjUsMTQgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpz
ZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZl
bnQKICAgICBtX2xheWVyVHJlZUhvc3QtPnNldEFuaW1hdGlvbkV2ZW50cyhldmVudHMsIHdhbGxD
bG9ja1RpbWUpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnNldENvbnRlbnRzTWVtb3J5QWxs
b2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCisgICAgICAgIHJldHVybjsKKyAgICBt
X2xheWVyVHJlZUhvc3QtPnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoYnl0
ZXMpOworfQorCiBjbGFzcyBDQ1RocmVhZFByb3h5Q29udGV4dFJlY3JlYXRpb25UaW1lciA6IHB1
YmxpYyBDQ1RpbWVyLCBDQ1RpbWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093
blB0cjxDQ1RocmVhZFByb3h5Q29udGV4dFJlY3JlYXRpb25UaW1lcj4gY3JlYXRlKENDVGhyZWFk
UHJveHkqIHByb3h5KSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQcm94eUNvbnRleHRS
ZWNyZWF0aW9uVGltZXIocHJveHkpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IGRl
MWIxZjJkYmUwNzY5MTA2OGVlZDJiMDcyMmM3MmRhMzA4MzlmYjQuLjI5MTVhODExOWU3ZmM0YTY4
ZTJhM2YyMjUwNzdmMjlmODk5N2Q3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTgx
LDYgKzgxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1w
bFRocmVhZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1w
bFRocmVhZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRz
VG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0
b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBv
c3RTZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzVG9NYWluVGhyZWFkT25JbXBs
VGhyZWFkKHNpemVfdCkgT1ZFUlJJREU7CiAKICAgICAvLyBDQ1NjaGVkdWxlckNsaWVudCBpbXBs
ZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCkgT1ZFUlJJREU7CkBAIC0xMTYs
NiArMTE3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwog
ICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwogICAgIHZvaWQgc2V0QW5pbWF0aW9u
RXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENs
b2NrVGltZSk7CisgICAgdm9pZCBzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVz
KHNpemVfdCk7CiAgICAgdm9pZCBiZWdpbkNvbnRleHRSZWNyZWF0aW9uKCk7CiAgICAgdm9pZCB0
cnlUb1JlY3JlYXRlQ29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDEwMThlMTVhMDU4
ZTE4ODJiMmI1OTE5MjQ1NGRlMzUyNzRlOTA5ODYuLjg3YzAwZDdmZTc0Y2E3M2Y5MzExNzJjNDQy
MDdkZmJlODAzOTQ5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC02Niw2ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSBPVkVSUklE
RSB7IG1fZGlkUmVxdWVzdFJlZHJhdyA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNDb21taXRPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IG1fZGlkUmVxdWVzdENvbW1pdCA9IHRy
dWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9u
SW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdh
bGxDbG9ja1RpbWUpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwb3N0U2V0Q29udGVu
dHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlc1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChzaXpl
X3QpIE9WRVJSSURFIHsgfQogCiAgICAgc3RhdGljIHZvaWQgZXhwZWN0Q2xlYXJlZFNjcm9sbERl
bHRhc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5j
cHAKaW5kZXggOTkzYmE5NTMwOGI1YTM3ZGZhMzM5NGU2ZmEzODBiYjk5ODhlODIwYS4uZGRhYjE3
NTY0YzcxNWM1YTZjNDQ0MzgyOTgwODBkN2JhNzlhMGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3Bw
CkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRl
eHQoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRl
KCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2Uo
KSBPVkVSUklERSB7IG1fc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50Kys7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QpIE9W
RVJSSURFIHsgfQogCiAgICAgLy8gTWV0aG9kcyBhZGRlZCBmb3IgdGVzdC4KICAgICBpbnQgc2V0
RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zZXRGdWxsUm9vdExh
eWVyRGFtYWdlQ291bnQ7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139798</attachid>
            <date>2012-05-02 06:24:21 -0700</date>
            <delta_ts>2012-05-02 13:42:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84270-20120502092420.patch</filename>
            <type>text/plain</type>
            <size>17583</size>
            <attacher name="Michal Mocny">mmocny</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg3NzQ0MGUwYTdjYjM3
NjM4ZjVhYzBjZDQ4NzJjYTk3YmIzZDUyZS4uZDc1N2NmZTNmZWU0OGFmY2JlZTQ1NzQ3ZTIxZDEx
YjE5MDE1ZDBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA0LTMwICBNaWNo
YWwgTW9jbnkgIDxtbW9jbnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFNldCBj
b250ZW50cyB0ZXh0dXJlIG1hbmFnZXIgcHJlZmVycmVkIG1lbW9yeSBsaW1pdCBiYXNlZCBvbiBH
cHVNZW1vcnlNYW5hZ2VyIHN1Z2dlc3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZXMgdGhlIGNvbnRlbnQgdGV4dHVyZSBtYW5hZ2VyIG1l
bW9yeSBsaW1pdHMgYmFzZWQgb24gR3B1TWVtb3J5TWFuYWdlciBtZW1vcnkgYWxsb2NhdGlvbiBz
dWdnZXN0aW9ucy4KKworICAgICAgICBUaGUgbWVtb3J5IGFsbG9jYXRpb24gc2l6ZSAoaW4gYnl0
ZXMpIGlzIGZlZCBmcm9tIExheWVyUmVuZGVyZXJDaHJvbWl1bSBtZW1vcnkgYWxsb2NhdGlvbiBj
aGFuZ2VkIGNhbGxiYWNrCisgICAgICAgIGhhbmRsZXIgdG8gQ0NMYXllclRyZWVIb3N0LiAgQXQg
dGhhdCBwb2ludCB3ZSBhZGp1c3QgdGhlIGxpbWl0cywgdXNpbmcgdGhlIGV4aXN0aW5nIG5vdGlv
bnMgb2YgcHJlZmVycmVkIGFuZAorICAgICAgICBtYXggbGltaXRzLgorCisgICAgICAgIE9uIGFu
ZHJvaWQsIHRoZSBwcmVmZXJyZWQgbGltaXQgaXMgaGFsZiB0aGUgbWF4aW11bSAoYXMgaXQgaGFz
IGFsd2F5cyBiZWVuKSwgYnV0IG9uIGFsbCBvdGhlciBwbGF0Zm9ybXMgdGhlCisgICAgICAgIHBy
ZWZlcnJlZCBsaW1pdCBpcyBub3cgZXF1YWwgdG8gbWF4LCBpbiBvcmRlciB0byBhbGxvdyBtb3Jl
IGFncmVzc2l2ZSBwcmVwYWludGluZy4KKworICAgICAgICBGaW5hbGx5LCBhbmRyb2lkIGhhcyBt
ZW1vcnkgY29uc3RyYWludHMgZGVwZW5kYW50IG9uIHZpZXdwb3J0U2l6ZSwgYnV0IHRoYXQgbG9n
aWMgaGFzIGJlZW4gcHVzaGVkIGludG8KKyAgICAgICAgdGhlIEdwdU1lbW9yeU1hbmFnZXIuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckdwdU1lbW9yeUFsbG9jYXRp
b25DaGFuZ2VkQ2FsbGJhY2tBZGFwdGVyOjpvbkdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVnaW5EcmF3aW5nRnJh
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYW5hZ2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRWaWV3cG9ydFNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRDb250ZW50c01lbW9yeUFsbG9jYXRp
b25MaW1pdEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoQ0NMYXllclRy
ZWVIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6
OnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpwb3N0U2V0Q29udGVudHNN
ZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlc1RvTWFpblRocmVhZE9uSW1wbFRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojpwb3N0U2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlc1RvTWFpblRocmVhZE9u
SW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHk6OnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAg
ICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTA1LTAxICBEYW5hIEphbnNlbnMgIDxkYW5ha2pA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEVhcmx5LW91dCBmb3Igc3VidHJhY3RpbmcgYSBub24t
aW50ZXJzZWN0aW5nIHJlZ2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxZWY0MTA4
NmEzZGY2OGUxYzM1MmFkM2IwYTMxZjlhMzkxMGZiYzYzLi4zYjIwMzQzNDQ1NzZlNDBiODdiNDYz
N2Y2OGRhNWQxZWU1Y2RkYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDEyLTA0LTMwICBNaWNoYWwgTW9jbnkgIDxtbW9jbnlAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBbY2hyb21pdW1dIFNldCBjb250ZW50cyB0ZXh0dXJlIG1hbmFnZXIgcHJlZmVycmVk
IG1lbW9yeSBsaW1pdCBiYXNlZCBvbiBHcHVNZW1vcnlNYW5hZ2VyIHN1Z2dlc3Rpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDI3MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0xheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QuY3BwOgorCiAyMDEyLTA1LTAxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYktpdCB1bml0IHRlc3RzIFJlbmRlclRhYmxlQ2VsbERl
YXRoVGVzdC5DYW5TZXRSb3cqIGFyZSBmYWlsaW5nIGFzIG9mIHIxMTU3MDUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDhhMmFmZDFjMTI1Mzk5ZDUzY2ExZWRmNzI0
ZTY4MmI4ZGJhMWZhZDkuLjI4ZjU3MjA5ODY3ZjFhODRiNDdjNTc4NjZmNDVjNGIzZjk4YjUxNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMTgwLDYgKzE4MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+ZGlzY2FyZEZyYW1lYnVm
ZmVyKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+ZW5zdXJl
RnJhbWVidWZmZXIoKTsKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5tX2NsaWVudC0+c2V0Q29u
dGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhhbGxvY2F0aW9uLmdwdVJlc291cmNlU2l6
ZUluQnl0ZXMpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgKaW5kZXggNDRiZjI4ZDk0ODI4YjdmYzFmYWZkZDhiOWNmOWZkZjk0ZjhhMTI5ZS4uNTMw
YmE4NDhlOTQ1NDYyZGZjYTIyNjNiY2YwOWI1M2FlOTI2MmM4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRMb3NlQ29udGV4dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVy
c0NvbXBsZXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdl
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1p
dEJ5dGVzKHNpemVfdCkgPSAwOwogfTsKIAogLy8gQ2xhc3MgdGhhdCBoYW5kbGVzIGRyYXdpbmcg
b2YgY29tcG9zaXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdMLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIu
Y3BwCmluZGV4IGQ0ZDhjMTgyY2ZlNTI1ZjU2MDA4OGFhMTI2Njk4ZDlkOTMyNGFlMTIuLjk3ZTYy
YjkxYzZiOWNjMjIyNzE4MmVkZTAwNTNmMzcxYTA5MTZkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdl
ci5jcHAKQEAgLTEwNSw2ICsxMDUsMjAgQEAgVGV4dHVyZU1hbmFnZXI6On5UZXh0dXJlTWFuYWdl
cigpCiAgICAgICAgICgqaXQpLT5jbGVhck1hbmFnZXIoKTsKIH0KIAordm9pZCBUZXh0dXJlTWFu
YWdlcjo6c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxpbWl0Qnl0
ZXMpCit7CisgICAgc2V0TWF4TWVtb3J5TGltaXRCeXRlcyhtZW1vcnlMaW1pdEJ5dGVzKTsKKyNp
ZiBkZWZpbmVkKE9TX0FORFJPSUQpCisgICAgLy8gT24gYW5kcm9pZCwgd2UgYXJlIHNldHRpbmcg
dGhlIHByZWZlcnJlZCBtZW1vcnkgbGltaXQgdG8gaGFsZiBvZiBvdXIKKyAgICAvLyBtYXhpbXVt
IGFsbG9jYXRpb24sIGJlY2F1c2Ugd2Ugd291bGQgbGlrZSB0byBzdGF5IHNpZ25pZmljYW50bHkg
YmVsb3cKKyAgICAvLyB0aGUgYWJzb2x1dGUgbWVtb3J5IGxpbWl0IHdoZW5ldmVyIHdlIGNhbi4g
U3BlY2lmaWNhbGx5LCBieSBsaW1pdHRpbmcKKyAgICAvLyBwcmVwYWludGluZyBvbmx5IHRvIHRo
ZSBoYWxmd2F5IG1lbW9yeSBtYXJrLgorICAgIHNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMo
bWVtb3J5TGltaXRCeXRlcyAvIDIpOworI2Vsc2UKKyAgICBzZXRQcmVmZXJyZWRNZW1vcnlMaW1p
dEJ5dGVzKG1lbW9yeUxpbWl0Qnl0ZXMpOworI2VuZGlmCit9CisKIHZvaWQgVGV4dHVyZU1hbmFn
ZXI6OnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMpCiB7CiAg
ICAgcmVkdWNlTWVtb3J5VG9MaW1pdChtZW1vcnlMaW1pdEJ5dGVzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdl
ci5oCmluZGV4IDcwZDA4NjFjNTc4NmZiZWMwMjViNGM5NmM5MWJlOGJkZGZkNThkY2EuLjMxNDc2
MzVhODBkZmQ4MTk5NTJlNjFkZjY4Y2Y1MWM5YjM1ZGU2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIu
aApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgc2l6ZV90IG1lbW9yeVVz
ZUJ5dGVzKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpOwogCisgICAgdm9pZCBzZXRN
ZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QpOwogICAgIHZvaWQgc2V0TWF4TWVtb3J5
TGltaXRCeXRlcyhzaXplX3QpOwogICAgIHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzKCkgeyBy
ZXR1cm4gbV9tYXhNZW1vcnlMaW1pdEJ5dGVzOyB9CiAgICAgdm9pZCBzZXRQcmVmZXJyZWRNZW1v
cnlMaW1pdEJ5dGVzKHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRl
eCAzNjlhNGMzZTQxZDJlMDhkZDZiNDgxYTAzMzkxMDkyOTAxZGRkYWE2Li4wY2Y4MGIyMTlmNDNk
NjJhYTk1Njc4MTdkY2Y3MDI0NDcyNzU1ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHAKQEAgLTM1NywxMCArMzU3LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFZpZXdw
b3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgaWYgKHZpZXdwb3J0U2l6
ZSA9PSBtX3ZpZXdwb3J0U2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fY29udGVu
dHNUZXh0dXJlTWFuYWdlcikgewotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNl
dE1heE1lbW9yeUxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdw
b3J0U2l6ZSkpOwotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldFByZWZlcnJl
ZE1lbW9yeUxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdw
b3J0U2l6ZSkpOwotICAgIH0KICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKICAg
ICBzZXROZWVkc0NvbW1pdCgpOwogfQpAQCAtNDE3LDYgKzQxMywxNiBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqIGhvc3RJbQogICAgIH0KIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldENvbnRlbnRz
TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKQoreworICAgIEFTU0VSVChD
Q1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX2xheWVyUmVuZGVyZXJJbml0aWFs
aXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5z
ZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhieXRlcyk7Cit9CisKKwogdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBv
c2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykK
IHsKICAgICBtX3Byb3h5LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwg
dXNlQW5jaG9yLCBzY2FsZSwgZHVyYXRpb25TZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aAppbmRleCAyNWJkYjUwYjVjNjNiYTc1ZmRhYWYzZWUyNDg4ZmQwNWQ1NGZmYjk2Li40MDYxMmVh
ZjA5NzZhZGNmZWFlMTMwYzc1M2E5MmFmYjk2OTk4MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaApAQCAtMjE0LDYgKzIxNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tncm91
bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsg
fQogCiAgICAgVGV4dHVyZU1hbmFnZXIqIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSBjb25zdDsK
KyAgICB2b2lkIHNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90KTsK
IAogICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQogICAgIHZv
aWQgc2V0VmlzaWJsZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKaW5kZXggMTQ3YjJjNGY4MzJmYWJiYjQ1NjdkM2ExY2ZhMmRkYWM3ZTg1OTgwOC4uNWU0Yzc1
MjM2NDQwYjA1NWE2MTU2MzMzZjZkMmMxNDk2NWViNjFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTQwMCw2ICs0MDAsMTEgQEAgYm9vbCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Q29udGVudHNNZW1vcnlBbGxv
Y2F0aW9uTGltaXRCeXRlcyhzaXplX3QgYnl0ZXMpCit7CisgICAgbV9jbGllbnQtPnBvc3RTZXRD
b250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFk
KGJ5dGVzKTsKK30KKwogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKGNvbnN0
IEZyYW1lRGF0YSYgZnJhbWUpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdElt
cGw6OmRyYXdMYXllcnMiLCB0aGlzLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaAppbmRleCA0NDIxZTQ5YzA4NjMyNTgzNjI1OWNlYTc5MTJjNjBkMjY5OTlkYzNjLi40NGU4
OWEwOGM5M2ZiYjQyYjEwZWI3OWY1Zjg4YTI5NzFlODg2MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0
QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmlt
YXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBwb3N0U2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlc1RvTWFpblRo
cmVhZE9uSW1wbFRocmVhZChzaXplX3QpID0gMDsKIH07CiAKIC8vIENDTGF5ZXJUcmVlSG9zdElt
cGwgb3ducyB0aGUgQ0NMYXllckltcGwgdHJlZSBhcyB3ZWxsIGFzIGFzc29jaWF0ZWQgcmVuZGVy
aW5nIHN0YXRlCkBAIC0xMDksNiArMTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRMb3NlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJz
Q29tcGxldGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXllckRh
bWFnZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c01lbW9yeUFsbG9j
YXRpb25MaW1pdEJ5dGVzKHNpemVfdCkgT1ZFUlJJREU7CiAKICAgICAvLyBJbXBsZW1lbnRhdGlv
bgogICAgIGJvb2wgY2FuRHJhdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmNwcAppbmRleCA1NjFiMTQyYzZhMjFkOGM3NTkxYTYyMGM0NGZkYmJjNzIxZDE2MDYzLi5iMzk3
MzZkZDBiNGUxMGRkMmQ1YmY1MDgxODkxMTViYzNlM2I4NzliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMjc5LDYgKzI3OSwxNCBAQCB2b2lkIENDU2luZ2xl
VGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQo
UGFzc093blB0cgogICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0QW5pbWF0aW9uRXZlbnRzKGV2ZW50
cywgd2FsbENsb2NrVGltZSk7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cG9zdFNl
dENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRPbkltcGxUaHJl
YWQoc2l6ZV90IGJ5dGVzKQoreworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGNhbGxlZCB2aWEgYSBn
cmFwaGljcyBjb250ZXh0IGNhbGxiYWNrLCBvbiBtYWluIHRocmVhZCBpbiBzaW5nbGUgdGhyZWFk
ZWQgbW9kZSwgYmVjYXVzZSBpdHMgaGFyZCB0byBmYWtlIHRoZSBpbXBsIHRocmVhZC4gVGhpcyBz
aG91bGQgbmVlZCB0byBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWQsIGJ1dCBpcyBhY3R1YWxseSBh
bHJlYWR5IG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3QpOworICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhieXRlcyk7Cit9CisKIC8v
IENhbGxlZCBieSB0aGUgbGVnYWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJf
d2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNv
bXBvc2l0ZUltbWVkaWF0ZWx5KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aAppbmRleCBmYjYwNTRmYzRkN2U4NTFlOWE5ZjYyMmE1NmQyNjZmNjgwYTQ5NGI3Li4xNTZiZGRj
YTExODc5YmU5NzE1ZGUzZDBiOWNlMzQ1ZGEwNWZlODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IG1fbGF5ZXJUcmVlSG9z
dC0+c2V0TmVlZHNDb21taXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9u
SW1wbFRocmVhZCgpIE9WRVJSSURFIHsgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbklt
cGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxs
Q2xvY2tUaW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFNldENvbnRlbnRzTWVt
b3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoc2l6ZV90KSBP
VkVSUklERTsKIAogICAgIC8vIENhbGxlZCBieSB0aGUgbGVnYWN5IHBhdGggd2hlcmUgUmVuZGVy
V2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcuCiAgICAgdm9pZCBjb21wb3NpdGVJbW1lZGlhdGVs
eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBhY2JmYTUzZWEyZGYzYzQ1Y2M4
YmYzYzQ4MTUyMTFmYWVjMjVhZjdhLi4xYTcwNjE4OWU2MWM3YzY5MjEyMjAzZjdiZmM2NGU1Mjg0
NTE0MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzIxLDYgKzMyMSwxMiBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbklt
cGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaQogICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFz
ayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldEFuaW1hdGlvbkV2
ZW50cywgZXZlbnRzLCB3YWxsQ2xvY2tUaW1lKSk7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6
cG9zdFNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXNUb01haW5UaHJlYWRPbklt
cGxUaHJlYWQoc2l6ZV90IGJ5dGVzKQoreworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Cisg
ICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAm
Q0NUaHJlYWRQcm94eTo6c2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcywgYnl0
ZXMpKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdygpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTcxOSw2ICs3MjUsMTQgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpzZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1Zl
Y3Rvcj4gZXZlbnQKICAgICBtX2xheWVyVHJlZUhvc3QtPnNldEFuaW1hdGlvbkV2ZW50cyhldmVu
dHMsIHdhbGxDbG9ja1RpbWUpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnNldENvbnRlbnRz
TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0
Qnl0ZXMoYnl0ZXMpOworfQorCiBjbGFzcyBDQ1RocmVhZFByb3h5Q29udGV4dFJlY3JlYXRpb25U
aW1lciA6IHB1YmxpYyBDQ1RpbWVyLCBDQ1RpbWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1RocmVhZFByb3h5Q29udGV4dFJlY3JlYXRpb25UaW1lcj4gY3JlYXRl
KENDVGhyZWFkUHJveHkqIHByb3h5KSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQcm94
eUNvbnRleHRSZWNyZWF0aW9uVGltZXIocHJveHkpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
CmluZGV4IGRlMWIxZjJkYmUwNzY5MTA2OGVlZDJiMDcyMmM3MmRhMzA4MzlmYjQuLjI5MTVhODEx
OWU3ZmM0YTY4ZTJhM2YyMjUwNzdmMjlmODk5N2Q3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmgKQEAgLTgxLDYgKzgxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1Jl
ZHJhd09uSW1wbFRocmVhZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Nv
bW1pdE9uSW1wbFRocmVhZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0
aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25F
dmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHBvc3RTZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzVG9NYWluVGhy
ZWFkT25JbXBsVGhyZWFkKHNpemVfdCkgT1ZFUlJJREU7CiAKICAgICAvLyBDQ1NjaGVkdWxlckNs
aWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCkgT1ZFUlJJREU7
CkBAIC0xMTYsNiArMTE3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdG
cmFtZSgpOwogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwogICAgIHZvaWQgc2V0
QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3Vi
bGUgd2FsbENsb2NrVGltZSk7CisgICAgdm9pZCBzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25M
aW1pdEJ5dGVzKHNpemVfdCk7CiAgICAgdm9pZCBiZWdpbkNvbnRleHRSZWNyZWF0aW9uKCk7CiAg
ICAgdm9pZCB0cnlUb1JlY3JlYXRlQ29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDEw
MThlMTVhMDU4ZTE4ODJiMmI1OTE5MjQ1NGRlMzUyNzRlOTA5ODYuLjg3YzAwZDdmZTc0Y2E3M2Y5
MzExNzJjNDQyMDdkZmJlODAzOTQ5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC02Niw2ICs2Niw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQo
KSBPVkVSUklERSB7IG1fZGlkUmVxdWVzdFJlZHJhdyA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IG1fZGlkUmVxdWVzdENv
bW1pdCA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFp
blRocmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwg
ZG91YmxlIHdhbGxDbG9ja1RpbWUpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwb3N0
U2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlc1RvTWFpblRocmVhZE9uSW1wbFRo
cmVhZChzaXplX3QpIE9WRVJSSURFIHsgfQogCiAgICAgc3RhdGljIHZvaWQgZXhwZWN0Q2xlYXJl
ZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9t
aXVtVGVzdC5jcHAKaW5kZXggOTkzYmE5NTMwOGI1YTM3ZGZhMzM5NGU2ZmEzODBiYjk5ODhlODIw
YS4uZGRhYjE3NTY0YzcxNWM1YTZjNDQ0MzgyOTgwODBkN2JhNzlhMGFlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QuY3BwCkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlk
TG9zZUNvbnRleHQoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVy
c0NvbXBsZXRlKCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxSb290TGF5
ZXJEYW1hZ2UoKSBPVkVSUklERSB7IG1fc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50Kys7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhz
aXplX3QpIE9WRVJSSURFIHsgfQogCiAgICAgLy8gTWV0aG9kcyBhZGRlZCBmb3IgdGVzdC4KICAg
ICBpbnQgc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zZXRG
dWxsUm9vdExheWVyRGFtYWdlQ291bnQ7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>