<?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>91177</bug_id>
          
          <creation_ts>2012-07-12 18:07:03 -0700</creation_ts>
          <short_desc>[chromium] Add &apos;self-managed&apos; option to CCPrioritizedTexture to enable render-surface and canvas use cases.</short_desc>
          <delta_ts>2012-07-16 08:02:21 -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="Eric Penner">epenner</reporter>
          <assigned_to name="Eric Penner">epenner</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>668463</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-12 18:07:03 -0700</bug_when>
    <thetext>[chromium] Add &apos;self-managed&apos; option to CCPrioritizedTexture to enable render-surface and canvas use cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668465</commentid>
    <comment_count>1</comment_count>
      <attachid>152118</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-12 18:12:24 -0700</bug_when>
    <thetext>Created attachment 152118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669244</commentid>
    <comment_count>2</comment_count>
      <attachid>152118</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-13 10:59:03 -0700</bug_when>
    <thetext>Comment on attachment 152118
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:500
&gt; +size_t CCLayerTreeHost::prioritizeTextures(const LayerList&amp; updateList)

Can we make the size_t a reference argument instead of a return value? That way it can get a descriptive name in the method definition.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:543
&gt; +    // Create a memory placeholder texture to represent all surfaces,
&gt; +    // since contents and surfaces aren&apos;t managed together (yet).

What will it mean to be &quot;managed together&quot;?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPrioritizedTextureManager.h:54
&gt; +    PassOwnPtr&lt;CCPrioritizedTexture&gt; createMemoryPlaceholder(size_t bytes)

could/should this be static?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669287</commentid>
    <comment_count>3</comment_count>
      <attachid>152118</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 11:24:42 -0700</bug_when>
    <thetext>Comment on attachment 152118
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:500
&gt;&gt; +size_t CCLayerTreeHost::prioritizeTextures(const LayerList&amp; updateList)
&gt; 
&gt; Can we make the size_t a reference argument instead of a return value? That way it can get a descriptive name in the method definition.

Sure sounds good.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:543
&gt;&gt; +    // since contents and surfaces aren&apos;t managed together (yet).
&gt; 
&gt; What will it mean to be &quot;managed together&quot;?

I meant that currently they are self managed via scoped textures. When all the surfaces are just prioritized textures themselves (if that makes sense once on the same thread) then we don&apos;t need a placeholder.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCPrioritizedTextureManager.h:54
&gt;&gt; +    PassOwnPtr&lt;CCPrioritizedTexture&gt; createMemoryPlaceholder(size_t bytes)
&gt; 
&gt; could/should this be static?

These functions create textures for the manager instance, so they can&apos;t be static. The CCPrioritizedTexture create functions are static though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669289</commentid>
    <comment_count>4</comment_count>
      <attachid>152118</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-13 11:27:03 -0700</bug_when>
    <thetext>Comment on attachment 152118
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:543
&gt;&gt;&gt; +    // since contents and surfaces aren&apos;t managed together (yet).
&gt;&gt; 
&gt;&gt; What will it mean to be &quot;managed together&quot;?
&gt; 
&gt; I meant that currently they are self managed via scoped textures. When all the surfaces are just prioritized textures themselves (if that makes sense once on the same thread) then we don&apos;t need a placeholder.

Oh okay, I think that wont make sense in ubercomp. The renderer reduces memory use for contents. But the host is the one allocating, so itll be a different process entirely. I think maybe this comment could just go away then?

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCPrioritizedTextureManager.h:54
&gt;&gt;&gt; +    PassOwnPtr&lt;CCPrioritizedTexture&gt; createMemoryPlaceholder(size_t bytes)
&gt;&gt; 
&gt;&gt; could/should this be static?
&gt; 
&gt; These functions create textures for the manager instance, so they can&apos;t be static. The CCPrioritizedTexture create functions are static though.

Oh, createTexture(). Okay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669294</commentid>
    <comment_count>5</comment_count>
      <attachid>152118</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 11:36:40 -0700</bug_when>
    <thetext>Comment on attachment 152118
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:543
&gt;&gt;&gt;&gt; +    // since contents and surfaces aren&apos;t managed together (yet).
&gt;&gt;&gt; 
&gt;&gt;&gt; What will it mean to be &quot;managed together&quot;?
&gt;&gt; 
&gt;&gt; I meant that currently they are self managed via scoped textures. When all the surfaces are just prioritized textures themselves (if that makes sense once on the same thread) then we don&apos;t need a placeholder.
&gt; 
&gt; Oh okay, I think that wont make sense in ubercomp. The renderer reduces memory use for contents. But the host is the one allocating, so itll be a different process entirely. I think maybe this comment could just go away then?

But the child controls the host indirectly via not creating content for them right?  You think we should just keep doing this then?  Works by me. Anyway I&apos;ll remove the very likely incorrect comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669296</commentid>
    <comment_count>6</comment_count>
      <attachid>152118</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-13 11:40:22 -0700</bug_when>
    <thetext>Comment on attachment 152118
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:543
&gt;&gt;&gt;&gt;&gt; +    // since contents and surfaces aren&apos;t managed together (yet).
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; What will it mean to be &quot;managed together&quot;?
&gt;&gt;&gt; 
&gt;&gt;&gt; I meant that currently they are self managed via scoped textures. When all the surfaces are just prioritized textures themselves (if that makes sense once on the same thread) then we don&apos;t need a placeholder.
&gt;&gt; 
&gt;&gt; Oh okay, I think that wont make sense in ubercomp. The renderer reduces memory use for contents. But the host is the one allocating, so itll be a different process entirely. I think maybe this comment could just go away then?
&gt; 
&gt; But the child controls the host indirectly via not creating content for them right?  You think we should just keep doing this then?  Works by me. Anyway I&apos;ll remove the very likely incorrect comment.

Ya I think its exactly what we want. Then the host can create surfaces at will, because they fit within the budget of the renderer providing the quads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669305</commentid>
    <comment_count>7</comment_count>
      <attachid>152310</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 11:49:52 -0700</bug_when>
    <thetext>Created attachment 152310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669380</commentid>
    <comment_count>8</comment_count>
      <attachid>152310</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-13 13:32:48 -0700</bug_when>
    <thetext>Comment on attachment 152310
Patch

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

Can you add asserts about things with backings not being self-managed textures, e.g. CCPrioritizedTextureManager::returnBacking/createBacking/destroyBacking/assertInvariants?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:500
&gt; -void CCLayerTreeHost::prioritizeTextures(const LayerList&amp; updateList)
&gt; +void CCLayerTreeHost::prioritizeTextures(const LayerList&amp; updateList, size_t&amp; memoryForRenderSurfaces)

This feels overloaded.  Can you split this into two functions? e.g. &quot;size_t calculateMemoryForRenderSurfaces()&quot; and &quot;void prioritizeTextures(const LayerList&amp;)&quot; and maybe have paintContents add the managed textures?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:545
&gt; +    // Create memory place-holder for surfaces (which are managed independantly) but should
&gt; +    // reduce memory available for contents.
&gt; +    OwnPtr&lt;CCPrioritizedTexture&gt; surfacePlaceholder = m_contentsTextureManager-&gt;createMemoryPlaceholder(memoryForRenderSurfaces);
&gt; +    surfacePlaceholder-&gt;setRequestPriority(CCPriorityCalculator::renderSurfacePriority());

...and then maybe move this code into paintLayerContents. It&apos;s a little sketchy to me that the surfacePlaceholder has such a transient lifetime; should it be owned by the CCLTH?  If you create a self-managed texture, shouldn&apos;t the memory available immediately go down and then go back up if and when it gets deleted?

&gt; Source/WebKit/chromium/tests/CCPrioritizedTextureTest.cpp:324
&gt; +

Boo random whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669399</commentid>
    <comment_count>9</comment_count>
      <attachid>152326</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 14:04:54 -0700</bug_when>
    <thetext>Created attachment 152326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669402</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 14:09:13 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 152310 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152310&amp;action=review
&gt; 
&gt; Can you add asserts about things with backings not being self-managed textures, e.g. CCPrioritizedTextureManager::returnBacking/createBacking/destroyBacking/assertInvariants?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:500
&gt; &gt; -void CCLayerTreeHost::prioritizeTextures(const LayerList&amp; updateList)
&gt; &gt; +void CCLayerTreeHost::prioritizeTextures(const LayerList&amp; updateList, size_t&amp; memoryForRenderSurfaces)
&gt; 
&gt; This feels overloaded.  Can you split this into two functions? e.g. &quot;size_t calculateMemoryForRenderSurfaces()&quot; and &quot;void prioritizeTextures(const LayerList&amp;)&quot; and maybe have paintContents add the managed textures?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:545
&gt; &gt; +    // Create memory place-holder for surfaces (which are managed independantly) but should
&gt; &gt; +    // reduce memory available for contents.
&gt; &gt; +    OwnPtr&lt;CCPrioritizedTexture&gt; surfacePlaceholder = m_contentsTextureManager-&gt;createMemoryPlaceholder(memoryForRenderSurfaces);
&gt; &gt; +    surfacePlaceholder-&gt;setRequestPriority(CCPriorityCalculator::renderSurfacePriority());
&gt; 
&gt; ...and then maybe move this code into paintLayerContents. It&apos;s a little sketchy to me that the surfacePlaceholder has such a transient lifetime; should it be owned by the CCLTH?  If you create a self-managed texture, shouldn&apos;t the memory available immediately go down and then go back up if and when it gets deleted?
&gt; 
&gt; &gt; Source/WebKit/chromium/tests/CCPrioritizedTextureTest.cpp:324
&gt; &gt; +
&gt; 
&gt; Boo random whitespace.

I did most of what you asked but prioritizeTextures needs to make the placeholder after clearPriorities().

Regarding the temporary request. It just needs to exist during PrioritizedTextureManager::prioritizeTextures(). The model is that everything is cleared, requested and granted permission within CCLayerTreeHost::prioritizedTextures(), so the placeholder isn&apos;t needed outside of that function. For other placeholders like Canvas I imagine they will be persistent objects but in this case I thought it was nicer to keep it as a temp where it is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669409</commentid>
    <comment_count>11</comment_count>
      <attachid>152310</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 14:14:19 -0700</bug_when>
    <thetext>Comment on attachment 152310
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPrioritizedTexture.cpp:95
&gt; +    ASSERT(!m_isSelfManaged);

I added this ASSERT which should prevent anything to do with allocating memory. However I&apos;ll move this into the manager and add some extra ones to be safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669412</commentid>
    <comment_count>12</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-13 14:20:59 -0700</bug_when>
    <thetext>(In reply to comment #10)

&gt; I did most of what you asked but prioritizeTextures needs to make the placeholder after clearPriorities().

Why?

&gt; Regarding the temporary request. It just needs to exist during PrioritizedTextureManager::prioritizeTextures(). The model is that everything is cleared, requested and granted permission within CCLayerTreeHost::prioritizedTextures(), so the placeholder isn&apos;t needed outside of that function. For other placeholders like Canvas I imagine they will be persistent objects but in this case I thought it was nicer to keep it as a temp where it is needed.

I figured that&apos;s how other objects would be used, so it&apos;s odd to me that this would behave differently.

It still seems wrong to me that if somebody creates a placeholder after prioritizeTextures, then things like reduceMemory or requestLate will behave incorrectly.  Is there a reason that register/unregister a self-managed texture doesn&apos;t immediately change the available memory, as if it had acquired a backing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669419</commentid>
    <comment_count>13</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-13 14:30:56 -0700</bug_when>
    <thetext>(In reply to comment #12)

&gt; It still seems wrong to me that if somebody creates a placeholder after prioritizeTextures, then things like reduceMemory or requestLate will behave incorrectly.  Is there a reason that register/unregister a self-managed texture doesn&apos;t immediately change the available memory, as if it had acquired a backing?

Ok, scratch that.  This doesn&apos;t make any sense.  It&apos;s no good for anybody to create textures, even self-managed ones, *after* prioritizeTextures and expect any guarantees to be held.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669445</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 14:49:32 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; 
&gt; &gt; It still seems wrong to me that if somebody creates a placeholder after prioritizeTextures, then things like reduceMemory or requestLate will behave incorrectly.  Is there a reason that register/unregister a self-managed texture doesn&apos;t immediately change the available memory, as if it had acquired a backing?
&gt; 
&gt; Ok, scratch that.  This doesn&apos;t make any sense.  It&apos;s no good for anybody to create textures, even self-managed ones, *after* prioritizeTextures and expect any guarantees to be held.

I was already mid comment, so here goes anyway:

Since textures are granted permission during prioritizeTextures(), we won&apos;t give more textures permission to allocate even if we were to increase the memory available after prioritizeTextures(). The primary benefit of releasing backings etc. when a texture is deleted is to allow those backings to be recycled. Since self-managed textures aren&apos;t recycled there is marginal benefit to changing the memory limit around.

Anyway, since that &apos;could&apos; be the case that memory limits are adjusted, I see your point about persisting the object rather than having it be temporary. So I can do that if you want, to make it more independent of the manager implementation.

As for actually adjusting the memory available on unregister, I think that will have marginal benefit and possibly also be error prone since the user can change the selfManaged flag whenever they want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669447</commentid>
    <comment_count>15</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-13 14:50:42 -0700</bug_when>
    <thetext>IMO the temporary object is nice, but a comment saying it is only needed for prioritization might be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669448</commentid>
    <comment_count>16</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-13 14:50:52 -0700</bug_when>
    <thetext>saying why it is*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669455</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 14:55:54 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; 
&gt; &gt; I did most of what you asked but prioritizeTextures needs to make the placeholder after clearPriorities().
&gt; 
&gt; Why?
&gt; 

It needs to set priority (and be created if it&apos;s a temp) after clearPriorities but before prioritizeTextures().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669458</commentid>
    <comment_count>18</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-13 14:58:25 -0700</bug_when>
    <thetext>Can we do in CCLTH something like this?

m_pTM-&gt;clearPriorities()
surfaceMem = prioritizeSurfaceTextures()
prioritizeLayerTextures()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669464</commentid>
    <comment_count>19</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-13 15:00:21 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #10)
&gt; &gt; 
&gt; &gt; &gt; I did most of what you asked but prioritizeTextures needs to make the placeholder after clearPriorities().
&gt; &gt; 
&gt; &gt; Why?
&gt; &gt; 
&gt; 
&gt; It needs to set priority (and be created if it&apos;s a temp) after clearPriorities but before prioritizeTextures().

Because clearPriorities sets its priority? If so, maybe it shouldn&apos;t do that for self-managed textures.  How will that work for canvas self-managed textures?  Do you expect them to be re-set every frame like we do for other textures?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669466</commentid>
    <comment_count>20</comment_count>
      <attachid>152346</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 15:01:22 -0700</bug_when>
    <thetext>Created attachment 152346
add_better_comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669476</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 15:08:01 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I did most of what you asked but prioritizeTextures needs to make the placeholder after clearPriorities().
&gt; &gt; &gt; 
&gt; &gt; &gt; Why?
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; It needs to set priority (and be created if it&apos;s a temp) after clearPriorities but before prioritizeTextures().
&gt; 
&gt; Because clearPriorities sets its priority? If so, maybe it shouldn&apos;t do that for self-managed textures.  How will that work for canvas self-managed textures?  Do you expect them to be re-set every frame like we do for other textures?

Yeah because clearPriorities changes the priority, so all priorities need to be set after that to get allocated. I expect that canvases will set the priority in ::setTexturePriorities like other layers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669483</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 15:13:49 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Can we do in CCLTH something like this?
&gt; 
&gt; m_pTM-&gt;clearPriorities()
&gt; surfaceMem = prioritizeSurfaceTextures()
&gt; prioritizeLayerTextures()

How is it better than currently? Passing a parameter to prioritizeTextures is bad?  I think taking clearPriorities() out of prioritizeTextures() is as bad as passing a parameter to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669501</commentid>
    <comment_count>23</comment_count>
      <attachid>152346</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-13 15:32:22 -0700</bug_when>
    <thetext>Comment on attachment 152346
add_better_comment

Sorry, to clarify and actually read the code again.. something like..

void CCLTH::prioritizeTextures(OverdrawMetrics metrics) {
  ptm-&gt;clearPriorities()

  setPrioritiesForSurfaces(surfaceMemoryBytes)
  setPrioritiesForLayers()
  [in future setPrioritiesForOtherThingsLikeCanvas()]

  ptm-&gt;prioritizeTextures()
  metrics.didUseBlah..(surfaceMemoryBytes)
}

I&apos;m not sure it&apos;s any help though, what you&apos;ve got makes sense too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669534</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 16:02:27 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 152346 [details])
&gt; Sorry, to clarify and actually read the code again.. something like..
&gt; 
&gt; void CCLTH::prioritizeTextures(OverdrawMetrics metrics) {
&gt;   ptm-&gt;clearPriorities()
&gt; 
&gt;   setPrioritiesForSurfaces(surfaceMemoryBytes)
&gt;   setPrioritiesForLayers()
&gt;   [in future setPrioritiesForOtherThingsLikeCanvas()]
&gt; 
&gt;   ptm-&gt;prioritizeTextures()
&gt;   metrics.didUseBlah..(surfaceMemoryBytes)
&gt; }
&gt; 
&gt; I&apos;m not sure it&apos;s any help though, what you&apos;ve got makes sense too.

Ahh! I get it. That might be better but I was thinking canvases would each have their own self-managed texture which sets it&apos;s priority with other contents.

Enne, I&apos;m happy to implement any of the additional suggestions if you still think they are better:
- Different behavior for clearPriorities of self-managed textures?
- Use a member variable for the placeholder in CCLTH. 

Just let me know what you prefer. In that case I&apos;ll add in Dana&apos;s suggestion too. IMO the current implementation has equal merits on the remaining issues mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669541</commentid>
    <comment_count>25</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-13 16:07:52 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; (From update of attachment 152346 [details] [details])
&gt; &gt; Sorry, to clarify and actually read the code again.. something like..
&gt; &gt; 
&gt; &gt; void CCLTH::prioritizeTextures(OverdrawMetrics metrics) {
&gt; &gt;   ptm-&gt;clearPriorities()
&gt; &gt; 
&gt; &gt;   setPrioritiesForSurfaces(surfaceMemoryBytes)
&gt; &gt;   setPrioritiesForLayers()
&gt; &gt;   [in future setPrioritiesForOtherThingsLikeCanvas()]
&gt; &gt; 
&gt; &gt;   ptm-&gt;prioritizeTextures()
&gt; &gt;   metrics.didUseBlah..(surfaceMemoryBytes)
&gt; &gt; }
&gt; &gt; 
&gt; &gt; I&apos;m not sure it&apos;s any help though, what you&apos;ve got makes sense too.
&gt; 
&gt; Ahh! I get it. That might be better but I was thinking canvases would each have their own self-managed texture which sets it&apos;s priority with other contents.
&gt; 
&gt; Enne, I&apos;m happy to implement any of the additional suggestions if you still think they are better:
&gt; - Different behavior for clearPriorities of self-managed textures?
&gt; - Use a member variable for the placeholder in CCLTH. 

I like what Dana suggests above.  Use a member variable to persist the placeholder and set its priority between clear and prioritize.  Don&apos;t treat self-managed textures differently in clearPriorities, since that won&apos;t make sense for canvases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669636</commentid>
    <comment_count>26</comment_count>
      <attachid>152387</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 17:51:53 -0700</bug_when>
    <thetext>Created attachment 152387
rebase_address_feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669641</commentid>
    <comment_count>27</comment_count>
      <attachid>152389</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 17:55:05 -0700</bug_when>
    <thetext>Created attachment 152389
rebase_address_feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669642</commentid>
    <comment_count>28</comment_count>
      <attachid>152390</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 18:01:05 -0700</bug_when>
    <thetext>Created attachment 152390
rebase_address_feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669649</commentid>
    <comment_count>29</comment_count>
      <attachid>152390</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 18:11:34 -0700</bug_when>
    <thetext>Comment on attachment 152390
rebase_address_feedback

Arg, can&apos;t get chrome at ToT to run due to an unrelated crash.  I&apos;ll request CQ again once I can run in chrome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669653</commentid>
    <comment_count>30</comment_count>
      <attachid>152390</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-13 18:21:29 -0700</bug_when>
    <thetext>Comment on attachment 152390
rebase_address_feedback

R=me.  Thanks for those changes.  I find that to be way more intuitive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669657</commentid>
    <comment_count>31</comment_count>
      <attachid>152390</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-13 18:32:38 -0700</bug_when>
    <thetext>Comment on attachment 152390
rebase_address_feedback

NP, it&apos;s more clear now I agree. This works when rebased against gclient branch so I think it&apos;s GTG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669697</commentid>
    <comment_count>32</comment_count>
      <attachid>152390</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-13 20:05:20 -0700</bug_when>
    <thetext>Comment on attachment 152390
rebase_address_feedback

Clearing flags on attachment: 152390

Committed r122658: &lt;http://trac.webkit.org/changeset/122658&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669698</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-13 20:05:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670345</commentid>
    <comment_count>34</comment_count>
      <attachid>152390</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-16 08:02:21 -0700</bug_when>
    <thetext>Comment on attachment 152390
rebase_address_feedback

+1 nice job</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152118</attachid>
            <date>2012-07-12 18:12:24 -0700</date>
            <delta_ts>2012-07-13 11:49:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91177-20120712181223.patch</filename>
            <type>text/plain</type>
            <size>45169</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE4Zjg1NjlkMDJkMDAy
MDVlMDkyZGE0NTM5N2IxZjQ4OGUzZmNhNi4uNmVjNmUyNzg3MGQ5ODdkNDQxMTk2ZWY3M2E0NTZi
ZTJmMTY3NmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA3LTEyICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCAn
c2VsZi1tYW5hZ2VkJyBvcHRpb24gdG8gQ0NQcmlvcml0aXplZFRleHR1cmUgdG8gZW5hYmxlIHJl
bmRlci1zdXJmYWNlIGFuZCBjYW52YXMgdXNlIGNhc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTExNzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1ha2VzIHRoZSByZW5kZXItc3VyZmFjZSBt
ZW1vcnkgdXNlIGNhc2UgZ2VuZXJpYyBhcyAnc2VsZi1tYW5hZ2VkJyB0ZXh0dXJlcywKKyAgICAg
ICAgYXMgdGhpcyB1c2UgY2FzZSBpcyBwb3BwaW5nIHVwIGluIG90aGVyIHBsYWNlcyAoZWcuIGNh
bnZhc2VzKS4gSXQncyBleGFjdGx5IHRoZQorICAgICAgICBzYW1lIGlkZWEgZXhjZXB0IHdlIGNh
biBoYXZlIGFzIG1hbnkgcGxhY2UtaG9sZGVycyBhcyB3ZSB3YW50IGF0IGFyYml0cmFyeQorICAg
ICAgICBwcmlvcml0aWVzLgorCisgICAgICAgIFRoaXMgYWxyZWFkeSB0ZXN0ZWQgYnkgdGhlIHJl
bmRlciBzdXJmYWNlIHVuaXQgdGVzdHMgd2hpY2ggbm93IGFsc28gdXNlIHRoZSAKKyAgICAgICAg
Z2VuZXJpYyBwbGFjZWhvbGRlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpDQ1ByaW9yaXRp
emVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6YWNx
dWlyZUJhY2tpbmdUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OnNldElzU2VsZk1h
bmFnZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmlzU2VsZk1h
bmFnZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmg6CisgICAg
ICAgIChDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGVNZW1vcnlQbGFjZWhvbGRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6Om1lbW9yeUZvclNlbGZN
YW5hZ2VkVGV4dHVyZXMpOgorCiAyMDEyLTA3LTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeC4gSW5pdGlhbGl6ZSB1bnVzZWQgY29uc3QgbWVt
YmVyIHZhcmlhYmxlcyB0byBtYWtlIGNvbXBpbGVycyBoYXBweS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggODE1MmYyN2VlNDMwYjdlNDZiNjhhM2NhNDgwODc4MjA2ZDUyOWIzOS4uMzEw
OTY1ZTVmN2Y4ZmViNDBjY2M5MDM5NTMwOWNiZTFhODA3MzA2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNy0xMiAgRXJpYyBQZW5uZXIgIDxlcGVu
bmVyQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgJ3NlbGYtbWFuYWdlZCcg
b3B0aW9uIHRvIENDUHJpb3JpdGl6ZWRUZXh0dXJlIHRvIGVuYWJsZSByZW5kZXItc3VyZmFjZSBh
bmQgY2FudmFzIHVzZSBjYXNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxMTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ29udmVydCB0aGUgcmVuZGVyLXN1cmZhY2UgdW5pdCB0ZXN0cyB0byB1c2Ug
dGhlIHBsYWNlaG9sZGVycy4KKworICAgICAgICAqIHRlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
VGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorCiAyMDEyLTA3LTEyICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBSb290
IGludmFsaWRhdGlvbnMgZm9yIFJUTCBwYWdlcyBuZWVkIHRvIGJlIGluIHRoZSByaWdodCBzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMWE0MzU5ZWRiZDQ2OTc3OWEw
N2Y0MGZkNjA5ZGEyZTcyZjgzYzdhNC4uNGQwODVjYTNmMmI1NzVmOGE4ZDdkNWYxNGQwZWJlYTll
NGRiZjk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00ODksOCArNDg5
LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiBy
b290TGF5ZXIsIENDVGV4dHVyZVVwZGF0ZXImIHUKICAgICAvLyBSZXNldCBwYXJ0aWFsIHRleHR1
cmUgdXBkYXRlIHJlcXVlc3RzLgogICAgIG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA9
IDA7CiAKLSAgICBwcmlvcml0aXplVGV4dHVyZXModXBkYXRlTGlzdCk7Ci0KICAgICBib29sIG5l
ZWRNb3JlVXBkYXRlcyA9IHBhaW50TGF5ZXJDb250ZW50cyh1cGRhdGVMaXN0LCB1cGRhdGVyKTsK
ICAgICBpZiAobV90cmlnZ2VySWRsZVVwZGF0ZXMgJiYgbmVlZE1vcmVVcGRhdGVzKQogICAgICAg
ICBzZXROZWVkc0NvbW1pdCgpOwpAQCAtNDk5LDcgKzQ5Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyLCBDQ1RleHR1cmVVcGRh
dGVyJiB1CiAgICAgICAgIHVwZGF0ZUxpc3RbaV0tPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogfQog
Ci12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlz
dCYgdXBkYXRlTGlzdCkKK3NpemVfdCBDQ0xheWVyVHJlZUhvc3Q6OnByaW9yaXRpemVUZXh0dXJl
cyhjb25zdCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250
IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgogICAgIHR5
cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25z
OjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKQEAgLTU0MSw3ICs1MzksMTQgQEAg
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByaW9yaXRpemVUZXh0dXJlcyhjb25zdCBMYXllckxpc3Qm
IHVwZGF0ZUxpc3QpCiAgICAgfQogICAgIHNpemVfdCByZW5kZXJTdXJmYWNlc0J5dGVzID0gcmVh
ZGJhY2tCeXRlcyArIG1heEJhY2tncm91bmRUZXh0dXJlQnl0ZXMgKyBjb250ZW50c1RleHR1cmVC
eXRlczsKIAotICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KHJlbmRlclN1cmZhY2VzQnl0ZXMpOworICAgIC8vIENyZWF0ZSBhIG1lbW9yeSBwbGFjZWhvbGRl
ciB0ZXh0dXJlIHRvIHJlcHJlc2VudCBhbGwgc3VyZmFjZXMsCisgICAgLy8gc2luY2UgY29udGVu
dHMgYW5kIHN1cmZhY2VzIGFyZW4ndCBtYW5hZ2VkIHRvZ2V0aGVyICh5ZXQpLgorICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gc3VyZmFjZVBsYWNlaG9sZGVyID0gbV9jb250ZW50c1Rl
eHR1cmVNYW5hZ2VyLT5jcmVhdGVNZW1vcnlQbGFjZWhvbGRlcihyZW5kZXJTdXJmYWNlc0J5dGVz
KTsKKyAgICBzdXJmYWNlUGxhY2Vob2xkZXItPnNldFJlcXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5
Q2FsY3VsYXRvcjo6cmVuZGVyU3VyZmFjZVByaW9yaXR5KCkpOworCisgICAgbV9jb250ZW50c1Rl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKKworICAgIHJldHVybiByZW5kZXJT
dXJmYWNlc0J5dGVzOwogfQogCiBib29sIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrc0ZvclJl
bmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBDQ1RleHR1cmVV
cGRhdGVyJiB1cGRhdGVyKQpAQCAtNTY3LDYgKzU3Miw4IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0
OjpwYWludE1hc2tzRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNl
TGF5CiAKIGJvb2wgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5
ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVy
KQogeworICAgIHNpemVfdCBtZW1vcnlGb3JSZW5kZXJTdXJmYWNlc01ldHJpYyA9IHByaW9yaXRp
emVUZXh0dXJlcyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKwogICAgIC8vIFVzZSBGcm9udFRv
QmFjayB0byBhbGxvdyBmb3IgdGVzdGluZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGlu
ZyBkdXJpbmcgdGhlIHRyZWUgd2Fsay4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXll
ckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VD
aHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVy
YXRvclR5cGU7CiAKQEAgLTU5Miw3ICs1OTksNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6cGFp
bnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAog
ICAgIH0KIAogICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkuZGlkVXNlQ29u
dGVudHNUZXh0dXJlTWVtb3J5Qnl0ZXMobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5tZW1vcnlB
Ym92ZUN1dG9mZkJ5dGVzKCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNz
KCkuZGlkVXNlUmVuZGVyU3VyZmFjZVRleHR1cmVNZW1vcnlCeXRlcyhtX2NvbnRlbnRzVGV4dHVy
ZU1hbmFnZXItPm1lbW9yeUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSk7CisgICAgb2NjbHVzaW9u
VHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5kaWRVc2VSZW5kZXJTdXJmYWNlVGV4dHVyZU1lbW9y
eUJ5dGVzKG1lbW9yeUZvclJlbmRlclN1cmZhY2VzTWV0cmljKTsKICAgICBvY2NsdXNpb25UcmFj
a2VyLm92ZXJkcmF3TWV0cmljcygpLnJlY29yZE1ldHJpY3ModGhpcyk7CiAKICAgICByZXR1cm4g
bmVlZE1vcmVVcGRhdGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA3YmIwZjY4
YzYwNTZjNTdiNzE3MGNlODM1NDFhOWQ5OTI4NTU2NzU1Li45ZDJjZmNmY2ExM2YxNjE2NThiMmNj
ZTlmMmEwOGMwMGMxNGIxMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMjg1
LDcgKzI4NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9t
aXVtKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogCi0gICAgdm9pZCBwcmlvcml0aXplVGV4dHVyZXMo
Y29uc3QgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsKKyAgICBzaXplX3QgcHJpb3JpdGl6ZVRleHR1
cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCk7CiAKICAgICB2b2lkIGFuaW1hdGVMYXll
cnMoZG91YmxlIG1vbm90b25pY1RpbWUpOwogICAgIGJvb2wgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2
ZShMYXllckNocm9taXVtKiBjdXJyZW50LCBkb3VibGUgbW9ub3RvbmljVGltZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAKaW5kZXggYTZhMzA4MTJiYTFhNjAzZDdm
NmEzNjljMzVhMzIzMzE4NTgwZDYwOS4uNGZmMzNhZjg0NDcwMWJlZmIyOTJiYWNhMzEwYjc3NTQ0
YzZjYmZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcApAQCAt
NDIsNiArNDIsNyBAQCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6Q0NQcmlvcml0aXplZFRleHR1cmUo
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyLAogICAgICwgbV9ieXRlcygwKQog
ICAgICwgbV9wcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6bG93ZXN0UHJpb3JpdHkoKSkK
ICAgICAsIG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKGZhbHNlKQorICAgICwgbV9pc1NlbGZNYW5h
Z2VkKGZhbHNlKQogICAgICwgbV9iYWNraW5nKDApCiAgICAgLCBtX21hbmFnZXIoMCkKIHsKQEAg
LTkxLDYgKzkyLDcgQEAgYm9vbCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6cmVxdWVzdExhdGUoKQog
CiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjphY3F1aXJlQmFja2luZ1RleHR1cmUoVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yKQogeworICAgIEFTU0VSVCghbV9pc1NlbGZNYW5hZ2VkKTsK
ICAgICBBU1NFUlQobV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwogICAgIGlmIChtX2lzQWJvdmVQ
cmlvcml0eUN1dG9mZikKICAgICAgICAgbV9tYW5hZ2VyLT5hY3F1aXJlQmFja2luZ1RleHR1cmVJ
Zk5lZWRlZCh0aGlzLCBhbGxvY2F0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0
dXJlLmgKaW5kZXggZGM4NTc5MzI0MTgzOTZmZGEzNzg5MDEwNTM1NWM5MjRhMmZmMjBlMi4uMDc3
MzNkZDNiOTg4NjRjM2JmZmY1NDViYWQ1ZTI5Y2VmNmRkMjAzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZS5oCkBAIC05Myw2ICs5MywxMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0
b3IqKTsKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKTsKIAorICAgIC8vIFNlbGYtbWFuYWdlZCB0
ZXh0dXJlcyBhcmUgYWNjb3VudGVkIGZvciB3aGVuIHByaW9yaXRpemluZyBvdGhlciB0ZXh0dXJl
cywKKyAgICAvLyBidXQgdGhleSBhcmUgbm90IGFsbG9jYXRlZC9yZWN5Y2xlZC9kZWxldGVkLCBz
byB0aGlzIG5lZWRzIHRvIGJlIGRvbmUKKyAgICAvLyBleHRlcm5hbGx5LiBjYW5BY3F1aXJlQmFj
a2luZ1RleHR1cmUoKSBpbmRpY2F0ZXMgaWYgdGhlIHRleHR1cmUgd291bGQgaGF2ZQorICAgIC8v
IGJlZW4gYWxsb3dlZCBnaXZlbiBpdHMgcHJpb3JpdHkuCisgICAgdm9pZCBzZXRJc1NlbGZNYW5h
Z2VkKGJvb2wgaXNTZWxmTWFuYWdlZCkgeyBtX2lzU2VsZk1hbmFnZWQgPSBpc1NlbGZNYW5hZ2Vk
OyB9CisgICAgYm9vbCBpc1NlbGZNYW5hZ2VkKCkgeyByZXR1cm4gbV9pc1NlbGZNYW5hZ2VkOyB9
CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjsKIApAQCAtMTI1LDYgKzEzMiw3IEBAIHByaXZhdGU6CiAKICAgICBzaXplX3QgbV9wcmlvcml0
eTsKICAgICBib29sIG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmOworICAgIGJvb2wgbV9pc1NlbGZN
YW5hZ2VkOwogCiAgICAgQmFja2luZyogbV9iYWNraW5nOwogICAgIENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlciogbV9tYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlci5jcHAKaW5kZXggMDE5NWI2ZjFjZGVhYjUwNmYwMzMyNzg1NjgzOThk
YjY4NDE3N2RkMS4uZjkyYWVlMzNlZTgwNGViNDFjMzQwOTg1OTUyM2U4Y2ZkNzA1ZGZjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCkBA
IC01NSw3ICs1NSw3IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6fkNDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcigpCiAgICAgICAgIGRlc3Ryb3lCYWNraW5nKCptX2JhY2tpbmdzLmJl
Z2luKCksIDApOwogfQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cHJpb3Jp
dGl6ZVRleHR1cmVzKHNpemVfdCByZW5kZXJTdXJmYWNlc01lbW9yeUJ5dGVzKQordm9pZCBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcygpCiB7CiAgICAgVFJB
Q0VfRVZFTlQwKCJjYyIsICJDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVU
ZXh0dXJlcyIpOwogCkBAIC03OSwzMSArNzksMjkgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnkK
IAogICAgIG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgPSBtX21heE1lbW9yeUxpbWl0Qnl0ZXM7CiAg
ICAgbV9wcmlvcml0eUN1dG9mZiA9IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0
eSgpOwotICAgIGJvb2wgcmVzZXJ2ZWRSZW5kZXJTdXJmYWNlcyA9IGZhbHNlOwogICAgIHNpemVf
dCBtZW1vcnlCeXRlcyA9IDA7CiAgICAgZm9yIChUZXh0dXJlVmVjdG9yOjppdGVyYXRvciBpdCA9
IHNvcnRlZFRleHR1cmVzLmJlZ2luKCk7IGl0ICE9IHNvcnRlZFRleHR1cmVzLmVuZCgpOyArK2l0
KSB7CiAgICAgICAgIGlmICgoKml0KS0+cmVxdWVzdFByaW9yaXR5KCkgPT0gQ0NQcmlvcml0eUNh
bGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICAvLyBGSVhNRTogV2UgY2FuIG1ha2UgcGxhY2Vob2xkZXIgb2JqZWN0cyBzaW1pbGFyIHRvIHRl
eHR1cmVzIHRvIHJlcHJlc2VudCB0aGUgcmVuZGVyIHN1cmZhY2UgbWVtb3J5IHJlcXVlc3QuCi0g
ICAgICAgIGlmICghcmVzZXJ2ZWRSZW5kZXJTdXJmYWNlcyAmJiBDQ1ByaW9yaXR5Q2FsY3VsYXRv
cjo6cHJpb3JpdHlJc0xvd2VyKCgqaXQpLT5yZXF1ZXN0UHJpb3JpdHkoKSwgQ0NQcmlvcml0eUNh
bGN1bGF0b3I6OnJlbmRlclN1cmZhY2VQcmlvcml0eSgpKSkgewotICAgICAgICAgICAgc2l6ZV90
IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyByZW5kZXJTdXJmYWNlc01lbW9yeUJ5dGVz
OworICAgICAgICBpZiAoKCppdCktPmlzU2VsZk1hbmFnZWQoKSkgeworICAgICAgICAgICAgLy8g
QWNjb3VudCBmb3Igc2VsZi1tYW5hZ2VkIG1lbW9yeSBpbW1lZGlhdGVseSBieSByZWR1Y2luZyB0
aGUgbWVtb3J5CisgICAgICAgICAgICAvLyBhdmFpbGFibGUgKHNpbmNlIGl0IG5ldmVyIGdldHMg
YWNxdWlyZWQpLgorICAgICAgICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0
ZXMgKyAoKml0KS0+Ynl0ZXMoKTsKICAgICAgICAgICAgIGlmIChuZXdNZW1vcnlCeXRlcyA+IG1f
bWVtb3J5QXZhaWxhYmxlQnl0ZXMpIHsKICAgICAgICAgICAgICAgICBtX3ByaW9yaXR5Q3V0b2Zm
ID0gKCppdCktPnJlcXVlc3RQcmlvcml0eSgpOwogICAgICAgICAgICAgICAgIG1fbWVtb3J5QXZh
aWxhYmxlQnl0ZXMgPSBtZW1vcnlCeXRlczsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgLT0gcmVuZGVyU3Vy
ZmFjZXNNZW1vcnlCeXRlczsKLSAgICAgICAgICAgIHJlc2VydmVkUmVuZGVyU3VyZmFjZXMgPSB0
cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5
Qnl0ZXMgKyAoKml0KS0+Ynl0ZXMoKTsKLSAgICAgICAgaWYgKG5ld01lbW9yeUJ5dGVzID4gbV9t
ZW1vcnlBdmFpbGFibGVCeXRlcykgewotICAgICAgICAgICAgbV9wcmlvcml0eUN1dG9mZiA9ICgq
aXQpLT5yZXF1ZXN0UHJpb3JpdHkoKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
bV9tZW1vcnlBdmFpbGFibGVCeXRlcyAtPSAoKml0KS0+Ynl0ZXMoKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHNpemVfdCBuZXdNZW1vcnlCeXRlcyA9IG1lbW9yeUJ5dGVzICsgKCpp
dCktPmJ5dGVzKCk7CisgICAgICAgICAgICBpZiAobmV3TWVtb3J5Qnl0ZXMgPiBtX21lbW9yeUF2
YWlsYWJsZUJ5dGVzKSB7CisgICAgICAgICAgICAgICAgbV9wcmlvcml0eUN1dG9mZiA9ICgqaXQp
LT5yZXF1ZXN0UHJpb3JpdHkoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG1lbW9yeUJ5dGVzID0gbmV3TWVtb3J5Qnl0ZXM7CiAgICAgICAgIH0K
LQotICAgICAgICBtZW1vcnlCeXRlcyA9IG5ld01lbW9yeUJ5dGVzOwogICAgIH0KIAogICAgIC8v
IE9ubHkgYWxsb3cgdGV4dHVyZXMgaWYgdGhleSBhcmUgaGlnaGVyIHRoYW4gdGhlIGN1dG9mZi4g
QWxsIHRleHR1cmVzCkBAIC0xMTMsNyArMTExLDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnkK
ICAgICBmb3IgKFRleHR1cmVWZWN0b3I6Oml0ZXJhdG9yIGl0ID0gc29ydGVkVGV4dHVyZXMuYmVn
aW4oKTsgaXQgIT0gc29ydGVkVGV4dHVyZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgYm9vbCBp
c0Fib3ZlUHJpb3JpdHlDdXRvZmYgPSBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0hp
Z2hlcigoKml0KS0+cmVxdWVzdFByaW9yaXR5KCksIG1fcHJpb3JpdHlDdXRvZmYpOwogICAgICAg
ICAoKml0KS0+c2V0QWJvdmVQcmlvcml0eUN1dG9mZihpc0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwot
ICAgICAgICBpZiAoaXNBYm92ZVByaW9yaXR5Q3V0b2ZmKQorICAgICAgICBpZiAoaXNBYm92ZVBy
aW9yaXR5Q3V0b2ZmICYmICEoKml0KS0+aXNTZWxmTWFuYWdlZCgpKQogICAgICAgICAgICAgbV9t
ZW1vcnlBYm92ZUN1dG9mZkJ5dGVzICs9ICgqaXQpLT5ieXRlcygpOwogICAgIH0KICAgICBBU1NF
UlQobV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzIDw9IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAppbmRleCA5
ODAyOTFhZGI4N2IyOGRhZDVkYzgyM2Y2NzYzYjQ4NjBlZWJhMmZjLi45M2NmMGM2YWY2M2MxMzIy
NTRjOGUzYjhmZTBiNTYxY2EwZjdlNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXIuaApAQCAtNDgsNiArNDgsMTcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1ByaW9yaXRpemVkVGV4dHVyZSh0aGlzLCBz
aXplLCBmb3JtYXQpKTsKICAgICB9CisgICAgLy8gQSBtZW1vcnkgcGxhY2Vob2xkZXIgaXMgc2Vs
Zi1tYW5hZ2VkIGJ1dCBhbHNvIHNldHMgYSBjdXN0b20gYXJiaXRyYXJ5IHNpemUuCisgICAgLy8g
Tm90ZSB0aGUgdGhlIHNpemUgYW5kIGZvcm1hdCBhcmUgYm9ndXMsIGFuZCBjYWxsaW5nIFNldERp
bWVuc2lvbnMgd2lsbCByZXNldAorICAgIC8vIHRoZSBzaXplIGFjY29yZGluZyB0byB0aGUgbmV3
IGRpbWVuc2lvbnMuCisgICAgUGFzc093blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gY3JlYXRl
TWVtb3J5UGxhY2Vob2xkZXIoc2l6ZV90IGJ5dGVzKQorICAgIHsKKyAgICAgICAgT3duUHRyPEND
UHJpb3JpdGl6ZWRUZXh0dXJlPiBzdXJmYWNlUGxhY2Vob2xkZXIgPSBjcmVhdGVUZXh0dXJlKElu
dFNpemUoMCwgMCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgc3VyZmFjZVBs
YWNlaG9sZGVyLT5zZXRJc1NlbGZNYW5hZ2VkKHRydWUpOworICAgICAgICBzdXJmYWNlUGxhY2Vo
b2xkZXItPm1fYnl0ZXMgPSBieXRlczsKKyAgICAgICAgcmV0dXJuIHN1cmZhY2VQbGFjZWhvbGRl
ci5yZWxlYXNlKCk7CisgICAgfQorCiAgICAgfkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcigp
OwogCiAgICAgLy8gRklYTUUgKGh0dHA6Ly9jcmJ1Zy5jb20vMTM3MDk0KTogVGhpcyA2NE1CIGRl
ZmF1bHQgaXMgYSBzdHJhZ2dsZXIgZnJvbSB0aGUKQEAgLTYzLDEyICs3NCwxMiBAQCBwdWJsaWM6
CiAgICAgLy8gbWVtb3J5VXNlQnl0ZXMoKSA8PSBtZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkgc2hv
dWxkIGFsd2F5cyBiZSB0cnVlLgogICAgIHNpemVfdCBtZW1vcnlVc2VCeXRlcygpIGNvbnN0IHsg
cmV0dXJuIG1fbWVtb3J5VXNlQnl0ZXM7IH0KICAgICBzaXplX3QgbWVtb3J5QWJvdmVDdXRvZmZC
eXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlczsgfQotICAgIHNp
emVfdCBtZW1vcnlGb3JSZW5kZXJTdXJmYWNlc0J5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tYXhN
ZW1vcnlMaW1pdEJ5dGVzIC0gbV9tZW1vcnlBdmFpbGFibGVCeXRlczsgfQorICAgIHNpemVfdCBt
ZW1vcnlGb3JTZWxmTWFuYWdlZFRleHR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9tYXhNZW1vcnlM
aW1pdEJ5dGVzIC0gbV9tZW1vcnlBdmFpbGFibGVCeXRlczsgfQogCiAgICAgdm9pZCBzZXRNYXhN
ZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCBieXRlcykgeyBtX21heE1lbW9yeUxpbWl0Qnl0ZXMgPSBi
eXRlczsgfQogICAgIHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzKCkgY29uc3QgeyByZXR1cm4g
bV9tYXhNZW1vcnlMaW1pdEJ5dGVzOyB9CiAKLSAgICB2b2lkIHByaW9yaXRpemVUZXh0dXJlcyhz
aXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnlCeXRlcyk7CisgICAgdm9pZCBwcmlvcml0aXplVGV4
dHVyZXMoKTsKICAgICB2b2lkIGNsZWFyUHJpb3JpdGllcygpOwogCiAgICAgYm9vbCByZXF1ZXN0
TGF0ZShDQ1ByaW9yaXRpemVkVGV4dHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwCmluZGV4IGE4Yjk2
Mjc4N2Q4ZjIzZmViNjhmZDcyYmM1ZjY3OTUyYTVhNjYwZDguLjVjNWZiNDBkYjc0YzYwNTAyNGY3
YTQ5OTUwMjdkYTY0NjNhN2VhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAKQEAgLTk5LDcgKzk5LDcg
QEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRp
bmdNYXhMaW1pdCkKICAgICAgICAgdGV4dHVyZXNbaV0tPnNldFJlcXVlc3RQcmlvcml0eSgxMDAg
KyBpKTsKIAogICAgIC8vIE9ubHkgbG93ZXIgaGFsZiBzaG91bGQgYmUgYXZhaWxhYmxlLgotICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVy
ZSh0ZXh0dXJlc1swXSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUo
dGV4dHVyZXNbN10sIGZhbHNlKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRlVGV4dHVyZSh0
ZXh0dXJlc1s4XSwgZmFsc2UpKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBURVNUX0YoQ0NQcmlvcml0
aXplZFRleHR1cmVUZXN0LCByZXF1ZXN0VGV4dHVyZUV4Y2VlZGluZ01heExpbWl0KQogICAgICAg
ICB0ZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9yaXR5KDEwMCAtIGkpOwogCiAgICAgLy8gT25s
eSB1cHBlciBoYWxmIHNob3VsZCBiZSBhdmFpbGFibGUuCi0gICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7CiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1swXSwgZmFs
c2UpKTsKICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzddLCBmYWxz
ZSkpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1s4XSwgZmFsc2Up
KTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBj
aGFuZ2VNZW1vcnlMaW1pdHMpCiAKICAgICAvLyBTZXQgbWF4IGxpbWl0IHRvIDggdGV4dHVyZXMK
ICAgICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyh0ZXh0dXJlc01lbW9y
eVNpemUoOCkpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Cisg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkKICAgICAgICAgdmFsaWRhdGVUZXh0dXJlKHRl
eHR1cmVzW2ldLCBmYWxzZSk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeShhbGxv
Y2F0b3IoKSk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJl
VGVzdCwgY2hhbmdlTWVtb3J5TGltaXRzKQogCiAgICAgLy8gU2V0IG1heCBsaW1pdCB0byA1IHRl
eHR1cmVzCiAgICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVy
ZXNNZW1vcnlTaXplKDUpKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kpCiAgICAgICAgIEVYUEVDVF9FUSh2
YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0sIGZhbHNlKSwgaSA8IDUpOwogICAgIHRleHR1cmVN
YW5hZ2VyLT5yZWR1Y2VNZW1vcnkoYWxsb2NhdG9yKCkpOwpAQCAtMTU1LDcgKzE1NSw3IEBAIFRF
U1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIGNoYW5nZU1lbW9yeUxpbWl0cykKIAogICAg
IC8vIFNldCBtYXggbGltaXQgdG8gNCB0ZXh0dXJlcwogICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRN
YXhNZW1vcnlMaW1pdEJ5dGVzKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSk7Ci0gICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsg
KytpKQogICAgICAgICBFWFBFQ1RfRVEodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxz
ZSksIGkgPCA0KTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KGFsbG9jYXRvcigp
KTsKQEAgLTE4MSw3ICsxODEsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0
ZXh0dXJlTWFuYWdlclBhcnRpYWxVcGRhdGVUZXh0dXJlcykKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbnVtVGV4dHVyZXM7ICsraSkKICAgICAgICAgdGV4dHVyZXNbaV0tPnNldFJlcXVl
c3RQcmlvcml0eSgyMDAgKyBpKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAg
IC8vIEFsbG9jYXRlIHRleHR1cmVzIHdoaWNoIGFyZSBjdXJyZW50bHkgaGlnaCBwcmlvcml0eS4K
ICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbMF0sIGZhbHNlKSk7CkBA
IC0xOTYsNyArMTk2LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVy
ZU1hbmFnZXJQYXJ0aWFsVXBkYXRlVGV4dHVyZXMpCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bVRleHR1cmVzOyArK2kpCiAgICAgICAgIG1vcmVUZXh0dXJlc1tpXS0+c2V0UmVxdWVz
dFByaW9yaXR5KDEwMCArIGkpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAg
Ly8gVGV4dHVyZXMgYXJlIG5vdyBiZWxvdyBjdXRvZmYuCiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlk
YXRlVGV4dHVyZSh0ZXh0dXJlc1swXSwgZmFsc2UpKTsKQEAgLTI0Miw3ICsyNDIsNyBAQCBURVNU
X0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlclByaW9yaXRpZXNBcmVF
cXVhbCkKIAogICAgIC8vIFNldCBtYXggbGltaXQgdG8gOCB0ZXh0dXJlcwogICAgIHRleHR1cmVN
YW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHRleHR1cmVzTWVtb3J5U2l6ZSg4KSk7Ci0g
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBUaGUgdHdvIGhpZ2ggcHJpb3Jp
dHkgdGV4dHVyZXMgc2hvdWxkIGJlIGF2YWlsYWJsZSwgb3RoZXJzIHNob3VsZCBub3QuCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCAyOyArK2kpCkBAIC0yNzMsNyArMjczLDcgQEAgVEVTVF9G
KENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJEZXN0cm95ZWRGaXJzdCkK
ICAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpOwogCiAgICAg
dGV4dHVyZS0+c2V0UmVxdWVzdFByaW9yaXR5KDEwMCk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7CiAKICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZSwgZmFsc2Up
KTsKICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlLT5jYW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKSk7
CkBAIC0yOTYsNyArMjk2LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4
dHVyZU1vdmVkVG9OZXdNYW5hZ2VyKQogICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJlLT5oYXZlQmFj
a2luZ1RleHR1cmUoKSk7CiAKICAgICB0ZXh0dXJlLT5zZXRSZXF1ZXN0UHJpb3JpdHkoMTAwKTsK
LSAgICB0ZXh0dXJlTWFuYWdlck9uZS0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1
cmVNYW5hZ2VyT25lLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIEVYUEVDVF9UUlVFKHZh
bGlkYXRlVGV4dHVyZSh0ZXh0dXJlLCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHRleHR1cmUt
PmNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpKTsKQEAgLTMxMiw3ICszMTIsNyBAQCBURVNUX0Yo
Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTW92ZWRUb05ld01hbmFnZXIpCiAKICAg
ICB0ZXh0dXJlLT5zZXRUZXh0dXJlTWFuYWdlcih0ZXh0dXJlTWFuYWdlclR3by5nZXQoKSk7CiAK
LSAgICB0ZXh0dXJlTWFuYWdlclR3by0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1
cmVNYW5hZ2VyVHdvLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIEVYUEVDVF9UUlVFKHZh
bGlkYXRlVGV4dHVyZSh0ZXh0dXJlLCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHRleHR1cmUt
PmNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpKTsKQEAgLTMyMSwxMyArMzIxLDE1IEBAIFRFU1Rf
RihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNb3ZlZFRvTmV3TWFuYWdlcikKICAg
ICB0ZXh0dXJlTWFuYWdlclR3by0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOwogfQogCisK
IFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlbmRlclN1cmZhY2VzUmVkdWNlTWVt
b3J5QXZhaWxhYmxlT3V0c2lkZVJvb3RTdXJmYWNlKQogewogICAgIGNvbnN0IHNpemVfdCBtYXhU
ZXh0dXJlcyA9IDg7CiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBjcmVhdGVNYW5hZ2VyKG1heFRleHR1cmVzKTsKIAotICAgIC8vIEhhbGYg
b2YgdGhlIG1lbW9yeSBpcyB0YWtlbiBieSBzdXJmYWNlcy4KLSAgICBjb25zdCBzaXplX3QgcmVu
ZGVyU3VyZmFjZXNCeXRlcyA9IHRleHR1cmVzTWVtb3J5U2l6ZSg0KTsKKyAgICAvLyBIYWxmIG9m
IHRoZSBtZW1vcnkgaXMgdGFrZW4gYnkgc3VyZmFjZXMgKHdpdGggaGlnaCBwcmlvcml0eSBwbGFj
ZS1ob2xkZXIpCisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiByZW5kZXJTdXJmYWNl
UGxhY2VIb2xkZXIgPSB0ZXh0dXJlTWFuYWdlci0+Y3JlYXRlTWVtb3J5UGxhY2Vob2xkZXIodGV4
dHVyZXNNZW1vcnlTaXplKDQpKTsKKyAgICByZW5kZXJTdXJmYWNlUGxhY2VIb2xkZXItPnNldFJl
cXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cmVuZGVyU3VyZmFjZVByaW9yaXR5
KCkpOwogCiAgICAgLy8gQ3JlYXRlIHRleHR1cmVzIHRvIGZpbGwgb3VyIG1lbW9yeSBsaW1pdC4K
ICAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHRleHR1cmVzW21heFRleHR1cmVzXTsK
QEAgLTM0MCw3ICszNDIsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZW5k
ZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZU91dHNpZGVSb290UwogICAgICAgICB0ZXh0
dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9yaXR5KDEwMCArIGkpOwogCiAgICAgLy8gT25seSBsb3dl
ciBoYWxmIHNob3VsZCBiZSBhdmFpbGFibGUuCi0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcyhyZW5kZXJTdXJmYWNlc0J5dGVzKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgRVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1
cmVzWzBdLCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJl
c1szXSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVz
WzRdLCBmYWxzZSkpOwpAQCAtMzUxLDE0ICszNTMsMTQgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRU
ZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVPdXRzaWRlUm9v
dFMKICAgICAgICAgdGV4dHVyZXNbaV0tPnNldFJlcXVlc3RQcmlvcml0eSgxMDAgLSBpKTsKIAog
ICAgIC8vIE9ubHkgdXBwZXIgaGFsZiBzaG91bGQgYmUgYXZhaWxhYmxlLgotICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMocmVuZGVyU3VyZmFjZXNCeXRlcyk7CisgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIEVYUEVDVF9GQUxTRSh2YWxp
ZGF0ZVRleHR1cmUodGV4dHVyZXNbMF0sIGZhbHNlKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlk
YXRlVGV4dHVyZSh0ZXh0dXJlc1szXSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0
ZVRleHR1cmUodGV4dHVyZXNbNF0sIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUodmFsaWRhdGVU
ZXh0dXJlKHRleHR1cmVzWzddLCBmYWxzZSkpOwogCiAgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVt
b3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7Ci0g
ICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9y
eUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSk7CisgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5
U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclNlbGZNYW5hZ2VkVGV4dHVyZXMoKSk7
CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJl
TWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKIAogICAgIHRleHR1cmVNYW5hZ2Vy
LT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CkBAIC0zNjksOCArMzcxLDkgQEAgVEVTVF9G
KENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFp
bGFibGVGb3JSZXF1ZXN0TGEKICAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwogICAg
IE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gY3Jl
YXRlTWFuYWdlcihtYXhUZXh0dXJlcyk7CiAKLSAgICAvLyBIYWxmIG9mIHRoZSBtZW1vcnkgaXMg
dGFrZW4gYnkgc3VyZmFjZXMuCi0gICAgY29uc3Qgc2l6ZV90IHJlbmRlclN1cmZhY2VzQnl0ZXMg
PSB0ZXh0dXJlc01lbW9yeVNpemUoNCk7CisgICAgLy8gSGFsZiBvZiB0aGUgbWVtb3J5IGlzIHRh
a2VuIGJ5IHN1cmZhY2VzICh3aXRoIGhpZ2ggcHJpb3JpdHkgcGxhY2UtaG9sZGVyKQorICAgIE93
blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gcmVuZGVyU3VyZmFjZVBsYWNlSG9sZGVyID0gdGV4
dHVyZU1hbmFnZXItPmNyZWF0ZU1lbW9yeVBsYWNlaG9sZGVyKHRleHR1cmVzTWVtb3J5U2l6ZSg0
KSk7CisgICAgcmVuZGVyU3VyZmFjZVBsYWNlSG9sZGVyLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQ
cmlvcml0eUNhbGN1bGF0b3I6OnJlbmRlclN1cmZhY2VQcmlvcml0eSgpKTsKIAogICAgIC8vIENy
ZWF0ZSB0ZXh0dXJlcyB0byBmaWxsIG91ciBtZW1vcnkgbGltaXQuCiAgICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlPiB0ZXh0dXJlc1ttYXhUZXh0dXJlc107CkBAIC0zODMsNyArMzg2LDcg
QEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VN
ZW1vcnlBdmFpbGFibGVGb3JSZXF1ZXN0TGEKICAgICAgICAgdGV4dHVyZXNbaV0tPnNldFJlcXVl
c3RQcmlvcml0eSgxMDApOwogCiAgICAgLy8gVGhlIGZpcnN0IGZvdXIgdG8gYmUgcmVxdWVzdGVk
IGxhdGUgd2lsbCBiZSBhdmFpbGFibGUuCi0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcyhyZW5kZXJTdXJmYWNlc0J5dGVzKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heFRleHR1cmVz
OyArK2kpCiAgICAgICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0s
IGZhbHNlKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyBpICs9
IDIpCkBAIC0zOTIsNyArMzk1LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwg
cmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVGb3JSZXF1ZXN0TGEKICAgICAgICAg
RVhQRUNUX0ZBTFNFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1tpXSwgdHJ1ZSkpOwogCiAgICAg
RVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFi
b3ZlQ3V0b2ZmQnl0ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSwg
dGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSk7CisgICAgRVhQ
RUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclNl
bGZNYW5hZ2VkVGV4dHVyZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5tZW1v
cnlVc2VCeXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsK
IAogICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CkBAIC00
MDMsOCArNDA2LDkgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgd2hlblJlbmRl
clN1cmZhY2VOb3RBdmFpbGFibGVUZXh0dXJlc0Fsc29Ob3RBdmEKICAgICBjb25zdCBzaXplX3Qg
bWF4VGV4dHVyZXMgPSA4OwogICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlTWFuYWdlcihtYXhUZXh0dXJlcyk7CiAKLSAgICAvLyBI
YWxmIG9mIHRoZSBtZW1vcnkgaXMgdGFrZW4gYnkgc3VyZmFjZXMuCi0gICAgY29uc3Qgc2l6ZV90
IHJlbmRlclN1cmZhY2VzQnl0ZXMgPSB0ZXh0dXJlc01lbW9yeVNpemUoNCk7CisgICAgLy8gSGFs
ZiBvZiB0aGUgbWVtb3J5IGlzIHRha2VuIGJ5IHN1cmZhY2VzICh3aXRoIGhpZ2ggcHJpb3JpdHkg
cGxhY2UtaG9sZGVyKQorICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gcmVuZGVyU3Vy
ZmFjZVBsYWNlSG9sZGVyID0gdGV4dHVyZU1hbmFnZXItPmNyZWF0ZU1lbW9yeVBsYWNlaG9sZGVy
KHRleHR1cmVzTWVtb3J5U2l6ZSg0KSk7CisgICAgcmVuZGVyU3VyZmFjZVBsYWNlSG9sZGVyLT5z
ZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnJlbmRlclN1cmZhY2VQcmlv
cml0eSgpKTsKIAogICAgIC8vIENyZWF0ZSB0ZXh0dXJlcyB0byBmaWxsIG91ciBtZW1vcnkgbGlt
aXQuCiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiB0ZXh0dXJlc1ttYXhUZXh0dXJl
c107CkBAIC00MTgsNyArNDIyLDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwg
d2hlblJlbmRlclN1cmZhY2VOb3RBdmFpbGFibGVUZXh0dXJlc0Fsc29Ob3RBdmEKICAgICBmb3Ig
KHNpemVfdCBpID0gNjsgaSA8IDg7ICsraSkKICAgICAgICAgdGV4dHVyZXNbaV0tPnNldFJlcXVl
c3RQcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6dmlzaWJsZVByaW9yaXR5KGZhbHNlKSk7
CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKHJlbmRlclN1cmZhY2Vz
Qnl0ZXMpOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAg
IC8vIFVuYWJsZSB0byByZXF1ZXN0TGF0ZSB0ZXh0dXJlcyBpbiB0aGUgY2hpbGQgc3VyZmFjZS4K
ICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzZdLCB0cnVlKSk7CkBA
IC00MjksNyArNDMzLDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgd2hlblJl
bmRlclN1cmZhY2VOb3RBdmFpbGFibGVUZXh0dXJlc0Fsc29Ob3RBdmEKICAgICAgICAgRVhQRUNU
X1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSkpOwogCiAgICAgRVhQRUNU
X0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg2KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0
b2ZmQnl0ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSgyKSwgdGV4dHVy
ZU1hbmFnZXItPm1lbW9yeUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSk7CisgICAgRVhQRUNUX0VR
KHRleHR1cmVzTWVtb3J5U2l6ZSgyKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclNlbGZNYW5h
Z2VkVGV4dHVyZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VC
eXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKIAogICAg
IHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNw
cAppbmRleCAzMWNmNjcyNWUxMzI4NGQwNGI3ZGZhMjc0YzgzYmVmNzVjOTZmMDZhLi5mMTUyYWI0
ZmJlNzg5MWUwNTM2NzllYmYzMTIyNjQ3Nzg0MGNkZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTEw
NSw3ICsxMDUsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGls
ZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAgdXBk
YXRlVGV4dHVyZXMoKTsKQEAgLTExOSw3ICsxMTksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVj
dChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGVuIG9ubHkgdXBk
YXRlIG9uZSBvZiB0aGVtLgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7
CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CiAg
ICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMTQ0LDcg
KzE0NCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2NjbHVkZWREaXJ0
eVRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCkpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2Fs
Y3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2NsdWRl
ZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKQEAgLTE4OCw3ICsxODgsNyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKICAgICBsYXllci0+aW52YWxp
ZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKIAogICAgIGxheWVyLT5z
ZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwogCiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtMjEx
LDcgKzIxMSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRp
bGVzKQogCiAgICAgLy8gVGhpcyBzaG91bGQgcmVjcmVhdGUgYW5kIHVwZGF0ZSB0aGUgZGVsZXRl
ZCB0ZXh0dXJlcy4KICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogICAgIHVw
ZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdl
dCgpKTsKQEAgLTIzOSw3ICsyMzksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaElkbGVQYWludFRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29u
dGVudFJlY3QpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2Fs
Y3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgIHVwZGF0ZVRleHR1
cmVzKCk7CkBAIC0yNTUsNyArMjU1LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICAvLyBGb3IgdGhlIG5leHQgZm91ciB1cGRhdGVzLCB3
ZSBzaG91bGQgZGV0ZWN0IHdlIHN0aWxsIG5lZWQgaWRsZSBwYWludGluZy4KICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygwKTsKKyAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygpOwogCiAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxl
UmVjdCwgMCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNp
YmxlUmVjdCkpOwpAQCAtMzA3LDcgKzMwNyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAgICAvLyBQYWludCBhIHNpbmds
ZSB0aWxlIGluIGxheWVyMiBzbyB0aGF0IGl0IHdpbGwgaWRsZSBwYWludC4KICAgICBsYXllcjIt
PnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5ZXIxLT5z
ZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwogICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgbGF5
ZXJSZWN0LCAwKTsKICAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKIApAQCAtMzI1LDcgKzMyNSw3IEBAIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAgICAv
LyBOb3cgaWRsZSBwYWludCBsYXllcjIuIFdlIGFyZSBnb2luZyB0byBydW4gb3V0IG9mIG1lbW9y
eSB0aG91Z2ghCiAgICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOwogICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllcjItPnVwZGF0ZUNv
bnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKIAogICAgIC8v
IE9oIHdlbGwsIGNvbW1pdCB0aGUgZnJhbWUgYW5kIHB1c2guCkBAIC0zNDUsNyArMzQ1LDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFp
bGVkKQogICAgIC8vIE5vdyBpZiBsYXllcjIgYmVjb21lcyBmdWxseSB2aXNpYmxlLCB3ZSBzaG91
bGQgYmUgYWJsZSB0byBwYWludCBpdCBhbmQgcHVzaCB2YWxpZCB0ZXh0dXJlcy4KICAgICBsYXll
cjItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5ZXIx
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
bGF5ZXIyUmVjdCwgMCk7CiAgICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBs
YXllclJlY3QsIDApOwogCkBAIC0zNzgsNyArMzc4LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRlZE9jY2x1ZGVkVGlsZXMpCiAgICAgbGF5ZXItPmludmFs
aWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsK
ICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwpAQCAtNDAzLDcg
KzQwMyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNNYXJrZWRE
aXJ0eUR1cmluZ1BhaW50KQogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5z
ZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXllci5nZXQoKSk7
CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
LSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIHVwZGF0ZVRleHR1
cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKQEAg
LTQzMiw3ICs0MzIsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVz
TGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIpCiAKICAgICBsYXllcjEtPnNl
dFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5ZXIyLT5zZXRU
ZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2Vy
LT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygpOwogCiAgICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50
T25QcmV2aW91c0xheQogCiAgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOwogICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlD
YWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwor
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIEludmFs
aWRhdGUgYSB0aWxlIG9uIGxheWVyMgogICAgIGxheWVyMS0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIy
LmdldCgpKTsKQEAgLTUwOCw3ICs1MDgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVj
dChjb250ZW50UmVjdCk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3Jp
dHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDAp
OworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAgLy8gSWRs
ZS1wYWludGluZyBzaG91bGQgc2VlIG5vIG1vcmUgcHJpb3JpdHkgdGlsZXMgZm9yIHBhaW50aW5n
LgpAQCAtNTIxLDcgKzUyMSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxl
UGFpbnRPdXRPZk1lbW9yeSkKICAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgx
LCAxKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAgLy8gV2Ugc2hvdWxkbid0
IHNpZ25hbCB3ZSBuZWVkIGFub3RoZXIgaWRsZSBwYWludC4KQEAgLTU0OCw3ICs1NDgsNyBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkTGF5ZXIpCiAg
ICAgICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogCiAgICAg
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAg
ICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgICAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAgICAgLy8gRW1wdHkgbGF5
ZXJzIGRvbid0IHBhaW50IG9yIGlkbGUtcGFpbnQuCiAgICAgICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CkBAIC01ODYsNyArNTg2LDcgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXllcnMpCiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICAgLy8gUGFpbnQgLyBpZGxl
LXBhaW50LgogICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKLSAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsK
KyAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgICAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAg
ICAgIC8vIE5vbi12aXNpYmxlIGxheWVycyBkb24ndCBuZWVkIGlkbGUgcGFpbnQuCkBAIC02MzYs
NyArNjM2LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZp
c2libGVBbmltYXRpbmdMYXllcnMpCiAgICAgICAgICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRl
bnRSZWN0KGNvbnRlbnRSZWN0KTsKIAogICAgICAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgICAgICAgICB0ZXh0dXJlTWFuYWdlci0+
cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygpOwogCiAgICAgICAgICAgICAvLyBJZiBpZGxlUGFpbnRSZWN0IGdpdmVz
IGJhY2sgYSBub24tZW1wdHkgcmVzdWx0IHRoZW4gd2Ugc2hvdWxkIHBhaW50IGl0LiBPdGhlcndp
c2UsCiAgICAgICAgICAgICAvLyB3ZSBzaG91ZCBwYWludCBub3RoaW5nLgpAQCAtNjQ4LDcgKzY0
OCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxl
QW5pbWF0aW5nTGF5ZXJzKQogICAgICAgICAgICAgLy8gSWYgdGhlIGxheWVyIGlzIHRvIGJlIHBy
ZXBhaW50ZWQgYXQgYWxsLCB0aGVuIGFmdGVyIGZvdXIgdXBkYXRlcyB3ZSBzaG91bGQgaGF2ZSB0
aGUgb3V0ZXIgcm93L2NvbHVtbnMgcGFpbnRlZC4KICAgICAgICAgICAgIGZvciAoaW50IGsgPSAw
OyBrIDwgNDsgKytrKSB7CiAgICAgICAgICAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0
aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlTWFuYWdlci0+
cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAgICAgICAgICAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICAgICAgICAgIHVwZGF0
ZVRleHR1cmVzKCk7CkBAIC02NjEsNyArNjYxLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAgICAgICAgICAgICBF
WFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAgICAgICAg
ICAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7ICsraykgewogICAgICAgICAgICAgICAgIGxheWVy
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgICAgICAgICAg
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgICAgICAgICAg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgICAgICAgICAg
ICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKICAg
ICAgICAgICAgICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtNjkwLDcgKzY5MCw3IEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgbGF5
ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAg
bGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICB1cGRhdGVyLnVwZGF0ZShj
Y0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRl
ciwgMTAwMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
QEAgLTc0MCwxNCArNzQwLDE0IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJp
ZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgbGF5ZXItPmludmFs
aWRhdGVDb250ZW50UmVjdChjb250ZW50Qm91bmRzKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRz
LCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwgMCwgMzAwLCAzMDAg
KiAwLjgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogCiAg
ICAgLy8gQWZ0ZXIgdGhlIHRpbGVzIGFyZSB1cGRhdGVkIG9uY2UsIGFub3RoZXIgaW52YWxpZGF0
ZSBvbmx5IG5lZWRzIHRvIHVwZGF0ZSB0aGUgYm91bmRzIG9mIHRoZSBsYXllci4KICAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRl
bnRCb3VuZHMpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50
Qm91bmRzLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QobGF5ZXJCb3Vu
ZHMpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJl
U2NhbGVkKQogICAgIEludFJlY3QgcGFydGlhbERhbWFnZSgzMCwgMTAwLCAxMCwgMTApOwogICAg
IGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QocGFydGlhbERhbWFnZSk7CiAgICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNv
bnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCg0NSwg
ODAsIDE1LCA4KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiB9CkBAIC03NzksNyArNzc5LDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250
ZW50c1NjYWxlQ2hhbmdlcykKIAogICAgIC8vIFB1c2ggdGhlIHRpbGVzIHRvIHRoZSBpbXBsIHNp
ZGUgYW5kIGNoZWNrIHRoYXQgdGhlcmUgaXMgZXhhY3RseSBvbmUuCiAgICAgbGF5ZXItPnNldFRl
eHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5w
dXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CkBAIC03OTYsNyArNzk2LDcgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50
c1NjYWxlQ2hhbmdlcykKIAogICAgIC8vIFRoZSBpbXBsIHNpZGUgc2hvdWxkIGdldCAyeDIgdGls
ZXMgbm93LgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSwgMCk7CiAgICAgdXBkYXRl
VGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkp
OwpAQCAtODEwLDcgKzgxMCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJp
ZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAgICAgbGF5ZXItPnNldE5l
ZWRzRGlzcGxheSgpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNh
bGN1bGF0b3IpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0
KDEsIDAsIDAsIDEpLCAwKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX0ZBTFNF
KGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKQEAgLTg4MCw3ICs4ODAsNyBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcmVzaXplVG9TbWFsbGVyKQogICAgIGxheWVyLT5pbnZh
bGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCkpOwogCiAgICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIElu
dFJlY3QoMCwgMCwgNzAwLCA3MDApLCAwKTsKIAogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6
ZSgyMDAsIDIwMCkpOwpAQCAtODk5LDcgKzg5OSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBodWdlTGF5ZXJVcGRhdGVDcmFzaCkKIAogICAgIC8vIEVuc3VyZSBubyBjcmFzaCBm
b3IgYm91bmRzIHdoZXJlIHNpemUgKiBzaXplIHdvdWxkIG92ZXJmbG93IGFuIGludC4KICAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRl
ciwgSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOwogfQogCkBAIC0xMDM5LDcgKzEwMzksNyBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aG91dE9jY2x1
c2lvbikKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAgRVhQ
RUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENv
dW50KCkpOwogfQpAQCAtMTA2MCw3ICsxMDYwLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCiAgICAgbGF5ZXItPmludmFsaWRhdGVD
b250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAKICAgICBsYXllci0+c2V0VGV4
dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+
cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4
dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCkBAIC0xMTA4
LDcgKzExMDgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVk
V2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAgIGxheWVyLT5pbnZhbGlk
YXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogCiAgICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgNjAwLCAzNjApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgyNC0zLCBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIApAQCAt
MTEyMyw3ICsxMTIzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFp
bnRlZFdpdGhPY2NsdXNpb25BbmRWaXNpYmxpdHlDb25zdHJhaW50cykKICAgICBsYXllci0+c2V0
VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNTApKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
SW50UmVjdCgwLCAwLCA2MDAsIDM1MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDI0LTYs
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwog
CkBAIC0xMTM4LDcgKzExMzgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGls
ZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAgIGxheWVy
LT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDM0MCkpOwogICAgIGxh
eWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzQwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEo
MjQtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQo
KSk7CiAKQEAgLTExNjMsNyArMTE2Myw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCB0aWxlc05vdFBhaW50ZWRXaXRob3V0SW52YWxpZGF0aW9uKQogICAgIGxheWVyLT5zZXRWaXNp
YmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogICAgIGxheWVyLT5pbnZh
bGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogICAgIGxheWVyLT5z
ZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYtMywgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAgICAg
dXBkYXRlVGV4dHVyZXMoKTsKQEAgLTEyMDMsNyArMTIwMyw3IEBAIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3JtcykKICAg
ICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXIt
PmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5
Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsK
KyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVk
ZWQpOwogICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIApAQCAtMTIzMSw3ICsxMjMxLDcgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5n
KQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBs
YXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJp
b3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZv
Y2NsdWRlZCk7CiAgICAgLy8gVGhlIGNvbnRlbnQgaXMgaGFsZiB0aGUgc2l6ZSBvZiB0aGUgbGF5
ZXIgKHNvIHRoZSBudW1iZXIgb2YgdGlsZXMgaXMgZmV3ZXIpLgogICAgIC8vIEluIHRoaXMgY2Fz
ZSwgdGhlIGNvbnRlbnQgaXMgMzAweDMwMCwgYW5kIHNpbmNlIHRoZSB0aWxlIHNpemUgaXMgMTAw
LCB0aGUKQEAgLTEyNTEsNyArMTI1MSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICBsYXllci0+c2V0Vmlz
aWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAg
ICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7
CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0g
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVD
VF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENv
dW50KCkpOwogCkBAIC0xMjcxLDcgKzEyNzEsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgbGF5ZXItPnNl
dFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCkpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3Ip
OwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBF
WFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJl
Y3RDb3VudCgpKTsKIApAQCAtMTMwMCw3ICsxMzAwLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIGxheWVyLT5zZXREcmF3
T3BhY2l0eSgxKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNh
bGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Cisg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gSWYgdGhl
IGxheWVyIGRvZXNuJ3QgcGFpbnQgb3BhcXVlIGNvbnRlbnQsIHRoZW4gdGhlIHZpc2libGVDb250
ZW50T3BhcXVlUmVnaW9uIHNob3VsZCBiZSBlbXB0eS4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CkBAIC0xMzkzLDcg
KzEzOTMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGl4ZWxzUGFpbnRlZE1l
dHJpY3MpCiAgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5KDEpOwogCiAgICAgbGF5ZXItPnNldFRl
eHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKCk7CiAKICAgICAvLyBJbnZhbGlkYXRlcyBhbmQgcGFpbnRzIHRoZSB3aG9sZSBsYXll
ci4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRS
ZWN0KEludFJlY3QoKSk7CkBAIC0xNjM2LDcgKzE2MzYsNyBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgbm9uSW50ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3RvcnRlZER1cmluZ1Bh
aW50KQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogCiAg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKGNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gVXBkYXRlIHRoZSB3aG9sZSB0aWxlLgogICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CkBAIC0xNjY5
LDcgKzE2NjksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbm9uSW50ZWdlckNv
bnRlbnRzU2NhbGVJc05vdERpc3RvcnRlZER1cmluZ0ludmFsaQogICAgIGxheWVyLT5zZXRWaXNp
YmxlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKGNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAg
Ly8gVXBkYXRlIHRoZSB3aG9sZSB0aWxlLgogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152310</attachid>
            <date>2012-07-13 11:49:52 -0700</date>
            <delta_ts>2012-07-13 14:14:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91177-20120713114951.patch</filename>
            <type>text/plain</type>
            <size>45476</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE4Zjg1NjlkMDJkMDAy
MDVlMDkyZGE0NTM5N2IxZjQ4OGUzZmNhNi4uNmVjNmUyNzg3MGQ5ODdkNDQxMTk2ZWY3M2E0NTZi
ZTJmMTY3NmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA3LTEyICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCAn
c2VsZi1tYW5hZ2VkJyBvcHRpb24gdG8gQ0NQcmlvcml0aXplZFRleHR1cmUgdG8gZW5hYmxlIHJl
bmRlci1zdXJmYWNlIGFuZCBjYW52YXMgdXNlIGNhc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTExNzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1ha2VzIHRoZSByZW5kZXItc3VyZmFjZSBt
ZW1vcnkgdXNlIGNhc2UgZ2VuZXJpYyBhcyAnc2VsZi1tYW5hZ2VkJyB0ZXh0dXJlcywKKyAgICAg
ICAgYXMgdGhpcyB1c2UgY2FzZSBpcyBwb3BwaW5nIHVwIGluIG90aGVyIHBsYWNlcyAoZWcuIGNh
bnZhc2VzKS4gSXQncyBleGFjdGx5IHRoZQorICAgICAgICBzYW1lIGlkZWEgZXhjZXB0IHdlIGNh
biBoYXZlIGFzIG1hbnkgcGxhY2UtaG9sZGVycyBhcyB3ZSB3YW50IGF0IGFyYml0cmFyeQorICAg
ICAgICBwcmlvcml0aWVzLgorCisgICAgICAgIFRoaXMgYWxyZWFkeSB0ZXN0ZWQgYnkgdGhlIHJl
bmRlciBzdXJmYWNlIHVuaXQgdGVzdHMgd2hpY2ggbm93IGFsc28gdXNlIHRoZSAKKyAgICAgICAg
Z2VuZXJpYyBwbGFjZWhvbGRlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpDQ1ByaW9yaXRp
emVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6YWNx
dWlyZUJhY2tpbmdUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OnNldElzU2VsZk1h
bmFnZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmlzU2VsZk1h
bmFnZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmg6CisgICAg
ICAgIChDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGVNZW1vcnlQbGFjZWhvbGRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6Om1lbW9yeUZvclNlbGZN
YW5hZ2VkVGV4dHVyZXMpOgorCiAyMDEyLTA3LTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeC4gSW5pdGlhbGl6ZSB1bnVzZWQgY29uc3QgbWVt
YmVyIHZhcmlhYmxlcyB0byBtYWtlIGNvbXBpbGVycyBoYXBweS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggODE1MmYyN2VlNDMwYjdlNDZiNjhhM2NhNDgwODc4MjA2ZDUyOWIzOS4uMzEw
OTY1ZTVmN2Y4ZmViNDBjY2M5MDM5NTMwOWNiZTFhODA3MzA2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNy0xMiAgRXJpYyBQZW5uZXIgIDxlcGVu
bmVyQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgJ3NlbGYtbWFuYWdlZCcg
b3B0aW9uIHRvIENDUHJpb3JpdGl6ZWRUZXh0dXJlIHRvIGVuYWJsZSByZW5kZXItc3VyZmFjZSBh
bmQgY2FudmFzIHVzZSBjYXNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxMTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ29udmVydCB0aGUgcmVuZGVyLXN1cmZhY2UgdW5pdCB0ZXN0cyB0byB1c2Ug
dGhlIHBsYWNlaG9sZGVycy4KKworICAgICAgICAqIHRlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
VGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorCiAyMDEyLTA3LTEyICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBSb290
IGludmFsaWRhdGlvbnMgZm9yIFJUTCBwYWdlcyBuZWVkIHRvIGJlIGluIHRoZSByaWdodCBzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMWE0MzU5ZWRiZDQ2OTc3OWEw
N2Y0MGZkNjA5ZGEyZTcyZjgzYzdhNC4uYmRlZTdhNjE3N2JjNTRmN2JmYTBhYjBmN2FlYmE1MTg3
NmNjNjIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00ODksOCArNDg5
LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiBy
b290TGF5ZXIsIENDVGV4dHVyZVVwZGF0ZXImIHUKICAgICAvLyBSZXNldCBwYXJ0aWFsIHRleHR1
cmUgdXBkYXRlIHJlcXVlc3RzLgogICAgIG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA9
IDA7CiAKLSAgICBwcmlvcml0aXplVGV4dHVyZXModXBkYXRlTGlzdCk7Ci0KICAgICBib29sIG5l
ZWRNb3JlVXBkYXRlcyA9IHBhaW50TGF5ZXJDb250ZW50cyh1cGRhdGVMaXN0LCB1cGRhdGVyKTsK
ICAgICBpZiAobV90cmlnZ2VySWRsZVVwZGF0ZXMgJiYgbmVlZE1vcmVVcGRhdGVzKQogICAgICAg
ICBzZXROZWVkc0NvbW1pdCgpOwpAQCAtNDk5LDcgKzQ5Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyLCBDQ1RleHR1cmVVcGRh
dGVyJiB1CiAgICAgICAgIHVwZGF0ZUxpc3RbaV0tPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogfQog
Ci12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlz
dCYgdXBkYXRlTGlzdCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojpwcmlvcml0aXplVGV4dHVyZXMo
Y29uc3QgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0LCBzaXplX3QmIG1lbW9yeUZvclJlbmRlclN1cmZh
Y2VzKQogewogICAgIC8vIFVzZSBCYWNrVG9Gcm9udCBzaW5jZSBpdCdzIGNoZWFwIGFuZCB0aGlz
IGlzbid0IG9yZGVyLWRlcGVuZGVudC4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXll
ckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VD
aHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVy
YXRvclR5cGU7CkBAIC01MzksOSArNTM3LDE0IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpwcmlv
cml0aXplVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogICAgICAgICBpZiAo
IXJlYWRiYWNrQnl0ZXMpCiAgICAgICAgICAgICByZWFkYmFja0J5dGVzID0gQ0NUZXh0dXJlOjpt
ZW1vcnlTaXplQnl0ZXMobV9kZXZpY2VWaWV3cG9ydFNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBKTsKICAgICB9Ci0gICAgc2l6ZV90IHJlbmRlclN1cmZhY2VzQnl0ZXMgPSByZWFkYmFja0J5
dGVzICsgbWF4QmFja2dyb3VuZFRleHR1cmVCeXRlcyArIGNvbnRlbnRzVGV4dHVyZUJ5dGVzOwor
ICAgIG1lbW9yeUZvclJlbmRlclN1cmZhY2VzID0gcmVhZGJhY2tCeXRlcyArIG1heEJhY2tncm91
bmRUZXh0dXJlQnl0ZXMgKyBjb250ZW50c1RleHR1cmVCeXRlczsKKworICAgIC8vIENyZWF0ZSBt
ZW1vcnkgcGxhY2UtaG9sZGVyIGZvciBzdXJmYWNlcyAod2hpY2ggYXJlIG1hbmFnZWQgaW5kZXBl
bmRhbnRseSkgYnV0IHNob3VsZAorICAgIC8vIHJlZHVjZSBtZW1vcnkgYXZhaWxhYmxlIGZvciBj
b250ZW50cy4KKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHN1cmZhY2VQbGFjZWhv
bGRlciA9IG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+Y3JlYXRlTWVtb3J5UGxhY2Vob2xkZXIo
bWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXMpOworICAgIHN1cmZhY2VQbGFjZWhvbGRlci0+c2V0UmVx
dWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpyZW5kZXJTdXJmYWNlUHJpb3JpdHko
KSk7CiAKLSAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcyhy
ZW5kZXJTdXJmYWNlc0J5dGVzKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygpOwogfQogCiBib29sIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrc0Zv
clJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBDQ1RleHR1
cmVVcGRhdGVyJiB1cGRhdGVyKQpAQCAtNTY3LDYgKzU3MCw5IEBAIGJvb2wgQ0NMYXllclRyZWVI
b3N0OjpwYWludE1hc2tzRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJm
YWNlTGF5CiAKIGJvb2wgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3Qg
TGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRh
dGVyKQogeworICAgIHNpemVfdCBtZW1vcnlGb3JSZW5kZXJTdXJmYWNlc01ldHJpYyA9IDA7Cisg
ICAgcHJpb3JpdGl6ZVRleHR1cmVzKHJlbmRlclN1cmZhY2VMYXllckxpc3QsIG1lbW9yeUZvclJl
bmRlclN1cmZhY2VzTWV0cmljKTsKKwogICAgIC8vIFVzZSBGcm9udFRvQmFjayB0byBhbGxvdyBm
b3IgdGVzdGluZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRy
ZWUgd2Fsay4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXll
ckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKQEAg
LTU5Miw3ICs1OTgsNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRz
KGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAogICAgIH0KIAogICAgIG9j
Y2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkuZGlkVXNlQ29udGVudHNUZXh0dXJlTWVt
b3J5Qnl0ZXMobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVz
KCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkuZGlkVXNlUmVuZGVy
U3VyZmFjZVRleHR1cmVNZW1vcnlCeXRlcyhtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPm1lbW9y
eUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSk7CisgICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJh
d01ldHJpY3MoKS5kaWRVc2VSZW5kZXJTdXJmYWNlVGV4dHVyZU1lbW9yeUJ5dGVzKG1lbW9yeUZv
clJlbmRlclN1cmZhY2VzTWV0cmljKTsKICAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0
cmljcygpLnJlY29yZE1ldHJpY3ModGhpcyk7CiAKICAgICByZXR1cm4gbmVlZE1vcmVVcGRhdGVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA3YmIwZjY4YzYwNTZjNTdiNzE3MGNl
ODM1NDFhOWQ5OTI4NTU2NzU1Li5lNzkzN2UyY2VhY2NlYTkyMjQ5Y2VkYjllMmUwNWQ1ZTJkZjcy
OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMjg1LDcgKzI4NSw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiwgQ0NUZXh0dXJl
VXBkYXRlciYpOwogCi0gICAgdm9pZCBwcmlvcml0aXplVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0
JiB1cGRhdGVMaXN0KTsKKyAgICB2b2lkIHByaW9yaXRpemVUZXh0dXJlcyhjb25zdCBMYXllckxp
c3QmIHVwZGF0ZUxpc3QsIHNpemVfdCYgbWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXNNZXRyaWMpOwog
CiAgICAgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKICAgICBib29s
IGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogY3VycmVudCwgZG91YmxlIG1v
bm90b25pY1RpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwCmlu
ZGV4IGE2YTMwODEyYmExYTYwM2Q3ZjZhMzY5YzM1YTMyMzMxODU4MGQ2MDkuLjRmZjMzYWY4NDQ3
MDFiZWZiMjkyYmFjYTMxMGI3NzU0NGM2Y2JmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAgQ0NQcmlvcml0aXplZFRleHR1cmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciogbWFuYWdl
ciwKICAgICAsIG1fYnl0ZXMoMCkKICAgICAsIG1fcHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0
b3I6Omxvd2VzdFByaW9yaXR5KCkpCiAgICAgLCBtX2lzQWJvdmVQcmlvcml0eUN1dG9mZihmYWxz
ZSkKKyAgICAsIG1faXNTZWxmTWFuYWdlZChmYWxzZSkKICAgICAsIG1fYmFja2luZygwKQogICAg
ICwgbV9tYW5hZ2VyKDApCiB7CkBAIC05MSw2ICs5Miw3IEBAIGJvb2wgQ0NQcmlvcml0aXplZFRl
eHR1cmU6OnJlcXVlc3RMYXRlKCkKIAogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6YWNxdWly
ZUJhY2tpbmdUZXh0dXJlKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKKyAgICBBU1NF
UlQoIW1faXNTZWxmTWFuYWdlZCk7CiAgICAgQVNTRVJUKG1faXNBYm92ZVByaW9yaXR5Q3V0b2Zm
KTsKICAgICBpZiAobV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpCiAgICAgICAgIG1fbWFuYWdlci0+
YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQodGhpcywgYWxsb2NhdG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3Jp
dGl6ZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oCmluZGV4IGRjODU3OTMyNDE4Mzk2ZmRhMzc4OTAx
MDUzNTVjOTI0YTJmZjIwZTIuLjA3NzMzZGQzYjk4ODY0YzNiZmZmNTQ1YmFkNWUyOWNlZjZkZDIw
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaApAQCAtOTMsNiArOTMs
MTMgQEAgcHVibGljOgogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoQ0NHcmFwaGljc0Nv
bnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdW5zaWduZWQgdGV4dHVyZUlkKCk7CiAK
KyAgICAvLyBTZWxmLW1hbmFnZWQgdGV4dHVyZXMgYXJlIGFjY291bnRlZCBmb3Igd2hlbiBwcmlv
cml0aXppbmcgb3RoZXIgdGV4dHVyZXMsCisgICAgLy8gYnV0IHRoZXkgYXJlIG5vdCBhbGxvY2F0
ZWQvcmVjeWNsZWQvZGVsZXRlZCwgc28gdGhpcyBuZWVkcyB0byBiZSBkb25lCisgICAgLy8gZXh0
ZXJuYWxseS4gY2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkgaW5kaWNhdGVzIGlmIHRoZSB0ZXh0
dXJlIHdvdWxkIGhhdmUKKyAgICAvLyBiZWVuIGFsbG93ZWQgZ2l2ZW4gaXRzIHByaW9yaXR5Lgor
ICAgIHZvaWQgc2V0SXNTZWxmTWFuYWdlZChib29sIGlzU2VsZk1hbmFnZWQpIHsgbV9pc1NlbGZN
YW5hZ2VkID0gaXNTZWxmTWFuYWdlZDsgfQorICAgIGJvb2wgaXNTZWxmTWFuYWdlZCgpIHsgcmV0
dXJuIG1faXNTZWxmTWFuYWdlZDsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI7CiAKQEAgLTEyNSw2ICsxMzIsNyBAQCBwcml2YXRlOgog
CiAgICAgc2l6ZV90IG1fcHJpb3JpdHk7CiAgICAgYm9vbCBtX2lzQWJvdmVQcmlvcml0eUN1dG9m
ZjsKKyAgICBib29sIG1faXNTZWxmTWFuYWdlZDsKIAogICAgIEJhY2tpbmcqIG1fYmFja2luZzsK
ICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIqIG1fbWFuYWdlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4IDAxOTViNmYx
Y2RlYWI1MDZmMDMzMjc4NTY4Mzk4ZGI2ODQxNzdkZDEuLmY5MmFlZTMzZWU4MDRlYjQxYzM0MDk4
NTk1MjNlOGNmZDcwNWRmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyLmNwcApAQCAtNTUsNyArNTUsNyBAQCBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6On5DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIoKQogICAgICAgICBkZXN0cm95
QmFja2luZygqbV9iYWNraW5ncy5iZWdpbigpLCAwKTsKIH0KIAotdm9pZCBDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNN
ZW1vcnlCeXRlcykKK3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpwcmlvcml0aXpl
VGV4dHVyZXMoKQogewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpwcmlvcml0aXplVGV4dHVyZXMiKTsKIApAQCAtNzksMzEgKzc5LDI5IEBAIHZv
aWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpwcmlvcml0aXplVGV4dHVyZXMoc2l6ZV90
IHJlbmRlclN1cmZhY2VzTWVtb3J5CiAKICAgICBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzID0gbV9t
YXhNZW1vcnlMaW1pdEJ5dGVzOwogICAgIG1fcHJpb3JpdHlDdXRvZmYgPSBDQ1ByaW9yaXR5Q2Fs
Y3VsYXRvcjo6bG93ZXN0UHJpb3JpdHkoKTsKLSAgICBib29sIHJlc2VydmVkUmVuZGVyU3VyZmFj
ZXMgPSBmYWxzZTsKICAgICBzaXplX3QgbWVtb3J5Qnl0ZXMgPSAwOwogICAgIGZvciAoVGV4dHVy
ZVZlY3Rvcjo6aXRlcmF0b3IgaXQgPSBzb3J0ZWRUZXh0dXJlcy5iZWdpbigpOyBpdCAhPSBzb3J0
ZWRUZXh0dXJlcy5lbmQoKTsgKytpdCkgewogICAgICAgICBpZiAoKCppdCktPnJlcXVlc3RQcmlv
cml0eSgpID09IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBtYWtlIHBsYWNlaG9sZGVy
IG9iamVjdHMgc2ltaWxhciB0byB0ZXh0dXJlcyB0byByZXByZXNlbnQgdGhlIHJlbmRlciBzdXJm
YWNlIG1lbW9yeSByZXF1ZXN0LgotICAgICAgICBpZiAoIXJlc2VydmVkUmVuZGVyU3VyZmFjZXMg
JiYgQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnByaW9yaXR5SXNMb3dlcigoKml0KS0+cmVxdWVzdFBy
aW9yaXR5KCksIENDUHJpb3JpdHlDYWxjdWxhdG9yOjpyZW5kZXJTdXJmYWNlUHJpb3JpdHkoKSkp
IHsKLSAgICAgICAgICAgIHNpemVfdCBuZXdNZW1vcnlCeXRlcyA9IG1lbW9yeUJ5dGVzICsgcmVu
ZGVyU3VyZmFjZXNNZW1vcnlCeXRlczsKKyAgICAgICAgaWYgKCgqaXQpLT5pc1NlbGZNYW5hZ2Vk
KCkpIHsKKyAgICAgICAgICAgIC8vIEFjY291bnQgZm9yIHNlbGYtbWFuYWdlZCBtZW1vcnkgaW1t
ZWRpYXRlbHkgYnkgcmVkdWNpbmcgdGhlIG1lbW9yeQorICAgICAgICAgICAgLy8gYXZhaWxhYmxl
IChzaW5jZSBpdCBuZXZlciBnZXRzIGFjcXVpcmVkKS4KKyAgICAgICAgICAgIHNpemVfdCBuZXdN
ZW1vcnlCeXRlcyA9IG1lbW9yeUJ5dGVzICsgKCppdCktPmJ5dGVzKCk7CiAgICAgICAgICAgICBp
ZiAobmV3TWVtb3J5Qnl0ZXMgPiBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzKSB7CiAgICAgICAgICAg
ICAgICAgbV9wcmlvcml0eUN1dG9mZiA9ICgqaXQpLT5yZXF1ZXN0UHJpb3JpdHkoKTsKICAgICAg
ICAgICAgICAgICBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzID0gbWVtb3J5Qnl0ZXM7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX21lbW9yeUF2YWls
YWJsZUJ5dGVzIC09IHJlbmRlclN1cmZhY2VzTWVtb3J5Qnl0ZXM7Ci0gICAgICAgICAgICByZXNl
cnZlZFJlbmRlclN1cmZhY2VzID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdCBu
ZXdNZW1vcnlCeXRlcyA9IG1lbW9yeUJ5dGVzICsgKCppdCktPmJ5dGVzKCk7Ci0gICAgICAgIGlm
IChuZXdNZW1vcnlCeXRlcyA+IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMpIHsKLSAgICAgICAgICAg
IG1fcHJpb3JpdHlDdXRvZmYgPSAoKml0KS0+cmVxdWVzdFByaW9yaXR5KCk7Ci0gICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgLT0gKCppdCktPmJ5
dGVzKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaXplX3QgbmV3TWVtb3J5Qnl0
ZXMgPSBtZW1vcnlCeXRlcyArICgqaXQpLT5ieXRlcygpOworICAgICAgICAgICAgaWYgKG5ld01l
bW9yeUJ5dGVzID4gbV9tZW1vcnlBdmFpbGFibGVCeXRlcykgeworICAgICAgICAgICAgICAgIG1f
cHJpb3JpdHlDdXRvZmYgPSAoKml0KS0+cmVxdWVzdFByaW9yaXR5KCk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZW1vcnlCeXRlcyA9IG5ld01l
bW9yeUJ5dGVzOwogICAgICAgICB9Ci0KLSAgICAgICAgbWVtb3J5Qnl0ZXMgPSBuZXdNZW1vcnlC
eXRlczsKICAgICB9CiAKICAgICAvLyBPbmx5IGFsbG93IHRleHR1cmVzIGlmIHRoZXkgYXJlIGhp
Z2hlciB0aGFuIHRoZSBjdXRvZmYuIEFsbCB0ZXh0dXJlcwpAQCAtMTEzLDcgKzExMSw3IEBAIHZv
aWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpwcmlvcml0aXplVGV4dHVyZXMoc2l6ZV90
IHJlbmRlclN1cmZhY2VzTWVtb3J5CiAgICAgZm9yIChUZXh0dXJlVmVjdG9yOjppdGVyYXRvciBp
dCA9IHNvcnRlZFRleHR1cmVzLmJlZ2luKCk7IGl0ICE9IHNvcnRlZFRleHR1cmVzLmVuZCgpOyAr
K2l0KSB7CiAgICAgICAgIGJvb2wgaXNBYm92ZVByaW9yaXR5Q3V0b2ZmID0gQ0NQcmlvcml0eUNh
bGN1bGF0b3I6OnByaW9yaXR5SXNIaWdoZXIoKCppdCktPnJlcXVlc3RQcmlvcml0eSgpLCBtX3By
aW9yaXR5Q3V0b2ZmKTsKICAgICAgICAgKCppdCktPnNldEFib3ZlUHJpb3JpdHlDdXRvZmYoaXNB
Ym92ZVByaW9yaXR5Q3V0b2ZmKTsKLSAgICAgICAgaWYgKGlzQWJvdmVQcmlvcml0eUN1dG9mZikK
KyAgICAgICAgaWYgKGlzQWJvdmVQcmlvcml0eUN1dG9mZiAmJiAhKCppdCktPmlzU2VsZk1hbmFn
ZWQoKSkKICAgICAgICAgICAgIG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyArPSAoKml0KS0+Ynl0
ZXMoKTsKICAgICB9CiAgICAgQVNTRVJUKG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyA8PSBtX21l
bW9yeUF2YWlsYWJsZUJ5dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyLmgKaW5kZXggOTgwMjkxYWRiODdiMjhkYWQ1ZGM4MjNmNjc2M2I0ODYwZWVi
YTJmYy4uOTNjZjBjNmFmNjNjMTMyMjU0YzhlM2I4ZmUwYjU2MWNhMGY3ZTcyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKQEAgLTQ4LDYgKzQ4
LDE3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NQcmlv
cml0aXplZFRleHR1cmUodGhpcywgc2l6ZSwgZm9ybWF0KSk7CiAgICAgfQorICAgIC8vIEEgbWVt
b3J5IHBsYWNlaG9sZGVyIGlzIHNlbGYtbWFuYWdlZCBidXQgYWxzbyBzZXRzIGEgY3VzdG9tIGFy
Yml0cmFyeSBzaXplLgorICAgIC8vIE5vdGUgdGhlIHRoZSBzaXplIGFuZCBmb3JtYXQgYXJlIGJv
Z3VzLCBhbmQgY2FsbGluZyBTZXREaW1lbnNpb25zIHdpbGwgcmVzZXQKKyAgICAvLyB0aGUgc2l6
ZSBhY2NvcmRpbmcgdG8gdGhlIG5ldyBkaW1lbnNpb25zLgorICAgIFBhc3NPd25QdHI8Q0NQcmlv
cml0aXplZFRleHR1cmU+IGNyZWF0ZU1lbW9yeVBsYWNlaG9sZGVyKHNpemVfdCBieXRlcykKKyAg
ICB7CisgICAgICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gc3VyZmFjZVBsYWNlaG9s
ZGVyID0gY3JlYXRlVGV4dHVyZShJbnRTaXplKDAsIDApLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSk7CisgICAgICAgIHN1cmZhY2VQbGFjZWhvbGRlci0+c2V0SXNTZWxmTWFuYWdlZCh0cnVlKTsK
KyAgICAgICAgc3VyZmFjZVBsYWNlaG9sZGVyLT5tX2J5dGVzID0gYnl0ZXM7CisgICAgICAgIHJl
dHVybiBzdXJmYWNlUGxhY2Vob2xkZXIucmVsZWFzZSgpOworICAgIH0KKwogICAgIH5DQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXIoKTsKIAogICAgIC8vIEZJWE1FIChodHRwOi8vY3JidWcuY29t
LzEzNzA5NCk6IFRoaXMgNjRNQiBkZWZhdWx0IGlzIGEgc3RyYWdnbGVyIGZyb20gdGhlCkBAIC02
MywxMiArNzQsMTIgQEAgcHVibGljOgogICAgIC8vIG1lbW9yeVVzZUJ5dGVzKCkgPD0gbWVtb3J5
QWJvdmVDdXRvZmZCeXRlcygpIHNob3VsZCBhbHdheXMgYmUgdHJ1ZS4KICAgICBzaXplX3QgbWVt
b3J5VXNlQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeVVzZUJ5dGVzOyB9CiAgICAgc2l6
ZV90IG1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeUFib3Zl
Q3V0b2ZmQnl0ZXM7IH0KLSAgICBzaXplX3QgbWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXNCeXRlcygp
IGNvbnN0IHsgcmV0dXJuIG1fbWF4TWVtb3J5TGltaXRCeXRlcyAtIG1fbWVtb3J5QXZhaWxhYmxl
Qnl0ZXM7IH0KKyAgICBzaXplX3QgbWVtb3J5Rm9yU2VsZk1hbmFnZWRUZXh0dXJlcygpIGNvbnN0
IHsgcmV0dXJuIG1fbWF4TWVtb3J5TGltaXRCeXRlcyAtIG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXM7
IH0KIAogICAgIHZvaWQgc2V0TWF4TWVtb3J5TGltaXRCeXRlcyhzaXplX3QgYnl0ZXMpIHsgbV9t
YXhNZW1vcnlMaW1pdEJ5dGVzID0gYnl0ZXM7IH0KICAgICBzaXplX3QgbWF4TWVtb3J5TGltaXRC
eXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4TWVtb3J5TGltaXRCeXRlczsgfQogCi0gICAgdm9p
ZCBwcmlvcml0aXplVGV4dHVyZXMoc2l6ZV90IHJlbmRlclN1cmZhY2VzTWVtb3J5Qnl0ZXMpOwor
ICAgIHZvaWQgcHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgdm9pZCBjbGVhclByaW9yaXRpZXMo
KTsKIAogICAgIGJvb2wgcmVxdWVzdExhdGUoQ0NQcmlvcml0aXplZFRleHR1cmUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1
cmVUZXN0LmNwcAppbmRleCBhOGI5NjI3ODdkOGYyM2ZlYjY4ZmQ3MmJjNWY2Nzk1MmE1YTY2MGQ4
Li41YzVmYjQwZGI3NGM2MDUwMjRmN2E0OTk1MDI3ZGE2NDYzYTdlYTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRl
c3QuY3BwCkBAIC05OSw3ICs5OSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3Qs
IHJlcXVlc3RUZXh0dXJlRXhjZWVkaW5nTWF4TGltaXQpCiAgICAgICAgIHRleHR1cmVzW2ldLT5z
ZXRSZXF1ZXN0UHJpb3JpdHkoMTAwICsgaSk7CiAKICAgICAvLyBPbmx5IGxvd2VyIGhhbGYgc2hv
dWxkIGJlIGF2YWlsYWJsZS4KLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBFWFBF
Q1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbMF0sIGZhbHNlKSk7CiAgICAgRVhQRUNU
X1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzddLCBmYWxzZSkpOwogICAgIEVYUEVDVF9G
QUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbOF0sIGZhbHNlKSk7CkBAIC0xMTAsNyArMTEw
LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNl
ZWRpbmdNYXhMaW1pdCkKICAgICAgICAgdGV4dHVyZXNbaV0tPnNldFJlcXVlc3RQcmlvcml0eSgx
MDAgLSBpKTsKIAogICAgIC8vIE9ubHkgdXBwZXIgaGFsZiBzaG91bGQgYmUgYXZhaWxhYmxlLgot
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRl
eHR1cmUodGV4dHVyZXNbMF0sIGZhbHNlKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRlVGV4
dHVyZSh0ZXh0dXJlc1s3XSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1
cmUodGV4dHVyZXNbOF0sIGZhbHNlKSk7CkBAIC0xMzUsNyArMTM1LDcgQEAgVEVTVF9GKENDUHJp
b3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5TGltaXRzKQogCiAgICAgLy8gU2V0IG1h
eCBsaW1pdCB0byA4IHRleHR1cmVzCiAgICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxp
bWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXplKDgpKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kpCiAgICAg
ICAgIHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1tpXSwgZmFsc2UpOwogICAgIHRleHR1cmVNYW5h
Z2VyLT5yZWR1Y2VNZW1vcnkoYWxsb2NhdG9yKCkpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIFRFU1Rf
RihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIGNoYW5nZU1lbW9yeUxpbWl0cykKIAogICAgIC8v
IFNldCBtYXggbGltaXQgdG8gNSB0ZXh0dXJlcwogICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhN
ZW1vcnlMaW1pdEJ5dGVzKHRleHR1cmVzTWVtb3J5U2l6ZSg1KSk7Ci0gICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytp
KQogICAgICAgICBFWFBFQ1RfRVEodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSks
IGkgPCA1KTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KGFsbG9jYXRvcigpKTsK
QEAgLTE1NSw3ICsxNTUsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBjaGFu
Z2VNZW1vcnlMaW1pdHMpCiAKICAgICAvLyBTZXQgbWF4IGxpbWl0IHRvIDQgdGV4dHVyZXMKICAg
ICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyh0ZXh0dXJlc01lbW9yeVNp
emUoNCkpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkKICAgICAgICAgRVhQRUNUX0VRKHZhbGlkYXRlVGV4
dHVyZSh0ZXh0dXJlc1tpXSwgZmFsc2UpLCBpIDwgNCk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnJl
ZHVjZU1lbW9yeShhbGxvY2F0b3IoKSk7CkBAIC0xODEsNyArMTgxLDcgQEAgVEVTVF9GKENDUHJp
b3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJQYXJ0aWFsVXBkYXRlVGV4dHVyZXMp
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVRleHR1cmVzOyArK2kpCiAgICAgICAg
IHRleHR1cmVzW2ldLT5zZXRSZXF1ZXN0UHJpb3JpdHkoMjAwICsgaSk7Ci0gICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBBbGxvY2F0ZSB0ZXh0dXJlcyB3aGljaCBhcmUgY3Vy
cmVudGx5IGhpZ2ggcHJpb3JpdHkuCiAgICAgRVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0dXJlKHRl
eHR1cmVzWzBdLCBmYWxzZSkpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIFRFU1RfRihDQ1ByaW9yaXRp
emVkVGV4dHVyZVRlc3QsIHRleHR1cmVNYW5hZ2VyUGFydGlhbFVwZGF0ZVRleHR1cmVzKQogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1UZXh0dXJlczsgKytpKQogICAgICAgICBtb3Jl
VGV4dHVyZXNbaV0tPnNldFJlcXVlc3RQcmlvcml0eSgxMDAgKyBpKTsKLSAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIFRleHR1cmVzIGFyZSBub3cgYmVsb3cgY3V0b2ZmLgog
ICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbMF0sIGZhbHNlKSk7CkBA
IC0yNDIsNyArMjQyLDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVy
ZU1hbmFnZXJQcmlvcml0aWVzQXJlRXF1YWwpCiAKICAgICAvLyBTZXQgbWF4IGxpbWl0IHRvIDgg
dGV4dHVyZXMKICAgICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyh0ZXh0
dXJlc01lbW9yeVNpemUoOCkpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAg
Ly8gVGhlIHR3byBoaWdoIHByaW9yaXR5IHRleHR1cmVzIHNob3VsZCBiZSBhdmFpbGFibGUsIG90
aGVycyBzaG91bGQgbm90LgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjsgKytpKQpAQCAt
MjczLDcgKzI3Myw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVN
YW5hZ2VyRGVzdHJveWVkRmlyc3QpCiAgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmUtPmhhdmVCYWNr
aW5nVGV4dHVyZSgpKTsKIAogICAgIHRleHR1cmUtPnNldFJlcXVlc3RQcmlvcml0eSgxMDApOwot
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgRVhQRUNUX1RSVUUodmFsaWRhdGVU
ZXh0dXJlKHRleHR1cmUsIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUodGV4dHVyZS0+Y2FuQWNx
dWlyZUJhY2tpbmdUZXh0dXJlKCkpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIFRFU1RfRihDQ1ByaW9y
aXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNb3ZlZFRvTmV3TWFuYWdlcikKICAgICBFWFBFQ1Rf
RkFMU0UodGV4dHVyZS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpOwogCiAgICAgdGV4dHVyZS0+c2V0
UmVxdWVzdFByaW9yaXR5KDEwMCk7Ci0gICAgdGV4dHVyZU1hbmFnZXJPbmUtPnByaW9yaXRpemVU
ZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlck9uZS0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7
CiAKICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZSwgZmFsc2UpKTsKICAg
ICBFWFBFQ1RfVFJVRSh0ZXh0dXJlLT5jYW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKSk7CkBAIC0z
MTIsNyArMzEyLDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1v
dmVkVG9OZXdNYW5hZ2VyKQogCiAgICAgdGV4dHVyZS0+c2V0VGV4dHVyZU1hbmFnZXIodGV4dHVy
ZU1hbmFnZXJUd28uZ2V0KCkpOwogCi0gICAgdGV4dHVyZU1hbmFnZXJUd28tPnByaW9yaXRpemVU
ZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlclR3by0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7
CiAKICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZSwgZmFsc2UpKTsKICAg
ICBFWFBFQ1RfVFJVRSh0ZXh0dXJlLT5jYW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKSk7CkBAIC0z
MjEsMTMgKzMyMSwxNSBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJl
TW92ZWRUb05ld01hbmFnZXIpCiAgICAgdGV4dHVyZU1hbmFnZXJUd28tPmNsZWFyQWxsTWVtb3J5
KGFsbG9jYXRvcigpKTsKIH0KIAorCiBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBy
ZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZU91dHNpZGVSb290U3VyZmFjZSkKIHsK
ICAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwogICAgIE93blB0cjxDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlTWFuYWdlcihtYXhUZXh0
dXJlcyk7CiAKLSAgICAvLyBIYWxmIG9mIHRoZSBtZW1vcnkgaXMgdGFrZW4gYnkgc3VyZmFjZXMu
Ci0gICAgY29uc3Qgc2l6ZV90IHJlbmRlclN1cmZhY2VzQnl0ZXMgPSB0ZXh0dXJlc01lbW9yeVNp
emUoNCk7CisgICAgLy8gSGFsZiBvZiB0aGUgbWVtb3J5IGlzIHRha2VuIGJ5IHN1cmZhY2VzICh3
aXRoIGhpZ2ggcHJpb3JpdHkgcGxhY2UtaG9sZGVyKQorICAgIE93blB0cjxDQ1ByaW9yaXRpemVk
VGV4dHVyZT4gcmVuZGVyU3VyZmFjZVBsYWNlSG9sZGVyID0gdGV4dHVyZU1hbmFnZXItPmNyZWF0
ZU1lbW9yeVBsYWNlaG9sZGVyKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSk7CisgICAgcmVuZGVyU3Vy
ZmFjZVBsYWNlSG9sZGVyLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6
OnJlbmRlclN1cmZhY2VQcmlvcml0eSgpKTsKIAogICAgIC8vIENyZWF0ZSB0ZXh0dXJlcyB0byBm
aWxsIG91ciBtZW1vcnkgbGltaXQuCiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiB0
ZXh0dXJlc1ttYXhUZXh0dXJlc107CkBAIC0zNDAsNyArMzQyLDcgQEAgVEVTVF9GKENDUHJpb3Jp
dGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVPdXRz
aWRlUm9vdFMKICAgICAgICAgdGV4dHVyZXNbaV0tPnNldFJlcXVlc3RQcmlvcml0eSgxMDAgKyBp
KTsKIAogICAgIC8vIE9ubHkgbG93ZXIgaGFsZiBzaG91bGQgYmUgYXZhaWxhYmxlLgotICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMocmVuZGVyU3VyZmFjZXNCeXRlcyk7Cisg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIEVYUEVDVF9UUlVF
KHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1swXSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfVFJVRSh2
YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbM10sIGZhbHNlKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHZh
bGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1s0XSwgZmFsc2UpKTsKQEAgLTM1MSwxNCArMzUzLDE0IEBA
IFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlbmRlclN1cmZhY2VzUmVkdWNlTWVt
b3J5QXZhaWxhYmxlT3V0c2lkZVJvb3RTCiAgICAgICAgIHRleHR1cmVzW2ldLT5zZXRSZXF1ZXN0
UHJpb3JpdHkoMTAwIC0gaSk7CiAKICAgICAvLyBPbmx5IHVwcGVyIGhhbGYgc2hvdWxkIGJlIGF2
YWlsYWJsZS4KLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKHJlbmRlclN1
cmZhY2VzQnl0ZXMpOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsK
ICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzBdLCBmYWxzZSkpOwog
ICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbM10sIGZhbHNlKSk7CiAg
ICAgRVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzRdLCBmYWxzZSkpOwogICAg
IEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1s3XSwgZmFsc2UpKTsKIAogICAg
IEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlB
Ym92ZUN1dG9mZkJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCks
IHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JSZW5kZXJTdXJmYWNlc0J5dGVzKCkpOworICAgIEVY
UEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JT
ZWxmTWFuYWdlZFRleHR1cmVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVt
b3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7
CiAKICAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOwpAQCAt
MzY5LDggKzM3MSw5IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlbmRlclN1
cmZhY2VzUmVkdWNlTWVtb3J5QXZhaWxhYmxlRm9yUmVxdWVzdExhCiAgICAgY29uc3Qgc2l6ZV90
IG1heFRleHR1cmVzID0gODsKICAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZU1hbmFnZXIobWF4VGV4dHVyZXMpOwogCi0gICAgLy8g
SGFsZiBvZiB0aGUgbWVtb3J5IGlzIHRha2VuIGJ5IHN1cmZhY2VzLgotICAgIGNvbnN0IHNpemVf
dCByZW5kZXJTdXJmYWNlc0J5dGVzID0gdGV4dHVyZXNNZW1vcnlTaXplKDQpOworICAgIC8vIEhh
bGYgb2YgdGhlIG1lbW9yeSBpcyB0YWtlbiBieSBzdXJmYWNlcyAod2l0aCBoaWdoIHByaW9yaXR5
IHBsYWNlLWhvbGRlcikKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHJlbmRlclN1
cmZhY2VQbGFjZUhvbGRlciA9IHRleHR1cmVNYW5hZ2VyLT5jcmVhdGVNZW1vcnlQbGFjZWhvbGRl
cih0ZXh0dXJlc01lbW9yeVNpemUoNCkpOworICAgIHJlbmRlclN1cmZhY2VQbGFjZUhvbGRlci0+
c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpyZW5kZXJTdXJmYWNlUHJp
b3JpdHkoKSk7CiAKICAgICAvLyBDcmVhdGUgdGV4dHVyZXMgdG8gZmlsbCBvdXIgbWVtb3J5IGxp
bWl0LgogICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gdGV4dHVyZXNbbWF4VGV4dHVy
ZXNdOwpAQCAtMzgzLDcgKzM4Niw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3Qs
IHJlbmRlclN1cmZhY2VzUmVkdWNlTWVtb3J5QXZhaWxhYmxlRm9yUmVxdWVzdExhCiAgICAgICAg
IHRleHR1cmVzW2ldLT5zZXRSZXF1ZXN0UHJpb3JpdHkoMTAwKTsKIAogICAgIC8vIFRoZSBmaXJz
dCBmb3VyIHRvIGJlIHJlcXVlc3RlZCBsYXRlIHdpbGwgYmUgYXZhaWxhYmxlLgotICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMocmVuZGVyU3VyZmFjZXNCeXRlcyk7CisgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKQogICAgICAgICBFWFBFQ1RfRkFMU0UodmFsaWRh
dGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtYXhUZXh0dXJlczsgaSArPSAyKQpAQCAtMzkyLDcgKzM5NSw3IEBAIFRFU1RfRihDQ1By
aW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlbmRlclN1cmZhY2VzUmVkdWNlTWVtb3J5QXZhaWxhYmxl
Rm9yUmVxdWVzdExhCiAgICAgICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVy
ZXNbaV0sIHRydWUpKTsKIAogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRl
eHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0
ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JSZW5kZXJTdXJm
YWNlc0J5dGVzKCkpOworICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1
cmVNYW5hZ2VyLT5tZW1vcnlGb3JTZWxmTWFuYWdlZFRleHR1cmVzKCkpOwogICAgIEVYUEVDVF9M
RSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9y
eUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKICAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1v
cnkoYWxsb2NhdG9yKCkpOwpAQCAtNDAzLDggKzQwNiw5IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVk
VGV4dHVyZVRlc3QsIHdoZW5SZW5kZXJTdXJmYWNlTm90QXZhaWxhYmxlVGV4dHVyZXNBbHNvTm90
QXZhCiAgICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVzID0gODsKICAgICBPd25QdHI8Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZU1hbmFnZXIobWF4
VGV4dHVyZXMpOwogCi0gICAgLy8gSGFsZiBvZiB0aGUgbWVtb3J5IGlzIHRha2VuIGJ5IHN1cmZh
Y2VzLgotICAgIGNvbnN0IHNpemVfdCByZW5kZXJTdXJmYWNlc0J5dGVzID0gdGV4dHVyZXNNZW1v
cnlTaXplKDQpOworICAgIC8vIEhhbGYgb2YgdGhlIG1lbW9yeSBpcyB0YWtlbiBieSBzdXJmYWNl
cyAod2l0aCBoaWdoIHByaW9yaXR5IHBsYWNlLWhvbGRlcikKKyAgICBPd25QdHI8Q0NQcmlvcml0
aXplZFRleHR1cmU+IHJlbmRlclN1cmZhY2VQbGFjZUhvbGRlciA9IHRleHR1cmVNYW5hZ2VyLT5j
cmVhdGVNZW1vcnlQbGFjZWhvbGRlcih0ZXh0dXJlc01lbW9yeVNpemUoNCkpOworICAgIHJlbmRl
clN1cmZhY2VQbGFjZUhvbGRlci0+c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxh
dG9yOjpyZW5kZXJTdXJmYWNlUHJpb3JpdHkoKSk7CiAKICAgICAvLyBDcmVhdGUgdGV4dHVyZXMg
dG8gZmlsbCBvdXIgbWVtb3J5IGxpbWl0LgogICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVy
ZT4gdGV4dHVyZXNbbWF4VGV4dHVyZXNdOwpAQCAtNDE4LDcgKzQyMiw3IEBAIFRFU1RfRihDQ1By
aW9yaXRpemVkVGV4dHVyZVRlc3QsIHdoZW5SZW5kZXJTdXJmYWNlTm90QXZhaWxhYmxlVGV4dHVy
ZXNBbHNvTm90QXZhCiAgICAgZm9yIChzaXplX3QgaSA9IDY7IGkgPCA4OyArK2kpCiAgICAgICAg
IHRleHR1cmVzW2ldLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnZp
c2libGVQcmlvcml0eShmYWxzZSkpOwogCi0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcyhyZW5kZXJTdXJmYWNlc0J5dGVzKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBVbmFibGUgdG8gcmVxdWVzdExhdGUgdGV4dHVyZXMg
aW4gdGhlIGNoaWxkIHN1cmZhY2UuCiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRlVGV4dHVyZSh0
ZXh0dXJlc1s2XSwgdHJ1ZSkpOwpAQCAtNDI5LDcgKzQzMyw3IEBAIFRFU1RfRihDQ1ByaW9yaXRp
emVkVGV4dHVyZVRlc3QsIHdoZW5SZW5kZXJTdXJmYWNlTm90QXZhaWxhYmxlVGV4dHVyZXNBbHNv
Tm90QXZhCiAgICAgICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1tpXSwg
ZmFsc2UpKTsKIAogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNiksIHRleHR1cmVN
YW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJl
c01lbW9yeVNpemUoMiksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JSZW5kZXJTdXJmYWNlc0J5
dGVzKCkpOworICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoMiksIHRleHR1cmVNYW5h
Z2VyLT5tZW1vcnlGb3JTZWxmTWFuYWdlZFRleHR1cmVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0
dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3Zl
Q3V0b2ZmQnl0ZXMoKSk7CiAKICAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkoYWxs
b2NhdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGls
ZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggMzFjZjY3MjVlMTMyODRkMDRiN2RmYTI3NGM4
M2JlZjc1Yzk2ZjA2YS4uZjE1MmFiNGZiZTc4OTFlMDUzNjc5ZWJmMzEyMjY0Nzc4NDBjZGQ2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21p
dW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJl
Y3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7
CiAKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CkBAIC0xMTksNyArMTE5LDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIGxheWVy
LT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIC8v
IC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KICAgICBsYXllci0+c2V0VGV4
dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+
cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4
dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCksIDApOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bC5nZXQoKSk7CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRl
bnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygpOwogCiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwg
MCwgMTAwLCAyMDApLCAmb2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CkBAIC0xODgs
NyArMTg4LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGls
ZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAgdXBk
YXRlVGV4dHVyZXMoKTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKIAogICAgIC8vIFRoaXMgc2hvdWxkIHJlY3JlYXRl
IGFuZCB1cGRhdGUgdGhlIGRlbGV0ZWQgdGV4dHVyZXMuCiAgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwg
MTAwLCAxMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJv
cGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CkBAIC0yMzksNyArMjM5LDcgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICBsYXllci0+aW52
YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygpOwogCiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0
LCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtMjU1LDcgKzI1NSw3IEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgLy8gRm9yIHRo
ZSBuZXh0IGZvdXIgdXBkYXRlcywgd2Ugc2hvdWxkIGRldGVjdCB3ZSBzdGlsbCBuZWVkIGlkbGUg
cGFpbnRpbmcuCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgICAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICBFWFBFQ1RfVFJVRShsYXll
ci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKQEAgLTMwNyw3ICszMDcsNyBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQp
CiAgICAgLy8gUGFpbnQgYSBzaW5nbGUgdGlsZSBpbiBsYXllcjIgc28gdGhhdCBpdCB3aWxsIGlk
bGUgcGFpbnQuCiAgICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOwogICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllcjEtPnVwZGF0ZUNv
bnRlbnRSZWN0KHVwZGF0ZXIsIGxheWVyUmVjdCwgMCk7CiAgICAgbGF5ZXIyLT51cGRhdGVDb250
ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CiAKQEAgLTMyNSw3
ICszMjUsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJ
ZGxlUGFpbnRGYWlsZWQpCiAgICAgLy8gTm93IGlkbGUgcGFpbnQgbGF5ZXIyLiBXZSBhcmUgZ29p
bmcgdG8gcnVuIG91dCBvZiBtZW1vcnkgdGhvdWdoIQogICAgIGxheWVyMi0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICBsYXllcjEtPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7
CiAgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSwgMCk7CiAKICAgICAvLyBPaCB3ZWxsLCBjb21taXQgdGhlIGZyYW1lIGFuZCBwdXNo
LgpAQCAtMzQ1LDcgKzM0NSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNo
VGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAgICAvLyBOb3cgaWYgbGF5ZXIyIGJlY29tZXMg
ZnVsbHkgdmlzaWJsZSwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gcGFpbnQgaXQgYW5kIHB1c2ggdmFs
aWQgdGV4dHVyZXMuCiAgICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNh
bGN1bGF0b3IpOwogICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllcjItPnVwZGF0
ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGxheWVyMlJlY3QsIDApOwogICAgIGxheWVyMS0+dXBkYXRl
Q29udGVudFJlY3QodXBkYXRlciwgbGF5ZXJSZWN0LCAwKTsKIApAQCAtMzc4LDcgKzM3OCw3IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50ZWRPY2NsdWRlZFRp
bGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3Vs
YXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOwog
ICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJ
bXBsLmdldCgpKTsKQEAgLTQwMyw3ICs0MDMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaFRpbGVzTWFya2VkRGlydHlEdXJpbmdQYWludCkKICAgICBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAx
MDAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
LCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CkBAIC00MzIsNyArNDMyLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uTmV4dExh
eWVyKQogCiAgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOwogICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9y
KTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIGxheWVyMS0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogCkBAIC00NzAs
NyArNDcwLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVy
TWFya2VkRGlydHlEdXJpbmdQYWludE9uUHJldmlvdXNMYXkKIAogICAgIGxheWVyMS0+c2V0VGV4
dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICBsYXllcjItPnNldFRleHR1
cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7CiAKICAgICAvLyBJbnZhbGlkYXRlIGEgdGlsZSBvbiBsYXllcjIKICAgICBsYXllcjEt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgw
LCA1MCwgMTAwLCA1MCksIGxheWVyMi5nZXQoKSk7CkBAIC01MDgsNyArNTA4LDcgQEAgVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIGxheWVy
LT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogCiAgICAgbGF5ZXItPnNldFRl
eHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVS
ZWN0LCAwKTsKIAogICAgIC8vIElkbGUtcGFpbnRpbmcgc2hvdWxkIHNlZSBubyBtb3JlIHByaW9y
aXR5IHRpbGVzIGZvciBwYWludGluZy4KQEAgLTUyMSw3ICs1MjEsNyBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgRVhQRUNUX1RSVUUo
bGF5ZXJJbXBsLT5oYXNUaWxlQXQoMSwgMSkpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7
CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsK
IAogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90aGVyIGlkbGUgcGFpbnQu
CkBAIC01NDgsNyArNTQ4LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQ
YWludFplcm9TaXplZExheWVyKQogICAgICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0
KGNvbnRlbnRSZWN0KTsKIAogICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJp
b3JpdHlDYWxjdWxhdG9yKTsKLSAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygwKTsKKyAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwog
CiAgICAgICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBwYWludCBvciBpZGxlLXBhaW50LgogICAg
ICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudFJlY3QsIDApOwpA
QCAtNTg2LDcgKzU4Niw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFp
bnROb25WaXNpYmxlTGF5ZXJzKQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7CiAg
ICAgICAgIC8vIFBhaW50IC8gaWRsZS1wYWludC4KICAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoKTsKICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZp
c2libGVSZWN0LCAwKTsKIAogICAgICAgICAvLyBOb24tdmlzaWJsZSBsYXllcnMgZG9uJ3QgbmVl
ZCBpZGxlIHBhaW50LgpAQCAtNjM2LDcgKzYzNiw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlQW5pbWF0aW5nTGF5ZXJzKQogICAgICAgICAgICAg
bGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKICAgICAgICAgICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgICAg
ICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICAgICAgICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgICAgICAgICAgLy8g
SWYgaWRsZVBhaW50UmVjdCBnaXZlcyBiYWNrIGEgbm9uLWVtcHR5IHJlc3VsdCB0aGVuIHdlIHNo
b3VsZCBwYWludCBpdC4gT3RoZXJ3aXNlLAogICAgICAgICAgICAgLy8gd2Ugc2hvdWQgcGFpbnQg
bm90aGluZy4KQEAgLTY0OCw3ICs2NDgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgaWRsZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGluZ0xheWVycykKICAgICAgICAgICAgIC8vIElm
IHRoZSBsYXllciBpcyB0byBiZSBwcmVwYWludGVkIGF0IGFsbCwgdGhlbiBhZnRlciBmb3VyIHVw
ZGF0ZXMgd2Ugc2hvdWxkIGhhdmUgdGhlIG91dGVyIHJvdy9jb2x1bW5zIHBhaW50ZWQuCiAgICAg
ICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7ICsraykgewogICAgICAgICAgICAgICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgICAgICAg
ICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgICAgICAg
ICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgICAgICAg
ICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsK
ICAgICAgICAgICAgICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtNjYxLDcgKzY2MSw3IEBAIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlQW5pbWF0aW5n
TGF5ZXJzKQogICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2
aXNpYmxlUmVjdCkpOwogICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCA0OyArK2spIHsK
ICAgICAgICAgICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKLSAgICAgICAgICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKDApOworICAgICAgICAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKIAogICAgICAgICAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVy
LCB2aXNpYmxlUmVjdCwgMCk7CiAgICAgICAgICAgICAgICAgdXBkYXRlVGV4dHVyZXMoKTsKQEAg
LTY5MCw3ICs2OTAsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0
ZUZyb21QcmVwYXJlKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
MCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7
CiAgICAgdXBkYXRlci51cGRhdGUoY2NDb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZh
a2VDb3BpZXIsICZmYWtlVXBsb2FkZXIsIDEwMDApOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbC5nZXQoKSk7CkBAIC03NDAsMTQgKzc0MCwxNCBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2Nh
bGVkKQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudEJvdW5kcyk7CiAK
ICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
dXBkYXRlciwgY29udGVudEJvdW5kcywgMCk7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxv
YXRSZWN0KDAsIDAsIDMwMCwgMzAwICogMC44KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAgICAg
dXBkYXRlVGV4dHVyZXMoKTsKIAogICAgIC8vIEFmdGVyIHRoZSB0aWxlcyBhcmUgdXBkYXRlZCBv
bmNlLCBhbm90aGVyIGludmFsaWRhdGUgb25seSBuZWVkcyB0byB1cGRhdGUgdGhlIGJvdW5kcyBv
ZiB0aGUgbGF5ZXIuCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2Fs
Y3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPmludmFs
aWRhdGVDb250ZW50UmVjdChjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgMCk7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1Rf
RVEoRmxvYXRSZWN0KGxheWVyQm91bmRzKSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CkBAIC03NTcs
NyArNzU3LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJl
Y3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAgICBJbnRSZWN0IHBhcnRpYWxEYW1hZ2Uo
MzAsIDEwMCwgMTAsIDEwKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KHBhcnRp
YWxEYW1hZ2UpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRf
UkVDVF9FUShGbG9hdFJlY3QoNDUsIDgwLCAxNSwgOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwog
fQpAQCAtNzc5LDcgKzc3OSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJp
ZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAKICAgICAvLyBQdXNoIHRo
ZSB0aWxlcyB0byB0aGUgaW1wbCBzaWRlIGFuZCBjaGVjayB0aGF0IHRoZXJlIGlzIGV4YWN0bHkg
b25lLgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3Ip
OwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CiAgICAgdXBkYXRlVGV4
dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwpA
QCAtNzk2LDcgKzc5Niw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJ
bnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAKICAgICAvLyBUaGUgaW1wbCBz
aWRlIHNob3VsZCBnZXQgMngyIHRpbGVzIG5vdy4KICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsK
ICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAyMDAs
IDIwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKQEAgLTgxMCw3ICs4MTAsNyBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFu
Z2VzKQogICAgIGxheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKICAgICBsYXllci0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QodXBkYXRlciwgSW50UmVjdCgxLCAwLCAwLCAxKSwgMCk7Ci0gICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKCk7CiAKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0
KCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CkBAIC04
ODAsNyArODgwLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHJlc2l6ZVRvU21h
bGxlcikKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNzAw
LCA3MDApKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7CiAKICAgICBs
YXllci0+c2V0Qm91bmRzKEludFNpemUoMjAwLCAyMDApKTsKQEAgLTg5OSw3ICs4OTksNyBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaHVnZUxheWVyVXBkYXRlQ3Jhc2gpCiAKICAg
ICAvLyBFbnN1cmUgbm8gY3Jhc2ggZm9yIGJvdW5kcyB3aGVyZSBzaXplICogc2l6ZSB3b3VsZCBv
dmVyZmxvdyBhbiBpbnQuCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5
Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsK
KyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNzAwLCA3MDApLCAwKTsKIH0K
IApAQCAtMTAzOSw3ICsxMDM5LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRp
bGVzUGFpbnRlZFdpdGhvdXRPY2NsdXNpb24pCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
KTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCksIDApOwogICAgIEVYUEVDVF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIH0KQEAgLTEwNjAsNyArMTA2MCw3IEBAIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQog
ICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkp
OwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7
Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVY
UEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJl
Y3RDb3VudCgpKTsKIApAQCAtMTEwOCw3ICsxMTA4LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRWaXNpYmxpdHlDb25zdHJhaW50
cykKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2
MDApKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzYwKSwgJm9jY2x1ZGVkKTsKICAg
ICBFWFBFQ1RfRVEoMjQtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBh
cmVSZWN0Q291bnQoKSk7CiAKQEAgLTExMjMsNyArMTEyMyw3IEBAIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3Ry
YWludHMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYw
MCwgMzUwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAs
IDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2Fs
Y3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0
ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAzNTApLCAmb2NjbHVkZWQp
OwogICAgIEVYUEVDVF9FUSgyNC02LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cHJlcGFyZVJlY3RDb3VudCgpKTsKIApAQCAtMTEzOCw3ICsxMTM4LDcgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRWaXNpYmxpdHlD
b25zdHJhaW50cykKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwg
MCwgNjAwLCAzNDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3Qo
MCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3Jp
dHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDAp
OworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDM0MCksICZvY2Ns
dWRlZCk7CiAgICAgRVhQRUNUX0VRKDI0LTYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlv
bikKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2
MDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAw
LCA2MDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAg
ICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlUmVjdENvdW50KCkpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CkBAIC0xMjAzLDcgKzEyMDMs
NyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1
c2lvbkFuZFRyYW5zZm9ybXMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRS
ZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRl
Q29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogICAgIGxheWVyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKQEAgLTEyMzEs
NyArMTIzMSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRX
aXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0
KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFs
aWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIC8vIFRoZSBjb250ZW50IGlzIGhh
bGYgdGhlIHNpemUgb2YgdGhlIGxheWVyIChzbyB0aGUgbnVtYmVyIG9mIHRpbGVzIGlzIGZld2Vy
KS4KICAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBjb250ZW50IGlzIDMwMHgzMDAsIGFuZCBzaW5j
ZSB0aGUgdGlsZSBzaXplIGlzIDEwMCwgdGhlCkBAIC0xMjUxLDcgKzEyNTEsNyBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxp
bmcpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KCks
IGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50
UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhw
cmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwg
Jm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIApAQCAtMTI3MSw3ICsxMjcxLDcgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRT
Y2FsaW5nKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2lu
dCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDktMSwgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKQEAgLTEzMDAsNyArMTMwMCw3IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lv
bikKICAgICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKIAogICAgIC8vIElmIHRoZSBsYXllciBkb2Vzbid0IHBhaW50IG9wYXF1ZSBjb250ZW50
LCB0aGVuIHRoZSB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbiBzaG91bGQgYmUgZW1wdHkuCiAg
ICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJ
bnRSZWN0KCkpOwpAQCAtMTM5Myw3ICsxMzkzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHBpeGVsc1BhaW50ZWRNZXRyaWNzKQogICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgx
KTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3Ip
OwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gSW52YWxpZGF0ZXMgYW5k
IHBhaW50cyB0aGUgd2hvbGUgbGF5ZXIuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwpAQCAtMTYzNiw3ICsxNjM2LDcg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG5vbkludGVnZXJDb250ZW50c1NjYWxl
SXNOb3REaXN0b3J0ZWREdXJpbmdQYWludCkKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRS
ZWN0KGNvbnRlbnRSZWN0KTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhjYWxj
dWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIFVwZGF0ZSB0
aGUgd2hvbGUgdGlsZS4KICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29u
dGVudFJlY3QsIDApOwpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIG5vbkludGVnZXJDb250ZW50c1NjYWxlSXNOb3REaXN0b3J0ZWREdXJpbmdJbnZh
bGkKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKIAogICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhjYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgd2hvbGUgdGlsZS4KICAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudFJlY3QsIDApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152326</attachid>
            <date>2012-07-13 14:04:54 -0700</date>
            <delta_ts>2012-07-13 15:01:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91177-20120713140453.patch</filename>
            <type>text/plain</type>
            <size>45862</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE4Zjg1NjlkMDJkMDAy
MDVlMDkyZGE0NTM5N2IxZjQ4OGUzZmNhNi4uNmVjNmUyNzg3MGQ5ODdkNDQxMTk2ZWY3M2E0NTZi
ZTJmMTY3NmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA3LTEyICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCAn
c2VsZi1tYW5hZ2VkJyBvcHRpb24gdG8gQ0NQcmlvcml0aXplZFRleHR1cmUgdG8gZW5hYmxlIHJl
bmRlci1zdXJmYWNlIGFuZCBjYW52YXMgdXNlIGNhc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTExNzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1ha2VzIHRoZSByZW5kZXItc3VyZmFjZSBt
ZW1vcnkgdXNlIGNhc2UgZ2VuZXJpYyBhcyAnc2VsZi1tYW5hZ2VkJyB0ZXh0dXJlcywKKyAgICAg
ICAgYXMgdGhpcyB1c2UgY2FzZSBpcyBwb3BwaW5nIHVwIGluIG90aGVyIHBsYWNlcyAoZWcuIGNh
bnZhc2VzKS4gSXQncyBleGFjdGx5IHRoZQorICAgICAgICBzYW1lIGlkZWEgZXhjZXB0IHdlIGNh
biBoYXZlIGFzIG1hbnkgcGxhY2UtaG9sZGVycyBhcyB3ZSB3YW50IGF0IGFyYml0cmFyeQorICAg
ICAgICBwcmlvcml0aWVzLgorCisgICAgICAgIFRoaXMgYWxyZWFkeSB0ZXN0ZWQgYnkgdGhlIHJl
bmRlciBzdXJmYWNlIHVuaXQgdGVzdHMgd2hpY2ggbm93IGFsc28gdXNlIHRoZSAKKyAgICAgICAg
Z2VuZXJpYyBwbGFjZWhvbGRlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpDQ1ByaW9yaXRp
emVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6YWNx
dWlyZUJhY2tpbmdUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OnNldElzU2VsZk1h
bmFnZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmlzU2VsZk1h
bmFnZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmg6CisgICAg
ICAgIChDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGVNZW1vcnlQbGFjZWhvbGRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6Om1lbW9yeUZvclNlbGZN
YW5hZ2VkVGV4dHVyZXMpOgorCiAyMDEyLTA3LTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeC4gSW5pdGlhbGl6ZSB1bnVzZWQgY29uc3QgbWVt
YmVyIHZhcmlhYmxlcyB0byBtYWtlIGNvbXBpbGVycyBoYXBweS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggODE1MmYyN2VlNDMwYjdlNDZiNjhhM2NhNDgwODc4MjA2ZDUyOWIzOS4uMzEw
OTY1ZTVmN2Y4ZmViNDBjY2M5MDM5NTMwOWNiZTFhODA3MzA2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNy0xMiAgRXJpYyBQZW5uZXIgIDxlcGVu
bmVyQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgJ3NlbGYtbWFuYWdlZCcg
b3B0aW9uIHRvIENDUHJpb3JpdGl6ZWRUZXh0dXJlIHRvIGVuYWJsZSByZW5kZXItc3VyZmFjZSBh
bmQgY2FudmFzIHVzZSBjYXNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxMTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ29udmVydCB0aGUgcmVuZGVyLXN1cmZhY2UgdW5pdCB0ZXN0cyB0byB1c2Ug
dGhlIHBsYWNlaG9sZGVycy4KKworICAgICAgICAqIHRlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
VGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorCiAyMDEyLTA3LTEyICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBSb290
IGludmFsaWRhdGlvbnMgZm9yIFJUTCBwYWdlcyBuZWVkIHRvIGJlIGluIHRoZSByaWdodCBzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMWE0MzU5ZWRiZDQ2OTc3OWEw
N2Y0MGZkNjA5ZGEyZTcyZjgzYzdhNC4uNGJjZmI4ZThmNzg1MmJlZDNiNTBkMmMyNjFhZGVmN2U5
NGRlNjgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00ODksOCArNDg5
LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiBy
b290TGF5ZXIsIENDVGV4dHVyZVVwZGF0ZXImIHUKICAgICAvLyBSZXNldCBwYXJ0aWFsIHRleHR1
cmUgdXBkYXRlIHJlcXVlc3RzLgogICAgIG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA9
IDA7CiAKLSAgICBwcmlvcml0aXplVGV4dHVyZXModXBkYXRlTGlzdCk7Ci0KICAgICBib29sIG5l
ZWRNb3JlVXBkYXRlcyA9IHBhaW50TGF5ZXJDb250ZW50cyh1cGRhdGVMaXN0LCB1cGRhdGVyKTsK
ICAgICBpZiAobV90cmlnZ2VySWRsZVVwZGF0ZXMgJiYgbmVlZE1vcmVVcGRhdGVzKQogICAgICAg
ICBzZXROZWVkc0NvbW1pdCgpOwpAQCAtNDk5LDcgKzQ5Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyLCBDQ1RleHR1cmVVcGRh
dGVyJiB1CiAgICAgICAgIHVwZGF0ZUxpc3RbaV0tPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogfQog
Ci12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlz
dCYgdXBkYXRlTGlzdCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojpwcmlvcml0aXplVGV4dHVyZXMo
Y29uc3QgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0LCBzaXplX3QgbWVtb3J5Rm9yUmVuZGVyU3VyZmFj
ZXMpCiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMg
aXNuJ3Qgb3JkZXItZGVwZW5kZW50LgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVy
Q2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNo
cm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJh
dG9yVHlwZTsKQEAgLTUxOSw2ICs1MTcsMTcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByaW9y
aXRpemVUZXh0dXJlcyhjb25zdCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICAvLyBDcmVhdGUgbWVtb3J5IHBsYWNlLWhvbGRlciBmb3Igc3VyZmFjZXMgKHdo
aWNoIGFyZSBtYW5hZ2VkIGluZGVwZW5kYW50bHkpIGJ1dCBzaG91bGQKKyAgICAvLyBzdGlsbCBy
ZWR1Y2UgbWVtb3J5IGF2YWlsYWJsZSBmb3IgY29udGVudHMuCisgICAgLy8gVGhpcyBvbmx5IG5l
ZWRzIHRvIGV4aXN0IGR1cmluZyBwcmlvcml0aXplVGV4dHVyZXMoKSBiZWxvdywgc28ganVzdCBj
cmVhdGUgaXQgaGVyZS4KKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHN1cmZhY2VQ
bGFjZWhvbGRlciA9IG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+Y3JlYXRlTWVtb3J5UGxhY2Vo
b2xkZXIobWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXMpOworICAgIHN1cmZhY2VQbGFjZWhvbGRlci0+
c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpyZW5kZXJTdXJmYWNlUHJp
b3JpdHkoKSk7CisKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygpOworfQorCitzaXplX3QgQ0NMYXllclRyZWVIb3N0OjpjYWxjdWxhdGVNZW1vcnlGb3JS
ZW5kZXJTdXJmYWNlcyhjb25zdCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCit7CiAgICAgc2l6ZV90
IHJlYWRiYWNrQnl0ZXMgPSAwOwogICAgIHNpemVfdCBtYXhCYWNrZ3JvdW5kVGV4dHVyZUJ5dGVz
ID0gMDsKICAgICBzaXplX3QgY29udGVudHNUZXh0dXJlQnl0ZXMgPSAwOwpAQCAtNTM5LDkgKzU0
OCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpwcmlvcml0aXplVGV4dHVyZXMoY29uc3QgTGF5
ZXJMaXN0JiB1cGRhdGVMaXN0KQogICAgICAgICBpZiAoIXJlYWRiYWNrQnl0ZXMpCiAgICAgICAg
ICAgICByZWFkYmFja0J5dGVzID0gQ0NUZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMobV9kZXZpY2VW
aWV3cG9ydFNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICB9Ci0gICAgc2l6ZV90
IHJlbmRlclN1cmZhY2VzQnl0ZXMgPSByZWFkYmFja0J5dGVzICsgbWF4QmFja2dyb3VuZFRleHR1
cmVCeXRlcyArIGNvbnRlbnRzVGV4dHVyZUJ5dGVzOwotCi0gICAgbV9jb250ZW50c1RleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMocmVuZGVyU3VyZmFjZXNCeXRlcyk7CisgICAgcmV0
dXJuIHJlYWRiYWNrQnl0ZXMgKyBtYXhCYWNrZ3JvdW5kVGV4dHVyZUJ5dGVzICsgY29udGVudHNU
ZXh0dXJlQnl0ZXM7CiB9CiAKIGJvb2wgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tzRm9yUmVu
ZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIsIENDVGV4dHVyZVVw
ZGF0ZXImIHVwZGF0ZXIpCkBAIC01NjcsNiArNTc0LDkgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50TWFza3NGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VM
YXkKIAogYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXll
ckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIp
CiB7CisgICAgc2l6ZV90IG1lbW9yeUZvclJlbmRlclN1cmZhY2VzTWV0cmljID0gY2FsY3VsYXRl
TWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgcHJp
b3JpdGl6ZVRleHR1cmVzKHJlbmRlclN1cmZhY2VMYXllckxpc3QsIG1lbW9yeUZvclJlbmRlclN1
cmZhY2VzTWV0cmljKTsKKwogICAgIC8vIFVzZSBGcm9udFRvQmFjayB0byBhbGxvdyBmb3IgdGVz
dGluZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRyZWUgd2Fs
ay4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJh
dG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKQEAgLTU5Miw3
ICs2MDIsNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0
IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAogICAgIH0KIAogICAgIG9jY2x1c2lv
blRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkuZGlkVXNlQ29udGVudHNUZXh0dXJlTWVtb3J5Qnl0
ZXMobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwot
ICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkuZGlkVXNlUmVuZGVyU3VyZmFj
ZVRleHR1cmVNZW1vcnlCeXRlcyhtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclJl
bmRlclN1cmZhY2VzQnl0ZXMoKSk7CisgICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJp
Y3MoKS5kaWRVc2VSZW5kZXJTdXJmYWNlVGV4dHVyZU1lbW9yeUJ5dGVzKG1lbW9yeUZvclJlbmRl
clN1cmZhY2VzTWV0cmljKTsKICAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygp
LnJlY29yZE1ldHJpY3ModGhpcyk7CiAKICAgICByZXR1cm4gbmVlZE1vcmVVcGRhdGVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA3YmIwZjY4YzYwNTZjNTdiNzE3MGNlODM1NDFh
OWQ5OTI4NTU2NzU1Li4wOGI5NDU1NmJhZWM1ZWVhODRkMzM1YzMxMjEyNDk2NzFjZjBlNjI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMjg1LDcgKzI4NSw4IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiwgQ0NUZXh0dXJlVXBkYXRl
ciYpOwogCi0gICAgdm9pZCBwcmlvcml0aXplVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiB1cGRh
dGVMaXN0KTsKKyAgICB2b2lkIHByaW9yaXRpemVUZXh0dXJlcyhjb25zdCBMYXllckxpc3QmIHVw
ZGF0ZUxpc3QsIHNpemVfdCBtZW1vcnlGb3JSZW5kZXJTdXJmYWNlcyk7CisgICAgc2l6ZV90IGNh
bGN1bGF0ZU1lbW9yeUZvclJlbmRlclN1cmZhY2VzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlz
dCk7CiAKICAgICB2b2lkIGFuaW1hdGVMYXllcnMoZG91YmxlIG1vbm90b25pY1RpbWUpOwogICAg
IGJvb2wgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShMYXllckNocm9taXVtKiBjdXJyZW50LCBkb3Vi
bGUgbW9ub3RvbmljVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5j
cHAKaW5kZXggYTZhMzA4MTJiYTFhNjAzZDdmNmEzNjljMzVhMzIzMzE4NTgwZDYwOS4uNGZmMzNh
Zjg0NDcwMWJlZmIyOTJiYWNhMzEwYjc3NTQ0YzZjYmZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJpb3JpdGl6ZWRUZXh0dXJlLmNwcApAQCAtNDIsNiArNDIsNyBAQCBDQ1ByaW9yaXRpemVkVGV4
dHVyZTo6Q0NQcmlvcml0aXplZFRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiBt
YW5hZ2VyLAogICAgICwgbV9ieXRlcygwKQogICAgICwgbV9wcmlvcml0eShDQ1ByaW9yaXR5Q2Fs
Y3VsYXRvcjo6bG93ZXN0UHJpb3JpdHkoKSkKICAgICAsIG1faXNBYm92ZVByaW9yaXR5Q3V0b2Zm
KGZhbHNlKQorICAgICwgbV9pc1NlbGZNYW5hZ2VkKGZhbHNlKQogICAgICwgbV9iYWNraW5nKDAp
CiAgICAgLCBtX21hbmFnZXIoMCkKIHsKQEAgLTkxLDYgKzkyLDcgQEAgYm9vbCBDQ1ByaW9yaXRp
emVkVGV4dHVyZTo6cmVxdWVzdExhdGUoKQogCiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjph
Y3F1aXJlQmFja2luZ1RleHR1cmUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogeworICAg
IEFTU0VSVCghbV9pc1NlbGZNYW5hZ2VkKTsKICAgICBBU1NFUlQobV9pc0Fib3ZlUHJpb3JpdHlD
dXRvZmYpOwogICAgIGlmIChtX2lzQWJvdmVQcmlvcml0eUN1dG9mZikKICAgICAgICAgbV9tYW5h
Z2VyLT5hY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZCh0aGlzLCBhbGxvY2F0b3IpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cmlvcml0aXplZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKaW5kZXggZGM4NTc5MzI0MTgzOTZmZGEz
Nzg5MDEwNTM1NWM5MjRhMmZmMjBlMi4uMDc3MzNkZDNiOTg4NjRjM2JmZmY1NDViYWQ1ZTI5Y2Vm
NmRkMjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oCkBAIC05Myw2
ICs5MywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChDQ0dyYXBo
aWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQo
KTsKIAorICAgIC8vIFNlbGYtbWFuYWdlZCB0ZXh0dXJlcyBhcmUgYWNjb3VudGVkIGZvciB3aGVu
IHByaW9yaXRpemluZyBvdGhlciB0ZXh0dXJlcywKKyAgICAvLyBidXQgdGhleSBhcmUgbm90IGFs
bG9jYXRlZC9yZWN5Y2xlZC9kZWxldGVkLCBzbyB0aGlzIG5lZWRzIHRvIGJlIGRvbmUKKyAgICAv
LyBleHRlcm5hbGx5LiBjYW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKSBpbmRpY2F0ZXMgaWYgdGhl
IHRleHR1cmUgd291bGQgaGF2ZQorICAgIC8vIGJlZW4gYWxsb3dlZCBnaXZlbiBpdHMgcHJpb3Jp
dHkuCisgICAgdm9pZCBzZXRJc1NlbGZNYW5hZ2VkKGJvb2wgaXNTZWxmTWFuYWdlZCkgeyBtX2lz
U2VsZk1hbmFnZWQgPSBpc1NlbGZNYW5hZ2VkOyB9CisgICAgYm9vbCBpc1NlbGZNYW5hZ2VkKCkg
eyByZXR1cm4gbV9pc1NlbGZNYW5hZ2VkOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjsKIApAQCAtMTI1LDYgKzEzMiw3IEBAIHByaXZh
dGU6CiAKICAgICBzaXplX3QgbV9wcmlvcml0eTsKICAgICBib29sIG1faXNBYm92ZVByaW9yaXR5
Q3V0b2ZmOworICAgIGJvb2wgbV9pc1NlbGZNYW5hZ2VkOwogCiAgICAgQmFja2luZyogbV9iYWNr
aW5nOwogICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciogbV9tYW5hZ2VyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAKaW5kZXggMDE5
NWI2ZjFjZGVhYjUwNmYwMzMyNzg1NjgzOThkYjY4NDE3N2RkMS4uZjkyYWVlMzNlZTgwNGViNDFj
MzQwOTg1OTUyM2U4Y2ZkNzA1ZGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6fkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcigpCiAgICAgICAgIGRl
c3Ryb3lCYWNraW5nKCptX2JhY2tpbmdzLmJlZ2luKCksIDApOwogfQogCi12b2lkIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6cHJpb3JpdGl6ZVRleHR1cmVzKHNpemVfdCByZW5kZXJTdXJm
YWNlc01lbW9yeUJ5dGVzKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9y
aXRpemVUZXh0dXJlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyIpOwogCkBAIC03OSwzMSArNzksMjkg
QEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyhz
aXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnkKIAogICAgIG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMg
PSBtX21heE1lbW9yeUxpbWl0Qnl0ZXM7CiAgICAgbV9wcmlvcml0eUN1dG9mZiA9IENDUHJpb3Jp
dHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpOwotICAgIGJvb2wgcmVzZXJ2ZWRSZW5kZXJT
dXJmYWNlcyA9IGZhbHNlOwogICAgIHNpemVfdCBtZW1vcnlCeXRlcyA9IDA7CiAgICAgZm9yIChU
ZXh0dXJlVmVjdG9yOjppdGVyYXRvciBpdCA9IHNvcnRlZFRleHR1cmVzLmJlZ2luKCk7IGl0ICE9
IHNvcnRlZFRleHR1cmVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGlmICgoKml0KS0+cmVxdWVz
dFByaW9yaXR5KCkgPT0gQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCkpCiAg
ICAgICAgICAgICBicmVhazsKIAotICAgICAgICAvLyBGSVhNRTogV2UgY2FuIG1ha2UgcGxhY2Vo
b2xkZXIgb2JqZWN0cyBzaW1pbGFyIHRvIHRleHR1cmVzIHRvIHJlcHJlc2VudCB0aGUgcmVuZGVy
IHN1cmZhY2UgbWVtb3J5IHJlcXVlc3QuCi0gICAgICAgIGlmICghcmVzZXJ2ZWRSZW5kZXJTdXJm
YWNlcyAmJiBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0xvd2VyKCgqaXQpLT5yZXF1
ZXN0UHJpb3JpdHkoKSwgQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnJlbmRlclN1cmZhY2VQcmlvcml0
eSgpKSkgewotICAgICAgICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMg
KyByZW5kZXJTdXJmYWNlc01lbW9yeUJ5dGVzOworICAgICAgICBpZiAoKCppdCktPmlzU2VsZk1h
bmFnZWQoKSkgeworICAgICAgICAgICAgLy8gQWNjb3VudCBmb3Igc2VsZi1tYW5hZ2VkIG1lbW9y
eSBpbW1lZGlhdGVseSBieSByZWR1Y2luZyB0aGUgbWVtb3J5CisgICAgICAgICAgICAvLyBhdmFp
bGFibGUgKHNpbmNlIGl0IG5ldmVyIGdldHMgYWNxdWlyZWQpLgorICAgICAgICAgICAgc2l6ZV90
IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAoKml0KS0+Ynl0ZXMoKTsKICAgICAgICAg
ICAgIGlmIChuZXdNZW1vcnlCeXRlcyA+IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMpIHsKICAgICAg
ICAgICAgICAgICBtX3ByaW9yaXR5Q3V0b2ZmID0gKCppdCktPnJlcXVlc3RQcmlvcml0eSgpOwog
ICAgICAgICAgICAgICAgIG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgPSBtZW1vcnlCeXRlczsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fbWVtb3J5
QXZhaWxhYmxlQnl0ZXMgLT0gcmVuZGVyU3VyZmFjZXNNZW1vcnlCeXRlczsKLSAgICAgICAgICAg
IHJlc2VydmVkUmVuZGVyU3VyZmFjZXMgPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6
ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAoKml0KS0+Ynl0ZXMoKTsKLSAgICAg
ICAgaWYgKG5ld01lbW9yeUJ5dGVzID4gbV9tZW1vcnlBdmFpbGFibGVCeXRlcykgewotICAgICAg
ICAgICAgbV9wcmlvcml0eUN1dG9mZiA9ICgqaXQpLT5yZXF1ZXN0UHJpb3JpdHkoKTsKLSAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgbV9tZW1vcnlBdmFpbGFibGVCeXRlcyAtPSAoKml0
KS0+Ynl0ZXMoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNpemVfdCBuZXdNZW1v
cnlCeXRlcyA9IG1lbW9yeUJ5dGVzICsgKCppdCktPmJ5dGVzKCk7CisgICAgICAgICAgICBpZiAo
bmV3TWVtb3J5Qnl0ZXMgPiBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzKSB7CisgICAgICAgICAgICAg
ICAgbV9wcmlvcml0eUN1dG9mZiA9ICgqaXQpLT5yZXF1ZXN0UHJpb3JpdHkoKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbW9yeUJ5dGVzID0g
bmV3TWVtb3J5Qnl0ZXM7CiAgICAgICAgIH0KLQotICAgICAgICBtZW1vcnlCeXRlcyA9IG5ld01l
bW9yeUJ5dGVzOwogICAgIH0KIAogICAgIC8vIE9ubHkgYWxsb3cgdGV4dHVyZXMgaWYgdGhleSBh
cmUgaGlnaGVyIHRoYW4gdGhlIGN1dG9mZi4gQWxsIHRleHR1cmVzCkBAIC0xMTMsNyArMTExLDcg
QEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyhz
aXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnkKICAgICBmb3IgKFRleHR1cmVWZWN0b3I6Oml0ZXJh
dG9yIGl0ID0gc29ydGVkVGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0gc29ydGVkVGV4dHVyZXMuZW5k
KCk7ICsraXQpIHsKICAgICAgICAgYm9vbCBpc0Fib3ZlUHJpb3JpdHlDdXRvZmYgPSBDQ1ByaW9y
aXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0hpZ2hlcigoKml0KS0+cmVxdWVzdFByaW9yaXR5KCks
IG1fcHJpb3JpdHlDdXRvZmYpOwogICAgICAgICAoKml0KS0+c2V0QWJvdmVQcmlvcml0eUN1dG9m
Zihpc0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwotICAgICAgICBpZiAoaXNBYm92ZVByaW9yaXR5Q3V0
b2ZmKQorICAgICAgICBpZiAoaXNBYm92ZVByaW9yaXR5Q3V0b2ZmICYmICEoKml0KS0+aXNTZWxm
TWFuYWdlZCgpKQogICAgICAgICAgICAgbV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzICs9ICgqaXQp
LT5ieXRlcygpOwogICAgIH0KICAgICBBU1NFUlQobV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzIDw9
IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXIuaAppbmRleCA5ODAyOTFhZGI4N2IyOGRhZDVkYzgyM2Y2NzYzYjQ4
NjBlZWJhMmZjLi45M2NmMGM2YWY2M2MxMzIyNTRjOGUzYjhmZTBiNTYxY2EwZjdlNzIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaApAQCAtNDgs
NiArNDgsMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
Q1ByaW9yaXRpemVkVGV4dHVyZSh0aGlzLCBzaXplLCBmb3JtYXQpKTsKICAgICB9CisgICAgLy8g
QSBtZW1vcnkgcGxhY2Vob2xkZXIgaXMgc2VsZi1tYW5hZ2VkIGJ1dCBhbHNvIHNldHMgYSBjdXN0
b20gYXJiaXRyYXJ5IHNpemUuCisgICAgLy8gTm90ZSB0aGUgdGhlIHNpemUgYW5kIGZvcm1hdCBh
cmUgYm9ndXMsIGFuZCBjYWxsaW5nIFNldERpbWVuc2lvbnMgd2lsbCByZXNldAorICAgIC8vIHRo
ZSBzaXplIGFjY29yZGluZyB0byB0aGUgbmV3IGRpbWVuc2lvbnMuCisgICAgUGFzc093blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZT4gY3JlYXRlTWVtb3J5UGxhY2Vob2xkZXIoc2l6ZV90IGJ5dGVz
KQorICAgIHsKKyAgICAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiBzdXJmYWNlUGxh
Y2Vob2xkZXIgPSBjcmVhdGVUZXh0dXJlKEludFNpemUoMCwgMCksIEdyYXBoaWNzQ29udGV4dDNE
OjpSR0JBKTsKKyAgICAgICAgc3VyZmFjZVBsYWNlaG9sZGVyLT5zZXRJc1NlbGZNYW5hZ2VkKHRy
dWUpOworICAgICAgICBzdXJmYWNlUGxhY2Vob2xkZXItPm1fYnl0ZXMgPSBieXRlczsKKyAgICAg
ICAgcmV0dXJuIHN1cmZhY2VQbGFjZWhvbGRlci5yZWxlYXNlKCk7CisgICAgfQorCiAgICAgfkND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcigpOwogCiAgICAgLy8gRklYTUUgKGh0dHA6Ly9jcmJ1
Zy5jb20vMTM3MDk0KTogVGhpcyA2NE1CIGRlZmF1bHQgaXMgYSBzdHJhZ2dsZXIgZnJvbSB0aGUK
QEAgLTYzLDEyICs3NCwxMiBAQCBwdWJsaWM6CiAgICAgLy8gbWVtb3J5VXNlQnl0ZXMoKSA8PSBt
ZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkgc2hvdWxkIGFsd2F5cyBiZSB0cnVlLgogICAgIHNpemVf
dCBtZW1vcnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNlQnl0ZXM7IH0KICAg
ICBzaXplX3QgbWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5
QWJvdmVDdXRvZmZCeXRlczsgfQotICAgIHNpemVfdCBtZW1vcnlGb3JSZW5kZXJTdXJmYWNlc0J5
dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tYXhNZW1vcnlMaW1pdEJ5dGVzIC0gbV9tZW1vcnlBdmFp
bGFibGVCeXRlczsgfQorICAgIHNpemVfdCBtZW1vcnlGb3JTZWxmTWFuYWdlZFRleHR1cmVzKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXhNZW1vcnlMaW1pdEJ5dGVzIC0gbV9tZW1vcnlBdmFpbGFibGVC
eXRlczsgfQogCiAgICAgdm9pZCBzZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCBieXRlcykg
eyBtX21heE1lbW9yeUxpbWl0Qnl0ZXMgPSBieXRlczsgfQogICAgIHNpemVfdCBtYXhNZW1vcnlM
aW1pdEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tYXhNZW1vcnlMaW1pdEJ5dGVzOyB9CiAKLSAg
ICB2b2lkIHByaW9yaXRpemVUZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnlCeXRl
cyk7CisgICAgdm9pZCBwcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICB2b2lkIGNsZWFyUHJpb3Jp
dGllcygpOwogCiAgICAgYm9vbCByZXF1ZXN0TGF0ZShDQ1ByaW9yaXRpemVkVGV4dHVyZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4
dHVyZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVk
VGV4dHVyZVRlc3QuY3BwCmluZGV4IGE4Yjk2Mjc4N2Q4ZjIzZmViNjhmZDcyYmM1ZjY3OTUyYTVh
NjYwZDguLjNkNjY1NzdiZGYyN2Q0NmI1ZTUxMDEzOGZkYjg5ZjVmMmQwZmMxOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0
dXJlVGVzdC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJl
VGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRpbmdNYXhMaW1pdCkKICAgICAgICAgdGV4dHVyZXNb
aV0tPnNldFJlcXVlc3RQcmlvcml0eSgxMDAgKyBpKTsKIAogICAgIC8vIE9ubHkgbG93ZXIgaGFs
ZiBzaG91bGQgYmUgYXZhaWxhYmxlLgotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4
dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAg
IEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1swXSwgZmFsc2UpKTsKICAgICBF
WFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbN10sIGZhbHNlKSk7CiAgICAgRVhQ
RUNUX0ZBTFNFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1s4XSwgZmFsc2UpKTsKQEAgLTExMCw3
ICsxMTAsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZXF1ZXN0VGV4dHVy
ZUV4Y2VlZGluZ01heExpbWl0KQogICAgICAgICB0ZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9y
aXR5KDEwMCAtIGkpOwogCiAgICAgLy8gT25seSB1cHBlciBoYWxmIHNob3VsZCBiZSBhdmFpbGFi
bGUuCi0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlk
YXRlVGV4dHVyZSh0ZXh0dXJlc1swXSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfRkFMU0UodmFsaWRh
dGVUZXh0dXJlKHRleHR1cmVzWzddLCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRl
VGV4dHVyZSh0ZXh0dXJlc1s4XSwgZmFsc2UpKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBURVNUX0Yo
Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBjaGFuZ2VNZW1vcnlMaW1pdHMpCiAKICAgICAvLyBT
ZXQgbWF4IGxpbWl0IHRvIDggdGV4dHVyZXMKICAgICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVt
b3J5TGltaXRCeXRlcyh0ZXh0dXJlc01lbW9yeVNpemUoOCkpOwotICAgIHRleHR1cmVNYW5hZ2Vy
LT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkK
ICAgICAgICAgdmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSk7CiAgICAgdGV4dHVy
ZU1hbmFnZXItPnJlZHVjZU1lbW9yeShhbGxvY2F0b3IoKSk7CkBAIC0xNDUsNyArMTQ1LDcgQEAg
VEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5TGltaXRzKQogCiAg
ICAgLy8gU2V0IG1heCBsaW1pdCB0byA1IHRleHR1cmVzCiAgICAgdGV4dHVyZU1hbmFnZXItPnNl
dE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXplKDUpKTsKLSAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVz
OyArK2kpCiAgICAgICAgIEVYUEVDVF9FUSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0sIGZh
bHNlKSwgaSA8IDUpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoYWxsb2NhdG9y
KCkpOwpAQCAtMTU1LDcgKzE1NSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3Qs
IGNoYW5nZU1lbW9yeUxpbWl0cykKIAogICAgIC8vIFNldCBtYXggbGltaXQgdG8gNCB0ZXh0dXJl
cwogICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHRleHR1cmVzTWVt
b3J5U2l6ZSg0KSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsK
KyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKQogICAgICAgICBFWFBFQ1RfRVEodmFsaWRh
dGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSksIGkgPCA0KTsKICAgICB0ZXh0dXJlTWFuYWdl
ci0+cmVkdWNlTWVtb3J5KGFsbG9jYXRvcigpKTsKQEAgLTE4MSw3ICsxODEsNyBAQCBURVNUX0Yo
Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlclBhcnRpYWxVcGRhdGVUZXh0
dXJlcykKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtVGV4dHVyZXM7ICsraSkKICAg
ICAgICAgdGV4dHVyZXNbaV0tPnNldFJlcXVlc3RQcmlvcml0eSgyMDAgKyBpKTsKLSAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIEFsbG9jYXRlIHRleHR1cmVzIHdoaWNoIGFy
ZSBjdXJyZW50bHkgaGlnaCBwcmlvcml0eS4KICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1
cmUodGV4dHVyZXNbMF0sIGZhbHNlKSk7CkBAIC0xOTYsNyArMTk2LDcgQEAgVEVTVF9GKENDUHJp
b3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJQYXJ0aWFsVXBkYXRlVGV4dHVyZXMp
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVRleHR1cmVzOyArK2kpCiAgICAgICAg
IG1vcmVUZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9yaXR5KDEwMCArIGkpOwotICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gVGV4dHVyZXMgYXJlIG5vdyBiZWxvdyBjdXRv
ZmYuCiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1swXSwgZmFsc2Up
KTsKQEAgLTI0Miw3ICsyNDIsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0
ZXh0dXJlTWFuYWdlclByaW9yaXRpZXNBcmVFcXVhbCkKIAogICAgIC8vIFNldCBtYXggbGltaXQg
dG8gOCB0ZXh0dXJlcwogICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVz
KHRleHR1cmVzTWVtb3J5U2l6ZSg4KSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAK
ICAgICAvLyBUaGUgdHdvIGhpZ2ggcHJpb3JpdHkgdGV4dHVyZXMgc2hvdWxkIGJlIGF2YWlsYWJs
ZSwgb3RoZXJzIHNob3VsZCBub3QuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyOyArK2kp
CkBAIC0yNzMsNyArMjczLDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4
dHVyZU1hbmFnZXJEZXN0cm95ZWRGaXJzdCkKICAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZS0+aGF2
ZUJhY2tpbmdUZXh0dXJlKCkpOwogCiAgICAgdGV4dHVyZS0+c2V0UmVxdWVzdFByaW9yaXR5KDEw
MCk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBFWFBFQ1RfVFJVRSh2YWxp
ZGF0ZVRleHR1cmUodGV4dHVyZSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlLT5j
YW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKSk7CkBAIC0yOTYsNyArMjk2LDcgQEAgVEVTVF9GKEND
UHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1vdmVkVG9OZXdNYW5hZ2VyKQogICAgIEVY
UEVDVF9GQUxTRSh0ZXh0dXJlLT5oYXZlQmFja2luZ1RleHR1cmUoKSk7CiAKICAgICB0ZXh0dXJl
LT5zZXRSZXF1ZXN0UHJpb3JpdHkoMTAwKTsKLSAgICB0ZXh0dXJlTWFuYWdlck9uZS0+cHJpb3Jp
dGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyT25lLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKIAogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlLCBmYWxzZSkp
OwogICAgIEVYUEVDVF9UUlVFKHRleHR1cmUtPmNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpKTsK
QEAgLTMxMiw3ICszMTIsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0
dXJlTW92ZWRUb05ld01hbmFnZXIpCiAKICAgICB0ZXh0dXJlLT5zZXRUZXh0dXJlTWFuYWdlcih0
ZXh0dXJlTWFuYWdlclR3by5nZXQoKSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlclR3by0+cHJpb3Jp
dGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyVHdvLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKIAogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlLCBmYWxzZSkp
OwogICAgIEVYUEVDVF9UUlVFKHRleHR1cmUtPmNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpKTsK
QEAgLTMyNiw4ICszMjYsOSBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZW5k
ZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZU91dHNpZGVSb290UwogICAgIGNvbnN0IHNp
emVfdCBtYXhUZXh0dXJlcyA9IDg7CiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBjcmVhdGVNYW5hZ2VyKG1heFRleHR1cmVzKTsKIAotICAg
IC8vIEhhbGYgb2YgdGhlIG1lbW9yeSBpcyB0YWtlbiBieSBzdXJmYWNlcy4KLSAgICBjb25zdCBz
aXplX3QgcmVuZGVyU3VyZmFjZXNCeXRlcyA9IHRleHR1cmVzTWVtb3J5U2l6ZSg0KTsKKyAgICAv
LyBIYWxmIG9mIHRoZSBtZW1vcnkgaXMgdGFrZW4gYnkgc3VyZmFjZXMgKHdpdGggaGlnaCBwcmlv
cml0eSBwbGFjZS1ob2xkZXIpCisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiByZW5k
ZXJTdXJmYWNlUGxhY2VIb2xkZXIgPSB0ZXh0dXJlTWFuYWdlci0+Y3JlYXRlTWVtb3J5UGxhY2Vo
b2xkZXIodGV4dHVyZXNNZW1vcnlTaXplKDQpKTsKKyAgICByZW5kZXJTdXJmYWNlUGxhY2VIb2xk
ZXItPnNldFJlcXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cmVuZGVyU3VyZmFj
ZVByaW9yaXR5KCkpOwogCiAgICAgLy8gQ3JlYXRlIHRleHR1cmVzIHRvIGZpbGwgb3VyIG1lbW9y
eSBsaW1pdC4KICAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHRleHR1cmVzW21heFRl
eHR1cmVzXTsKQEAgLTM0MCw3ICszNDEsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVU
ZXN0LCByZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZU91dHNpZGVSb290UwogICAg
ICAgICB0ZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9yaXR5KDEwMCArIGkpOwogCiAgICAgLy8g
T25seSBsb3dlciBoYWxmIHNob3VsZCBiZSBhdmFpbGFibGUuCi0gICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcyhyZW5kZXJTdXJmYWNlc0J5dGVzKTsKKyAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgRVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0
dXJlKHRleHR1cmVzWzBdLCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVy
ZSh0ZXh0dXJlc1szXSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJl
KHRleHR1cmVzWzRdLCBmYWxzZSkpOwpAQCAtMzUxLDE0ICszNTIsMTQgQEAgVEVTVF9GKENDUHJp
b3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVP
dXRzaWRlUm9vdFMKICAgICAgICAgdGV4dHVyZXNbaV0tPnNldFJlcXVlc3RQcmlvcml0eSgxMDAg
LSBpKTsKIAogICAgIC8vIE9ubHkgdXBwZXIgaGFsZiBzaG91bGQgYmUgYXZhaWxhYmxlLgotICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMocmVuZGVyU3VyZmFjZXNCeXRlcyk7
CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIEVYUEVDVF9G
QUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbMF0sIGZhbHNlKSk7CiAgICAgRVhQRUNUX0ZB
TFNFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1szXSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfVFJV
RSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbNF0sIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUo
dmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzddLCBmYWxzZSkpOwogCiAgICAgRVhQRUNUX0VRKHRl
eHR1cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0
ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFn
ZXItPm1lbW9yeUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSk7CisgICAgRVhQRUNUX0VRKHRleHR1
cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclNlbGZNYW5hZ2VkVGV4
dHVyZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygp
LCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKIAogICAgIHRleHR1
cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CkBAIC0zNjksOCArMzcwLDkg
QEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VN
ZW1vcnlBdmFpbGFibGVGb3JSZXF1ZXN0TGEKICAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMg
PSA4OwogICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5h
Z2VyID0gY3JlYXRlTWFuYWdlcihtYXhUZXh0dXJlcyk7CiAKLSAgICAvLyBIYWxmIG9mIHRoZSBt
ZW1vcnkgaXMgdGFrZW4gYnkgc3VyZmFjZXMuCi0gICAgY29uc3Qgc2l6ZV90IHJlbmRlclN1cmZh
Y2VzQnl0ZXMgPSB0ZXh0dXJlc01lbW9yeVNpemUoNCk7CisgICAgLy8gSGFsZiBvZiB0aGUgbWVt
b3J5IGlzIHRha2VuIGJ5IHN1cmZhY2VzICh3aXRoIGhpZ2ggcHJpb3JpdHkgcGxhY2UtaG9sZGVy
KQorICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gcmVuZGVyU3VyZmFjZVBsYWNlSG9s
ZGVyID0gdGV4dHVyZU1hbmFnZXItPmNyZWF0ZU1lbW9yeVBsYWNlaG9sZGVyKHRleHR1cmVzTWVt
b3J5U2l6ZSg0KSk7CisgICAgcmVuZGVyU3VyZmFjZVBsYWNlSG9sZGVyLT5zZXRSZXF1ZXN0UHJp
b3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnJlbmRlclN1cmZhY2VQcmlvcml0eSgpKTsKIAog
ICAgIC8vIENyZWF0ZSB0ZXh0dXJlcyB0byBmaWxsIG91ciBtZW1vcnkgbGltaXQuCiAgICAgT3du
UHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiB0ZXh0dXJlc1ttYXhUZXh0dXJlc107CkBAIC0zODMs
NyArMzg1LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFj
ZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVGb3JSZXF1ZXN0TGEKICAgICAgICAgdGV4dHVyZXNbaV0t
PnNldFJlcXVlc3RQcmlvcml0eSgxMDApOwogCiAgICAgLy8gVGhlIGZpcnN0IGZvdXIgdG8gYmUg
cmVxdWVzdGVkIGxhdGUgd2lsbCBiZSBhdmFpbGFibGUuCi0gICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcyhyZW5kZXJTdXJmYWNlc0J5dGVzKTsKKyAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1h
eFRleHR1cmVzOyArK2kpCiAgICAgICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4
dHVyZXNbaV0sIGZhbHNlKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heFRleHR1
cmVzOyBpICs9IDIpCkBAIC0zOTIsNyArMzk0LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0
dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVGb3JSZXF1ZXN0TGEK
ICAgICAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1tpXSwgdHJ1ZSkp
OwogCiAgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXIt
Pm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5
U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSk7
CisgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1l
bW9yeUZvclNlbGZNYW5hZ2VkVGV4dHVyZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5h
Z2VyLT5tZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZC
eXRlcygpKTsKIAogICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3Io
KSk7CkBAIC00MDMsOCArNDA1LDkgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwg
d2hlblJlbmRlclN1cmZhY2VOb3RBdmFpbGFibGVUZXh0dXJlc0Fsc29Ob3RBdmEKICAgICBjb25z
dCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwogICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlTWFuYWdlcihtYXhUZXh0dXJlcyk7CiAK
LSAgICAvLyBIYWxmIG9mIHRoZSBtZW1vcnkgaXMgdGFrZW4gYnkgc3VyZmFjZXMuCi0gICAgY29u
c3Qgc2l6ZV90IHJlbmRlclN1cmZhY2VzQnl0ZXMgPSB0ZXh0dXJlc01lbW9yeVNpemUoNCk7Cisg
ICAgLy8gSGFsZiBvZiB0aGUgbWVtb3J5IGlzIHRha2VuIGJ5IHN1cmZhY2VzICh3aXRoIGhpZ2gg
cHJpb3JpdHkgcGxhY2UtaG9sZGVyKQorICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4g
cmVuZGVyU3VyZmFjZVBsYWNlSG9sZGVyID0gdGV4dHVyZU1hbmFnZXItPmNyZWF0ZU1lbW9yeVBs
YWNlaG9sZGVyKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSk7CisgICAgcmVuZGVyU3VyZmFjZVBsYWNl
SG9sZGVyLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnJlbmRlclN1
cmZhY2VQcmlvcml0eSgpKTsKIAogICAgIC8vIENyZWF0ZSB0ZXh0dXJlcyB0byBmaWxsIG91ciBt
ZW1vcnkgbGltaXQuCiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiB0ZXh0dXJlc1tt
YXhUZXh0dXJlc107CkBAIC00MTgsNyArNDIxLDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0
dXJlVGVzdCwgd2hlblJlbmRlclN1cmZhY2VOb3RBdmFpbGFibGVUZXh0dXJlc0Fsc29Ob3RBdmEK
ICAgICBmb3IgKHNpemVfdCBpID0gNjsgaSA8IDg7ICsraSkKICAgICAgICAgdGV4dHVyZXNbaV0t
PnNldFJlcXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6dmlzaWJsZVByaW9yaXR5
KGZhbHNlKSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKHJlbmRl
clN1cmZhY2VzQnl0ZXMpOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
KTsKIAogICAgIC8vIFVuYWJsZSB0byByZXF1ZXN0TGF0ZSB0ZXh0dXJlcyBpbiB0aGUgY2hpbGQg
c3VyZmFjZS4KICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzZdLCB0
cnVlKSk7CkBAIC00MjksNyArNDMyLDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVz
dCwgd2hlblJlbmRlclN1cmZhY2VOb3RBdmFpbGFibGVUZXh0dXJlc0Fsc29Ob3RBdmEKICAgICAg
ICAgRVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSkpOwogCiAg
ICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg2KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9y
eUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSgy
KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSk7CisgICAg
RVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSgyKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUZv
clNlbGZNYW5hZ2VkVGV4dHVyZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5t
ZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygp
KTsKIAogICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21p
dW1UZXN0LmNwcAppbmRleCAzMWNmNjcyNWUxMzI4NGQwNGI3ZGZhMjc0YzgzYmVmNzVjOTZmMDZh
Li5mMTUyYWI0ZmJlNzg5MWUwNTM2NzllYmYzMTIyNjQ3Nzg0MGNkZDZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5j
cHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVz
aERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3Jp
dHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDAp
OworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7
CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKQEAgLTExOSw3ICsxMTksNyBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVD
b250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGVu
IG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGll
cyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4
dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSwgMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApA
QCAtMTQ0LDcgKzE0NCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2Nj
bHVkZWREaXJ0eVRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHBy
aW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCks
ICZvY2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKQEAgLTE4OCw3ICsxODgsNyBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKICAgICBsYXll
ci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKIAogICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygp
OwpAQCAtMjExLDcgKzIxMSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNo
RGVsZXRlZFRpbGVzKQogCiAgICAgLy8gVGhpcyBzaG91bGQgcmVjcmVhdGUgYW5kIHVwZGF0ZSB0
aGUgZGVsZXRlZCB0ZXh0dXJlcy4KICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJp
b3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDAp
OwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXJJbXBsLmdldCgpKTsKQEAgLTIzOSw3ICsyMzksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVu
dFJlY3QoY29udGVudFJlY3QpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHBy
aW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgIHVw
ZGF0ZVRleHR1cmVzKCk7CkBAIC0yNTUsNyArMjU1LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICAvLyBGb3IgdGhlIG5leHQgZm91ciB1
cGRhdGVzLCB3ZSBzaG91bGQgZGV0ZWN0IHdlIHN0aWxsIG5lZWQgaWRsZSBwYWludGluZy4KICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgICBsYXllci0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICAgICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwogCiAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVy
LCB2aXNpYmxlUmVjdCwgMCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQ
YWludCh2aXNpYmxlUmVjdCkpOwpAQCAtMzA3LDcgKzMwNyw3IEBAIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAgICAvLyBQYWlu
dCBhIHNpbmdsZSB0aWxlIGluIGxheWVyMiBzbyB0aGF0IGl0IHdpbGwgaWRsZSBwYWludC4KICAg
ICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAg
bGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QodXBk
YXRlciwgbGF5ZXJSZWN0LCAwKTsKICAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0
ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKIApAQCAtMzI1LDcgKzMyNSw3IEBAIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxl
ZCkKICAgICAvLyBOb3cgaWRsZSBwYWludCBsYXllcjIuIFdlIGFyZSBnb2luZyB0byBydW4gb3V0
IG9mIG1lbW9yeSB0aG91Z2ghCiAgICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOwogICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3Jp
dHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDAp
OworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllcjIt
PnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsK
IAogICAgIC8vIE9oIHdlbGwsIGNvbW1pdCB0aGUgZnJhbWUgYW5kIHB1c2guCkBAIC0zNDUsNyAr
MzQ1LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRs
ZVBhaW50RmFpbGVkKQogICAgIC8vIE5vdyBpZiBsYXllcjIgYmVjb21lcyBmdWxseSB2aXNpYmxl
LCB3ZSBzaG91bGQgYmUgYWJsZSB0byBwYWludCBpdCBhbmQgcHVzaCB2YWxpZCB0ZXh0dXJlcy4K
ICAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAg
ICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3Qo
dXBkYXRlciwgbGF5ZXIyUmVjdCwgMCk7CiAgICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCBsYXllclJlY3QsIDApOwogCkBAIC0zNzgsNyArMzc4LDcgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRlZE9jY2x1ZGVkVGlsZXMpCiAgICAgbGF5
ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAg
ICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2Vy
LT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBk
YXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4
dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwpA
QCAtNDAzLDcgKzQwMyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGls
ZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXll
ci5nZXQoKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIHVw
ZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdl
dCgpKTsKQEAgLTQzMiw3ICs0MzIsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIpCiAKICAgICBs
YXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5
ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1
cmluZ1BhaW50T25QcmV2aW91c0xheQogCiAgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGll
cyhwcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMo
cHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAg
IC8vIEludmFsaWRhdGUgYSB0aWxlIG9uIGxheWVyMgogICAgIGxheWVyMS0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUw
KSwgbGF5ZXIyLmdldCgpKTsKQEAgLTUwOCw3ICs1MDgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgbGF5ZXItPmludmFsaWRhdGVD
b250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAg
ICAgLy8gSWRsZS1wYWludGluZyBzaG91bGQgc2VlIG5vIG1vcmUgcHJpb3JpdHkgdGlsZXMgZm9y
IHBhaW50aW5nLgpAQCAtNTIxLDcgKzUyMSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhh
c1RpbGVBdCgxLCAxKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3Jp
dHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDAp
OworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAgLy8gV2Ug
c2hvdWxkbid0IHNpZ25hbCB3ZSBuZWVkIGFub3RoZXIgaWRsZSBwYWludC4KQEAgLTU0OCw3ICs1
NDgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVk
TGF5ZXIpCiAgICAgICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudFJlY3Qp
OwogCiAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOwotICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAg
ICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAgICAgLy8g
RW1wdHkgbGF5ZXJzIGRvbid0IHBhaW50IG9yIGlkbGUtcGFpbnQuCiAgICAgICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CkBAIC01ODYsNyArNTg2
LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVM
YXllcnMpCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICAgLy8gUGFp
bnQgLyBpZGxlLXBhaW50LgogICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJp
b3JpdHlDYWxjdWxhdG9yKTsKLSAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygwKTsKKyAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwog
ICAgICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDAp
OwogCiAgICAgICAgIC8vIE5vbi12aXNpYmxlIGxheWVycyBkb24ndCBuZWVkIGlkbGUgcGFpbnQu
CkBAIC02MzYsNyArNjM2LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQ
YWludE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAgICAgICAgICAgICBsYXllci0+aW52YWxp
ZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKIAogICAgICAgICAgICAgbGF5ZXItPnNldFRl
eHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgICAgICAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgICAgICAgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgICAgICAgICAvLyBJZiBpZGxlUGFpbnRS
ZWN0IGdpdmVzIGJhY2sgYSBub24tZW1wdHkgcmVzdWx0IHRoZW4gd2Ugc2hvdWxkIHBhaW50IGl0
LiBPdGhlcndpc2UsCiAgICAgICAgICAgICAvLyB3ZSBzaG91ZCBwYWludCBub3RoaW5nLgpAQCAt
NjQ4LDcgKzY0OCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRO
b25WaXNpYmxlQW5pbWF0aW5nTGF5ZXJzKQogICAgICAgICAgICAgLy8gSWYgdGhlIGxheWVyIGlz
IHRvIGJlIHByZXBhaW50ZWQgYXQgYWxsLCB0aGVuIGFmdGVyIGZvdXIgdXBkYXRlcyB3ZSBzaG91
bGQgaGF2ZSB0aGUgb3V0ZXIgcm93L2NvbHVtbnMgcGFpbnRlZC4KICAgICAgICAgICAgIGZvciAo
aW50IGsgPSAwOyBrIDwgNDsgKytrKSB7CiAgICAgICAgICAgICAgICAgbGF5ZXItPnNldFRleHR1
cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgICAgICAgICAgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICAgICAgICAgICAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAgICAgICAgICAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICAgICAg
ICAgIHVwZGF0ZVRleHR1cmVzKCk7CkBAIC02NjEsNyArNjYxLDcgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAgICAg
ICAgICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7
CiAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7ICsraykgewogICAgICAgICAgICAg
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAg
ICAgICAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAg
ICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAg
ICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0
LCAwKTsKICAgICAgICAgICAgICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtNjkwLDcgKzY5MCw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUp
CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRv
cik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICB1cGRhdGVy
LnVwZGF0ZShjY0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZh
a2VVcGxvYWRlciwgMTAwMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKQEAgLTc0MCwxNCArNzQwLDE0IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgbGF5
ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50Qm91bmRzKTsKIAogICAgIGxheWVyLT5z
ZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250
ZW50Qm91bmRzLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwgMCwg
MzAwLCAzMDAgKiAwLjgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKICAgICB1cGRhdGVUZXh0dXJl
cygpOwogCiAgICAgLy8gQWZ0ZXIgdGhlIHRpbGVzIGFyZSB1cGRhdGVkIG9uY2UsIGFub3RoZXIg
aW52YWxpZGF0ZSBvbmx5IG5lZWRzIHRvIHVwZGF0ZSB0aGUgYm91bmRzIG9mIHRoZSBsYXllci4K
ICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KGNvbnRlbnRCb3VuZHMpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVy
LCBjb250ZW50Qm91bmRzLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3Qo
bGF5ZXJCb3VuZHMpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50
Qm91bmRzQXJlU2NhbGVkKQogICAgIEludFJlY3QgcGFydGlhbERhbWFnZSgzMCwgMTAwLCAxMCwg
MTApOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QocGFydGlhbERhbWFnZSk7CiAg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0
UmVjdCg0NSwgODAsIDE1LCA4KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiB9CkBAIC03NzksNyAr
Nzc5LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlv
bldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKIAogICAgIC8vIFB1c2ggdGhlIHRpbGVzIHRvIHRo
ZSBpbXBsIHNpZGUgYW5kIGNoZWNrIHRoYXQgdGhlcmUgaXMgZXhhY3RseSBvbmUuCiAgICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIs
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAg
IGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CkBAIC03OTYsNyArNzk2
LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldo
ZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKIAogICAgIC8vIFRoZSBpbXBsIHNpZGUgc2hvdWxkIGdl
dCAyeDIgdGlsZXMgbm93LgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7
CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSwgMCk7CiAg
ICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllcklt
cGwuZ2V0KCkpOwpAQCAtODEwLDcgKzgxMCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAgICAgbGF5
ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhw
cmlvcml0eUNhbGN1bGF0b3IpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVy
LCBJbnRSZWN0KDEsIDAsIDAsIDEpLCAwKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsK
IAogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQ
RUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKQEAgLTg4MCw3ICs4ODAsNyBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcmVzaXplVG9TbWFsbGVyKQogICAgIGxh
eWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCkpOwogCiAg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgNzAwLCA3MDApLCAwKTsKIAogICAgIGxheWVyLT5zZXRCb3Vu
ZHMoSW50U2l6ZSgyMDAsIDIwMCkpOwpAQCAtODk5LDcgKzg5OSw3IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBodWdlTGF5ZXJVcGRhdGVDcmFzaCkKIAogICAgIC8vIEVuc3VyZSBu
byBjcmFzaCBmb3IgYm91bmRzIHdoZXJlIHNpemUgKiBzaXplIHdvdWxkIG92ZXJmbG93IGFuIGlu
dC4KICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
LSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOwogfQogCkBAIC0xMDM5LDcg
KzEwMzksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0
aG91dE9jY2x1c2lvbikKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
MCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7
CiAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlUmVjdENvdW50KCkpOwogfQpAQCAtMTA2MCw3ICsxMDYwLDcgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAKICAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMs
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwog
CkBAIC0xMTA4LDcgKzExMDgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGls
ZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAgIGxheWVy
LT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogCiAgICAg
bGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+
cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0
ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAzNjApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgy
NC0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgp
KTsKIApAQCAtMTEyMyw3ICsxMTIzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRWaXNpYmxpdHlDb25zdHJhaW50cykKICAgICBs
YXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNTApKTsKICAg
ICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsK
ICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
dXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDM1MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNU
X0VRKDI0LTYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENv
dW50KCkpOwogCkBAIC0xMTM4LDcgKzExMzgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQog
ICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDM0MCkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCkpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3Ip
OwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzQwKSwgJm9jY2x1ZGVkKTsKICAgICBF
WFBFQ1RfRVEoMjQtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVS
ZWN0Q291bnQoKSk7CiAKQEAgLTExNjMsNyArMTE2Myw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCB0aWxlc05vdFBhaW50ZWRXaXRob3V0SW52YWxpZGF0aW9uKQogICAgIGxheWVy
LT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogICAgIGxh
eWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEo
MzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQo
KSk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKQEAgLTEyMDMsNyArMTIwMyw3IEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNm
b3JtcykKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQo
KSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJ
bnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDAp
LCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIApAQCAtMTIzMSw3ICsxMjMxLDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25B
bmRTY2FsaW5nKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQ
b2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsK
ICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAs
IDYwMCksICZvY2NsdWRlZCk7CiAgICAgLy8gVGhlIGNvbnRlbnQgaXMgaGFsZiB0aGUgc2l6ZSBv
ZiB0aGUgbGF5ZXIgKHNvIHRoZSBudW1iZXIgb2YgdGlsZXMgaXMgZmV3ZXIpLgogICAgIC8vIElu
IHRoaXMgY2FzZSwgdGhlIGNvbnRlbnQgaXMgMzAweDMwMCwgYW5kIHNpbmNlIHRoZSB0aWxlIHNp
emUgaXMgMTAwLCB0aGUKQEAgLTEyNTEsNyArMTI1MSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICBsYXll
ci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5k
cygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYw
MCwgNjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3Vs
YXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwog
ICAgIEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlUmVjdENvdW50KCkpOwogCkBAIC0xMjcxLDcgKzEyNzEsNyBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAg
bGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5i
b3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAw
LCA2MDAsIDYwMCkpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNh
bGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Cisg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRh
dGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVk
KTsKICAgICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cHJlcGFyZVJlY3RDb3VudCgpKTsKIApAQCAtMTMwMCw3ICsxMzAwLDcgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIGxheWVy
LT5zZXREcmF3T3BhY2l0eSgxKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhw
cmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAg
Ly8gSWYgdGhlIGxheWVyIGRvZXNuJ3QgcGFpbnQgb3BhcXVlIGNvbnRlbnQsIHRoZW4gdGhlIHZp
c2libGVDb250ZW50T3BhcXVlUmVnaW9uIHNob3VsZCBiZSBlbXB0eS4KICAgICBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CkBA
IC0xMzkzLDcgKzEzOTMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGl4ZWxz
UGFpbnRlZE1ldHJpY3MpCiAgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5KDEpOwogCiAgICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBJbnZhbGlkYXRlcyBhbmQgcGFpbnRzIHRoZSB3
aG9sZSBsYXllci4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3Bh
cXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CkBAIC0xNjM2LDcgKzE2MzYsNyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgbm9uSW50ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3RvcnRl
ZER1cmluZ1BhaW50KQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoY29udGVudFJl
Y3QpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKGNhbGN1bGF0b3IpOwotICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gVXBkYXRlIHRoZSB3aG9sZSB0aWxl
LgogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7
CkBAIC0xNjY5LDcgKzE2NjksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbm9u
SW50ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3RvcnRlZER1cmluZ0ludmFsaQogICAgIGxheWVy
LT5zZXRWaXNpYmxlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogCiAgICAgbGF5ZXItPnNldFRl
eHR1cmVQcmlvcml0aWVzKGNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygp
OwogCiAgICAgLy8gVXBkYXRlIHRoZSB3aG9sZSB0aWxlLgogICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152346</attachid>
            <date>2012-07-13 15:01:22 -0700</date>
            <delta_ts>2012-07-13 17:51:50 -0700</delta_ts>
            <desc>add_better_comment</desc>
            <filename>bug-91177-20120713150122.patch</filename>
            <type>text/plain</type>
            <size>46413</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE4Zjg1NjlkMDJkMDAy
MDVlMDkyZGE0NTM5N2IxZjQ4OGUzZmNhNi4uNmVjNmUyNzg3MGQ5ODdkNDQxMTk2ZWY3M2E0NTZi
ZTJmMTY3NmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA3LTEyICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCAn
c2VsZi1tYW5hZ2VkJyBvcHRpb24gdG8gQ0NQcmlvcml0aXplZFRleHR1cmUgdG8gZW5hYmxlIHJl
bmRlci1zdXJmYWNlIGFuZCBjYW52YXMgdXNlIGNhc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTExNzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1ha2VzIHRoZSByZW5kZXItc3VyZmFjZSBt
ZW1vcnkgdXNlIGNhc2UgZ2VuZXJpYyBhcyAnc2VsZi1tYW5hZ2VkJyB0ZXh0dXJlcywKKyAgICAg
ICAgYXMgdGhpcyB1c2UgY2FzZSBpcyBwb3BwaW5nIHVwIGluIG90aGVyIHBsYWNlcyAoZWcuIGNh
bnZhc2VzKS4gSXQncyBleGFjdGx5IHRoZQorICAgICAgICBzYW1lIGlkZWEgZXhjZXB0IHdlIGNh
biBoYXZlIGFzIG1hbnkgcGxhY2UtaG9sZGVycyBhcyB3ZSB3YW50IGF0IGFyYml0cmFyeQorICAg
ICAgICBwcmlvcml0aWVzLgorCisgICAgICAgIFRoaXMgYWxyZWFkeSB0ZXN0ZWQgYnkgdGhlIHJl
bmRlciBzdXJmYWNlIHVuaXQgdGVzdHMgd2hpY2ggbm93IGFsc28gdXNlIHRoZSAKKyAgICAgICAg
Z2VuZXJpYyBwbGFjZWhvbGRlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpDQ1ByaW9yaXRp
emVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6YWNx
dWlyZUJhY2tpbmdUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OnNldElzU2VsZk1h
bmFnZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmlzU2VsZk1h
bmFnZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmg6CisgICAg
ICAgIChDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGVNZW1vcnlQbGFjZWhvbGRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6Om1lbW9yeUZvclNlbGZN
YW5hZ2VkVGV4dHVyZXMpOgorCiAyMDEyLTA3LTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeC4gSW5pdGlhbGl6ZSB1bnVzZWQgY29uc3QgbWVt
YmVyIHZhcmlhYmxlcyB0byBtYWtlIGNvbXBpbGVycyBoYXBweS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggODE1MmYyN2VlNDMwYjdlNDZiNjhhM2NhNDgwODc4MjA2ZDUyOWIzOS4uMzEw
OTY1ZTVmN2Y4ZmViNDBjY2M5MDM5NTMwOWNiZTFhODA3MzA2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNy0xMiAgRXJpYyBQZW5uZXIgIDxlcGVu
bmVyQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgJ3NlbGYtbWFuYWdlZCcg
b3B0aW9uIHRvIENDUHJpb3JpdGl6ZWRUZXh0dXJlIHRvIGVuYWJsZSByZW5kZXItc3VyZmFjZSBh
bmQgY2FudmFzIHVzZSBjYXNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxMTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ29udmVydCB0aGUgcmVuZGVyLXN1cmZhY2UgdW5pdCB0ZXN0cyB0byB1c2Ug
dGhlIHBsYWNlaG9sZGVycy4KKworICAgICAgICAqIHRlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
VGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorCiAyMDEyLTA3LTEyICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBSb290
IGludmFsaWRhdGlvbnMgZm9yIFJUTCBwYWdlcyBuZWVkIHRvIGJlIGluIHRoZSByaWdodCBzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMWE0MzU5ZWRiZDQ2OTc3OWEw
N2Y0MGZkNjA5ZGEyZTcyZjgzYzdhNC4uNjYxZTM0ZWI5YzkwZDBhNWVmZjZmZTAxNDlkNDA0NGZk
YjdhZGU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00ODksOCArNDg5
LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiBy
b290TGF5ZXIsIENDVGV4dHVyZVVwZGF0ZXImIHUKICAgICAvLyBSZXNldCBwYXJ0aWFsIHRleHR1
cmUgdXBkYXRlIHJlcXVlc3RzLgogICAgIG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA9
IDA7CiAKLSAgICBwcmlvcml0aXplVGV4dHVyZXModXBkYXRlTGlzdCk7Ci0KICAgICBib29sIG5l
ZWRNb3JlVXBkYXRlcyA9IHBhaW50TGF5ZXJDb250ZW50cyh1cGRhdGVMaXN0LCB1cGRhdGVyKTsK
ICAgICBpZiAobV90cmlnZ2VySWRsZVVwZGF0ZXMgJiYgbmVlZE1vcmVVcGRhdGVzKQogICAgICAg
ICBzZXROZWVkc0NvbW1pdCgpOwpAQCAtNDk5LDcgKzQ5Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyLCBDQ1RleHR1cmVVcGRh
dGVyJiB1CiAgICAgICAgIHVwZGF0ZUxpc3RbaV0tPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogfQog
Ci12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlz
dCYgdXBkYXRlTGlzdCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojpwcmlvcml0aXplVGV4dHVyZXMo
Y29uc3QgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0LCBzaXplX3QgbWVtb3J5Rm9yUmVuZGVyU3VyZmFj
ZXMpCiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMg
aXNuJ3Qgb3JkZXItZGVwZW5kZW50LgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVy
Q2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNo
cm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJh
dG9yVHlwZTsKQEAgLTUxOSw2ICs1MTcsMTkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByaW9y
aXRpemVUZXh0dXJlcyhjb25zdCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICAvLyBDcmVhdGUgbWVtb3J5IHBsYWNlLWhvbGRlciBmb3Igc3VyZmFjZXMgKHdo
aWNoIGFyZSBtYW5hZ2VkIGluZGVwZW5kYW50bHkpIGJ1dAorICAgIC8vIHNob3VsZCBzdGlsbCBy
ZWR1Y2UgbWVtb3J5IGF2YWlsYWJsZSBmb3IgY29udGVudHMuCisgICAgLy8gVGhpcyBvbmx5IG5l
ZWRzIHRvIGV4aXN0IGR1cmluZyBwcmlvcml0aXplVGV4dHVyZXMoKSBzaW5jZSB0aGF0IGlzIHdo
ZW4gaXRzCisgICAgLy8gbWVtb3J5IGlzIGFjY291bnRlZCBmb3IuIFNvIGNyZWF0ZSBhIHRlbXAg
b2JqZWN0IGhlcmUsIHdoaWNoIGlzIGRlbGV0ZWQKKyAgICAvLyBhZnRlciBwcmlvcml0aXplVGV4
dHVyZXMoKSBiZWxvdy4KKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHN1cmZhY2VQ
bGFjZWhvbGRlciA9IG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+Y3JlYXRlTWVtb3J5UGxhY2Vo
b2xkZXIobWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXMpOworICAgIHN1cmZhY2VQbGFjZWhvbGRlci0+
c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpyZW5kZXJTdXJmYWNlUHJp
b3JpdHkoKSk7CisKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygpOworfQorCitzaXplX3QgQ0NMYXllclRyZWVIb3N0OjpjYWxjdWxhdGVNZW1vcnlGb3JS
ZW5kZXJTdXJmYWNlcyhjb25zdCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCit7CiAgICAgc2l6ZV90
IHJlYWRiYWNrQnl0ZXMgPSAwOwogICAgIHNpemVfdCBtYXhCYWNrZ3JvdW5kVGV4dHVyZUJ5dGVz
ID0gMDsKICAgICBzaXplX3QgY29udGVudHNUZXh0dXJlQnl0ZXMgPSAwOwpAQCAtNTM5LDkgKzU1
MCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpwcmlvcml0aXplVGV4dHVyZXMoY29uc3QgTGF5
ZXJMaXN0JiB1cGRhdGVMaXN0KQogICAgICAgICBpZiAoIXJlYWRiYWNrQnl0ZXMpCiAgICAgICAg
ICAgICByZWFkYmFja0J5dGVzID0gQ0NUZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMobV9kZXZpY2VW
aWV3cG9ydFNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICB9Ci0gICAgc2l6ZV90
IHJlbmRlclN1cmZhY2VzQnl0ZXMgPSByZWFkYmFja0J5dGVzICsgbWF4QmFja2dyb3VuZFRleHR1
cmVCeXRlcyArIGNvbnRlbnRzVGV4dHVyZUJ5dGVzOwotCi0gICAgbV9jb250ZW50c1RleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMocmVuZGVyU3VyZmFjZXNCeXRlcyk7CisgICAgcmV0
dXJuIHJlYWRiYWNrQnl0ZXMgKyBtYXhCYWNrZ3JvdW5kVGV4dHVyZUJ5dGVzICsgY29udGVudHNU
ZXh0dXJlQnl0ZXM7CiB9CiAKIGJvb2wgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tzRm9yUmVu
ZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIsIENDVGV4dHVyZVVw
ZGF0ZXImIHVwZGF0ZXIpCkBAIC01NjcsNiArNTc2LDkgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50TWFza3NGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VM
YXkKIAogYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXll
ckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIp
CiB7CisgICAgc2l6ZV90IG1lbW9yeUZvclJlbmRlclN1cmZhY2VzTWV0cmljID0gY2FsY3VsYXRl
TWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgcHJp
b3JpdGl6ZVRleHR1cmVzKHJlbmRlclN1cmZhY2VMYXllckxpc3QsIG1lbW9yeUZvclJlbmRlclN1
cmZhY2VzTWV0cmljKTsKKwogICAgIC8vIFVzZSBGcm9udFRvQmFjayB0byBhbGxvdyBmb3IgdGVz
dGluZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRyZWUgd2Fs
ay4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJh
dG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKQEAgLTU5Miw3
ICs2MDQsNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0
IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAogICAgIH0KIAogICAgIG9jY2x1c2lv
blRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkuZGlkVXNlQ29udGVudHNUZXh0dXJlTWVtb3J5Qnl0
ZXMobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwot
ICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkuZGlkVXNlUmVuZGVyU3VyZmFj
ZVRleHR1cmVNZW1vcnlCeXRlcyhtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclJl
bmRlclN1cmZhY2VzQnl0ZXMoKSk7CisgICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJp
Y3MoKS5kaWRVc2VSZW5kZXJTdXJmYWNlVGV4dHVyZU1lbW9yeUJ5dGVzKG1lbW9yeUZvclJlbmRl
clN1cmZhY2VzTWV0cmljKTsKICAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygp
LnJlY29yZE1ldHJpY3ModGhpcyk7CiAKICAgICByZXR1cm4gbmVlZE1vcmVVcGRhdGVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA3YmIwZjY4YzYwNTZjNTdiNzE3MGNlODM1NDFh
OWQ5OTI4NTU2NzU1Li4wOGI5NDU1NmJhZWM1ZWVhODRkMzM1YzMxMjEyNDk2NzFjZjBlNjI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMjg1LDcgKzI4NSw4IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiwgQ0NUZXh0dXJlVXBkYXRl
ciYpOwogCi0gICAgdm9pZCBwcmlvcml0aXplVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiB1cGRh
dGVMaXN0KTsKKyAgICB2b2lkIHByaW9yaXRpemVUZXh0dXJlcyhjb25zdCBMYXllckxpc3QmIHVw
ZGF0ZUxpc3QsIHNpemVfdCBtZW1vcnlGb3JSZW5kZXJTdXJmYWNlcyk7CisgICAgc2l6ZV90IGNh
bGN1bGF0ZU1lbW9yeUZvclJlbmRlclN1cmZhY2VzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlz
dCk7CiAKICAgICB2b2lkIGFuaW1hdGVMYXllcnMoZG91YmxlIG1vbm90b25pY1RpbWUpOwogICAg
IGJvb2wgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2ZShMYXllckNocm9taXVtKiBjdXJyZW50LCBkb3Vi
bGUgbW9ub3RvbmljVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5j
cHAKaW5kZXggYTZhMzA4MTJiYTFhNjAzZDdmNmEzNjljMzVhMzIzMzE4NTgwZDYwOS4uMjdhZDEx
YzNjYjg0YzkxMzIzMjg4YTUxNjIzM2Y4YjJhYzhlNGFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJpb3JpdGl6ZWRUZXh0dXJlLmNwcApAQCAtNDIsNiArNDIsNyBAQCBDQ1ByaW9yaXRpemVkVGV4
dHVyZTo6Q0NQcmlvcml0aXplZFRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiBt
YW5hZ2VyLAogICAgICwgbV9ieXRlcygwKQogICAgICwgbV9wcmlvcml0eShDQ1ByaW9yaXR5Q2Fs
Y3VsYXRvcjo6bG93ZXN0UHJpb3JpdHkoKSkKICAgICAsIG1faXNBYm92ZVByaW9yaXR5Q3V0b2Zm
KGZhbHNlKQorICAgICwgbV9pc1NlbGZNYW5hZ2VkKGZhbHNlKQogICAgICwgbV9iYWNraW5nKDAp
CiAgICAgLCBtX21hbmFnZXIoMCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVy
ZS5oCmluZGV4IGRjODU3OTMyNDE4Mzk2ZmRhMzc4OTAxMDUzNTVjOTI0YTJmZjIwZTIuLjA3NzMz
ZGQzYjk4ODY0YzNiZmZmNTQ1YmFkNWUyOWNlZjZkZDIwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cmlvcml0aXplZFRleHR1cmUuaApAQCAtOTMsNiArOTMsMTMgQEAgcHVibGljOgogICAgIHZvaWQg
ZnJhbWVidWZmZXJUZXh0dXJlMkQoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9y
Kik7CiAgICAgdW5zaWduZWQgdGV4dHVyZUlkKCk7CiAKKyAgICAvLyBTZWxmLW1hbmFnZWQgdGV4
dHVyZXMgYXJlIGFjY291bnRlZCBmb3Igd2hlbiBwcmlvcml0aXppbmcgb3RoZXIgdGV4dHVyZXMs
CisgICAgLy8gYnV0IHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQvcmVjeWNsZWQvZGVsZXRlZCwgc28g
dGhpcyBuZWVkcyB0byBiZSBkb25lCisgICAgLy8gZXh0ZXJuYWxseS4gY2FuQWNxdWlyZUJhY2tp
bmdUZXh0dXJlKCkgaW5kaWNhdGVzIGlmIHRoZSB0ZXh0dXJlIHdvdWxkIGhhdmUKKyAgICAvLyBi
ZWVuIGFsbG93ZWQgZ2l2ZW4gaXRzIHByaW9yaXR5LgorICAgIHZvaWQgc2V0SXNTZWxmTWFuYWdl
ZChib29sIGlzU2VsZk1hbmFnZWQpIHsgbV9pc1NlbGZNYW5hZ2VkID0gaXNTZWxmTWFuYWdlZDsg
fQorICAgIGJvb2wgaXNTZWxmTWFuYWdlZCgpIHsgcmV0dXJuIG1faXNTZWxmTWFuYWdlZDsgfQor
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI7
CiAKQEAgLTEyNSw2ICsxMzIsNyBAQCBwcml2YXRlOgogCiAgICAgc2l6ZV90IG1fcHJpb3JpdHk7
CiAgICAgYm9vbCBtX2lzQWJvdmVQcmlvcml0eUN1dG9mZjsKKyAgICBib29sIG1faXNTZWxmTWFu
YWdlZDsKIAogICAgIEJhY2tpbmcqIG1fYmFja2luZzsKICAgICBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXIqIG1fbWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4IDAxOTViNmYxY2RlYWI1MDZmMDMzMjc4NTY4Mzk4ZGI2
ODQxNzdkZDEuLmQxOWU1YWExOWM4ZjhmMzZjYmU2MjA3MzQ1ZjI5ZGVlY2U2NTZiNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcApAQCAt
NTUsNyArNTUsNyBAQCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6On5DQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXIoKQogICAgICAgICBkZXN0cm95QmFja2luZygqbV9iYWNraW5ncy5iZWdp
bigpLCAwKTsKIH0KIAotdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRp
emVUZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnlCeXRlcykKK3ZvaWQgQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpwcmlvcml0aXplVGV4dHVyZXMoKQogewogICAgIFRSQUNF
X0VWRU5UMCgiY2MiLCAiQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpwcmlvcml0aXplVGV4
dHVyZXMiKTsKIApAQCAtNzksMzEgKzc5LDI5IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjpwcmlvcml0aXplVGV4dHVyZXMoc2l6ZV90IHJlbmRlclN1cmZhY2VzTWVtb3J5CiAK
ICAgICBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzID0gbV9tYXhNZW1vcnlMaW1pdEJ5dGVzOwogICAg
IG1fcHJpb3JpdHlDdXRvZmYgPSBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6bG93ZXN0UHJpb3JpdHko
KTsKLSAgICBib29sIHJlc2VydmVkUmVuZGVyU3VyZmFjZXMgPSBmYWxzZTsKICAgICBzaXplX3Qg
bWVtb3J5Qnl0ZXMgPSAwOwogICAgIGZvciAoVGV4dHVyZVZlY3Rvcjo6aXRlcmF0b3IgaXQgPSBz
b3J0ZWRUZXh0dXJlcy5iZWdpbigpOyBpdCAhPSBzb3J0ZWRUZXh0dXJlcy5lbmQoKTsgKytpdCkg
ewogICAgICAgICBpZiAoKCppdCktPnJlcXVlc3RQcmlvcml0eSgpID09IENDUHJpb3JpdHlDYWxj
dWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
Ly8gRklYTUU6IFdlIGNhbiBtYWtlIHBsYWNlaG9sZGVyIG9iamVjdHMgc2ltaWxhciB0byB0ZXh0
dXJlcyB0byByZXByZXNlbnQgdGhlIHJlbmRlciBzdXJmYWNlIG1lbW9yeSByZXF1ZXN0LgotICAg
ICAgICBpZiAoIXJlc2VydmVkUmVuZGVyU3VyZmFjZXMgJiYgQ0NQcmlvcml0eUNhbGN1bGF0b3I6
OnByaW9yaXR5SXNMb3dlcigoKml0KS0+cmVxdWVzdFByaW9yaXR5KCksIENDUHJpb3JpdHlDYWxj
dWxhdG9yOjpyZW5kZXJTdXJmYWNlUHJpb3JpdHkoKSkpIHsKLSAgICAgICAgICAgIHNpemVfdCBu
ZXdNZW1vcnlCeXRlcyA9IG1lbW9yeUJ5dGVzICsgcmVuZGVyU3VyZmFjZXNNZW1vcnlCeXRlczsK
KyAgICAgICAgaWYgKCgqaXQpLT5pc1NlbGZNYW5hZ2VkKCkpIHsKKyAgICAgICAgICAgIC8vIEFj
Y291bnQgZm9yIHNlbGYtbWFuYWdlZCBtZW1vcnkgaW1tZWRpYXRlbHkgYnkgcmVkdWNpbmcgdGhl
IG1lbW9yeQorICAgICAgICAgICAgLy8gYXZhaWxhYmxlIChzaW5jZSBpdCBuZXZlciBnZXRzIGFj
cXVpcmVkKS4KKyAgICAgICAgICAgIHNpemVfdCBuZXdNZW1vcnlCeXRlcyA9IG1lbW9yeUJ5dGVz
ICsgKCppdCktPmJ5dGVzKCk7CiAgICAgICAgICAgICBpZiAobmV3TWVtb3J5Qnl0ZXMgPiBtX21l
bW9yeUF2YWlsYWJsZUJ5dGVzKSB7CiAgICAgICAgICAgICAgICAgbV9wcmlvcml0eUN1dG9mZiA9
ICgqaXQpLT5yZXF1ZXN0UHJpb3JpdHkoKTsKICAgICAgICAgICAgICAgICBtX21lbW9yeUF2YWls
YWJsZUJ5dGVzID0gbWVtb3J5Qnl0ZXM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzIC09IHJlbmRlclN1cmZh
Y2VzTWVtb3J5Qnl0ZXM7Ci0gICAgICAgICAgICByZXNlcnZlZFJlbmRlclN1cmZhY2VzID0gdHJ1
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdCBuZXdNZW1vcnlCeXRlcyA9IG1lbW9yeUJ5
dGVzICsgKCppdCktPmJ5dGVzKCk7Ci0gICAgICAgIGlmIChuZXdNZW1vcnlCeXRlcyA+IG1fbWVt
b3J5QXZhaWxhYmxlQnl0ZXMpIHsKLSAgICAgICAgICAgIG1fcHJpb3JpdHlDdXRvZmYgPSAoKml0
KS0+cmVxdWVzdFByaW9yaXR5KCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG1f
bWVtb3J5QXZhaWxhYmxlQnl0ZXMgLT0gKCppdCktPmJ5dGVzKCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBzaXplX3QgbmV3TWVtb3J5Qnl0ZXMgPSBtZW1vcnlCeXRlcyArICgqaXQp
LT5ieXRlcygpOworICAgICAgICAgICAgaWYgKG5ld01lbW9yeUJ5dGVzID4gbV9tZW1vcnlBdmFp
bGFibGVCeXRlcykgeworICAgICAgICAgICAgICAgIG1fcHJpb3JpdHlDdXRvZmYgPSAoKml0KS0+
cmVxdWVzdFByaW9yaXR5KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBtZW1vcnlCeXRlcyA9IG5ld01lbW9yeUJ5dGVzOwogICAgICAgICB9Ci0K
LSAgICAgICAgbWVtb3J5Qnl0ZXMgPSBuZXdNZW1vcnlCeXRlczsKICAgICB9CiAKICAgICAvLyBP
bmx5IGFsbG93IHRleHR1cmVzIGlmIHRoZXkgYXJlIGhpZ2hlciB0aGFuIHRoZSBjdXRvZmYuIEFs
bCB0ZXh0dXJlcwpAQCAtMTEzLDcgKzExMSw3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjpwcmlvcml0aXplVGV4dHVyZXMoc2l6ZV90IHJlbmRlclN1cmZhY2VzTWVtb3J5CiAg
ICAgZm9yIChUZXh0dXJlVmVjdG9yOjppdGVyYXRvciBpdCA9IHNvcnRlZFRleHR1cmVzLmJlZ2lu
KCk7IGl0ICE9IHNvcnRlZFRleHR1cmVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGJvb2wgaXNB
Ym92ZVByaW9yaXR5Q3V0b2ZmID0gQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnByaW9yaXR5SXNIaWdo
ZXIoKCppdCktPnJlcXVlc3RQcmlvcml0eSgpLCBtX3ByaW9yaXR5Q3V0b2ZmKTsKICAgICAgICAg
KCppdCktPnNldEFib3ZlUHJpb3JpdHlDdXRvZmYoaXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKLSAg
ICAgICAgaWYgKGlzQWJvdmVQcmlvcml0eUN1dG9mZikKKyAgICAgICAgaWYgKGlzQWJvdmVQcmlv
cml0eUN1dG9mZiAmJiAhKCppdCktPmlzU2VsZk1hbmFnZWQoKSkKICAgICAgICAgICAgIG1fbWVt
b3J5QWJvdmVDdXRvZmZCeXRlcyArPSAoKml0KS0+Ynl0ZXMoKTsKICAgICB9CiAgICAgQVNTRVJU
KG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyA8PSBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzKTsKQEAg
LTE3Miw2ICsxNzAsNyBAQCBib29sIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVxdWVz
dExhdGUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUpCiAKIHZvaWQgQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRp
emVkVGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogeworICAg
IEFTU0VSVCghdGV4dHVyZS0+aXNTZWxmTWFuYWdlZCgpKTsKICAgICBBU1NFUlQodGV4dHVyZS0+
aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpOwogICAgIGlmICh0ZXh0dXJlLT5iYWNraW5nKCkgfHwg
IXRleHR1cmUtPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQogICAgICAgICByZXR1cm47CkBAIC0z
MDcsNiArMzA2LDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ryb3lC
YWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKgogewogICAgIEFTU0VSVChiYWNr
aW5nKTsKICAgICBBU1NFUlQoIWJhY2tpbmctPm93bmVyKCkgfHwgIWJhY2tpbmctPm93bmVyKCkt
PmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKTsKKyAgICBBU1NFUlQoIWJhY2tpbmctPm93bmVyKCkg
fHwgIWJhY2tpbmctPm93bmVyKCktPmlzU2VsZk1hbmFnZWQoKSk7CiAgICAgQVNTRVJUKG1fYmFj
a2luZ3MuZmluZChiYWNraW5nKSAhPSBtX2JhY2tpbmdzLmVuZCgpKTsKIAogICAgIGlmIChhbGxv
Y2F0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5o
CmluZGV4IDk4MDI5MWFkYjg3YjI4ZGFkNWRjODIzZjY3NjNiNDg2MGVlYmEyZmMuLjkzY2YwYzZh
ZjYzYzEzMjI1NGM4ZTNiOGZlMGI1NjFjYTBmN2U3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oCkBAIC00OCw2ICs0OCwxNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUHJpb3JpdGl6ZWRUZXh0dXJl
KHRoaXMsIHNpemUsIGZvcm1hdCkpOwogICAgIH0KKyAgICAvLyBBIG1lbW9yeSBwbGFjZWhvbGRl
ciBpcyBzZWxmLW1hbmFnZWQgYnV0IGFsc28gc2V0cyBhIGN1c3RvbSBhcmJpdHJhcnkgc2l6ZS4K
KyAgICAvLyBOb3RlIHRoZSB0aGUgc2l6ZSBhbmQgZm9ybWF0IGFyZSBib2d1cywgYW5kIGNhbGxp
bmcgU2V0RGltZW5zaW9ucyB3aWxsIHJlc2V0CisgICAgLy8gdGhlIHNpemUgYWNjb3JkaW5nIHRv
IHRoZSBuZXcgZGltZW5zaW9ucy4KKyAgICBQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJl
PiBjcmVhdGVNZW1vcnlQbGFjZWhvbGRlcihzaXplX3QgYnl0ZXMpCisgICAgeworICAgICAgICBP
d25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHN1cmZhY2VQbGFjZWhvbGRlciA9IGNyZWF0ZVRl
eHR1cmUoSW50U2l6ZSgwLCAwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICBz
dXJmYWNlUGxhY2Vob2xkZXItPnNldElzU2VsZk1hbmFnZWQodHJ1ZSk7CisgICAgICAgIHN1cmZh
Y2VQbGFjZWhvbGRlci0+bV9ieXRlcyA9IGJ5dGVzOworICAgICAgICByZXR1cm4gc3VyZmFjZVBs
YWNlaG9sZGVyLnJlbGVhc2UoKTsKKyAgICB9CisKICAgICB+Q0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyKCk7CiAKICAgICAvLyBGSVhNRSAoaHR0cDovL2NyYnVnLmNvbS8xMzcwOTQpOiBUaGlz
IDY0TUIgZGVmYXVsdCBpcyBhIHN0cmFnZ2xlciBmcm9tIHRoZQpAQCAtNjMsMTIgKzc0LDEyIEBA
IHB1YmxpYzoKICAgICAvLyBtZW1vcnlVc2VCeXRlcygpIDw9IG1lbW9yeUFib3ZlQ3V0b2ZmQnl0
ZXMoKSBzaG91bGQgYWx3YXlzIGJlIHRydWUuCiAgICAgc2l6ZV90IG1lbW9yeVVzZUJ5dGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2VCeXRlczsgfQogICAgIHNpemVfdCBtZW1vcnlBYm92
ZUN1dG9mZkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzOyB9
Ci0gICAgc2l6ZV90IG1lbW9yeUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSBjb25zdCB7IHJldHVy
biBtX21heE1lbW9yeUxpbWl0Qnl0ZXMgLSBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzOyB9CisgICAg
c2l6ZV90IG1lbW9yeUZvclNlbGZNYW5hZ2VkVGV4dHVyZXMoKSBjb25zdCB7IHJldHVybiBtX21h
eE1lbW9yeUxpbWl0Qnl0ZXMgLSBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzOyB9CiAKICAgICB2b2lk
IHNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKSB7IG1fbWF4TWVtb3J5TGltaXRC
eXRlcyA9IGJ5dGVzOyB9CiAgICAgc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMoKSBjb25zdCB7
IHJldHVybiBtX21heE1lbW9yeUxpbWl0Qnl0ZXM7IH0KIAotICAgIHZvaWQgcHJpb3JpdGl6ZVRl
eHR1cmVzKHNpemVfdCByZW5kZXJTdXJmYWNlc01lbW9yeUJ5dGVzKTsKKyAgICB2b2lkIHByaW9y
aXRpemVUZXh0dXJlcygpOwogICAgIHZvaWQgY2xlYXJQcmlvcml0aWVzKCk7CiAKICAgICBib29s
IHJlcXVlc3RMYXRlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAKaW5k
ZXggYThiOTYyNzg3ZDhmMjNmZWI2OGZkNzJiYzVmNjc5NTJhNWE2NjBkOC4uM2Q2NjU3N2JkZjI3
ZDQ2YjVlNTEwMTM4ZmRiODlmNWYyZDBmYzE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcApAQCAtOTks
NyArOTksNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZXF1ZXN0VGV4dHVy
ZUV4Y2VlZGluZ01heExpbWl0KQogICAgICAgICB0ZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9y
aXR5KDEwMCArIGkpOwogCiAgICAgLy8gT25seSBsb3dlciBoYWxmIHNob3VsZCBiZSBhdmFpbGFi
bGUuCi0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgRVhQRUNUX1RSVUUodmFsaWRh
dGVUZXh0dXJlKHRleHR1cmVzWzBdLCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRl
VGV4dHVyZSh0ZXh0dXJlc1s3XSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVU
ZXh0dXJlKHRleHR1cmVzWzhdLCBmYWxzZSkpOwpAQCAtMTEwLDcgKzExMCw3IEBAIFRFU1RfRihD
Q1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlcXVlc3RUZXh0dXJlRXhjZWVkaW5nTWF4TGltaXQp
CiAgICAgICAgIHRleHR1cmVzW2ldLT5zZXRSZXF1ZXN0UHJpb3JpdHkoMTAwIC0gaSk7CiAKICAg
ICAvLyBPbmx5IHVwcGVyIGhhbGYgc2hvdWxkIGJlIGF2YWlsYWJsZS4KLSAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoKTsKICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVz
WzBdLCBmYWxzZSkpOwogICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNb
N10sIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzhd
LCBmYWxzZSkpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVy
ZVRlc3QsIGNoYW5nZU1lbW9yeUxpbWl0cykKIAogICAgIC8vIFNldCBtYXggbGltaXQgdG8gOCB0
ZXh0dXJlcwogICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHRleHR1
cmVzTWVtb3J5U2l6ZSg4KSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKQogICAgICAgICB2YWxpZGF0ZVRl
eHR1cmUodGV4dHVyZXNbaV0sIGZhbHNlKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVt
b3J5KGFsbG9jYXRvcigpKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXpl
ZFRleHR1cmVUZXN0LCBjaGFuZ2VNZW1vcnlMaW1pdHMpCiAKICAgICAvLyBTZXQgbWF4IGxpbWl0
IHRvIDUgdGV4dHVyZXMKICAgICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRl
cyh0ZXh0dXJlc01lbW9yeVNpemUoNSkpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkKICAgICAgICAgRVhQ
RUNUX0VRKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1tpXSwgZmFsc2UpLCBpIDwgNSk7CiAgICAg
dGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeShhbGxvY2F0b3IoKSk7CkBAIC0xNTUsNyArMTU1
LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5TGltaXRz
KQogCiAgICAgLy8gU2V0IG1heCBsaW1pdCB0byA0IHRleHR1cmVzCiAgICAgdGV4dHVyZU1hbmFn
ZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXplKDQpKTsKLSAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2Vy
LT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRl
eHR1cmVzOyArK2kpCiAgICAgICAgIEVYUEVDVF9FUSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNb
aV0sIGZhbHNlKSwgaSA8IDQpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoYWxs
b2NhdG9yKCkpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVy
ZVRlc3QsIHRleHR1cmVNYW5hZ2VyUGFydGlhbFVwZGF0ZVRleHR1cmVzKQogCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1UZXh0dXJlczsgKytpKQogICAgICAgICB0ZXh0dXJlc1tpXS0+
c2V0UmVxdWVzdFByaW9yaXR5KDIwMCArIGkpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygp
OwogCiAgICAgLy8gQWxsb2NhdGUgdGV4dHVyZXMgd2hpY2ggYXJlIGN1cnJlbnRseSBoaWdoIHBy
aW9yaXR5LgogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1swXSwgZmFs
c2UpKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0
LCB0ZXh0dXJlTWFuYWdlclBhcnRpYWxVcGRhdGVUZXh0dXJlcykKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtVGV4dHVyZXM7ICsraSkKICAgICAgICAgbW9yZVRleHR1cmVzW2ldLT5z
ZXRSZXF1ZXN0UHJpb3JpdHkoMTAwICsgaSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7
CiAKICAgICAvLyBUZXh0dXJlcyBhcmUgbm93IGJlbG93IGN1dG9mZi4KICAgICBFWFBFQ1RfRkFM
U0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzBdLCBmYWxzZSkpOwpAQCAtMjQyLDcgKzI0Miw3
IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNYW5hZ2VyUHJpb3Jp
dGllc0FyZUVxdWFsKQogCiAgICAgLy8gU2V0IG1heCBsaW1pdCB0byA4IHRleHR1cmVzCiAgICAg
dGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXpl
KDgpKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIFRoZSB0d28gaGln
aCBwcmlvcml0eSB0ZXh0dXJlcyBzaG91bGQgYmUgYXZhaWxhYmxlLCBvdGhlcnMgc2hvdWxkIG5v
dC4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI7ICsraSkKQEAgLTI3Myw3ICsyNzMsNyBA
QCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlckRlc3Ryb3ll
ZEZpcnN0KQogICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJlLT5oYXZlQmFja2luZ1RleHR1cmUoKSk7
CiAKICAgICB0ZXh0dXJlLT5zZXRSZXF1ZXN0UHJpb3JpdHkoMTAwKTsKLSAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoKTsKIAogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJl
LCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHRleHR1cmUtPmNhbkFjcXVpcmVCYWNraW5nVGV4
dHVyZSgpKTsKQEAgLTI5Niw3ICsyOTYsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVU
ZXN0LCB0ZXh0dXJlTW92ZWRUb05ld01hbmFnZXIpCiAgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmUt
PmhhdmVCYWNraW5nVGV4dHVyZSgpKTsKIAogICAgIHRleHR1cmUtPnNldFJlcXVlc3RQcmlvcml0
eSgxMDApOwotICAgIHRleHR1cmVNYW5hZ2VyT25lLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Cisg
ICAgdGV4dHVyZU1hbmFnZXJPbmUtPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgRVhQRUNU
X1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmUsIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUo
dGV4dHVyZS0+Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkpOwpAQCAtMzEyLDcgKzMxMiw3IEBA
IFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNb3ZlZFRvTmV3TWFuYWdl
cikKIAogICAgIHRleHR1cmUtPnNldFRleHR1cmVNYW5hZ2VyKHRleHR1cmVNYW5hZ2VyVHdvLmdl
dCgpKTsKIAotICAgIHRleHR1cmVNYW5hZ2VyVHdvLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Cisg
ICAgdGV4dHVyZU1hbmFnZXJUd28tPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgRVhQRUNU
X1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmUsIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUo
dGV4dHVyZS0+Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkpOwpAQCAtMzI2LDggKzMyNiw5IEBA
IFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlbmRlclN1cmZhY2VzUmVkdWNlTWVt
b3J5QXZhaWxhYmxlT3V0c2lkZVJvb3RTCiAgICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVzID0g
ODsKICAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IGNyZWF0ZU1hbmFnZXIobWF4VGV4dHVyZXMpOwogCi0gICAgLy8gSGFsZiBvZiB0aGUgbWVt
b3J5IGlzIHRha2VuIGJ5IHN1cmZhY2VzLgotICAgIGNvbnN0IHNpemVfdCByZW5kZXJTdXJmYWNl
c0J5dGVzID0gdGV4dHVyZXNNZW1vcnlTaXplKDQpOworICAgIC8vIEhhbGYgb2YgdGhlIG1lbW9y
eSBpcyB0YWtlbiBieSBzdXJmYWNlcyAod2l0aCBoaWdoIHByaW9yaXR5IHBsYWNlLWhvbGRlcikK
KyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHJlbmRlclN1cmZhY2VQbGFjZUhvbGRl
ciA9IHRleHR1cmVNYW5hZ2VyLT5jcmVhdGVNZW1vcnlQbGFjZWhvbGRlcih0ZXh0dXJlc01lbW9y
eVNpemUoNCkpOworICAgIHJlbmRlclN1cmZhY2VQbGFjZUhvbGRlci0+c2V0UmVxdWVzdFByaW9y
aXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpyZW5kZXJTdXJmYWNlUHJpb3JpdHkoKSk7CiAKICAg
ICAvLyBDcmVhdGUgdGV4dHVyZXMgdG8gZmlsbCBvdXIgbWVtb3J5IGxpbWl0LgogICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gdGV4dHVyZXNbbWF4VGV4dHVyZXNdOwpAQCAtMzQwLDcg
KzM0MSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlbmRlclN1cmZhY2Vz
UmVkdWNlTWVtb3J5QXZhaWxhYmxlT3V0c2lkZVJvb3RTCiAgICAgICAgIHRleHR1cmVzW2ldLT5z
ZXRSZXF1ZXN0UHJpb3JpdHkoMTAwICsgaSk7CiAKICAgICAvLyBPbmx5IGxvd2VyIGhhbGYgc2hv
dWxkIGJlIGF2YWlsYWJsZS4KLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KHJlbmRlclN1cmZhY2VzQnl0ZXMpOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4
dHVyZXMoKTsKICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbMF0sIGZh
bHNlKSk7CiAgICAgRVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzNdLCBmYWxz
ZSkpOwogICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbNF0sIGZhbHNl
KSk7CkBAIC0zNTEsMTQgKzM1MiwxNCBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0
LCByZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZU91dHNpZGVSb290UwogICAgICAg
ICB0ZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9yaXR5KDEwMCAtIGkpOwogCiAgICAgLy8gT25s
eSB1cHBlciBoYWxmIHNob3VsZCBiZSBhdmFpbGFibGUuCi0gICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcyhyZW5kZXJTdXJmYWNlc0J5dGVzKTsKKyAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRlVGV4dHVy
ZSh0ZXh0dXJlc1swXSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJl
KHRleHR1cmVzWzNdLCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0
ZXh0dXJlc1s0XSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4
dHVyZXNbN10sIGZhbHNlKSk7CiAKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDQp
LCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKLSAgICBFWFBFQ1Rf
RVEodGV4dHVyZXNNZW1vcnlTaXplKDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9yUmVuZGVy
U3VyZmFjZXNCeXRlcygpKTsKKyAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDQpLCB0
ZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9yU2VsZk1hbmFnZWRUZXh0dXJlcygpKTsKICAgICBFWFBF
Q1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5t
ZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCiAgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxs
TWVtb3J5KGFsbG9jYXRvcigpKTsKQEAgLTM2OSw4ICszNzAsOSBAQCBURVNUX0YoQ0NQcmlvcml0
aXplZFRleHR1cmVUZXN0LCByZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZUZvclJl
cXVlc3RMYQogICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlcyA9IDg7CiAgICAgT3duUHRyPEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBjcmVhdGVNYW5hZ2Vy
KG1heFRleHR1cmVzKTsKIAotICAgIC8vIEhhbGYgb2YgdGhlIG1lbW9yeSBpcyB0YWtlbiBieSBz
dXJmYWNlcy4KLSAgICBjb25zdCBzaXplX3QgcmVuZGVyU3VyZmFjZXNCeXRlcyA9IHRleHR1cmVz
TWVtb3J5U2l6ZSg0KTsKKyAgICAvLyBIYWxmIG9mIHRoZSBtZW1vcnkgaXMgdGFrZW4gYnkgc3Vy
ZmFjZXMgKHdpdGggaGlnaCBwcmlvcml0eSBwbGFjZS1ob2xkZXIpCisgICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlPiByZW5kZXJTdXJmYWNlUGxhY2VIb2xkZXIgPSB0ZXh0dXJlTWFuYWdl
ci0+Y3JlYXRlTWVtb3J5UGxhY2Vob2xkZXIodGV4dHVyZXNNZW1vcnlTaXplKDQpKTsKKyAgICBy
ZW5kZXJTdXJmYWNlUGxhY2VIb2xkZXItPnNldFJlcXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5Q2Fs
Y3VsYXRvcjo6cmVuZGVyU3VyZmFjZVByaW9yaXR5KCkpOwogCiAgICAgLy8gQ3JlYXRlIHRleHR1
cmVzIHRvIGZpbGwgb3VyIG1lbW9yeSBsaW1pdC4KICAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRl
eHR1cmU+IHRleHR1cmVzW21heFRleHR1cmVzXTsKQEAgLTM4Myw3ICszODUsNyBAQCBURVNUX0Yo
Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWls
YWJsZUZvclJlcXVlc3RMYQogICAgICAgICB0ZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9yaXR5
KDEwMCk7CiAKICAgICAvLyBUaGUgZmlyc3QgZm91ciB0byBiZSByZXF1ZXN0ZWQgbGF0ZSB3aWxs
IGJlIGF2YWlsYWJsZS4KLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKHJl
bmRlclN1cmZhY2VzQnl0ZXMpOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkKICAg
ICAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1tpXSwgZmFsc2UpKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7IGkgKz0gMikKQEAgLTM5
Miw3ICszOTQsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZW5kZXJTdXJm
YWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZUZvclJlcXVlc3RMYQogICAgICAgICBFWFBFQ1RfRkFM
U0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCB0cnVlKSk7CiAKICAgICBFWFBFQ1RfRVEo
dGV4dHVyZXNNZW1vcnlTaXplKDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZC
eXRlcygpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDQpLCB0ZXh0dXJlTWFu
YWdlci0+bWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXNCeXRlcygpKTsKKyAgICBFWFBFQ1RfRVEodGV4
dHVyZXNNZW1vcnlTaXplKDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9yU2VsZk1hbmFnZWRU
ZXh0dXJlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVz
KCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCiAgICAgdGV4
dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKQEAgLTQwMyw4ICs0MDUs
OSBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB3aGVuUmVuZGVyU3VyZmFjZU5v
dEF2YWlsYWJsZVRleHR1cmVzQWxzb05vdEF2YQogICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJl
cyA9IDg7CiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIgPSBjcmVhdGVNYW5hZ2VyKG1heFRleHR1cmVzKTsKIAotICAgIC8vIEhhbGYgb2YgdGhl
IG1lbW9yeSBpcyB0YWtlbiBieSBzdXJmYWNlcy4KLSAgICBjb25zdCBzaXplX3QgcmVuZGVyU3Vy
ZmFjZXNCeXRlcyA9IHRleHR1cmVzTWVtb3J5U2l6ZSg0KTsKKyAgICAvLyBIYWxmIG9mIHRoZSBt
ZW1vcnkgaXMgdGFrZW4gYnkgc3VyZmFjZXMgKHdpdGggaGlnaCBwcmlvcml0eSBwbGFjZS1ob2xk
ZXIpCisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiByZW5kZXJTdXJmYWNlUGxhY2VI
b2xkZXIgPSB0ZXh0dXJlTWFuYWdlci0+Y3JlYXRlTWVtb3J5UGxhY2Vob2xkZXIodGV4dHVyZXNN
ZW1vcnlTaXplKDQpKTsKKyAgICByZW5kZXJTdXJmYWNlUGxhY2VIb2xkZXItPnNldFJlcXVlc3RQ
cmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cmVuZGVyU3VyZmFjZVByaW9yaXR5KCkpOwog
CiAgICAgLy8gQ3JlYXRlIHRleHR1cmVzIHRvIGZpbGwgb3VyIG1lbW9yeSBsaW1pdC4KICAgICBP
d25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHRleHR1cmVzW21heFRleHR1cmVzXTsKQEAgLTQx
OCw3ICs0MjEsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB3aGVuUmVuZGVy
U3VyZmFjZU5vdEF2YWlsYWJsZVRleHR1cmVzQWxzb05vdEF2YQogICAgIGZvciAoc2l6ZV90IGkg
PSA2OyBpIDwgODsgKytpKQogICAgICAgICB0ZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9yaXR5
KENDUHJpb3JpdHlDYWxjdWxhdG9yOjp2aXNpYmxlUHJpb3JpdHkoZmFsc2UpKTsKIAotICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMocmVuZGVyU3VyZmFjZXNCeXRlcyk7Cisg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gVW5hYmxl
IHRvIHJlcXVlc3RMYXRlIHRleHR1cmVzIGluIHRoZSBjaGlsZCBzdXJmYWNlLgogICAgIEVYUEVD
VF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbNl0sIHRydWUpKTsKQEAgLTQyOSw3ICs0
MzIsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB3aGVuUmVuZGVyU3VyZmFj
ZU5vdEF2YWlsYWJsZVRleHR1cmVzQWxzb05vdEF2YQogICAgICAgICBFWFBFQ1RfVFJVRSh2YWxp
ZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0sIGZhbHNlKSk7CiAKICAgICBFWFBFQ1RfRVEodGV4dHVy
ZXNNZW1vcnlTaXplKDYpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygp
KTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDIpLCB0ZXh0dXJlTWFuYWdlci0+
bWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXNCeXRlcygpKTsKKyAgICBFWFBFQ1RfRVEodGV4dHVyZXNN
ZW1vcnlTaXplKDIpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9yU2VsZk1hbmFnZWRUZXh0dXJl
cygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRl
eHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCiAgICAgdGV4dHVyZU1h
bmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDMx
Y2Y2NzI1ZTEzMjg0ZDA0YjdkZmEyNzRjODNiZWY3NWM5NmYwNmEuLmYxNTJhYjRmYmU3ODkxZTA1
MzY3OWViZjMxMjI2NDc3ODQwY2RkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTA1LDcgKzEwNSw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBs
YXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKIAog
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJl
cygpOwpAQCAtMTE5LDcgKzExOSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoRGlydHlUaWxlcykKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUgb25lIG9m
IHRoZW0uCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRv
cik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICBsYXllci0+
cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0xNDQsNyArMTQ0LDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAg
ICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7
CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
LSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1ZGVkKTsKICAgICB1
cGRhdGVUZXh0dXJlcygpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVu
dFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KCk7CiAKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CkBAIC0yMTEsNyArMjExLDcg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGlsZXMpCiAKICAg
ICAvLyBUaGlzIHNob3VsZCByZWNyZWF0ZSBhbmQgdXBkYXRlIHRoZSBkZWxldGVkIHRleHR1cmVz
LgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwot
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CiAgICAgdXBkYXRlVGV4dHVy
ZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwpAQCAt
MjM5LDcgKzIzOSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBh
aW50VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7
CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
LSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKQEAg
LTI1NSw3ICsyNTUsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQ
YWludFRpbGVzKQogICAgIC8vIEZvciB0aGUgbmV4dCBmb3VyIHVwZGF0ZXMsIHdlIHNob3VsZCBk
ZXRlY3Qgd2Ugc3RpbGwgbmVlZCBpZGxlIHBhaW50aW5nLgogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgNDsgaSsrKSB7CiAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOwotICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KDApOworICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAg
ICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsK
ICAgICAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7
CkBAIC0zMDcsNyArMzA3LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hU
aWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIC8vIFBhaW50IGEgc2luZ2xlIHRpbGUgaW4g
bGF5ZXIyIHNvIHRoYXQgaXQgd2lsbCBpZGxlIHBhaW50LgogICAgIGxheWVyMi0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICBsYXllcjEtPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KCk7CiAgICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBsYXllclJlY3QsIDAp
OwogICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCksIDApOwogCkBAIC0zMjUsNyArMzI1LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIC8vIE5vdyBpZGxl
IHBhaW50IGxheWVyMi4gV2UgYXJlIGdvaW5nIHRvIHJ1biBvdXQgb2YgbWVtb3J5IHRob3VnaCEK
ICAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAg
ICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3Qo
dXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogCiAgICAgLy8gT2ggd2VsbCwg
Y29tbWl0IHRoZSBmcmFtZSBhbmQgcHVzaC4KQEAgLTM0NSw3ICszNDUsNyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAg
Ly8gTm93IGlmIGxheWVyMiBiZWNvbWVzIGZ1bGx5IHZpc2libGUsIHdlIHNob3VsZCBiZSBhYmxl
IHRvIHBhaW50IGl0IGFuZCBwdXNoIHZhbGlkIHRleHR1cmVzLgogICAgIGxheWVyMi0+c2V0VGV4
dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICBsYXllcjEtPnNldFRleHR1
cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7CiAgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBsYXllcjJSZWN0
LCAwKTsKICAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGxheWVyUmVjdCwg
MCk7CiAKQEAgLTM3OCw3ICszNzgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaElkbGVQYWludGVkT2NjbHVkZWRUaWxlcykKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRl
bnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CkBAIC00MDMsNyArNDAzLDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc01hcmtlZERpcnR5RHVyaW5n
UGFpbnQpCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0lu
dmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxheWVyLmdldCgpKTsKIAogICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVy
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAg
ICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwpAQCAtNDMyLDcgKzQz
Miw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtl
ZERpcnR5RHVyaW5nUGFpbnRPbk5leHRMYXllcikKIAogICAgIGxheWVyMS0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICBsYXllcjItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7
CiAKICAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwg
MTAwLCAyMDApLCAwKTsKIApAQCAtNDcwLDcgKzQ3MCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRPblByZXZpb3Vz
TGF5CiAKICAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRv
cik7CiAgICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3Ip
OwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gSW52YWxpZGF0ZSBhIHRp
bGUgb24gbGF5ZXIyCiAgICAgbGF5ZXIxLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRS
ZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXllcjIuZ2V0KCkpOwpA
QCAtNTA4LDcgKzUwOCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFp
bnRPdXRPZk1lbW9yeSkKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRS
ZWN0KTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAKICAgICAvLyBJZGxlLXBhaW50aW5n
IHNob3VsZCBzZWUgbm8gbW9yZSBwcmlvcml0eSB0aWxlcyBmb3IgcGFpbnRpbmcuCkBAIC01MjEs
NyArNTIxLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9m
TWVtb3J5KQogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDEsIDEpKTsKIAog
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2lnbmFsIHdl
IG5lZWQgYW5vdGhlciBpZGxlIHBhaW50LgpAQCAtNTQ4LDcgKzU0OCw3IEBAIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJvU2l6ZWRMYXllcikKICAgICAgICAgbGF5
ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKICAgICAgICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgICAgIHRleHR1cmVNYW5hZ2Vy
LT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3Qg
cGFpbnQgb3IgaWRsZS1wYWludC4KICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKQEAgLTU4Niw3ICs1ODYsNyBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUxheWVycykKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgICAvLyBQYWludCAvIGlkbGUtcGFpbnQuCiAg
ICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwot
ICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgICAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgICAgIGxheWVyLT51cGRh
dGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAKICAgICAgICAgLy8gTm9u
LXZpc2libGUgbGF5ZXJzIGRvbid0IG5lZWQgaWRsZSBwYWludC4KQEAgLTYzNiw3ICs2MzYsNyBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUFuaW1h
dGluZ0xheWVycykKICAgICAgICAgICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29u
dGVudFJlY3QpOwogCiAgICAgICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJp
b3JpdHlDYWxjdWxhdG9yKTsKLSAgICAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoMCk7CisgICAgICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7CiAKICAgICAgICAgICAgIC8vIElmIGlkbGVQYWludFJlY3QgZ2l2ZXMgYmFjayBhIG5v
bi1lbXB0eSByZXN1bHQgdGhlbiB3ZSBzaG91bGQgcGFpbnQgaXQuIE90aGVyd2lzZSwKICAgICAg
ICAgICAgIC8vIHdlIHNob3VkIHBhaW50IG5vdGhpbmcuCkBAIC02NDgsNyArNjQ4LDcgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdM
YXllcnMpCiAgICAgICAgICAgICAvLyBJZiB0aGUgbGF5ZXIgaXMgdG8gYmUgcHJlcGFpbnRlZCBh
dCBhbGwsIHRoZW4gYWZ0ZXIgZm91ciB1cGRhdGVzIHdlIHNob3VsZCBoYXZlIHRoZSBvdXRlciBy
b3cvY29sdW1ucyBwYWludGVkLgogICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCA0OyAr
K2spIHsKICAgICAgICAgICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3Jp
dHlDYWxjdWxhdG9yKTsKLSAgICAgICAgICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKDApOworICAgICAgICAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoKTsKIAogICAgICAgICAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAgICAgICAgICAgICAgICAgdXBkYXRlVGV4dHVyZXMo
KTsKQEAgLTY2MSw3ICs2NjEsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRs
ZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGluZ0xheWVycykKICAgICAgICAgICAgIEVYUEVDVF9GQUxT
RShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKICAgICAgICAgICAgIGZvciAo
aW50IGsgPSAwOyBrIDwgNDsgKytrKSB7CiAgICAgICAgICAgICAgICAgbGF5ZXItPnNldFRleHR1
cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgICAgICAgICAgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICAgICAgICAgICAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAgICAgICAgICAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICAgICAg
ICAgIHVwZGF0ZVRleHR1cmVzKCk7CkBAIC02OTAsNyArNjkwLDcgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBsYXllci0+c2V0Vmlz
aWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52
YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIHVwZGF0ZXIudXBkYXRlKGNjQ29udGV4dC5n
ZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsK
ICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwpAQCAtNzQwLDE0
ICs3NDAsMTQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJl
Y3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRl
bnRSZWN0KGNvbnRlbnRCb3VuZHMpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOwogICAg
IEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAzMDAsIDMwMCAqIDAuOCksIGxh
eWVyLT51cGRhdGVSZWN0KCkpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAKICAgICAvLyBBZnRl
ciB0aGUgdGlsZXMgYXJlIHVwZGF0ZWQgb25jZSwgYW5vdGhlciBpbnZhbGlkYXRlIG9ubHkgbmVl
ZHMgdG8gdXBkYXRlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVyLgogICAgIGxheWVyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudEJvdW5kcyk7
CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDAp
OwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdChsYXllckJvdW5kcyksIGxheWVy
LT51cGRhdGVSZWN0KCkpOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAg
ICAgSW50UmVjdCBwYXJ0aWFsRGFtYWdlKDMwLCAxMDAsIDEwLCAxMCk7CiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVDb250ZW50UmVjdChwYXJ0aWFsRGFtYWdlKTsKICAgICBsYXllci0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJvdW5k
cywgMCk7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDQ1LCA4MCwgMTUsIDgp
LCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIH0KQEAgLTc3OSw3ICs3NzksNyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVD
aGFuZ2VzKQogCiAgICAgLy8gUHVzaCB0aGUgdGlsZXMgdG8gdGhlIGltcGwgc2lkZSBhbmQgY2hl
Y2sgdGhhdCB0aGVyZSBpcyBleGFjdGx5IG9uZS4KICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsK
ICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKQEAgLTc5Niw3ICs3OTYsNyBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFu
Z2VzKQogCiAgICAgLy8gVGhlIGltcGwgc2lkZSBzaG91bGQgZ2V0IDJ4MiB0aWxlcyBub3cuCiAg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgMjAwLCAyMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygp
OwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CkBAIC04MTAs
NyArODEwLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRh
dGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICBsYXllci0+c2V0TmVlZHNEaXNwbGF5
KCk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7
CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMSwgMCwgMCwg
MSksIDApOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgbGF5ZXItPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBs
LT5oYXNUaWxlQXQoMCwgMCkpOwpAQCAtODgwLDcgKzg4MCw3IEBAIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCByZXNpemVUb1NtYWxsZXIpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250
ZW50UmVjdChJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAw
LCA3MDAsIDcwMCksIDApOwogCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDIwMCwgMjAw
KSk7CkBAIC04OTksNyArODk5LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGh1
Z2VMYXllclVwZGF0ZUNyYXNoKQogCiAgICAgLy8gRW5zdXJlIG5vIGNyYXNoIGZvciBib3VuZHMg
d2hlcmUgc2l6ZSAqIHNpemUgd291bGQgb3ZlcmZsb3cgYW4gaW50LgogICAgIGxheWVyLT5zZXRU
ZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2Vy
LT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDcwMCwgNzAwKSwgMCk7CiB9CiAKQEAgLTEwMzksNyArMTAzOSw3IEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRob3V0T2NjbHVzaW9uKQogICAg
IGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwog
CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0g
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBFWFBFQ1RfRVEoMiwg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiB9
CkBAIC0xMDYwLDcgKzEwNjAsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGls
ZXNQYWludGVkV2l0aE9jY2x1c2lvbikKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwog
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKQEAgLTExMDgsNyArMTEwOCw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVz
aW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
KTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2
MDAsIDM2MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDI0LTMsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCkBAIC0xMTIzLDcgKzEx
MjMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9j
Y2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29u
dGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDM1MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRl
Q29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogICAgIGxheWVyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDYwMCwgMzUwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMjQtNiwgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKQEAgLTExMzgs
NyArMTEzOCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRX
aXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiAgICAgbGF5ZXItPnNldFZpc2li
bGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgMzQwKSk7CiAgICAgbGF5ZXItPmludmFs
aWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgNjAwLCAzNDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgyNC02LCBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIApAQCAt
MTE2Myw3ICsxMTYzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90
UGFpbnRlZFdpdGhvdXRJbnZhbGlkYXRpb24pCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250
ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwg
NjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKICAgICB1cGRhdGVUZXh0
dXJlcygpOwpAQCAtMTIwMyw3ICsxMjAzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRUcmFuc2Zvcm1zKQogICAgIGxheWVyLT5z
ZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkp
KTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2
MDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9y
KTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAg
RVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
UmVjdENvdW50KCkpOwogCkBAIC0xMjMxLDcgKzEyMzEsNyBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgbGF5
ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3Vu
ZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2
MDAsIDYwMCkpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsK
ICAgICAvLyBUaGUgY29udGVudCBpcyBoYWxmIHRoZSBzaXplIG9mIHRoZSBsYXllciAoc28gdGhl
IG51bWJlciBvZiB0aWxlcyBpcyBmZXdlcikuCiAgICAgLy8gSW4gdGhpcyBjYXNlLCB0aGUgY29u
dGVudCBpcyAzMDB4MzAwLCBhbmQgc2luY2UgdGhlIHRpbGUgc2l6ZSBpcyAxMDAsIHRoZQpAQCAt
MTI1MSw3ICsxMjUxLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFp
bnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVu
dFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDktMSwg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAK
QEAgLTEyNzEsNyArMTI3MSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxl
c1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICBsYXllci0+c2V0VmlzaWJsZUNv
bnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5
ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAg
bGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+
cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0
ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSg5
LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkp
OwogCkBAIC0xMzAwLDcgKzEzMDAsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5KDEp
OwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7
Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBJZiB0aGUgbGF5ZXIgZG9l
c24ndCBwYWludCBvcGFxdWUgY29udGVudCwgdGhlbiB0aGUgdmlzaWJsZUNvbnRlbnRPcGFxdWVS
ZWdpb24gc2hvdWxkIGJlIGVtcHR5LgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKQEAgLTEzOTMsNyArMTM5Myw3IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwaXhlbHNQYWludGVkTWV0cmljcykKICAg
ICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsK
IAogICAgIC8vIEludmFsaWRhdGVzIGFuZCBwYWludHMgdGhlIHdob2xlIGxheWVyLgogICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVj
dCgpKTsKQEAgLTE2MzYsNyArMTYzNiw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBub25JbnRlZ2VyQ29udGVudHNTY2FsZUlzTm90RGlzdG9ydGVkRHVyaW5nUGFpbnQpCiAgICAg
bGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKICAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMoY2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7CiAKICAgICAvLyBVcGRhdGUgdGhlIHdob2xlIHRpbGUuCiAgICAgbGF5ZXItPnVwZGF0
ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKQEAgLTE2NjksNyArMTY2OSw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBub25JbnRlZ2VyQ29udGVudHNTY2Fs
ZUlzTm90RGlzdG9ydGVkRHVyaW5nSW52YWxpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50
UmVjdChjb250ZW50UmVjdCk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMoY2Fs
Y3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBVcGRhdGUg
dGhlIHdob2xlIHRpbGUuCiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNv
bnRlbnRSZWN0LCAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152387</attachid>
            <date>2012-07-13 17:51:53 -0700</date>
            <delta_ts>2012-07-13 17:55:01 -0700</delta_ts>
            <desc>rebase_address_feedback</desc>
            <filename>bug-91177-20120713175152.patch</filename>
            <type>text/plain</type>
            <size>48552</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJlMjZjY2EyZDM2Y2Mw
ZDBhZGE2NDY0ZDNjOGRjYzY1NmFiYmI3Ny4uZTE2MDA3MjJhZTRiZDQxNGVkMmEyNzkzZmU1NzM3
NzQ2NDc0YzQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA3LTEzICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCAn
c2VsZi1tYW5hZ2VkJyBvcHRpb24gdG8gQ0NQcmlvcml0aXplZFRleHR1cmUgdG8gZW5hYmxlIHJl
bmRlci1zdXJmYWNlIGFuZCBjYW52YXMgdXNlIGNhc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTExNzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1ha2VzIHRoZSByZW5kZXItc3VyZmFjZSBt
ZW1vcnkgdXNlIGNhc2UgZ2VuZXJpYyBhcyAnc2VsZi1tYW5hZ2VkJyB0ZXh0dXJlcywKKyAgICAg
ICAgYXMgdGhpcyB1c2UgY2FzZSBpcyBwb3BwaW5nIHVwIGluIG90aGVyIHBsYWNlcyAoZWcuIGNh
bnZhc2VzKS4gSXQncyBleGFjdGx5IHRoZQorICAgICAgICBzYW1lIGlkZWEgZXhjZXB0IHdlIGNh
biBoYXZlIGFzIG1hbnkgcGxhY2UtaG9sZGVycyBhcyB3ZSB3YW50IGF0IGFyYml0cmFyeQorICAg
ICAgICBwcmlvcml0aWVzLgorCisgICAgICAgIFRoaXMgYWxyZWFkeSB0ZXN0ZWQgYnkgdGhlIHJl
bmRlciBzdXJmYWNlIHVuaXQgdGVzdHMgd2hpY2ggbm93IGFsc28gdXNlIHRoZSAKKyAgICAgICAg
Z2VuZXJpYyBwbGFjZWhvbGRlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6c2V0UHJpb3JpdGllc0ZvclN1cmZhY2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRQcmlvcml0aWVzRm9yTGF5ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y2FsY3VsYXRlTWVtb3J5Rm9yUmVuZGVy
U3VyZmFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwYWludExheWVy
Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6Q0NQcmlvcml0aXplZFRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OnNldFRvU2VsZk1hbmFn
ZWRNZW1vcnlQbGFjZWhvbGRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaDoKKyAgICAgICAgKENDUHJpb3JpdGl6ZWRUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpzZXRJc1NlbGZN
YW5hZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjppc1NlbGZN
YW5hZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpwcmlvcml0aXplVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ry
b3lCYWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
Om1lbW9yeUZvclNlbGZNYW5hZ2VkVGV4dHVyZXMpOgorCiAyMDEyLTA3LTEzICBQaWVycmUgUm9z
c2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgogCiAgICAgICAgIFtRdF0gSW1wcm92ZSB0aGUg
bW9iaWxlIHRoZW1lIHNsaWdodGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZlZjdk
OGI5N2ZiZTBjMDdjYzk5NWVkZGVmYTg4ZDAzMmQ1MDU4Y2UuLjFhNmY0OTM2MGJjNDIwMmQ3ODVl
YzMyOGE3Zjc0MTVhMjcxNjI4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMDctMTMgIEVyaWMgUGVubmVyICA8ZXBlbm5lckBnb29nbGUuY29tPgor
CisgICAgICAgIFtjaHJvbWl1bV0gQWRkICdzZWxmLW1hbmFnZWQnIG9wdGlvbiB0byBDQ1ByaW9y
aXRpemVkVGV4dHVyZSB0byBlbmFibGUgcmVuZGVyLXN1cmZhY2UgYW5kIGNhbnZhcyB1c2UgY2Fz
ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVz
dHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6VEVTVF9GKToK
KyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKwogMjAxMi0wNy0x
MyAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhl
ZERCOiBSZS1lbmFibGUgaW5kZXhlZGRiIGluIHRlc3Rfc2hlbGwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCmluZGV4IDFhNDM1OWVkYmQ0Njk3NzlhMDdmNDBmZDYwOWRhMmU3MmY4M2M3
YTQuLmRhMjE2MzcwZmY5MGQ1NTU1NzQ5Y2JkNzMwNjk5YjIwOTIyYWY3ODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtODgsNiArODgsNyBAQCBDQ0xheWVyVHJlZUhvc3Q6
OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NM
YXllclRyZQogICAgICwgbV9iYWNrZ3JvdW5kQ29sb3IoU0tfQ29sb3JXSElURSkKICAgICAsIG1f
aGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGZhbHNlKQogICAgICwgbV9wYXJ0aWFsVGV4dHVyZVVw
ZGF0ZVJlcXVlc3RzKDApCisKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkp
OwogICAgIG51bUxheWVyVHJlZUluc3RhbmNlcysrOwpAQCAtMTUyLDYgKzE1Myw3IEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgbV9zZXR0aW5n
cy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSBtaW4obV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4
dHVyZVVwZGF0ZXMsIG1fcHJveHktPm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpKTsKIAogICAg
IG1fY29udGVudHNUZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDAsIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJl
U2l6ZSk7CisgICAgbV9zdXJmYWNlTWVtb3J5UGxhY2Vob2xkZXIgPSBtX2NvbnRlbnRzVGV4dHVy
ZU1hbmFnZXItPmNyZWF0ZVRleHR1cmUoSW50U2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSk7CiAKICAgICBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCA9IHRydWU7CiAKQEAgLTQ4OSw4
ICs0OTEsNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21p
dW0qIHJvb3RMYXllciwgQ0NUZXh0dXJlVXBkYXRlciYgdQogICAgIC8vIFJlc2V0IHBhcnRpYWwg
dGV4dHVyZSB1cGRhdGUgcmVxdWVzdHMuCiAgICAgbV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVl
c3RzID0gMDsKIAotICAgIHByaW9yaXRpemVUZXh0dXJlcyh1cGRhdGVMaXN0KTsKLQogICAgIGJv
b2wgbmVlZE1vcmVVcGRhdGVzID0gcGFpbnRMYXllckNvbnRlbnRzKHVwZGF0ZUxpc3QsIHVwZGF0
ZXIpOwogICAgIGlmIChtX3RyaWdnZXJJZGxlVXBkYXRlcyAmJiBuZWVkTW9yZVVwZGF0ZXMpCiAg
ICAgICAgIHNldE5lZWRzQ29tbWl0KCk7CkBAIC00OTksMTMgKzQ5OSwyMCBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllciwgQ0NUZXh0
dXJlVXBkYXRlciYgdQogICAgICAgICB1cGRhdGVMaXN0W2ldLT5jbGVhclJlbmRlclN1cmZhY2Uo
KTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByaW9yaXRpemVUZXh0dXJlcyhjb25zdCBM
YXllckxpc3QmIHVwZGF0ZUxpc3QpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0UHJpb3JpdGll
c0ZvclN1cmZhY2VzKHNpemVfdCBzdXJmYWNlTWVtb3J5Qnl0ZXMpCit7CisgICAgLy8gU3VyZmFj
ZXMgaGF2ZSBhIHBsYWNlIGhvbGRlciBmb3IgdGhlaXIgbWVtb3J5IHNpbmNlIHRoZXkgYXJlIG1h
bmFnZWQKKyAgICAvLyBpbmRlcGVuZGFudGx5IGJ1dCBzaG91bGQgc3RpbGwgYmUgdHJhY2tlZCBh
bmQgcmVkdWNlIG90aGVyIG1lbW9yeSB1c2FnZS4KKyAgICBtX3N1cmZhY2VNZW1vcnlQbGFjZWhv
bGRlci0+c2V0VGV4dHVyZU1hbmFnZXIobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLmdldCgpKTsK
KyAgICBtX3N1cmZhY2VNZW1vcnlQbGFjZWhvbGRlci0+c2V0UmVxdWVzdFByaW9yaXR5KENDUHJp
b3JpdHlDYWxjdWxhdG9yOjpyZW5kZXJTdXJmYWNlUHJpb3JpdHkoKSk7CisgICAgbV9zdXJmYWNl
TWVtb3J5UGxhY2Vob2xkZXItPnNldFRvU2VsZk1hbmFnZWRNZW1vcnlQbGFjZWhvbGRlcihzdXJm
YWNlTWVtb3J5Qnl0ZXMpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0UHJpb3JpdGll
c0ZvckxheWVycyhjb25zdCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gVXNlIEJh
Y2tUb0Zyb250IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50
LgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0
b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAotICAgIG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlci0+Y2xlYXJQcmlvcml0aWVzKCk7Ci0KICAgICBDQ1ByaW9yaXR5
Q2FsY3VsYXRvciBjYWxjdWxhdG9yOwogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NM
YXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZ1cGRhdGVMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVy
YXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmdXBkYXRlTGlzdCk7IGl0
ICE9IGVuZDsgKytpdCkgewpAQCAtNTE4LDcgKzUyNSwyNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCkKICAgICAg
ICAgICAgICAgICBpdC0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhjYWxjdWxhdG9yKTsKICAgICAgICAgfQogICAgIH0KK30KIAordm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnByaW9yaXRpemVUZXh0dXJlcyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIENDT3ZlcmRyYXdNZXRyaWNzJiBtZXRyaWNzKQoreworICAgIG1fY29udGVu
dHNUZXh0dXJlTWFuYWdlci0+Y2xlYXJQcmlvcml0aWVzKCk7CisKKyAgICBzaXplX3QgbWVtb3J5
Rm9yUmVuZGVyU3VyZmFjZXNNZXRyaWMgPSBjYWxjdWxhdGVNZW1vcnlGb3JSZW5kZXJTdXJmYWNl
cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKworICAgIHNldFByaW9yaXRpZXNGb3JMYXllcnMo
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgc2V0UHJpb3JpdGllc0ZvclN1cmZhY2VzKG1l
bW9yeUZvclJlbmRlclN1cmZhY2VzTWV0cmljKTsKKworICAgIG1ldHJpY3MuZGlkVXNlQ29udGVu
dHNUZXh0dXJlTWVtb3J5Qnl0ZXMobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92
ZUN1dG9mZkJ5dGVzKCkpOworICAgIG1ldHJpY3MuZGlkVXNlUmVuZGVyU3VyZmFjZVRleHR1cmVN
ZW1vcnlCeXRlcyhtZW1vcnlGb3JSZW5kZXJTdXJmYWNlc01ldHJpYyk7CisKKyAgICBtX2NvbnRl
bnRzVGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOworfQorCitzaXplX3QgQ0NM
YXllclRyZWVIb3N0OjpjYWxjdWxhdGVNZW1vcnlGb3JSZW5kZXJTdXJmYWNlcyhjb25zdCBMYXll
ckxpc3QmIHVwZGF0ZUxpc3QpCit7CiAgICAgc2l6ZV90IHJlYWRiYWNrQnl0ZXMgPSAwOwogICAg
IHNpemVfdCBtYXhCYWNrZ3JvdW5kVGV4dHVyZUJ5dGVzID0gMDsKICAgICBzaXplX3QgY29udGVu
dHNUZXh0dXJlQnl0ZXMgPSAwOwpAQCAtNTM5LDkgKzU2NCw3IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0Ojpwcmlvcml0aXplVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogICAg
ICAgICBpZiAoIXJlYWRiYWNrQnl0ZXMpCiAgICAgICAgICAgICByZWFkYmFja0J5dGVzID0gQ0NU
ZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMobV9kZXZpY2VWaWV3cG9ydFNpemUsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBKTsKICAgICB9Ci0gICAgc2l6ZV90IHJlbmRlclN1cmZhY2VzQnl0ZXMgPSBy
ZWFkYmFja0J5dGVzICsgbWF4QmFja2dyb3VuZFRleHR1cmVCeXRlcyArIGNvbnRlbnRzVGV4dHVy
ZUJ5dGVzOwotCi0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMocmVuZGVyU3VyZmFjZXNCeXRlcyk7CisgICAgcmV0dXJuIHJlYWRiYWNrQnl0ZXMgKyBtYXhC
YWNrZ3JvdW5kVGV4dHVyZUJ5dGVzICsgY29udGVudHNUZXh0dXJlQnl0ZXM7CiB9CiAKIGJvb2wg
Q0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tzRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVt
KiByZW5kZXJTdXJmYWNlTGF5ZXIsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCkBAIC01NzUs
NiArNTk4LDggQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25z
dCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICBDQ09jY2x1c2lvblRyYWNr
ZXIgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KEludFBvaW50KCksIGRldmljZVZpZXdwb3J0U2l6
ZSgpKSwgcmVjb3JkTWV0cmljc0ZvckZyYW1lKTsKICAgICBvY2NsdXNpb25UcmFja2VyLnNldE1p
bmltdW1UcmFja2luZ1NpemUobV9zZXR0aW5ncy5taW5pbXVtT2NjbHVzaW9uVHJhY2tpbmdTaXpl
KTsKIAorICAgIHByaW9yaXRpemVUZXh0dXJlcyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBvY2Ns
dXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpKTsKKwogICAgIENDTGF5ZXJJdGVyYXRvclR5
cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
KTsKICAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBl
OjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwpAQCAtNTkxLDggKzYxNiw2IEBA
IGJvb2wgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0
JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubGVhdmVM
YXllcihpdCk7CiAgICAgfQogCi0gICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3Mo
KS5kaWRVc2VDb250ZW50c1RleHR1cmVNZW1vcnlCeXRlcyhtX2NvbnRlbnRzVGV4dHVyZU1hbmFn
ZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5vdmVy
ZHJhd01ldHJpY3MoKS5kaWRVc2VSZW5kZXJTdXJmYWNlVGV4dHVyZU1lbW9yeUJ5dGVzKG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXNCeXRlcygpKTsKICAg
ICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnJlY29yZE1ldHJpY3ModGhpcyk7
CiAKICAgICByZXR1cm4gbmVlZE1vcmVVcGRhdGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aAppbmRleCA3YmIwZjY4YzYwNTZjNTdiNzE3MGNlODM1NDFhOWQ5OTI4NTU2NzU1Li5iZDY1NjUw
ZjRkMzdiZDBjOTE5YjNjNTIwNDQ2NGFhZGQ4NTNmOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaApAQCAtMjg1LDcgKzI4NSwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVM
YXllcnMoTGF5ZXJDaHJvbWl1bSosIENDVGV4dHVyZVVwZGF0ZXImKTsKIAotICAgIHZvaWQgcHJp
b3JpdGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCk7CisgICAgdm9pZCBw
cmlvcml0aXplVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiwgQ0NPdmVyZHJhd01ldHJpY3MmKTsg
CisgICAgdm9pZCBzZXRQcmlvcml0aWVzRm9yU3VyZmFjZXMoc2l6ZV90IHN1cmZhY2VNZW1vcnlC
eXRlcyk7CisgICAgdm9pZCBzZXRQcmlvcml0aWVzRm9yTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYp
OworICAgIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlGb3JSZW5kZXJTdXJmYWNlcyhjb25zdCBMYXll
ckxpc3QmIHVwZGF0ZUxpc3QpOwogCiAgICAgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25v
dG9uaWNUaW1lKTsKICAgICBib29sIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1
bSogY3VycmVudCwgZG91YmxlIG1vbm90b25pY1RpbWUpOwpAQCAtMzA5LDYgKzMxMiw3IEBAIHBy
aXZhdGU6CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAgICAgT3du
UHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
OworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gbV9zdXJmYWNlTWVtb3J5UGxhY2Vo
b2xkZXI7CiAKICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIG1fc2V0dGluZ3M7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3Jp
dGl6ZWRUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcAppbmRleCBhNmEzMDgxMmJhMWE2MDNkN2Y2
YTM2OWMzNWEzMjMzMTg1ODBkNjA5Li4xZGY3NzEzODZjYWJjYjRhYTk4YmQxZTZhNWNiODM3OTRm
NTc0NWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwCkBAIC00
Miw2ICs0Miw3IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZShD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIsCiAgICAgLCBtX2J5dGVzKDApCiAg
ICAgLCBtX3ByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpKQog
ICAgICwgbV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoZmFsc2UpCisgICAgLCBtX2lzU2VsZk1hbmFn
ZWQoZmFsc2UpCiAgICAgLCBtX2JhY2tpbmcoMCkKICAgICAsIG1fbWFuYWdlcigwKQogewpAQCAt
MTUwLDcgKzE1MSwxMiBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjp1bmxpbmsoKQogICAg
IG1fYmFja2luZyA9IDA7CiB9CiAKLQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0VG9T
ZWxmTWFuYWdlZE1lbW9yeVBsYWNlaG9sZGVyKHNpemVfdCBieXRlcykKK3sKKyAgICBzZXREaW1l
bnNpb25zKEludFNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgIHNldElzU2Vs
Zk1hbmFnZWQodHJ1ZSk7CisgICAgbV9ieXRlcyA9IGJ5dGVzOworfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oCmluZGV4IGRj
ODU3OTMyNDE4Mzk2ZmRhMzc4OTAxMDUzNTVjOTI0YTJmZjIwZTIuLjQ2MDczYzVmMzQ2ODhlZGUy
ZTE4OGEzZmViYWU0ZjQwYzM1MjU1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRl
eHR1cmUuaApAQCAtOTMsNiArOTMsMTQgQEAgcHVibGljOgogICAgIHZvaWQgZnJhbWVidWZmZXJU
ZXh0dXJlMkQoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdW5z
aWduZWQgdGV4dHVyZUlkKCk7CiAKKyAgICAvLyBTZWxmLW1hbmFnZWQgdGV4dHVyZXMgYXJlIGFj
Y291bnRlZCBmb3Igd2hlbiBwcmlvcml0aXppbmcgb3RoZXIgdGV4dHVyZXMsCisgICAgLy8gYnV0
IHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQvcmVjeWNsZWQvZGVsZXRlZCwgc28gdGhpcyBuZWVkcyB0
byBiZSBkb25lCisgICAgLy8gZXh0ZXJuYWxseS4gY2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkg
aW5kaWNhdGVzIGlmIHRoZSB0ZXh0dXJlIHdvdWxkIGhhdmUKKyAgICAvLyBiZWVuIGFsbG93ZWQg
Z2l2ZW4gaXRzIHByaW9yaXR5LgorICAgIHZvaWQgc2V0SXNTZWxmTWFuYWdlZChib29sIGlzU2Vs
Zk1hbmFnZWQpIHsgbV9pc1NlbGZNYW5hZ2VkID0gaXNTZWxmTWFuYWdlZDsgfQorICAgIGJvb2wg
aXNTZWxmTWFuYWdlZCgpIHsgcmV0dXJuIG1faXNTZWxmTWFuYWdlZDsgfQorICAgIHZvaWQgc2V0
VG9TZWxmTWFuYWdlZE1lbW9yeVBsYWNlaG9sZGVyKHNpemVfdCBieXRlcyk7CisKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjsKIApAQCAtMTI1
LDYgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBzaXplX3QgbV9wcmlvcml0eTsKICAgICBib29s
IG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmOworICAgIGJvb2wgbV9pc1NlbGZNYW5hZ2VkOwogCiAg
ICAgQmFja2luZyogbV9iYWNraW5nOwogICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciog
bV9tYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlci5jcHAKaW5kZXggMDE5NWI2ZjFjZGVhYjUwNmYwMzMyNzg1NjgzOThkYjY4NDE3N2RkMS4u
ZDE5ZTVhYTE5YzhmOGYzNmNiZTYyMDczNDVmMjlkZWVjZTY1NmI1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCkBAIC01NSw3ICs1NSw3
IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6fkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcigpCiAgICAgICAgIGRlc3Ryb3lCYWNraW5nKCptX2JhY2tpbmdzLmJlZ2luKCksIDApOwog
fQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cHJpb3JpdGl6ZVRleHR1cmVz
KHNpemVfdCByZW5kZXJTdXJmYWNlc01lbW9yeUJ5dGVzKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJj
YyIsICJDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyIpOwog
CkBAIC03OSwzMSArNzksMjkgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnBy
aW9yaXRpemVUZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnkKIAogICAgIG1fbWVt
b3J5QXZhaWxhYmxlQnl0ZXMgPSBtX21heE1lbW9yeUxpbWl0Qnl0ZXM7CiAgICAgbV9wcmlvcml0
eUN1dG9mZiA9IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpOwotICAgIGJv
b2wgcmVzZXJ2ZWRSZW5kZXJTdXJmYWNlcyA9IGZhbHNlOwogICAgIHNpemVfdCBtZW1vcnlCeXRl
cyA9IDA7CiAgICAgZm9yIChUZXh0dXJlVmVjdG9yOjppdGVyYXRvciBpdCA9IHNvcnRlZFRleHR1
cmVzLmJlZ2luKCk7IGl0ICE9IHNvcnRlZFRleHR1cmVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAg
IGlmICgoKml0KS0+cmVxdWVzdFByaW9yaXR5KCkgPT0gQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxv
d2VzdFByaW9yaXR5KCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAvLyBGSVhNRTog
V2UgY2FuIG1ha2UgcGxhY2Vob2xkZXIgb2JqZWN0cyBzaW1pbGFyIHRvIHRleHR1cmVzIHRvIHJl
cHJlc2VudCB0aGUgcmVuZGVyIHN1cmZhY2UgbWVtb3J5IHJlcXVlc3QuCi0gICAgICAgIGlmICgh
cmVzZXJ2ZWRSZW5kZXJTdXJmYWNlcyAmJiBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJ
c0xvd2VyKCgqaXQpLT5yZXF1ZXN0UHJpb3JpdHkoKSwgQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnJl
bmRlclN1cmZhY2VQcmlvcml0eSgpKSkgewotICAgICAgICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5
dGVzID0gbWVtb3J5Qnl0ZXMgKyByZW5kZXJTdXJmYWNlc01lbW9yeUJ5dGVzOworICAgICAgICBp
ZiAoKCppdCktPmlzU2VsZk1hbmFnZWQoKSkgeworICAgICAgICAgICAgLy8gQWNjb3VudCBmb3Ig
c2VsZi1tYW5hZ2VkIG1lbW9yeSBpbW1lZGlhdGVseSBieSByZWR1Y2luZyB0aGUgbWVtb3J5Cisg
ICAgICAgICAgICAvLyBhdmFpbGFibGUgKHNpbmNlIGl0IG5ldmVyIGdldHMgYWNxdWlyZWQpLgor
ICAgICAgICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAoKml0KS0+
Ynl0ZXMoKTsKICAgICAgICAgICAgIGlmIChuZXdNZW1vcnlCeXRlcyA+IG1fbWVtb3J5QXZhaWxh
YmxlQnl0ZXMpIHsKICAgICAgICAgICAgICAgICBtX3ByaW9yaXR5Q3V0b2ZmID0gKCppdCktPnJl
cXVlc3RQcmlvcml0eSgpOwogICAgICAgICAgICAgICAgIG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMg
PSBtZW1vcnlCeXRlczsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgLT0gcmVuZGVyU3VyZmFjZXNNZW1vcnlC
eXRlczsKLSAgICAgICAgICAgIHJlc2VydmVkUmVuZGVyU3VyZmFjZXMgPSB0cnVlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAoKml0
KS0+Ynl0ZXMoKTsKLSAgICAgICAgaWYgKG5ld01lbW9yeUJ5dGVzID4gbV9tZW1vcnlBdmFpbGFi
bGVCeXRlcykgewotICAgICAgICAgICAgbV9wcmlvcml0eUN1dG9mZiA9ICgqaXQpLT5yZXF1ZXN0
UHJpb3JpdHkoKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbV9tZW1vcnlBdmFp
bGFibGVCeXRlcyAtPSAoKml0KS0+Ynl0ZXMoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHNpemVfdCBuZXdNZW1vcnlCeXRlcyA9IG1lbW9yeUJ5dGVzICsgKCppdCktPmJ5dGVzKCk7
CisgICAgICAgICAgICBpZiAobmV3TWVtb3J5Qnl0ZXMgPiBtX21lbW9yeUF2YWlsYWJsZUJ5dGVz
KSB7CisgICAgICAgICAgICAgICAgbV9wcmlvcml0eUN1dG9mZiA9ICgqaXQpLT5yZXF1ZXN0UHJp
b3JpdHkoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIG1lbW9yeUJ5dGVzID0gbmV3TWVtb3J5Qnl0ZXM7CiAgICAgICAgIH0KLQotICAgICAgICBt
ZW1vcnlCeXRlcyA9IG5ld01lbW9yeUJ5dGVzOwogICAgIH0KIAogICAgIC8vIE9ubHkgYWxsb3cg
dGV4dHVyZXMgaWYgdGhleSBhcmUgaGlnaGVyIHRoYW4gdGhlIGN1dG9mZi4gQWxsIHRleHR1cmVz
CkBAIC0xMTMsNyArMTExLDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnBy
aW9yaXRpemVUZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnkKICAgICBmb3IgKFRl
eHR1cmVWZWN0b3I6Oml0ZXJhdG9yIGl0ID0gc29ydGVkVGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0g
c29ydGVkVGV4dHVyZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgYm9vbCBpc0Fib3ZlUHJpb3Jp
dHlDdXRvZmYgPSBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0hpZ2hlcigoKml0KS0+
cmVxdWVzdFByaW9yaXR5KCksIG1fcHJpb3JpdHlDdXRvZmYpOwogICAgICAgICAoKml0KS0+c2V0
QWJvdmVQcmlvcml0eUN1dG9mZihpc0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwotICAgICAgICBpZiAo
aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKQorICAgICAgICBpZiAoaXNBYm92ZVByaW9yaXR5Q3V0b2Zm
ICYmICEoKml0KS0+aXNTZWxmTWFuYWdlZCgpKQogICAgICAgICAgICAgbV9tZW1vcnlBYm92ZUN1
dG9mZkJ5dGVzICs9ICgqaXQpLT5ieXRlcygpOwogICAgIH0KICAgICBBU1NFUlQobV9tZW1vcnlB
Ym92ZUN1dG9mZkJ5dGVzIDw9IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMpOwpAQCAtMTcyLDYgKzE3
MCw3IEBAIGJvb2wgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0TGF0ZShDQ1By
aW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSkKIAogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXh0dXJl
KiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CisgICAgQVNTRVJUKCF0
ZXh0dXJlLT5pc1NlbGZNYW5hZ2VkKCkpOwogICAgIEFTU0VSVCh0ZXh0dXJlLT5pc0Fib3ZlUHJp
b3JpdHlDdXRvZmYoKSk7CiAgICAgaWYgKHRleHR1cmUtPmJhY2tpbmcoKSB8fCAhdGV4dHVyZS0+
aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwNyw2ICszMDYs
NyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVzdHJveUJhY2tpbmcoQ0NQ
cmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqCiB7CiAgICAgQVNTRVJUKGJhY2tpbmcpOwogICAg
IEFTU0VSVCghYmFja2luZy0+b3duZXIoKSB8fCAhYmFja2luZy0+b3duZXIoKS0+aXNBYm92ZVBy
aW9yaXR5Q3V0b2ZmKCkpOworICAgIEFTU0VSVCghYmFja2luZy0+b3duZXIoKSB8fCAhYmFja2lu
Zy0+b3duZXIoKS0+aXNTZWxmTWFuYWdlZCgpKTsKICAgICBBU1NFUlQobV9iYWNraW5ncy5maW5k
KGJhY2tpbmcpICE9IG1fYmFja2luZ3MuZW5kKCkpOwogCiAgICAgaWYgKGFsbG9jYXRvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKaW5kZXggOTgw
MjkxYWRiODdiMjhkYWQ1ZGM4MjNmNjc2M2I0ODYwZWViYTJmYy4uN2QwMjg4MDRmYTAzYWY4ZDVh
NTI3NzZkMDQ2ZDViNTczNGRhNzFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1ByaW9yaXRpemVkVGV4dHVyZSh0aGlzLCBzaXpl
LCBmb3JtYXQpKTsKICAgICB9CisKICAgICB+Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKCk7
CiAKICAgICAvLyBGSVhNRSAoaHR0cDovL2NyYnVnLmNvbS8xMzcwOTQpOiBUaGlzIDY0TUIgZGVm
YXVsdCBpcyBhIHN0cmFnZ2xlciBmcm9tIHRoZQpAQCAtNjMsMTIgKzY0LDEyIEBAIHB1YmxpYzoK
ICAgICAvLyBtZW1vcnlVc2VCeXRlcygpIDw9IG1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSBzaG91
bGQgYWx3YXlzIGJlIHRydWUuCiAgICAgc2l6ZV90IG1lbW9yeVVzZUJ5dGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZW1vcnlVc2VCeXRlczsgfQogICAgIHNpemVfdCBtZW1vcnlBYm92ZUN1dG9mZkJ5
dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzOyB9Ci0gICAgc2l6
ZV90IG1lbW9yeUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX21heE1l
bW9yeUxpbWl0Qnl0ZXMgLSBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzOyB9CisgICAgc2l6ZV90IG1l
bW9yeUZvclNlbGZNYW5hZ2VkVGV4dHVyZXMoKSBjb25zdCB7IHJldHVybiBtX21heE1lbW9yeUxp
bWl0Qnl0ZXMgLSBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzOyB9CiAKICAgICB2b2lkIHNldE1heE1l
bW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IGJ5dGVzKSB7IG1fbWF4TWVtb3J5TGltaXRCeXRlcyA9IGJ5
dGVzOyB9CiAgICAgc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMoKSBjb25zdCB7IHJldHVybiBt
X21heE1lbW9yeUxpbWl0Qnl0ZXM7IH0KIAotICAgIHZvaWQgcHJpb3JpdGl6ZVRleHR1cmVzKHNp
emVfdCByZW5kZXJTdXJmYWNlc01lbW9yeUJ5dGVzKTsKKyAgICB2b2lkIHByaW9yaXRpemVUZXh0
dXJlcygpOwogICAgIHZvaWQgY2xlYXJQcmlvcml0aWVzKCk7CiAKICAgICBib29sIHJlcXVlc3RM
YXRlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAKaW5kZXggYThiOTYy
Nzg3ZDhmMjNmZWI2OGZkNzJiYzVmNjc5NTJhNWE2NjBkOC4uMjFlMGE3MTdjMzZjNzllMmEyYzAz
MjM5MmVmYThhMTBlMTJkYWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcApAQCAtOTksNyArOTksNyBA
QCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZXF1ZXN0VGV4dHVyZUV4Y2VlZGlu
Z01heExpbWl0KQogICAgICAgICB0ZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9yaXR5KDEwMCAr
IGkpOwogCiAgICAgLy8gT25seSBsb3dlciBoYWxmIHNob3VsZCBiZSBhdmFpbGFibGUuCi0gICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgRVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0dXJl
KHRleHR1cmVzWzBdLCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0
ZXh0dXJlc1s3XSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJlKHRl
eHR1cmVzWzhdLCBmYWxzZSkpOwpAQCAtMTEwLDcgKzExMCw3IEBAIFRFU1RfRihDQ1ByaW9yaXRp
emVkVGV4dHVyZVRlc3QsIHJlcXVlc3RUZXh0dXJlRXhjZWVkaW5nTWF4TGltaXQpCiAgICAgICAg
IHRleHR1cmVzW2ldLT5zZXRSZXF1ZXN0UHJpb3JpdHkoMTAwIC0gaSk7CiAKICAgICAvLyBPbmx5
IHVwcGVyIGhhbGYgc2hvdWxkIGJlIGF2YWlsYWJsZS4KLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzBdLCBmYWxz
ZSkpOwogICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbN10sIGZhbHNl
KSk7CiAgICAgRVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzhdLCBmYWxzZSkp
OwpAQCAtMTM1LDcgKzEzNSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIGNo
YW5nZU1lbW9yeUxpbWl0cykKIAogICAgIC8vIFNldCBtYXggbGltaXQgdG8gOCB0ZXh0dXJlcwog
ICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHRleHR1cmVzTWVtb3J5
U2l6ZSg4KSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKQogICAgICAgICB2YWxpZGF0ZVRleHR1cmUodGV4
dHVyZXNbaV0sIGZhbHNlKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KGFsbG9j
YXRvcigpKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVU
ZXN0LCBjaGFuZ2VNZW1vcnlMaW1pdHMpCiAKICAgICAvLyBTZXQgbWF4IGxpbWl0IHRvIDUgdGV4
dHVyZXMKICAgICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyh0ZXh0dXJl
c01lbW9yeVNpemUoNSkpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
MCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkKICAgICAgICAgRVhQRUNUX0VRKHZh
bGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1tpXSwgZmFsc2UpLCBpIDwgNSk7CiAgICAgdGV4dHVyZU1h
bmFnZXItPnJlZHVjZU1lbW9yeShhbGxvY2F0b3IoKSk7CkBAIC0xNTUsNyArMTU1LDcgQEAgVEVT
VF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5TGltaXRzKQogCiAgICAg
Ly8gU2V0IG1heCBsaW1pdCB0byA0IHRleHR1cmVzCiAgICAgdGV4dHVyZU1hbmFnZXItPnNldE1h
eE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXplKDQpKTsKLSAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyAr
K2kpCiAgICAgICAgIEVYUEVDVF9FUSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0sIGZhbHNl
KSwgaSA8IDQpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoYWxsb2NhdG9yKCkp
OwpAQCAtMTgxLDcgKzE4MSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRl
eHR1cmVNYW5hZ2VyUGFydGlhbFVwZGF0ZVRleHR1cmVzKQogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1UZXh0dXJlczsgKytpKQogICAgICAgICB0ZXh0dXJlc1tpXS0+c2V0UmVxdWVz
dFByaW9yaXR5KDIwMCArIGkpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAg
Ly8gQWxsb2NhdGUgdGV4dHVyZXMgd2hpY2ggYXJlIGN1cnJlbnRseSBoaWdoIHByaW9yaXR5Lgog
ICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1swXSwgZmFsc2UpKTsKQEAg
LTE5Niw3ICsxOTYsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJl
TWFuYWdlclBhcnRpYWxVcGRhdGVUZXh0dXJlcykKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtVGV4dHVyZXM7ICsraSkKICAgICAgICAgbW9yZVRleHR1cmVzW2ldLT5zZXRSZXF1ZXN0
UHJpb3JpdHkoMTAwICsgaSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAv
LyBUZXh0dXJlcyBhcmUgbm93IGJlbG93IGN1dG9mZi4KICAgICBFWFBFQ1RfRkFMU0UodmFsaWRh
dGVUZXh0dXJlKHRleHR1cmVzWzBdLCBmYWxzZSkpOwpAQCAtMjQyLDcgKzI0Miw3IEBAIFRFU1Rf
RihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNYW5hZ2VyUHJpb3JpdGllc0FyZUVx
dWFsKQogCiAgICAgLy8gU2V0IG1heCBsaW1pdCB0byA4IHRleHR1cmVzCiAgICAgdGV4dHVyZU1h
bmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXplKDgpKTsKLSAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIFRoZSB0d28gaGlnaCBwcmlvcml0
eSB0ZXh0dXJlcyBzaG91bGQgYmUgYXZhaWxhYmxlLCBvdGhlcnMgc2hvdWxkIG5vdC4KICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDI7ICsraSkKQEAgLTI3Myw3ICsyNzMsNyBAQCBURVNUX0Yo
Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlckRlc3Ryb3llZEZpcnN0KQog
ICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJlLT5oYXZlQmFja2luZ1RleHR1cmUoKSk7CiAKICAgICB0
ZXh0dXJlLT5zZXRSZXF1ZXN0UHJpb3JpdHkoMTAwKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKIAogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlLCBmYWxzZSkp
OwogICAgIEVYUEVDVF9UUlVFKHRleHR1cmUtPmNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpKTsK
QEAgLTI5Niw3ICsyOTYsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0
dXJlTW92ZWRUb05ld01hbmFnZXIpCiAgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmUtPmhhdmVCYWNr
aW5nVGV4dHVyZSgpKTsKIAogICAgIHRleHR1cmUtPnNldFJlcXVlc3RQcmlvcml0eSgxMDApOwot
ICAgIHRleHR1cmVNYW5hZ2VyT25lLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVy
ZU1hbmFnZXJPbmUtPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgRVhQRUNUX1RSVUUodmFs
aWRhdGVUZXh0dXJlKHRleHR1cmUsIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUodGV4dHVyZS0+
Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkpOwpAQCAtMzEyLDcgKzMxMiw3IEBAIFRFU1RfRihD
Q1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNb3ZlZFRvTmV3TWFuYWdlcikKIAogICAg
IHRleHR1cmUtPnNldFRleHR1cmVNYW5hZ2VyKHRleHR1cmVNYW5hZ2VyVHdvLmdldCgpKTsKIAot
ICAgIHRleHR1cmVNYW5hZ2VyVHdvLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVy
ZU1hbmFnZXJUd28tPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgRVhQRUNUX1RSVUUodmFs
aWRhdGVUZXh0dXJlKHRleHR1cmUsIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUodGV4dHVyZS0+
Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkpOwpAQCAtMzI2LDggKzMyNiwxMCBAQCBURVNUX0Yo
Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWls
YWJsZU91dHNpZGVSb290UwogICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlcyA9IDg7CiAgICAg
T3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBjcmVh
dGVNYW5hZ2VyKG1heFRleHR1cmVzKTsKIAotICAgIC8vIEhhbGYgb2YgdGhlIG1lbW9yeSBpcyB0
YWtlbiBieSBzdXJmYWNlcy4KLSAgICBjb25zdCBzaXplX3QgcmVuZGVyU3VyZmFjZXNCeXRlcyA9
IHRleHR1cmVzTWVtb3J5U2l6ZSg0KTsKKyAgICAvLyBIYWxmIG9mIHRoZSBtZW1vcnkgaXMgdGFr
ZW4gYnkgc3VyZmFjZXMgKHdpdGggaGlnaCBwcmlvcml0eSBwbGFjZS1ob2xkZXIpCisgICAgT3du
UHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiByZW5kZXJTdXJmYWNlUGxhY2VIb2xkZXIgPSB0ZXh0
dXJlTWFuYWdlci0+Y3JlYXRlVGV4dHVyZShtX3RleHR1cmVTaXplLCBtX3RleHR1cmVGb3JtYXQp
OworICAgIHJlbmRlclN1cmZhY2VQbGFjZUhvbGRlci0+c2V0VG9TZWxmTWFuYWdlZE1lbW9yeVBs
YWNlaG9sZGVyKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSk7CisgICAgcmVuZGVyU3VyZmFjZVBsYWNl
SG9sZGVyLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnJlbmRlclN1
cmZhY2VQcmlvcml0eSgpKTsKIAogICAgIC8vIENyZWF0ZSB0ZXh0dXJlcyB0byBmaWxsIG91ciBt
ZW1vcnkgbGltaXQuCiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiB0ZXh0dXJlc1tt
YXhUZXh0dXJlc107CkBAIC0zNDAsNyArMzQyLDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0
dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVPdXRzaWRlUm9vdFMK
ICAgICAgICAgdGV4dHVyZXNbaV0tPnNldFJlcXVlc3RQcmlvcml0eSgxMDAgKyBpKTsKIAogICAg
IC8vIE9ubHkgbG93ZXIgaGFsZiBzaG91bGQgYmUgYXZhaWxhYmxlLgotICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMocmVuZGVyU3VyZmFjZXNCeXRlcyk7CisgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRl
VGV4dHVyZSh0ZXh0dXJlc1swXSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRl
eHR1cmUodGV4dHVyZXNbM10sIGZhbHNlKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRlVGV4
dHVyZSh0ZXh0dXJlc1s0XSwgZmFsc2UpKTsKQEAgLTM1MSwxNCArMzUzLDE0IEBAIFRFU1RfRihD
Q1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlbmRlclN1cmZhY2VzUmVkdWNlTWVtb3J5QXZhaWxh
YmxlT3V0c2lkZVJvb3RTCiAgICAgICAgIHRleHR1cmVzW2ldLT5zZXRSZXF1ZXN0UHJpb3JpdHko
MTAwIC0gaSk7CiAKICAgICAvLyBPbmx5IHVwcGVyIGhhbGYgc2hvdWxkIGJlIGF2YWlsYWJsZS4K
LSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKHJlbmRlclN1cmZhY2VzQnl0
ZXMpOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBFWFBF
Q1RfRkFMU0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzBdLCBmYWxzZSkpOwogICAgIEVYUEVD
VF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbM10sIGZhbHNlKSk7CiAgICAgRVhQRUNU
X1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzRdLCBmYWxzZSkpOwogICAgIEVYUEVDVF9U
UlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1s3XSwgZmFsc2UpKTsKIAogICAgIEVYUEVDVF9F
USh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9m
ZkJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVN
YW5hZ2VyLT5tZW1vcnlGb3JSZW5kZXJTdXJmYWNlc0J5dGVzKCkpOworICAgIEVYUEVDVF9FUSh0
ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JTZWxmTWFuYWdl
ZFRleHR1cmVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0
ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKICAgICB0
ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOwpAQCAtMzY5LDggKzM3
MSwxMCBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZW5kZXJTdXJmYWNlc1Jl
ZHVjZU1lbW9yeUF2YWlsYWJsZUZvclJlcXVlc3RMYQogICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0
dXJlcyA9IDg7CiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVy
ZU1hbmFnZXIgPSBjcmVhdGVNYW5hZ2VyKG1heFRleHR1cmVzKTsKIAotICAgIC8vIEhhbGYgb2Yg
dGhlIG1lbW9yeSBpcyB0YWtlbiBieSBzdXJmYWNlcy4KLSAgICBjb25zdCBzaXplX3QgcmVuZGVy
U3VyZmFjZXNCeXRlcyA9IHRleHR1cmVzTWVtb3J5U2l6ZSg0KTsKKyAgICAvLyBIYWxmIG9mIHRo
ZSBtZW1vcnkgaXMgdGFrZW4gYnkgc3VyZmFjZXMgKHdpdGggaGlnaCBwcmlvcml0eSBwbGFjZS1o
b2xkZXIpCisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiByZW5kZXJTdXJmYWNlUGxh
Y2VIb2xkZXIgPSB0ZXh0dXJlTWFuYWdlci0+Y3JlYXRlVGV4dHVyZShtX3RleHR1cmVTaXplLCBt
X3RleHR1cmVGb3JtYXQpOworICAgIHJlbmRlclN1cmZhY2VQbGFjZUhvbGRlci0+c2V0VG9TZWxm
TWFuYWdlZE1lbW9yeVBsYWNlaG9sZGVyKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSk7CisgICAgcmVu
ZGVyU3VyZmFjZVBsYWNlSG9sZGVyLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1
bGF0b3I6OnJlbmRlclN1cmZhY2VQcmlvcml0eSgpKTsKIAogICAgIC8vIENyZWF0ZSB0ZXh0dXJl
cyB0byBmaWxsIG91ciBtZW1vcnkgbGltaXQuCiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0
dXJlPiB0ZXh0dXJlc1ttYXhUZXh0dXJlc107CkBAIC0zODMsNyArMzg3LDcgQEAgVEVTVF9GKEND
UHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFi
bGVGb3JSZXF1ZXN0TGEKICAgICAgICAgdGV4dHVyZXNbaV0tPnNldFJlcXVlc3RQcmlvcml0eSgx
MDApOwogCiAgICAgLy8gVGhlIGZpcnN0IGZvdXIgdG8gYmUgcmVxdWVzdGVkIGxhdGUgd2lsbCBi
ZSBhdmFpbGFibGUuCi0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcyhyZW5k
ZXJTdXJmYWNlc0J5dGVzKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kpCiAgICAg
ICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0sIGZhbHNlKSk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyBpICs9IDIpCkBAIC0zOTIs
NyArMzk2LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFj
ZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVGb3JSZXF1ZXN0TGEKICAgICAgICAgRVhQRUNUX0ZBTFNF
KHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1tpXSwgdHJ1ZSkpOwogCiAgICAgRVhQRUNUX0VRKHRl
eHR1cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0
ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFn
ZXItPm1lbW9yeUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSk7CisgICAgRVhQRUNUX0VRKHRleHR1
cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclNlbGZNYW5hZ2VkVGV4
dHVyZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygp
LCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKIAogICAgIHRleHR1
cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CkBAIC00MDMsOCArNDA3LDEw
IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHdoZW5SZW5kZXJTdXJmYWNlTm90
QXZhaWxhYmxlVGV4dHVyZXNBbHNvTm90QXZhCiAgICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVz
ID0gODsKICAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFu
YWdlciA9IGNyZWF0ZU1hbmFnZXIobWF4VGV4dHVyZXMpOwogCi0gICAgLy8gSGFsZiBvZiB0aGUg
bWVtb3J5IGlzIHRha2VuIGJ5IHN1cmZhY2VzLgotICAgIGNvbnN0IHNpemVfdCByZW5kZXJTdXJm
YWNlc0J5dGVzID0gdGV4dHVyZXNNZW1vcnlTaXplKDQpOworICAgIC8vIEhhbGYgb2YgdGhlIG1l
bW9yeSBpcyB0YWtlbiBieSBzdXJmYWNlcyAod2l0aCBoaWdoIHByaW9yaXR5IHBsYWNlLWhvbGRl
cikKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHJlbmRlclN1cmZhY2VQbGFjZUhv
bGRlciA9IHRleHR1cmVNYW5hZ2VyLT5jcmVhdGVUZXh0dXJlKG1fdGV4dHVyZVNpemUsIG1fdGV4
dHVyZUZvcm1hdCk7CisgICAgcmVuZGVyU3VyZmFjZVBsYWNlSG9sZGVyLT5zZXRUb1NlbGZNYW5h
Z2VkTWVtb3J5UGxhY2Vob2xkZXIodGV4dHVyZXNNZW1vcnlTaXplKDQpKTsKKyAgICByZW5kZXJT
dXJmYWNlUGxhY2VIb2xkZXItPnNldFJlcXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRv
cjo6cmVuZGVyU3VyZmFjZVByaW9yaXR5KCkpOwogCiAgICAgLy8gQ3JlYXRlIHRleHR1cmVzIHRv
IGZpbGwgb3VyIG1lbW9yeSBsaW1pdC4KICAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+
IHRleHR1cmVzW21heFRleHR1cmVzXTsKQEAgLTQxOCw3ICs0MjQsNyBAQCBURVNUX0YoQ0NQcmlv
cml0aXplZFRleHR1cmVUZXN0LCB3aGVuUmVuZGVyU3VyZmFjZU5vdEF2YWlsYWJsZVRleHR1cmVz
QWxzb05vdEF2YQogICAgIGZvciAoc2l6ZV90IGkgPSA2OyBpIDwgODsgKytpKQogICAgICAgICB0
ZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjp2aXNp
YmxlUHJpb3JpdHkoZmFsc2UpKTsKIAotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4
dHVyZXMocmVuZGVyU3VyZmFjZXNCeXRlcyk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwogCiAgICAgLy8gVW5hYmxlIHRvIHJlcXVlc3RMYXRlIHRleHR1cmVzIGlu
IHRoZSBjaGlsZCBzdXJmYWNlLgogICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4
dHVyZXNbNl0sIHRydWUpKTsKQEAgLTQyOSw3ICs0MzUsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXpl
ZFRleHR1cmVUZXN0LCB3aGVuUmVuZGVyU3VyZmFjZU5vdEF2YWlsYWJsZVRleHR1cmVzQWxzb05v
dEF2YQogICAgICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0sIGZh
bHNlKSk7CiAKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDYpLCB0ZXh0dXJlTWFu
YWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNN
ZW1vcnlTaXplKDIpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXNCeXRl
cygpKTsKKyAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDIpLCB0ZXh0dXJlTWFuYWdl
ci0+bWVtb3J5Rm9yU2VsZk1hbmFnZWRUZXh0dXJlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVy
ZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1
dG9mZkJ5dGVzKCkpOwogCiAgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9j
YXRvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRM
YXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDMxY2Y2NzI1ZTEzMjg0ZDA0YjdkZmEyNzRjODNi
ZWY3NWM5NmYwNmEuLmYxNTJhYjRmYmU3ODkxZTA1MzY3OWViZjMxMjI2NDc3ODQwY2RkNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hy
b21pdW1UZXN0LmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0
KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwog
CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAw
LCAyMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtMTE5LDcgKzExOSw3IEBAIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBsYXllci0+
aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAu
Li4uYnV0IHRoZW4gb25seSB1cGRhdGUgb25lIG9mIHRoZW0uCiAgICAgbGF5ZXItPnNldFRleHR1
cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApLCAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwu
Z2V0KCkpOwogCkBAIC0xNDQsNyArMTQ0LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
KTsKIAogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSwgJm9jY2x1ZGVkKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtMTg4LDcg
KzE4OCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVz
KQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRv
cik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIHVwZGF0
ZVRleHR1cmVzKCk7CkBAIC0yMTEsNyArMjExLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hEZWxldGVkVGlsZXMpCiAKICAgICAvLyBUaGlzIHNob3VsZCByZWNyZWF0ZSBh
bmQgdXBkYXRlIHRoZSBkZWxldGVkIHRleHR1cmVzLgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygp
OwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSwgMCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwpAQCAtMjM5LDcgKzIzOSw3IEBAIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgbGF5ZXItPmludmFs
aWRhdGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
KTsKIAogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwg
MCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKQEAgLTI1NSw3ICsyNTUsNyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgIC8vIEZvciB0aGUg
bmV4dCBmb3VyIHVwZGF0ZXMsIHdlIHNob3VsZCBkZXRlY3Qgd2Ugc3RpbGwgbmVlZCBpZGxlIHBh
aW50aW5nLgogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgIGxheWVy
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgICAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgICAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKICAgICAgICAgRVhQRUNUX1RSVUUobGF5ZXIt
Pm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC0zMDcsNyArMzA3LDcgQEAgVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQog
ICAgIC8vIFBhaW50IGEgc2luZ2xlIHRpbGUgaW4gbGF5ZXIyIHNvIHRoYXQgaXQgd2lsbCBpZGxl
IHBhaW50LgogICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKICAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRv
cik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXIxLT51cGRhdGVDb250
ZW50UmVjdCh1cGRhdGVyLCBsYXllclJlY3QsIDApOwogICAgIGxheWVyMi0+dXBkYXRlQ29udGVu
dFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogCkBAIC0zMjUsNyAr
MzI1LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRs
ZVBhaW50RmFpbGVkKQogICAgIC8vIE5vdyBpZGxlIHBhaW50IGxheWVyMi4gV2UgYXJlIGdvaW5n
IHRvIHJ1biBvdXQgb2YgbWVtb3J5IHRob3VnaCEKICAgICBsYXllcjItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwog
ICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCksIDApOwogCiAgICAgLy8gT2ggd2VsbCwgY29tbWl0IHRoZSBmcmFtZSBhbmQgcHVzaC4K
QEAgLTM0NSw3ICszNDUsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRp
bGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAgLy8gTm93IGlmIGxheWVyMiBiZWNvbWVzIGZ1
bGx5IHZpc2libGUsIHdlIHNob3VsZCBiZSBhYmxlIHRvIHBhaW50IGl0IGFuZCBwdXNoIHZhbGlk
IHRleHR1cmVzLgogICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKICAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3Vs
YXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXIyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBsYXllcjJSZWN0LCAwKTsKICAgICBsYXllcjEtPnVwZGF0ZUNv
bnRlbnRSZWN0KHVwZGF0ZXIsIGxheWVyUmVjdCwgMCk7CiAKQEAgLTM3OCw3ICszNzgsNyBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludGVkT2NjbHVkZWRUaWxl
cykKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAx
MDApKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKICAg
ICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bC5nZXQoKSk7CkBAIC00MDMsNyArNDAzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hUaWxlc01hcmtlZERpcnR5RHVyaW5nUGFpbnQpCiAgICAgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAw
LCA1MCksIGxheWVyLmdldCgpKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhw
cmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwg
MCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOwpAQCAtNDMyLDcgKzQzMiw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRPbk5leHRMYXll
cikKIAogICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9y
KTsKICAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7
Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBsYXllcjEtPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKIApAQCAtNDcwLDcg
KzQ3MCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1h
cmtlZERpcnR5RHVyaW5nUGFpbnRPblByZXZpb3VzTGF5CiAKICAgICBsYXllcjEtPnNldFRleHR1
cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5ZXIyLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygpOwogCiAgICAgLy8gSW52YWxpZGF0ZSBhIHRpbGUgb24gbGF5ZXIyCiAgICAgbGF5ZXIxLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwg
NTAsIDEwMCwgNTApLCBsYXllcjIuZ2V0KCkpOwpAQCAtNTA4LDcgKzUwOCw3IEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBsYXllci0+
aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKIAogICAgIGxheWVyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVj
dCwgMCk7CiAKICAgICAvLyBJZGxlLXBhaW50aW5nIHNob3VsZCBzZWUgbm8gbW9yZSBwcmlvcml0
eSB0aWxlcyBmb3IgcGFpbnRpbmcuCkBAIC01MjEsNyArNTIxLDcgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIEVYUEVDVF9UUlVFKGxh
eWVySW1wbC0+aGFzVGlsZUF0KDEsIDEpKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwog
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAK
ICAgICAvLyBXZSBzaG91bGRuJ3Qgc2lnbmFsIHdlIG5lZWQgYW5vdGhlciBpZGxlIHBhaW50LgpA
QCAtNTQ4LDcgKzU0OCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFp
bnRaZXJvU2l6ZWRMYXllcikKICAgICAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChj
b250ZW50UmVjdCk7CiAKICAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9y
aXR5Q2FsY3VsYXRvcik7Ci0gICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoMCk7CisgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAog
ICAgICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgcGFpbnQgb3IgaWRsZS1wYWludC4KICAgICAg
ICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKQEAg
LTU4Niw3ICs1ODYsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50
Tm9uVmlzaWJsZUxheWVycykKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgewogICAg
ICAgICAvLyBQYWludCAvIGlkbGUtcGFpbnQuCiAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKDApOworICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKCk7CiAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNp
YmxlUmVjdCwgMCk7CiAKICAgICAgICAgLy8gTm9uLXZpc2libGUgbGF5ZXJzIGRvbid0IG5lZWQg
aWRsZSBwYWludC4KQEAgLTYzNiw3ICs2MzYsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGluZ0xheWVycykKICAgICAgICAgICAgIGxh
eWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogCiAgICAgICAgICAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICAgICAg
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgICAgICAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAgICAgICAgIC8vIElm
IGlkbGVQYWludFJlY3QgZ2l2ZXMgYmFjayBhIG5vbi1lbXB0eSByZXN1bHQgdGhlbiB3ZSBzaG91
bGQgcGFpbnQgaXQuIE90aGVyd2lzZSwKICAgICAgICAgICAgIC8vIHdlIHNob3VkIHBhaW50IG5v
dGhpbmcuCkBAIC02NDgsNyArNjQ4LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAgICAgICAgICAgICAvLyBJZiB0
aGUgbGF5ZXIgaXMgdG8gYmUgcHJlcGFpbnRlZCBhdCBhbGwsIHRoZW4gYWZ0ZXIgZm91ciB1cGRh
dGVzIHdlIHNob3VsZCBoYXZlIHRoZSBvdXRlciByb3cvY29sdW1ucyBwYWludGVkLgogICAgICAg
ICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCA0OyArK2spIHsKICAgICAgICAgICAgICAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICAgICAgICAg
ICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgICAgICAgICAg
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgICAgICAgICAg
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAg
ICAgICAgICAgICAgICAgdXBkYXRlVGV4dHVyZXMoKTsKQEAgLTY2MSw3ICs2NjEsNyBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGluZ0xh
eWVycykKICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlz
aWJsZVJlY3QpKTsKICAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgNDsgKytrKSB7CiAg
ICAgICAgICAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3Vs
YXRvcik7Ci0gICAgICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygwKTsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KCk7CiAKICAgICAgICAgICAgICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
dmlzaWJsZVJlY3QsIDApOwogICAgICAgICAgICAgICAgIHVwZGF0ZVRleHR1cmVzKCk7CkBAIC02
OTAsNyArNjkwLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVG
cm9tUHJlcGFyZSkKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwg
MCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3Jp
dHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDAp
OworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwog
ICAgIHVwZGF0ZXIudXBkYXRlKGNjQ29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtl
Q29waWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNU
byhsYXllckltcGwuZ2V0KCkpOwpAQCAtNzQwLDE0ICs3NDAsMTQgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxl
ZCkKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRCb3VuZHMpOwogCiAg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0
UmVjdCgwLCAwLCAzMDAsIDMwMCAqIDAuOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogICAgIHVw
ZGF0ZVRleHR1cmVzKCk7CiAKICAgICAvLyBBZnRlciB0aGUgdGlsZXMgYXJlIHVwZGF0ZWQgb25j
ZSwgYW5vdGhlciBpbnZhbGlkYXRlIG9ubHkgbmVlZHMgdG8gdXBkYXRlIHRoZSBib3VuZHMgb2Yg
dGhlIGxheWVyLgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT5pbnZhbGlk
YXRlQ29udGVudFJlY3QoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VR
KEZsb2F0UmVjdChsYXllckJvdW5kcyksIGxheWVyLT51cGRhdGVSZWN0KCkpOwpAQCAtNzU3LDcg
Kzc1Nyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0
V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgSW50UmVjdCBwYXJ0aWFsRGFtYWdlKDMw
LCAxMDAsIDEwLCAxMCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChwYXJ0aWFs
RGFtYWdlKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgMCk7CiAgICAgRVhQRUNUX0ZMT0FUX1JF
Q1RfRVEoRmxvYXRSZWN0KDQ1LCA4MCwgMTUsIDgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIH0K
QEAgLTc3OSw3ICs3NzksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5
SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogCiAgICAgLy8gUHVzaCB0aGUg
dGlsZXMgdG8gdGhlIGltcGwgc2lkZSBhbmQgY2hlY2sgdGhhdCB0aGVyZSBpcyBleGFjdGx5IG9u
ZS4KICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
LSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogICAgIHVwZGF0ZVRleHR1
cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKQEAg
LTc5Niw3ICs3OTYsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52
YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogCiAgICAgLy8gVGhlIGltcGwgc2lk
ZSBzaG91bGQgZ2V0IDJ4MiB0aWxlcyBub3cuCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0
aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAg
ICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMjAwLCAy
MDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbC5nZXQoKSk7CkBAIC04MTAsNyArODEwLDcgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdl
cykKICAgICBsYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KHVwZGF0ZXIsIEludFJlY3QoMSwgMCwgMCwgMSksIDApOwotICAgIHRleHR1cmVNYW5hZ2Vy
LT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygpOwogCiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwpAQCAtODgw
LDcgKzg4MCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCByZXNpemVUb1NtYWxs
ZXIpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDcwMCwg
NzAwKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOwogCiAgICAgbGF5
ZXItPnNldEJvdW5kcyhJbnRTaXplKDIwMCwgMjAwKSk7CkBAIC04OTksNyArODk5LDcgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGh1Z2VMYXllclVwZGF0ZUNyYXNoKQogCiAgICAg
Ly8gRW5zdXJlIG5vIGNyYXNoIGZvciBib3VuZHMgd2hlcmUgc2l6ZSAqIHNpemUgd291bGQgb3Zl
cmZsb3cgYW4gaW50LgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNh
bGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Cisg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRh
dGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7CiB9CiAK
QEAgLTEwMzksNyArMTAzOSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxl
c1BhaW50ZWRXaXRob3V0T2NjbHVzaW9uKQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJl
Y3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7
CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAw
LCAyMDApLCAwKTsKICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiB9CkBAIC0xMDYwLDcgKzEwNjAsNyBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikKICAg
ICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsK
IAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwot
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBF
Q1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0
Q291bnQoKSk7CiAKQEAgLTExMDgsNyArMTEwOCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMp
CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9y
KTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDM2MCksICZvY2NsdWRlZCk7CiAgICAg
RVhQRUNUX0VRKDI0LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
UmVjdENvdW50KCkpOwogCkBAIC0xMTIzLDcgKzExMjMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFp
bnRzKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAs
IDM1MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2
MDAsIDYwMCkpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzUwKSwgJm9jY2x1ZGVkKTsK
ICAgICBFWFBFQ1RfRVEoMjQtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnBy
ZXBhcmVSZWN0Q291bnQoKSk7CiAKQEAgLTExMzgsNyArMTEzOCw3IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29u
c3RyYWludHMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAs
IDYwMCwgMzQwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5
Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsK
KyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAzNDApLCAmb2NjbHVk
ZWQpOwogICAgIEVYUEVDVF9FUSgyNC02LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIApAQCAtMTE2Myw3ICsxMTYzLDcgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJbnZhbGlkYXRpb24p
CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRv
cik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAg
IEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZVJlY3RDb3VudCgpKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtMTIwMyw3ICsxMjAzLDcg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNp
b25BbmRUcmFuc2Zvcm1zKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVj
dChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNv
bnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXllci0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAw
LCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCkBAIC0xMjMxLDcg
KzEyMzEsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0
aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJ
bnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlk
YXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogICAgIGxheWVyLT5zZXRU
ZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2Vy
LT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICAvLyBUaGUgY29udGVudCBpcyBoYWxm
IHRoZSBzaXplIG9mIHRoZSBsYXllciAoc28gdGhlIG51bWJlciBvZiB0aWxlcyBpcyBmZXdlciku
CiAgICAgLy8gSW4gdGhpcyBjYXNlLCB0aGUgY29udGVudCBpcyAzMDB4MzAwLCBhbmQgc2luY2Ug
dGhlIHRpbGUgc2l6ZSBpcyAxMDAsIHRoZQpAQCAtMTI1MSw3ICsxMjUxLDcgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5n
KQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBs
YXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJp
b3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZv
Y2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDktMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKQEAgLTEyNzEsNyArMTI3MSw3IEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2Nh
bGluZykKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQo
KSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJ
bnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDAp
LCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCkBAIC0xMzAwLDcgKzEzMDAsNyBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24p
CiAgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5KDEpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KCk7CiAKICAgICAvLyBJZiB0aGUgbGF5ZXIgZG9lc24ndCBwYWludCBvcGFxdWUgY29udGVudCwg
dGhlbiB0aGUgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24gc2hvdWxkIGJlIGVtcHR5LgogICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50
UmVjdCgpKTsKQEAgLTEzOTMsNyArMTM5Myw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBwaXhlbHNQYWludGVkTWV0cmljcykKICAgICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7
CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
LSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIEludmFsaWRhdGVzIGFuZCBw
YWludHMgdGhlIHdob2xlIGxheWVyLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKQEAgLTE2MzYsNyArMTYzNiw3IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBub25JbnRlZ2VyQ29udGVudHNTY2FsZUlz
Tm90RGlzdG9ydGVkRHVyaW5nUGFpbnQpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVj
dChjb250ZW50UmVjdCk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMoY2FsY3Vs
YXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBVcGRhdGUgdGhl
IHdob2xlIHRpbGUuCiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRl
bnRSZWN0LCAwKTsKQEAgLTE2NjksNyArMTY2OSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBub25JbnRlZ2VyQ29udGVudHNTY2FsZUlzTm90RGlzdG9ydGVkRHVyaW5nSW52YWxp
CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKICAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMoY2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKCk7CiAKICAgICAvLyBVcGRhdGUgdGhlIHdob2xlIHRpbGUuCiAgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152389</attachid>
            <date>2012-07-13 17:55:05 -0700</date>
            <delta_ts>2012-07-13 18:01:02 -0700</delta_ts>
            <desc>rebase_address_feedback</desc>
            <filename>bug-91177-20120713175504.patch</filename>
            <type>text/plain</type>
            <size>48258</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJlMjZjY2EyZDM2Y2Mw
ZDBhZGE2NDY0ZDNjOGRjYzY1NmFiYmI3Ny4uZTE2MDA3MjJhZTRiZDQxNGVkMmEyNzkzZmU1NzM3
NzQ2NDc0YzQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA3LTEzICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCAn
c2VsZi1tYW5hZ2VkJyBvcHRpb24gdG8gQ0NQcmlvcml0aXplZFRleHR1cmUgdG8gZW5hYmxlIHJl
bmRlci1zdXJmYWNlIGFuZCBjYW52YXMgdXNlIGNhc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTExNzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1ha2VzIHRoZSByZW5kZXItc3VyZmFjZSBt
ZW1vcnkgdXNlIGNhc2UgZ2VuZXJpYyBhcyAnc2VsZi1tYW5hZ2VkJyB0ZXh0dXJlcywKKyAgICAg
ICAgYXMgdGhpcyB1c2UgY2FzZSBpcyBwb3BwaW5nIHVwIGluIG90aGVyIHBsYWNlcyAoZWcuIGNh
bnZhc2VzKS4gSXQncyBleGFjdGx5IHRoZQorICAgICAgICBzYW1lIGlkZWEgZXhjZXB0IHdlIGNh
biBoYXZlIGFzIG1hbnkgcGxhY2UtaG9sZGVycyBhcyB3ZSB3YW50IGF0IGFyYml0cmFyeQorICAg
ICAgICBwcmlvcml0aWVzLgorCisgICAgICAgIFRoaXMgYWxyZWFkeSB0ZXN0ZWQgYnkgdGhlIHJl
bmRlciBzdXJmYWNlIHVuaXQgdGVzdHMgd2hpY2ggbm93IGFsc28gdXNlIHRoZSAKKyAgICAgICAg
Z2VuZXJpYyBwbGFjZWhvbGRlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6c2V0UHJpb3JpdGllc0ZvclN1cmZhY2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRQcmlvcml0aWVzRm9yTGF5ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y2FsY3VsYXRlTWVtb3J5Rm9yUmVuZGVy
U3VyZmFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwYWludExheWVy
Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6Q0NQcmlvcml0aXplZFRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OnNldFRvU2VsZk1hbmFn
ZWRNZW1vcnlQbGFjZWhvbGRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaDoKKyAgICAgICAgKENDUHJpb3JpdGl6ZWRUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpzZXRJc1NlbGZN
YW5hZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjppc1NlbGZN
YW5hZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpwcmlvcml0aXplVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ry
b3lCYWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
Om1lbW9yeUZvclNlbGZNYW5hZ2VkVGV4dHVyZXMpOgorCiAyMDEyLTA3LTEzICBQaWVycmUgUm9z
c2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgogCiAgICAgICAgIFtRdF0gSW1wcm92ZSB0aGUg
bW9iaWxlIHRoZW1lIHNsaWdodGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZlZjdk
OGI5N2ZiZTBjMDdjYzk5NWVkZGVmYTg4ZDAzMmQ1MDU4Y2UuLjFhNmY0OTM2MGJjNDIwMmQ3ODVl
YzMyOGE3Zjc0MTVhMjcxNjI4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMDctMTMgIEVyaWMgUGVubmVyICA8ZXBlbm5lckBnb29nbGUuY29tPgor
CisgICAgICAgIFtjaHJvbWl1bV0gQWRkICdzZWxmLW1hbmFnZWQnIG9wdGlvbiB0byBDQ1ByaW9y
aXRpemVkVGV4dHVyZSB0byBlbmFibGUgcmVuZGVyLXN1cmZhY2UgYW5kIGNhbnZhcyB1c2UgY2Fz
ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVz
dHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6VEVTVF9GKToK
KyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKwogMjAxMi0wNy0x
MyAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhl
ZERCOiBSZS1lbmFibGUgaW5kZXhlZGRiIGluIHRlc3Rfc2hlbGwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCmluZGV4IDFhNDM1OWVkYmQ0Njk3NzlhMDdmNDBmZDYwOWRhMmU3MmY4M2M3
YTQuLmRhMmNiMzJhMGM2YTEwOTBlN2NmNWY1ZjIwYzY1NDg5MDc5ODViMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMTUyLDYgKzE1Miw3IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgbV9zZXR0aW5ncy5tYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXMgPSBtaW4obV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0
ZXMsIG1fcHJveHktPm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpKTsKIAogICAgIG1fY29udGVu
dHNUZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDAs
IG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7Cisg
ICAgbV9zdXJmYWNlTWVtb3J5UGxhY2Vob2xkZXIgPSBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIt
PmNyZWF0ZVRleHR1cmUoSW50U2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAKICAg
ICBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCA9IHRydWU7CiAKQEAgLTQ4OSw4ICs0OTAsNiBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RM
YXllciwgQ0NUZXh0dXJlVXBkYXRlciYgdQogICAgIC8vIFJlc2V0IHBhcnRpYWwgdGV4dHVyZSB1
cGRhdGUgcmVxdWVzdHMuCiAgICAgbV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzID0gMDsK
IAotICAgIHByaW9yaXRpemVUZXh0dXJlcyh1cGRhdGVMaXN0KTsKLQogICAgIGJvb2wgbmVlZE1v
cmVVcGRhdGVzID0gcGFpbnRMYXllckNvbnRlbnRzKHVwZGF0ZUxpc3QsIHVwZGF0ZXIpOwogICAg
IGlmIChtX3RyaWdnZXJJZGxlVXBkYXRlcyAmJiBuZWVkTW9yZVVwZGF0ZXMpCiAgICAgICAgIHNl
dE5lZWRzQ29tbWl0KCk7CkBAIC00OTksMTMgKzQ5OCwyMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllciwgQ0NUZXh0dXJlVXBkYXRl
ciYgdQogICAgICAgICB1cGRhdGVMaXN0W2ldLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKIH0KIAot
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByaW9yaXRpemVUZXh0dXJlcyhjb25zdCBMYXllckxpc3Qm
IHVwZGF0ZUxpc3QpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0UHJpb3JpdGllc0ZvclN1cmZh
Y2VzKHNpemVfdCBzdXJmYWNlTWVtb3J5Qnl0ZXMpCit7CisgICAgLy8gU3VyZmFjZXMgaGF2ZSBh
IHBsYWNlIGhvbGRlciBmb3IgdGhlaXIgbWVtb3J5IHNpbmNlIHRoZXkgYXJlIG1hbmFnZWQKKyAg
ICAvLyBpbmRlcGVuZGFudGx5IGJ1dCBzaG91bGQgc3RpbGwgYmUgdHJhY2tlZCBhbmQgcmVkdWNl
IG90aGVyIG1lbW9yeSB1c2FnZS4KKyAgICBtX3N1cmZhY2VNZW1vcnlQbGFjZWhvbGRlci0+c2V0
VGV4dHVyZU1hbmFnZXIobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLmdldCgpKTsKKyAgICBtX3N1
cmZhY2VNZW1vcnlQbGFjZWhvbGRlci0+c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxj
dWxhdG9yOjpyZW5kZXJTdXJmYWNlUHJpb3JpdHkoKSk7CisgICAgbV9zdXJmYWNlTWVtb3J5UGxh
Y2Vob2xkZXItPnNldFRvU2VsZk1hbmFnZWRNZW1vcnlQbGFjZWhvbGRlcihzdXJmYWNlTWVtb3J5
Qnl0ZXMpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0UHJpb3JpdGllc0ZvckxheWVy
cyhjb25zdCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250
IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgogICAgIHR5
cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25z
OjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAotICAgIG1fY29udGVudHNUZXh0
dXJlTWFuYWdlci0+Y2xlYXJQcmlvcml0aWVzKCk7Ci0KICAgICBDQ1ByaW9yaXR5Q2FsY3VsYXRv
ciBjYWxjdWxhdG9yOwogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJh
dG9yVHlwZTo6ZW5kKCZ1cGRhdGVMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUg
aXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmdXBkYXRlTGlzdCk7IGl0ICE9IGVuZDsg
KytpdCkgewpAQCAtNTE4LDcgKzUyNCwyNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJpb3Jp
dGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCkKICAgICAgICAgICAgICAg
ICBpdC0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhj
YWxjdWxhdG9yKTsKICAgICAgICAgfQogICAgIH0KK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnByaW9yaXRpemVUZXh0dXJlcyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxp
c3QsIENDT3ZlcmRyYXdNZXRyaWNzJiBtZXRyaWNzKQoreworICAgIG1fY29udGVudHNUZXh0dXJl
TWFuYWdlci0+Y2xlYXJQcmlvcml0aWVzKCk7CisKKyAgICBzaXplX3QgbWVtb3J5Rm9yUmVuZGVy
U3VyZmFjZXNNZXRyaWMgPSBjYWxjdWxhdGVNZW1vcnlGb3JSZW5kZXJTdXJmYWNlcyhyZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKKworICAgIHNldFByaW9yaXRpZXNGb3JMYXllcnMocmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCk7CisgICAgc2V0UHJpb3JpdGllc0ZvclN1cmZhY2VzKG1lbW9yeUZvclJl
bmRlclN1cmZhY2VzTWV0cmljKTsKIAorICAgIG1ldHJpY3MuZGlkVXNlQ29udGVudHNUZXh0dXJl
TWVtb3J5Qnl0ZXMobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5
dGVzKCkpOworICAgIG1ldHJpY3MuZGlkVXNlUmVuZGVyU3VyZmFjZVRleHR1cmVNZW1vcnlCeXRl
cyhtZW1vcnlGb3JSZW5kZXJTdXJmYWNlc01ldHJpYyk7CisKKyAgICBtX2NvbnRlbnRzVGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOworfQorCitzaXplX3QgQ0NMYXllclRyZWVI
b3N0OjpjYWxjdWxhdGVNZW1vcnlGb3JSZW5kZXJTdXJmYWNlcyhjb25zdCBMYXllckxpc3QmIHVw
ZGF0ZUxpc3QpCit7CiAgICAgc2l6ZV90IHJlYWRiYWNrQnl0ZXMgPSAwOwogICAgIHNpemVfdCBt
YXhCYWNrZ3JvdW5kVGV4dHVyZUJ5dGVzID0gMDsKICAgICBzaXplX3QgY29udGVudHNUZXh0dXJl
Qnl0ZXMgPSAwOwpAQCAtNTM5LDkgKzU2Myw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpwcmlv
cml0aXplVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogICAgICAgICBpZiAo
IXJlYWRiYWNrQnl0ZXMpCiAgICAgICAgICAgICByZWFkYmFja0J5dGVzID0gQ0NUZXh0dXJlOjpt
ZW1vcnlTaXplQnl0ZXMobV9kZXZpY2VWaWV3cG9ydFNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBKTsKICAgICB9Ci0gICAgc2l6ZV90IHJlbmRlclN1cmZhY2VzQnl0ZXMgPSByZWFkYmFja0J5
dGVzICsgbWF4QmFja2dyb3VuZFRleHR1cmVCeXRlcyArIGNvbnRlbnRzVGV4dHVyZUJ5dGVzOwot
Ci0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMocmVuZGVy
U3VyZmFjZXNCeXRlcyk7CisgICAgcmV0dXJuIHJlYWRiYWNrQnl0ZXMgKyBtYXhCYWNrZ3JvdW5k
VGV4dHVyZUJ5dGVzICsgY29udGVudHNUZXh0dXJlQnl0ZXM7CiB9CiAKIGJvb2wgQ0NMYXllclRy
ZWVIb3N0OjpwYWludE1hc2tzRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJT
dXJmYWNlTGF5ZXIsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCkBAIC01NzUsNiArNTk3LDgg
QEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxp
c3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICBDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVz
aW9uVHJhY2tlcihJbnRSZWN0KEludFBvaW50KCksIGRldmljZVZpZXdwb3J0U2l6ZSgpKSwgcmVj
b3JkTWV0cmljc0ZvckZyYW1lKTsKICAgICBvY2NsdXNpb25UcmFja2VyLnNldE1pbmltdW1UcmFj
a2luZ1NpemUobV9zZXR0aW5ncy5taW5pbXVtT2NjbHVzaW9uVHJhY2tpbmdTaXplKTsKIAorICAg
IHByaW9yaXRpemVUZXh0dXJlcyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBvY2NsdXNpb25UcmFj
a2VyLm92ZXJkcmF3TWV0cmljcygpKTsKKwogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0g
Q0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBm
b3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigm
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBvY2Ns
dXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwpAQCAtNTkxLDggKzYxNSw2IEBAIGJvb2wgQ0NM
YXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubGVhdmVMYXllcihpdCk7
CiAgICAgfQogCi0gICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5kaWRVc2VD
b250ZW50c1RleHR1cmVNZW1vcnlCeXRlcyhtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPm1lbW9y
eUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJp
Y3MoKS5kaWRVc2VSZW5kZXJTdXJmYWNlVGV4dHVyZU1lbW9yeUJ5dGVzKG1fY29udGVudHNUZXh0
dXJlTWFuYWdlci0+bWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXNCeXRlcygpKTsKICAgICBvY2NsdXNp
b25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnJlY29yZE1ldHJpY3ModGhpcyk7CiAKICAgICBy
ZXR1cm4gbmVlZE1vcmVVcGRhdGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA3
YmIwZjY4YzYwNTZjNTdiNzE3MGNlODM1NDFhOWQ5OTI4NTU2NzU1Li5iZDY1NjUwZjRkMzdiZDBj
OTE5YjNjNTIwNDQ2NGFhZGQ4NTNmOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApA
QCAtMjg1LDcgKzI4NSwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5
ZXJDaHJvbWl1bSosIENDVGV4dHVyZVVwZGF0ZXImKTsKIAotICAgIHZvaWQgcHJpb3JpdGl6ZVRl
eHR1cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCk7CisgICAgdm9pZCBwcmlvcml0aXpl
VGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiwgQ0NPdmVyZHJhd01ldHJpY3MmKTsgCisgICAgdm9p
ZCBzZXRQcmlvcml0aWVzRm9yU3VyZmFjZXMoc2l6ZV90IHN1cmZhY2VNZW1vcnlCeXRlcyk7Cisg
ICAgdm9pZCBzZXRQcmlvcml0aWVzRm9yTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYpOworICAgIHNp
emVfdCBjYWxjdWxhdGVNZW1vcnlGb3JSZW5kZXJTdXJmYWNlcyhjb25zdCBMYXllckxpc3QmIHVw
ZGF0ZUxpc3QpOwogCiAgICAgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1l
KTsKICAgICBib29sIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogY3VycmVu
dCwgZG91YmxlIG1vbm90b25pY1RpbWUpOwpAQCAtMzA5LDYgKzMxMiw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAgICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyOworICAgIE93
blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gbV9zdXJmYWNlTWVtb3J5UGxhY2Vob2xkZXI7CiAK
ICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIG1fc2V0dGluZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0
dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJpb3JpdGl6ZWRUZXh0dXJlLmNwcAppbmRleCBhNmEzMDgxMmJhMWE2MDNkN2Y2YTM2OWMzNWEz
MjMzMTg1ODBkNjA5Li4xZGY3NzEzODZjYWJjYjRhYTk4YmQxZTZhNWNiODM3OTRmNTc0NWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwCkBAIC00Miw2ICs0Miw3
IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZShDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIsCiAgICAgLCBtX2J5dGVzKDApCiAgICAgLCBtX3By
aW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpKQogICAgICwgbV9p
c0Fib3ZlUHJpb3JpdHlDdXRvZmYoZmFsc2UpCisgICAgLCBtX2lzU2VsZk1hbmFnZWQoZmFsc2Up
CiAgICAgLCBtX2JhY2tpbmcoMCkKICAgICAsIG1fbWFuYWdlcigwKQogewpAQCAtMTUwLDcgKzE1
MSwxMiBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjp1bmxpbmsoKQogICAgIG1fYmFja2lu
ZyA9IDA7CiB9CiAKLQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0VG9TZWxmTWFuYWdl
ZE1lbW9yeVBsYWNlaG9sZGVyKHNpemVfdCBieXRlcykKK3sKKyAgICBzZXREaW1lbnNpb25zKElu
dFNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgIHNldElzU2VsZk1hbmFnZWQo
dHJ1ZSk7CisgICAgbV9ieXRlcyA9IGJ5dGVzOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oCmluZGV4IGRjODU3OTMyNDE4
Mzk2ZmRhMzc4OTAxMDUzNTVjOTI0YTJmZjIwZTIuLjQ2MDczYzVmMzQ2ODhlZGUyZTE4OGEzZmVi
YWU0ZjQwYzM1MjU1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaApA
QCAtOTMsNiArOTMsMTQgQEAgcHVibGljOgogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQo
Q0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdW5zaWduZWQgdGV4
dHVyZUlkKCk7CiAKKyAgICAvLyBTZWxmLW1hbmFnZWQgdGV4dHVyZXMgYXJlIGFjY291bnRlZCBm
b3Igd2hlbiBwcmlvcml0aXppbmcgb3RoZXIgdGV4dHVyZXMsCisgICAgLy8gYnV0IHRoZXkgYXJl
IG5vdCBhbGxvY2F0ZWQvcmVjeWNsZWQvZGVsZXRlZCwgc28gdGhpcyBuZWVkcyB0byBiZSBkb25l
CisgICAgLy8gZXh0ZXJuYWxseS4gY2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkgaW5kaWNhdGVz
IGlmIHRoZSB0ZXh0dXJlIHdvdWxkIGhhdmUKKyAgICAvLyBiZWVuIGFsbG93ZWQgZ2l2ZW4gaXRz
IHByaW9yaXR5LgorICAgIHZvaWQgc2V0SXNTZWxmTWFuYWdlZChib29sIGlzU2VsZk1hbmFnZWQp
IHsgbV9pc1NlbGZNYW5hZ2VkID0gaXNTZWxmTWFuYWdlZDsgfQorICAgIGJvb2wgaXNTZWxmTWFu
YWdlZCgpIHsgcmV0dXJuIG1faXNTZWxmTWFuYWdlZDsgfQorICAgIHZvaWQgc2V0VG9TZWxmTWFu
YWdlZE1lbW9yeVBsYWNlaG9sZGVyKHNpemVfdCBieXRlcyk7CisKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjsKIApAQCAtMTI1LDYgKzEzMyw3
IEBAIHByaXZhdGU6CiAKICAgICBzaXplX3QgbV9wcmlvcml0eTsKICAgICBib29sIG1faXNBYm92
ZVByaW9yaXR5Q3V0b2ZmOworICAgIGJvb2wgbV9pc1NlbGZNYW5hZ2VkOwogCiAgICAgQmFja2lu
ZyogbV9iYWNraW5nOwogICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciogbV9tYW5hZ2Vy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAK
aW5kZXggMDE5NWI2ZjFjZGVhYjUwNmYwMzMyNzg1NjgzOThkYjY4NDE3N2RkMS4uZDE5ZTVhYTE5
YzhmOGYzNmNiZTYyMDczNDVmMjlkZWVjZTY1NmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6fkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcigpCiAg
ICAgICAgIGRlc3Ryb3lCYWNraW5nKCptX2JhY2tpbmdzLmJlZ2luKCksIDApOwogfQogCi12b2lk
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cHJpb3JpdGl6ZVRleHR1cmVzKHNpemVfdCBy
ZW5kZXJTdXJmYWNlc01lbW9yeUJ5dGVzKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OnByaW9yaXRpemVUZXh0dXJlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyIpOwogCkBAIC03OSwz
MSArNzksMjkgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVU
ZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnkKIAogICAgIG1fbWVtb3J5QXZhaWxh
YmxlQnl0ZXMgPSBtX21heE1lbW9yeUxpbWl0Qnl0ZXM7CiAgICAgbV9wcmlvcml0eUN1dG9mZiA9
IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpOwotICAgIGJvb2wgcmVzZXJ2
ZWRSZW5kZXJTdXJmYWNlcyA9IGZhbHNlOwogICAgIHNpemVfdCBtZW1vcnlCeXRlcyA9IDA7CiAg
ICAgZm9yIChUZXh0dXJlVmVjdG9yOjppdGVyYXRvciBpdCA9IHNvcnRlZFRleHR1cmVzLmJlZ2lu
KCk7IGl0ICE9IHNvcnRlZFRleHR1cmVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGlmICgoKml0
KS0+cmVxdWVzdFByaW9yaXR5KCkgPT0gQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9y
aXR5KCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAvLyBGSVhNRTogV2UgY2FuIG1h
a2UgcGxhY2Vob2xkZXIgb2JqZWN0cyBzaW1pbGFyIHRvIHRleHR1cmVzIHRvIHJlcHJlc2VudCB0
aGUgcmVuZGVyIHN1cmZhY2UgbWVtb3J5IHJlcXVlc3QuCi0gICAgICAgIGlmICghcmVzZXJ2ZWRS
ZW5kZXJTdXJmYWNlcyAmJiBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0xvd2VyKCgq
aXQpLT5yZXF1ZXN0UHJpb3JpdHkoKSwgQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnJlbmRlclN1cmZh
Y2VQcmlvcml0eSgpKSkgewotICAgICAgICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVt
b3J5Qnl0ZXMgKyByZW5kZXJTdXJmYWNlc01lbW9yeUJ5dGVzOworICAgICAgICBpZiAoKCppdCkt
PmlzU2VsZk1hbmFnZWQoKSkgeworICAgICAgICAgICAgLy8gQWNjb3VudCBmb3Igc2VsZi1tYW5h
Z2VkIG1lbW9yeSBpbW1lZGlhdGVseSBieSByZWR1Y2luZyB0aGUgbWVtb3J5CisgICAgICAgICAg
ICAvLyBhdmFpbGFibGUgKHNpbmNlIGl0IG5ldmVyIGdldHMgYWNxdWlyZWQpLgorICAgICAgICAg
ICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAoKml0KS0+Ynl0ZXMoKTsK
ICAgICAgICAgICAgIGlmIChuZXdNZW1vcnlCeXRlcyA+IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMp
IHsKICAgICAgICAgICAgICAgICBtX3ByaW9yaXR5Q3V0b2ZmID0gKCppdCktPnJlcXVlc3RQcmlv
cml0eSgpOwogICAgICAgICAgICAgICAgIG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgPSBtZW1vcnlC
eXRlczsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgLT0gcmVuZGVyU3VyZmFjZXNNZW1vcnlCeXRlczsKLSAg
ICAgICAgICAgIHJlc2VydmVkUmVuZGVyU3VyZmFjZXMgPSB0cnVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAoKml0KS0+Ynl0ZXMo
KTsKLSAgICAgICAgaWYgKG5ld01lbW9yeUJ5dGVzID4gbV9tZW1vcnlBdmFpbGFibGVCeXRlcykg
ewotICAgICAgICAgICAgbV9wcmlvcml0eUN1dG9mZiA9ICgqaXQpLT5yZXF1ZXN0UHJpb3JpdHko
KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbV9tZW1vcnlBdmFpbGFibGVCeXRl
cyAtPSAoKml0KS0+Ynl0ZXMoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNpemVf
dCBuZXdNZW1vcnlCeXRlcyA9IG1lbW9yeUJ5dGVzICsgKCppdCktPmJ5dGVzKCk7CisgICAgICAg
ICAgICBpZiAobmV3TWVtb3J5Qnl0ZXMgPiBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzKSB7CisgICAg
ICAgICAgICAgICAgbV9wcmlvcml0eUN1dG9mZiA9ICgqaXQpLT5yZXF1ZXN0UHJpb3JpdHkoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbW9y
eUJ5dGVzID0gbmV3TWVtb3J5Qnl0ZXM7CiAgICAgICAgIH0KLQotICAgICAgICBtZW1vcnlCeXRl
cyA9IG5ld01lbW9yeUJ5dGVzOwogICAgIH0KIAogICAgIC8vIE9ubHkgYWxsb3cgdGV4dHVyZXMg
aWYgdGhleSBhcmUgaGlnaGVyIHRoYW4gdGhlIGN1dG9mZi4gQWxsIHRleHR1cmVzCkBAIC0xMTMs
NyArMTExLDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVU
ZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnkKICAgICBmb3IgKFRleHR1cmVWZWN0
b3I6Oml0ZXJhdG9yIGl0ID0gc29ydGVkVGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0gc29ydGVkVGV4
dHVyZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgYm9vbCBpc0Fib3ZlUHJpb3JpdHlDdXRvZmYg
PSBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0hpZ2hlcigoKml0KS0+cmVxdWVzdFBy
aW9yaXR5KCksIG1fcHJpb3JpdHlDdXRvZmYpOwogICAgICAgICAoKml0KS0+c2V0QWJvdmVQcmlv
cml0eUN1dG9mZihpc0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwotICAgICAgICBpZiAoaXNBYm92ZVBy
aW9yaXR5Q3V0b2ZmKQorICAgICAgICBpZiAoaXNBYm92ZVByaW9yaXR5Q3V0b2ZmICYmICEoKml0
KS0+aXNTZWxmTWFuYWdlZCgpKQogICAgICAgICAgICAgbV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVz
ICs9ICgqaXQpLT5ieXRlcygpOwogICAgIH0KICAgICBBU1NFUlQobV9tZW1vcnlBYm92ZUN1dG9m
ZkJ5dGVzIDw9IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMpOwpAQCAtMTcyLDYgKzE3MCw3IEBAIGJv
b2wgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0TGF0ZShDQ1ByaW9yaXRpemVk
VGV4dHVyZSogdGV4dHVyZSkKIAogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFj
cXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJl
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CisgICAgQVNTRVJUKCF0ZXh0dXJlLT5p
c1NlbGZNYW5hZ2VkKCkpOwogICAgIEFTU0VSVCh0ZXh0dXJlLT5pc0Fib3ZlUHJpb3JpdHlDdXRv
ZmYoKSk7CiAgICAgaWYgKHRleHR1cmUtPmJhY2tpbmcoKSB8fCAhdGV4dHVyZS0+aXNBYm92ZVBy
aW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwNyw2ICszMDYsNyBAQCB2b2lk
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVzdHJveUJhY2tpbmcoQ0NQcmlvcml0aXpl
ZFRleHR1cmU6OkJhY2tpbmcqCiB7CiAgICAgQVNTRVJUKGJhY2tpbmcpOwogICAgIEFTU0VSVCgh
YmFja2luZy0+b3duZXIoKSB8fCAhYmFja2luZy0+b3duZXIoKS0+aXNBYm92ZVByaW9yaXR5Q3V0
b2ZmKCkpOworICAgIEFTU0VSVCghYmFja2luZy0+b3duZXIoKSB8fCAhYmFja2luZy0+b3duZXIo
KS0+aXNTZWxmTWFuYWdlZCgpKTsKICAgICBBU1NFUlQobV9iYWNraW5ncy5maW5kKGJhY2tpbmcp
ICE9IG1fYmFja2luZ3MuZW5kKCkpOwogCiAgICAgaWYgKGFsbG9jYXRvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKaW5kZXggOTgwMjkxYWRiODdi
MjhkYWQ1ZGM4MjNmNjc2M2I0ODYwZWViYTJmYy4uN2QwMjg4MDRmYTAzYWY4ZDVhNTI3NzZkMDQ2
ZDViNTczNGRhNzFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDQ1ByaW9yaXRpemVkVGV4dHVyZSh0aGlzLCBzaXplLCBmb3JtYXQp
KTsKICAgICB9CisKICAgICB+Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKCk7CiAKICAgICAv
LyBGSVhNRSAoaHR0cDovL2NyYnVnLmNvbS8xMzcwOTQpOiBUaGlzIDY0TUIgZGVmYXVsdCBpcyBh
IHN0cmFnZ2xlciBmcm9tIHRoZQpAQCAtNjMsMTIgKzY0LDEyIEBAIHB1YmxpYzoKICAgICAvLyBt
ZW1vcnlVc2VCeXRlcygpIDw9IG1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSBzaG91bGQgYWx3YXlz
IGJlIHRydWUuCiAgICAgc2l6ZV90IG1lbW9yeVVzZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9t
ZW1vcnlVc2VCeXRlczsgfQogICAgIHNpemVfdCBtZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkgY29u
c3QgeyByZXR1cm4gbV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzOyB9Ci0gICAgc2l6ZV90IG1lbW9y
eUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX21heE1lbW9yeUxpbWl0
Qnl0ZXMgLSBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzOyB9CisgICAgc2l6ZV90IG1lbW9yeUZvclNl
bGZNYW5hZ2VkVGV4dHVyZXMoKSBjb25zdCB7IHJldHVybiBtX21heE1lbW9yeUxpbWl0Qnl0ZXMg
LSBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzOyB9CiAKICAgICB2b2lkIHNldE1heE1lbW9yeUxpbWl0
Qnl0ZXMoc2l6ZV90IGJ5dGVzKSB7IG1fbWF4TWVtb3J5TGltaXRCeXRlcyA9IGJ5dGVzOyB9CiAg
ICAgc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX21heE1lbW9y
eUxpbWl0Qnl0ZXM7IH0KIAotICAgIHZvaWQgcHJpb3JpdGl6ZVRleHR1cmVzKHNpemVfdCByZW5k
ZXJTdXJmYWNlc01lbW9yeUJ5dGVzKTsKKyAgICB2b2lkIHByaW9yaXRpemVUZXh0dXJlcygpOwog
ICAgIHZvaWQgY2xlYXJQcmlvcml0aWVzKCk7CiAKICAgICBib29sIHJlcXVlc3RMYXRlKENDUHJp
b3JpdGl6ZWRUZXh0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAKaW5kZXggYThiOTYyNzg3ZDhmMjNm
ZWI2OGZkNzJiYzVmNjc5NTJhNWE2NjBkOC4uMjFlMGE3MTdjMzZjNzllMmEyYzAzMjM5MmVmYThh
MTBlMTJkYWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1By
aW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcApAQCAtOTksNyArOTksNyBAQCBURVNUX0Yo
Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZXF1ZXN0VGV4dHVyZUV4Y2VlZGluZ01heExpbWl0
KQogICAgICAgICB0ZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9yaXR5KDEwMCArIGkpOwogCiAg
ICAgLy8gT25seSBsb3dlciBoYWxmIHNob3VsZCBiZSBhdmFpbGFibGUuCi0gICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7CiAgICAgRVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVz
WzBdLCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1s3
XSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzhd
LCBmYWxzZSkpOwpAQCAtMTEwLDcgKzExMCw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVy
ZVRlc3QsIHJlcXVlc3RUZXh0dXJlRXhjZWVkaW5nTWF4TGltaXQpCiAgICAgICAgIHRleHR1cmVz
W2ldLT5zZXRSZXF1ZXN0UHJpb3JpdHkoMTAwIC0gaSk7CiAKICAgICAvLyBPbmx5IHVwcGVyIGhh
bGYgc2hvdWxkIGJlIGF2YWlsYWJsZS4KLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAg
ICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzBdLCBmYWxzZSkpOwogICAg
IEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbN10sIGZhbHNlKSk7CiAgICAg
RVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzhdLCBmYWxzZSkpOwpAQCAtMTM1
LDcgKzEzNSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIGNoYW5nZU1lbW9y
eUxpbWl0cykKIAogICAgIC8vIFNldCBtYXggbGltaXQgdG8gOCB0ZXh0dXJlcwogICAgIHRleHR1
cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHRleHR1cmVzTWVtb3J5U2l6ZSg4KSk7
Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtYXhUZXh0dXJlczsgKytpKQogICAgICAgICB2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0s
IGZhbHNlKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KGFsbG9jYXRvcigpKTsK
QEAgLTE0NSw3ICsxNDUsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBjaGFu
Z2VNZW1vcnlMaW1pdHMpCiAKICAgICAvLyBTZXQgbWF4IGxpbWl0IHRvIDUgdGV4dHVyZXMKICAg
ICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyh0ZXh0dXJlc01lbW9yeVNp
emUoNSkpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkKICAgICAgICAgRVhQRUNUX0VRKHZhbGlkYXRlVGV4
dHVyZSh0ZXh0dXJlc1tpXSwgZmFsc2UpLCBpIDwgNSk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnJl
ZHVjZU1lbW9yeShhbGxvY2F0b3IoKSk7CkBAIC0xNTUsNyArMTU1LDcgQEAgVEVTVF9GKENDUHJp
b3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5TGltaXRzKQogCiAgICAgLy8gU2V0IG1h
eCBsaW1pdCB0byA0IHRleHR1cmVzCiAgICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxp
bWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXplKDQpKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kpCiAgICAg
ICAgIEVYUEVDVF9FUSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0sIGZhbHNlKSwgaSA8IDQp
OwogICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoYWxsb2NhdG9yKCkpOwpAQCAtMTgx
LDcgKzE4MSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNYW5h
Z2VyUGFydGlhbFVwZGF0ZVRleHR1cmVzKQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1UZXh0dXJlczsgKytpKQogICAgICAgICB0ZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9yaXR5
KDIwMCArIGkpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Cisg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gQWxsb2Nh
dGUgdGV4dHVyZXMgd2hpY2ggYXJlIGN1cnJlbnRseSBoaWdoIHByaW9yaXR5LgogICAgIEVYUEVD
VF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1swXSwgZmFsc2UpKTsKQEAgLTE5Niw3ICsx
OTYsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlclBh
cnRpYWxVcGRhdGVUZXh0dXJlcykKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtVGV4
dHVyZXM7ICsraSkKICAgICAgICAgbW9yZVRleHR1cmVzW2ldLT5zZXRSZXF1ZXN0UHJpb3JpdHko
MTAwICsgaSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBUZXh0dXJl
cyBhcmUgbm93IGJlbG93IGN1dG9mZi4KICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJl
KHRleHR1cmVzWzBdLCBmYWxzZSkpOwpAQCAtMjQyLDcgKzI0Miw3IEBAIFRFU1RfRihDQ1ByaW9y
aXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNYW5hZ2VyUHJpb3JpdGllc0FyZUVxdWFsKQogCiAg
ICAgLy8gU2V0IG1heCBsaW1pdCB0byA4IHRleHR1cmVzCiAgICAgdGV4dHVyZU1hbmFnZXItPnNl
dE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXplKDgpKTsKLSAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIFRoZSB0d28gaGlnaCBwcmlvcml0eSB0ZXh0dXJl
cyBzaG91bGQgYmUgYXZhaWxhYmxlLCBvdGhlcnMgc2hvdWxkIG5vdC4KICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IDI7ICsraSkKQEAgLTI3Myw3ICsyNzMsNyBAQCBURVNUX0YoQ0NQcmlvcml0
aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlckRlc3Ryb3llZEZpcnN0KQogICAgIEVYUEVD
VF9GQUxTRSh0ZXh0dXJlLT5oYXZlQmFja2luZ1RleHR1cmUoKSk7CiAKICAgICB0ZXh0dXJlLT5z
ZXRSZXF1ZXN0UHJpb3JpdHkoMTAwKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAog
ICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlLCBmYWxzZSkpOwogICAgIEVY
UEVDVF9UUlVFKHRleHR1cmUtPmNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpKTsKQEAgLTI5Niw3
ICsyOTYsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTW92ZWRU
b05ld01hbmFnZXIpCiAgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmUtPmhhdmVCYWNraW5nVGV4dHVy
ZSgpKTsKIAogICAgIHRleHR1cmUtPnNldFJlcXVlc3RQcmlvcml0eSgxMDApOwotICAgIHRleHR1
cmVNYW5hZ2VyT25lLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXJP
bmUtPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgRVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0
dXJlKHRleHR1cmUsIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUodGV4dHVyZS0+Y2FuQWNxdWly
ZUJhY2tpbmdUZXh0dXJlKCkpOwpAQCAtMzEyLDcgKzMxMiw3IEBAIFRFU1RfRihDQ1ByaW9yaXRp
emVkVGV4dHVyZVRlc3QsIHRleHR1cmVNb3ZlZFRvTmV3TWFuYWdlcikKIAogICAgIHRleHR1cmUt
PnNldFRleHR1cmVNYW5hZ2VyKHRleHR1cmVNYW5hZ2VyVHdvLmdldCgpKTsKIAotICAgIHRleHR1
cmVNYW5hZ2VyVHdvLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXJU
d28tPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgRVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0
dXJlKHRleHR1cmUsIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUodGV4dHVyZS0+Y2FuQWNxdWly
ZUJhY2tpbmdUZXh0dXJlKCkpOwpAQCAtMzI2LDggKzMyNiwxMCBAQCBURVNUX0YoQ0NQcmlvcml0
aXplZFRleHR1cmVUZXN0LCByZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZU91dHNp
ZGVSb290UwogICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlcyA9IDg7CiAgICAgT3duUHRyPEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBjcmVhdGVNYW5hZ2Vy
KG1heFRleHR1cmVzKTsKIAotICAgIC8vIEhhbGYgb2YgdGhlIG1lbW9yeSBpcyB0YWtlbiBieSBz
dXJmYWNlcy4KLSAgICBjb25zdCBzaXplX3QgcmVuZGVyU3VyZmFjZXNCeXRlcyA9IHRleHR1cmVz
TWVtb3J5U2l6ZSg0KTsKKyAgICAvLyBIYWxmIG9mIHRoZSBtZW1vcnkgaXMgdGFrZW4gYnkgc3Vy
ZmFjZXMgKHdpdGggaGlnaCBwcmlvcml0eSBwbGFjZS1ob2xkZXIpCisgICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlPiByZW5kZXJTdXJmYWNlUGxhY2VIb2xkZXIgPSB0ZXh0dXJlTWFuYWdl
ci0+Y3JlYXRlVGV4dHVyZShtX3RleHR1cmVTaXplLCBtX3RleHR1cmVGb3JtYXQpOworICAgIHJl
bmRlclN1cmZhY2VQbGFjZUhvbGRlci0+c2V0VG9TZWxmTWFuYWdlZE1lbW9yeVBsYWNlaG9sZGVy
KHRleHR1cmVzTWVtb3J5U2l6ZSg0KSk7CisgICAgcmVuZGVyU3VyZmFjZVBsYWNlSG9sZGVyLT5z
ZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnJlbmRlclN1cmZhY2VQcmlv
cml0eSgpKTsKIAogICAgIC8vIENyZWF0ZSB0ZXh0dXJlcyB0byBmaWxsIG91ciBtZW1vcnkgbGlt
aXQuCiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiB0ZXh0dXJlc1ttYXhUZXh0dXJl
c107CkBAIC0zNDAsNyArMzQyLDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwg
cmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVPdXRzaWRlUm9vdFMKICAgICAgICAg
dGV4dHVyZXNbaV0tPnNldFJlcXVlc3RQcmlvcml0eSgxMDAgKyBpKTsKIAogICAgIC8vIE9ubHkg
bG93ZXIgaGFsZiBzaG91bGQgYmUgYXZhaWxhYmxlLgotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMocmVuZGVyU3VyZmFjZXNCeXRlcyk7CisgICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0
ZXh0dXJlc1swXSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4
dHVyZXNbM10sIGZhbHNlKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0
dXJlc1s0XSwgZmFsc2UpKTsKQEAgLTM1MSwxNCArMzUzLDE0IEBAIFRFU1RfRihDQ1ByaW9yaXRp
emVkVGV4dHVyZVRlc3QsIHJlbmRlclN1cmZhY2VzUmVkdWNlTWVtb3J5QXZhaWxhYmxlT3V0c2lk
ZVJvb3RTCiAgICAgICAgIHRleHR1cmVzW2ldLT5zZXRSZXF1ZXN0UHJpb3JpdHkoMTAwIC0gaSk7
CiAKICAgICAvLyBPbmx5IHVwcGVyIGhhbGYgc2hvdWxkIGJlIGF2YWlsYWJsZS4KLSAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKHJlbmRlclN1cmZhY2VzQnl0ZXMpOworICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBFWFBFQ1RfRkFMU0Uo
dmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzBdLCBmYWxzZSkpOwogICAgIEVYUEVDVF9GQUxTRSh2
YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbM10sIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUodmFs
aWRhdGVUZXh0dXJlKHRleHR1cmVzWzRdLCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlk
YXRlVGV4dHVyZSh0ZXh0dXJlc1s3XSwgZmFsc2UpKTsKIAogICAgIEVYUEVDVF9FUSh0ZXh0dXJl
c01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkp
OwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5t
ZW1vcnlGb3JSZW5kZXJTdXJmYWNlc0J5dGVzKCkpOworICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01l
bW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JTZWxmTWFuYWdlZFRleHR1cmVz
KCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4
dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKICAgICB0ZXh0dXJlTWFu
YWdlci0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOwpAQCAtMzY5LDggKzM3MSwxMCBAQCBU
RVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9y
eUF2YWlsYWJsZUZvclJlcXVlc3RMYQogICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlcyA9IDg7
CiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIg
PSBjcmVhdGVNYW5hZ2VyKG1heFRleHR1cmVzKTsKIAotICAgIC8vIEhhbGYgb2YgdGhlIG1lbW9y
eSBpcyB0YWtlbiBieSBzdXJmYWNlcy4KLSAgICBjb25zdCBzaXplX3QgcmVuZGVyU3VyZmFjZXNC
eXRlcyA9IHRleHR1cmVzTWVtb3J5U2l6ZSg0KTsKKyAgICAvLyBIYWxmIG9mIHRoZSBtZW1vcnkg
aXMgdGFrZW4gYnkgc3VyZmFjZXMgKHdpdGggaGlnaCBwcmlvcml0eSBwbGFjZS1ob2xkZXIpCisg
ICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiByZW5kZXJTdXJmYWNlUGxhY2VIb2xkZXIg
PSB0ZXh0dXJlTWFuYWdlci0+Y3JlYXRlVGV4dHVyZShtX3RleHR1cmVTaXplLCBtX3RleHR1cmVG
b3JtYXQpOworICAgIHJlbmRlclN1cmZhY2VQbGFjZUhvbGRlci0+c2V0VG9TZWxmTWFuYWdlZE1l
bW9yeVBsYWNlaG9sZGVyKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSk7CisgICAgcmVuZGVyU3VyZmFj
ZVBsYWNlSG9sZGVyLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnJl
bmRlclN1cmZhY2VQcmlvcml0eSgpKTsKIAogICAgIC8vIENyZWF0ZSB0ZXh0dXJlcyB0byBmaWxs
IG91ciBtZW1vcnkgbGltaXQuCiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiB0ZXh0
dXJlc1ttYXhUZXh0dXJlc107CkBAIC0zODMsNyArMzg3LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6
ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVGb3JSZXF1
ZXN0TGEKICAgICAgICAgdGV4dHVyZXNbaV0tPnNldFJlcXVlc3RQcmlvcml0eSgxMDApOwogCiAg
ICAgLy8gVGhlIGZpcnN0IGZvdXIgdG8gYmUgcmVxdWVzdGVkIGxhdGUgd2lsbCBiZSBhdmFpbGFi
bGUuCi0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcyhyZW5kZXJTdXJmYWNl
c0J5dGVzKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kpCiAgICAgICAgIEVYUEVD
VF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0sIGZhbHNlKSk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyBpICs9IDIpCkBAIC0zOTIsNyArMzk2LDcg
QEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VN
ZW1vcnlBdmFpbGFibGVGb3JSZXF1ZXN0TGEKICAgICAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRl
VGV4dHVyZSh0ZXh0dXJlc1tpXSwgdHJ1ZSkpOwogCiAgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVt
b3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7Ci0g
ICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9y
eUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSk7CisgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5
U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclNlbGZNYW5hZ2VkVGV4dHVyZXMoKSk7
CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJl
TWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKIAogICAgIHRleHR1cmVNYW5hZ2Vy
LT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CkBAIC00MDMsOCArNDA3LDEwIEBAIFRFU1Rf
RihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHdoZW5SZW5kZXJTdXJmYWNlTm90QXZhaWxhYmxl
VGV4dHVyZXNBbHNvTm90QXZhCiAgICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVzID0gODsKICAg
ICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNy
ZWF0ZU1hbmFnZXIobWF4VGV4dHVyZXMpOwogCi0gICAgLy8gSGFsZiBvZiB0aGUgbWVtb3J5IGlz
IHRha2VuIGJ5IHN1cmZhY2VzLgotICAgIGNvbnN0IHNpemVfdCByZW5kZXJTdXJmYWNlc0J5dGVz
ID0gdGV4dHVyZXNNZW1vcnlTaXplKDQpOworICAgIC8vIEhhbGYgb2YgdGhlIG1lbW9yeSBpcyB0
YWtlbiBieSBzdXJmYWNlcyAod2l0aCBoaWdoIHByaW9yaXR5IHBsYWNlLWhvbGRlcikKKyAgICBP
d25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHJlbmRlclN1cmZhY2VQbGFjZUhvbGRlciA9IHRl
eHR1cmVNYW5hZ2VyLT5jcmVhdGVUZXh0dXJlKG1fdGV4dHVyZVNpemUsIG1fdGV4dHVyZUZvcm1h
dCk7CisgICAgcmVuZGVyU3VyZmFjZVBsYWNlSG9sZGVyLT5zZXRUb1NlbGZNYW5hZ2VkTWVtb3J5
UGxhY2Vob2xkZXIodGV4dHVyZXNNZW1vcnlTaXplKDQpKTsKKyAgICByZW5kZXJTdXJmYWNlUGxh
Y2VIb2xkZXItPnNldFJlcXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cmVuZGVy
U3VyZmFjZVByaW9yaXR5KCkpOwogCiAgICAgLy8gQ3JlYXRlIHRleHR1cmVzIHRvIGZpbGwgb3Vy
IG1lbW9yeSBsaW1pdC4KICAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHRleHR1cmVz
W21heFRleHR1cmVzXTsKQEAgLTQxOCw3ICs0MjQsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRl
eHR1cmVUZXN0LCB3aGVuUmVuZGVyU3VyZmFjZU5vdEF2YWlsYWJsZVRleHR1cmVzQWxzb05vdEF2
YQogICAgIGZvciAoc2l6ZV90IGkgPSA2OyBpIDwgODsgKytpKQogICAgICAgICB0ZXh0dXJlc1tp
XS0+c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjp2aXNpYmxlUHJpb3Jp
dHkoZmFsc2UpKTsKIAotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMocmVu
ZGVyU3VyZmFjZXNCeXRlcyk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygpOwogCiAgICAgLy8gVW5hYmxlIHRvIHJlcXVlc3RMYXRlIHRleHR1cmVzIGluIHRoZSBjaGls
ZCBzdXJmYWNlLgogICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbNl0s
IHRydWUpKTsKQEAgLTQyOSw3ICs0MzUsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVU
ZXN0LCB3aGVuUmVuZGVyU3VyZmFjZU5vdEF2YWlsYWJsZVRleHR1cmVzQWxzb05vdEF2YQogICAg
ICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0sIGZhbHNlKSk7CiAK
ICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDYpLCB0ZXh0dXJlTWFuYWdlci0+bWVt
b3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXpl
KDIpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXNCeXRlcygpKTsKKyAg
ICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDIpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5
Rm9yU2VsZk1hbmFnZWRUZXh0dXJlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXIt
Pm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVz
KCkpOwogCiAgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9t
aXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCmluZGV4IDMxY2Y2NzI1ZTEzMjg0ZDA0YjdkZmEyNzRjODNiZWY3NWM5NmYw
NmEuLmYxNTJhYjRmYmU3ODkxZTA1MzY3OWViZjMxMjI2NDc3ODQwY2RkNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoRGlydHlUaWxlcykKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
MCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgbGF5
ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAw
KTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtMTE5LDcgKzExOSw3IEBAIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBsYXllci0+aW52YWxpZGF0
ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRo
ZW4gb25seSB1cGRhdGUgb25lIG9mIHRoZW0uCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0
aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAg
ICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAx
MDApLCAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwog
CkBAIC0xNDQsNyArMTQ0LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hP
Y2NsdWRlZERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMo
cHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSwgJm9jY2x1ZGVkKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtMTg4LDcgKzE4OCw3IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogICAgIGxh
eWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCiAg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
dXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVz
KCk7CkBAIC0yMTEsNyArMjExLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1
c2hEZWxldGVkVGlsZXMpCiAKICAgICAvLyBUaGlzIHNob3VsZCByZWNyZWF0ZSBhbmQgdXBkYXRl
IHRoZSBkZWxldGVkIHRleHR1cmVzLgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhw
cmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwg
MCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOwpAQCAtMjM5LDcgKzIzOSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250
ZW50UmVjdChjb250ZW50UmVjdCk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMo
cHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAgICAg
dXBkYXRlVGV4dHVyZXMoKTsKQEAgLTI1NSw3ICsyNTUsNyBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgIC8vIEZvciB0aGUgbmV4dCBmb3Vy
IHVwZGF0ZXMsIHdlIHNob3VsZCBkZXRlY3Qgd2Ugc3RpbGwgbmVlZCBpZGxlIHBhaW50aW5nLgog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgIGxheWVyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgICAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7CiAKICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0
ZXIsIHZpc2libGVSZWN0LCAwKTsKICAgICAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRs
ZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC0zMDcsNyArMzA3LDcgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIC8vIFBh
aW50IGEgc2luZ2xlIHRpbGUgaW4gbGF5ZXIyIHNvIHRoYXQgaXQgd2lsbCBpZGxlIHBhaW50Lgog
ICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAg
ICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCBsYXllclJlY3QsIDApOwogICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QodXBk
YXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogCkBAIC0zMjUsNyArMzI1LDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFp
bGVkKQogICAgIC8vIE5vdyBpZGxlIHBhaW50IGxheWVyMi4gV2UgYXJlIGdvaW5nIHRvIHJ1biBv
dXQgb2YgbWVtb3J5IHRob3VnaCEKICAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKHBy
aW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
MCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVy
Mi0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDAp
OwogCiAgICAgLy8gT2ggd2VsbCwgY29tbWl0IHRoZSBmcmFtZSBhbmQgcHVzaC4KQEAgLTM0NSw3
ICszNDUsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJ
ZGxlUGFpbnRGYWlsZWQpCiAgICAgLy8gTm93IGlmIGxheWVyMiBiZWNvbWVzIGZ1bGx5IHZpc2li
bGUsIHdlIHNob3VsZCBiZSBhYmxlIHRvIHBhaW50IGl0IGFuZCBwdXNoIHZhbGlkIHRleHR1cmVz
LgogICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
ICAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0g
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVj
dCh1cGRhdGVyLCBsYXllcjJSZWN0LCAwKTsKICAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIGxheWVyUmVjdCwgMCk7CiAKQEAgLTM3OCw3ICszNzgsNyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludGVkT2NjbHVkZWRUaWxlcykKICAgICBs
YXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKIAog
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKICAgICB1cGRhdGVU
ZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7
CkBAIC00MDMsNyArNDAzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hU
aWxlc01hcmtlZERpcnR5RHVyaW5nUGFpbnQpCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxh
eWVyLmdldCgpKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNh
bGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Cisg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRh
dGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAg
dXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwu
Z2V0KCkpOwpAQCAtNDMyLDcgKzQzMiw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRPbk5leHRMYXllcikKIAogICAg
IGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICBs
YXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+
cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKIApAQCAtNDcwLDcgKzQ3MCw3IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5
RHVyaW5nUGFpbnRPblByZXZpb3VzTGF5CiAKICAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0
aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGll
cyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4
dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAg
ICAgLy8gSW52YWxpZGF0ZSBhIHRpbGUgb24gbGF5ZXIyCiAgICAgbGF5ZXIxLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwg
NTApLCBsYXllcjIuZ2V0KCkpOwpAQCAtNTA4LDcgKzUwOCw3IEBAIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBsYXllci0+aW52YWxpZGF0
ZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwog
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAK
ICAgICAvLyBJZGxlLXBhaW50aW5nIHNob3VsZCBzZWUgbm8gbW9yZSBwcmlvcml0eSB0aWxlcyBm
b3IgcGFpbnRpbmcuCkBAIC01MjEsNyArNTIxLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+
aGFzVGlsZUF0KDEsIDEpKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
MCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAKICAgICAvLyBX
ZSBzaG91bGRuJ3Qgc2lnbmFsIHdlIG5lZWQgYW5vdGhlciBpZGxlIHBhaW50LgpAQCAtNTQ4LDcg
KzU0OCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJvU2l6
ZWRMYXllcikKICAgICAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50UmVj
dCk7CiAKICAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3Vs
YXRvcik7Ci0gICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Cisg
ICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgICAgICAv
LyBFbXB0eSBsYXllcnMgZG9uJ3QgcGFpbnQgb3IgaWRsZS1wYWludC4KICAgICAgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKQEAgLTU4Niw3ICs1
ODYsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJs
ZUxheWVycykKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgICAvLyBQ
YWludCAvIGlkbGUtcGFpbnQuCiAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhw
cmlvcml0eUNhbGN1bGF0b3IpOwotICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKDApOworICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7
CiAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwg
MCk7CiAKICAgICAgICAgLy8gTm9uLXZpc2libGUgbGF5ZXJzIGRvbid0IG5lZWQgaWRsZSBwYWlu
dC4KQEAgLTYzNiw3ICs2MzYsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRs
ZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGluZ0xheWVycykKICAgICAgICAgICAgIGxheWVyLT5pbnZh
bGlkYXRlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogCiAgICAgICAgICAgICBsYXllci0+c2V0
VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICAgICAgICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgICAgICAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAgICAgICAgIC8vIElmIGlkbGVQYWlu
dFJlY3QgZ2l2ZXMgYmFjayBhIG5vbi1lbXB0eSByZXN1bHQgdGhlbiB3ZSBzaG91bGQgcGFpbnQg
aXQuIE90aGVyd2lzZSwKICAgICAgICAgICAgIC8vIHdlIHNob3VkIHBhaW50IG5vdGhpbmcuCkBA
IC02NDgsNyArNjQ4LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWlu
dE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAgICAgICAgICAgICAvLyBJZiB0aGUgbGF5ZXIg
aXMgdG8gYmUgcHJlcGFpbnRlZCBhdCBhbGwsIHRoZW4gYWZ0ZXIgZm91ciB1cGRhdGVzIHdlIHNo
b3VsZCBoYXZlIHRoZSBvdXRlciByb3cvY29sdW1ucyBwYWludGVkLgogICAgICAgICAgICAgZm9y
IChpbnQgayA9IDA7IGsgPCA0OyArK2spIHsKICAgICAgICAgICAgICAgICBsYXllci0+c2V0VGV4
dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICAgICAgICAgICAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgICAgICAgICAgICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgICAgICAgICAgICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAgICAgICAgICAg
ICAgICAgdXBkYXRlVGV4dHVyZXMoKTsKQEAgLTY2MSw3ICs2NjEsNyBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGluZ0xheWVycykKICAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3Qp
KTsKICAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgNDsgKytrKSB7CiAgICAgICAgICAg
ICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0g
ICAgICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAg
ICAgICAgICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAg
ICAgICAgICAgICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJl
Y3QsIDApOwogICAgICAgICAgICAgICAgIHVwZGF0ZVRleHR1cmVzKCk7CkBAIC02OTAsNyArNjkw
LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFy
ZSkKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAy
MDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIHVwZGF0
ZXIudXBkYXRlKGNjQ29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAm
ZmFrZVVwbG9hZGVyLCAxMDAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllcklt
cGwuZ2V0KCkpOwpAQCAtNzQwLDE0ICs3NDAsMTQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAgICBs
YXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRCb3VuZHMpOwogCiAgICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNv
bnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAw
LCAzMDAsIDMwMCAqIDAuOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogICAgIHVwZGF0ZVRleHR1
cmVzKCk7CiAKICAgICAvLyBBZnRlciB0aGUgdGlsZXMgYXJlIHVwZGF0ZWQgb25jZSwgYW5vdGhl
ciBpbnZhbGlkYXRlIG9ubHkgbmVlZHMgdG8gdXBkYXRlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVy
LgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwot
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVu
dFJlY3QoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0
ZXIsIGNvbnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVj
dChsYXllckJvdW5kcyksIGxheWVyLT51cGRhdGVSZWN0KCkpOwpAQCAtNzU3LDcgKzc1Nyw3IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRl
bnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgSW50UmVjdCBwYXJ0aWFsRGFtYWdlKDMwLCAxMDAsIDEw
LCAxMCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChwYXJ0aWFsRGFtYWdlKTsK
ICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
dXBkYXRlciwgY29udGVudEJvdW5kcywgMCk7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxv
YXRSZWN0KDQ1LCA4MCwgMTUsIDgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIH0KQEAgLTc3OSw3
ICs3NzksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0
aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogCiAgICAgLy8gUHVzaCB0aGUgdGlsZXMgdG8g
dGhlIGltcGwgc2lkZSBhbmQgY2hlY2sgdGhhdCB0aGVyZSBpcyBleGFjdGx5IG9uZS4KICAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRl
ciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAg
ICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKQEAgLTc5Niw3ICs3
OTYsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9u
V2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogCiAgICAgLy8gVGhlIGltcGwgc2lkZSBzaG91bGQg
Z2V0IDJ4MiB0aWxlcyBub3cuCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9y
aXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygw
KTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMjAwLCAyMDApLCAwKTsK
ICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
SW1wbC5nZXQoKSk7CkBAIC04MTAsNyArODEwLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICBs
YXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0
ZXIsIEludFJlY3QoMSwgMCwgMCwgMSksIDApOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygp
OwogCiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICBF
WFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwpAQCAtODgwLDcgKzg4MCw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCByZXNpemVUb1NtYWxsZXIpCiAgICAg
bGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSk7CiAK
ICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
dXBkYXRlciwgSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOwogCiAgICAgbGF5ZXItPnNldEJv
dW5kcyhJbnRTaXplKDIwMCwgMjAwKSk7CkBAIC04OTksNyArODk5LDcgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIGh1Z2VMYXllclVwZGF0ZUNyYXNoKQogCiAgICAgLy8gRW5zdXJl
IG5vIGNyYXNoIGZvciBib3VuZHMgd2hlcmUgc2l6ZSAqIHNpemUgd291bGQgb3ZlcmZsb3cgYW4g
aW50LgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3Ip
OwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7CiB9CiAKQEAgLTEwMzks
NyArMTAzOSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRX
aXRob3V0T2NjbHVzaW9uKQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHBy
aW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5
ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAw
KTsKICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnBy
ZXBhcmVSZWN0Q291bnQoKSk7CiB9CkBAIC0xMDYwLDcgKzEwNjAsNyBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikKICAgICBsYXllci0+
aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKIAogICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVy
LCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYt
MywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7
CiAKQEAgLTExMDgsNyArMTEwOCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0
aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiAgICAgbGF5
ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAKICAg
ICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2Vy
LT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBk
YXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDM2MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VR
KDI0LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50
KCkpOwogCkBAIC0xMTIzLDcgKzExMjMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAg
IGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDM1MCkpOwog
ICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkp
OwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwot
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzUwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBF
Q1RfRVEoMjQtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0
Q291bnQoKSk7CiAKQEAgLTExMzgsNyArMTEzOCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMp
CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgMzQw
KSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRv
cik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAzNDApLCAmb2NjbHVkZWQpOwogICAg
IEVYUEVDVF9FUSgyNC02LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZVJlY3RDb3VudCgpKTsKIApAQCAtMTE2Myw3ICsxMTYzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJbnZhbGlkYXRpb24pCiAgICAgbGF5
ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAg
bGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9F
USgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3Vu
dCgpKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtMTIwMyw3ICsxMjAzLDcgQEAgVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRUcmFu
c2Zvcm1zKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2lu
dCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCkBAIC0xMjMxLDcgKzEyMzEsNyBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lv
bkFuZFNjYWxpbmcpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KElu
dFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVu
dFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygp
OwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYw
MCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICAvLyBUaGUgY29udGVudCBpcyBoYWxmIHRoZSBzaXpl
IG9mIHRoZSBsYXllciAoc28gdGhlIG51bWJlciBvZiB0aWxlcyBpcyBmZXdlcikuCiAgICAgLy8g
SW4gdGhpcyBjYXNlLCB0aGUgY29udGVudCBpcyAzMDB4MzAwLCBhbmQgc2luY2UgdGhlIHRpbGUg
c2l6ZSBpcyAxMDAsIHRoZQpAQCAtMTI1MSw3ICsxMjUxLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogICAgIGxh
eWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91
bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwg
NjAwLCA2MDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7
CiAgICAgRVhQRUNUX0VRKDktMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnBy
ZXBhcmVSZWN0Q291bnQoKSk7CiAKQEAgLTEyNzEsNyArMTI3MSw3IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAg
ICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXIt
PmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5
Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsK
KyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVk
ZWQpOwogICAgIEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5wcmVwYXJlUmVjdENvdW50KCkpOwogCkBAIC0xMzAwLDcgKzEzMDAsNyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgbGF5
ZXItPnNldERyYXdPcGFjaXR5KDEpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAg
ICAvLyBJZiB0aGUgbGF5ZXIgZG9lc24ndCBwYWludCBvcGFxdWUgY29udGVudCwgdGhlbiB0aGUg
dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24gc2hvdWxkIGJlIGVtcHR5LgogICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsK
QEAgLTEzOTMsNyArMTM5Myw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwaXhl
bHNQYWludGVkTWV0cmljcykKICAgICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7CiAKICAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIEludmFsaWRhdGVzIGFuZCBwYWludHMgdGhl
IHdob2xlIGxheWVyLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRP
cGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKQEAgLTE2MzYsNyArMTYzNiw3IEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBub25JbnRlZ2VyQ29udGVudHNTY2FsZUlzTm90RGlzdG9y
dGVkRHVyaW5nUGFpbnQpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChjb250ZW50
UmVjdCk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMoY2FsY3VsYXRvcik7Ci0g
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBVcGRhdGUgdGhlIHdob2xlIHRp
bGUuCiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAw
KTsKQEAgLTE2NjksNyArMTY2OSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBu
b25JbnRlZ2VyQ29udGVudHNTY2FsZUlzTm90RGlzdG9ydGVkRHVyaW5nSW52YWxpCiAgICAgbGF5
ZXItPnNldFZpc2libGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKICAgICBsYXllci0+c2V0
VGV4dHVyZVByaW9yaXRpZXMoY2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KCk7CiAKICAgICAvLyBVcGRhdGUgdGhlIHdob2xlIHRpbGUuCiAgICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152390</attachid>
            <date>2012-07-13 18:01:05 -0700</date>
            <delta_ts>2012-07-16 08:02:21 -0700</delta_ts>
            <desc>rebase_address_feedback</desc>
            <filename>bug-91177-20120713180105.patch</filename>
            <type>text/plain</type>
            <size>48022</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJlMjZjY2EyZDM2Y2Mw
ZDBhZGE2NDY0ZDNjOGRjYzY1NmFiYmI3Ny4uZTE2MDA3MjJhZTRiZDQxNGVkMmEyNzkzZmU1NzM3
NzQ2NDc0YzQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA3LTEzICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCAn
c2VsZi1tYW5hZ2VkJyBvcHRpb24gdG8gQ0NQcmlvcml0aXplZFRleHR1cmUgdG8gZW5hYmxlIHJl
bmRlci1zdXJmYWNlIGFuZCBjYW52YXMgdXNlIGNhc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTExNzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1ha2VzIHRoZSByZW5kZXItc3VyZmFjZSBt
ZW1vcnkgdXNlIGNhc2UgZ2VuZXJpYyBhcyAnc2VsZi1tYW5hZ2VkJyB0ZXh0dXJlcywKKyAgICAg
ICAgYXMgdGhpcyB1c2UgY2FzZSBpcyBwb3BwaW5nIHVwIGluIG90aGVyIHBsYWNlcyAoZWcuIGNh
bnZhc2VzKS4gSXQncyBleGFjdGx5IHRoZQorICAgICAgICBzYW1lIGlkZWEgZXhjZXB0IHdlIGNh
biBoYXZlIGFzIG1hbnkgcGxhY2UtaG9sZGVycyBhcyB3ZSB3YW50IGF0IGFyYml0cmFyeQorICAg
ICAgICBwcmlvcml0aWVzLgorCisgICAgICAgIFRoaXMgYWxyZWFkeSB0ZXN0ZWQgYnkgdGhlIHJl
bmRlciBzdXJmYWNlIHVuaXQgdGVzdHMgd2hpY2ggbm93IGFsc28gdXNlIHRoZSAKKyAgICAgICAg
Z2VuZXJpYyBwbGFjZWhvbGRlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6c2V0UHJpb3JpdGllc0ZvclN1cmZhY2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRQcmlvcml0aWVzRm9yTGF5ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y2FsY3VsYXRlTWVtb3J5Rm9yUmVuZGVy
U3VyZmFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwYWludExheWVy
Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6Q0NQcmlvcml0aXplZFRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OnNldFRvU2VsZk1hbmFn
ZWRNZW1vcnlQbGFjZWhvbGRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaDoKKyAgICAgICAgKENDUHJpb3JpdGl6ZWRUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpzZXRJc1NlbGZN
YW5hZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjppc1NlbGZN
YW5hZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpwcmlvcml0aXplVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ry
b3lCYWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
Om1lbW9yeUZvclNlbGZNYW5hZ2VkVGV4dHVyZXMpOgorCiAyMDEyLTA3LTEzICBQaWVycmUgUm9z
c2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgogCiAgICAgICAgIFtRdF0gSW1wcm92ZSB0aGUg
bW9iaWxlIHRoZW1lIHNsaWdodGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZlZjdk
OGI5N2ZiZTBjMDdjYzk5NWVkZGVmYTg4ZDAzMmQ1MDU4Y2UuLjFhNmY0OTM2MGJjNDIwMmQ3ODVl
YzMyOGE3Zjc0MTVhMjcxNjI4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMDctMTMgIEVyaWMgUGVubmVyICA8ZXBlbm5lckBnb29nbGUuY29tPgor
CisgICAgICAgIFtjaHJvbWl1bV0gQWRkICdzZWxmLW1hbmFnZWQnIG9wdGlvbiB0byBDQ1ByaW9y
aXRpemVkVGV4dHVyZSB0byBlbmFibGUgcmVuZGVyLXN1cmZhY2UgYW5kIGNhbnZhcyB1c2UgY2Fz
ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVz
dHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6VEVTVF9GKToK
KyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKwogMjAxMi0wNy0x
MyAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhl
ZERCOiBSZS1lbmFibGUgaW5kZXhlZGRiIGluIHRlc3Rfc2hlbGwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCmluZGV4IDFhNDM1OWVkYmQ0Njk3NzlhMDdmNDBmZDYwOWRhMmU3MmY4M2M3
YTQuLmRhMmNiMzJhMGM2YTEwOTBlN2NmNWY1ZjIwYzY1NDg5MDc5ODViMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMTUyLDYgKzE1Miw3IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgbV9zZXR0aW5ncy5tYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXMgPSBtaW4obV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0
ZXMsIG1fcHJveHktPm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpKTsKIAogICAgIG1fY29udGVu
dHNUZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDAs
IG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7Cisg
ICAgbV9zdXJmYWNlTWVtb3J5UGxhY2Vob2xkZXIgPSBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIt
PmNyZWF0ZVRleHR1cmUoSW50U2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAKICAg
ICBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCA9IHRydWU7CiAKQEAgLTQ4OSw4ICs0OTAsNiBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RM
YXllciwgQ0NUZXh0dXJlVXBkYXRlciYgdQogICAgIC8vIFJlc2V0IHBhcnRpYWwgdGV4dHVyZSB1
cGRhdGUgcmVxdWVzdHMuCiAgICAgbV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzID0gMDsK
IAotICAgIHByaW9yaXRpemVUZXh0dXJlcyh1cGRhdGVMaXN0KTsKLQogICAgIGJvb2wgbmVlZE1v
cmVVcGRhdGVzID0gcGFpbnRMYXllckNvbnRlbnRzKHVwZGF0ZUxpc3QsIHVwZGF0ZXIpOwogICAg
IGlmIChtX3RyaWdnZXJJZGxlVXBkYXRlcyAmJiBuZWVkTW9yZVVwZGF0ZXMpCiAgICAgICAgIHNl
dE5lZWRzQ29tbWl0KCk7CkBAIC00OTksMTMgKzQ5OCwyMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllciwgQ0NUZXh0dXJlVXBkYXRl
ciYgdQogICAgICAgICB1cGRhdGVMaXN0W2ldLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKIH0KIAot
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByaW9yaXRpemVUZXh0dXJlcyhjb25zdCBMYXllckxpc3Qm
IHVwZGF0ZUxpc3QpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0UHJpb3JpdGllc0ZvclN1cmZh
Y2VzKHNpemVfdCBzdXJmYWNlTWVtb3J5Qnl0ZXMpCit7CisgICAgLy8gU3VyZmFjZXMgaGF2ZSBh
IHBsYWNlIGhvbGRlciBmb3IgdGhlaXIgbWVtb3J5IHNpbmNlIHRoZXkgYXJlIG1hbmFnZWQKKyAg
ICAvLyBpbmRlcGVuZGFudGx5IGJ1dCBzaG91bGQgc3RpbGwgYmUgdHJhY2tlZCBhbmQgcmVkdWNl
IG90aGVyIG1lbW9yeSB1c2FnZS4KKyAgICBtX3N1cmZhY2VNZW1vcnlQbGFjZWhvbGRlci0+c2V0
VGV4dHVyZU1hbmFnZXIobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLmdldCgpKTsKKyAgICBtX3N1
cmZhY2VNZW1vcnlQbGFjZWhvbGRlci0+c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxj
dWxhdG9yOjpyZW5kZXJTdXJmYWNlUHJpb3JpdHkoKSk7CisgICAgbV9zdXJmYWNlTWVtb3J5UGxh
Y2Vob2xkZXItPnNldFRvU2VsZk1hbmFnZWRNZW1vcnlQbGFjZWhvbGRlcihzdXJmYWNlTWVtb3J5
Qnl0ZXMpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0UHJpb3JpdGllc0ZvckxheWVy
cyhjb25zdCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250
IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgogICAgIHR5
cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25z
OjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAotICAgIG1fY29udGVudHNUZXh0
dXJlTWFuYWdlci0+Y2xlYXJQcmlvcml0aWVzKCk7Ci0KICAgICBDQ1ByaW9yaXR5Q2FsY3VsYXRv
ciBjYWxjdWxhdG9yOwogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJh
dG9yVHlwZTo6ZW5kKCZ1cGRhdGVMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUg
aXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmdXBkYXRlTGlzdCk7IGl0ICE9IGVuZDsg
KytpdCkgewpAQCAtNTE4LDcgKzUyNCwyNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJpb3Jp
dGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCkKICAgICAgICAgICAgICAg
ICBpdC0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhj
YWxjdWxhdG9yKTsKICAgICAgICAgfQogICAgIH0KK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnByaW9yaXRpemVUZXh0dXJlcyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxp
c3QsIENDT3ZlcmRyYXdNZXRyaWNzJiBtZXRyaWNzKQoreworICAgIG1fY29udGVudHNUZXh0dXJl
TWFuYWdlci0+Y2xlYXJQcmlvcml0aWVzKCk7CisKKyAgICBzaXplX3QgbWVtb3J5Rm9yUmVuZGVy
U3VyZmFjZXNNZXRyaWMgPSBjYWxjdWxhdGVNZW1vcnlGb3JSZW5kZXJTdXJmYWNlcyhyZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKKworICAgIHNldFByaW9yaXRpZXNGb3JMYXllcnMocmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCk7CisgICAgc2V0UHJpb3JpdGllc0ZvclN1cmZhY2VzKG1lbW9yeUZvclJl
bmRlclN1cmZhY2VzTWV0cmljKTsKIAorICAgIG1ldHJpY3MuZGlkVXNlQ29udGVudHNUZXh0dXJl
TWVtb3J5Qnl0ZXMobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5
dGVzKCkpOworICAgIG1ldHJpY3MuZGlkVXNlUmVuZGVyU3VyZmFjZVRleHR1cmVNZW1vcnlCeXRl
cyhtZW1vcnlGb3JSZW5kZXJTdXJmYWNlc01ldHJpYyk7CisKKyAgICBtX2NvbnRlbnRzVGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOworfQorCitzaXplX3QgQ0NMYXllclRyZWVI
b3N0OjpjYWxjdWxhdGVNZW1vcnlGb3JSZW5kZXJTdXJmYWNlcyhjb25zdCBMYXllckxpc3QmIHVw
ZGF0ZUxpc3QpCit7CiAgICAgc2l6ZV90IHJlYWRiYWNrQnl0ZXMgPSAwOwogICAgIHNpemVfdCBt
YXhCYWNrZ3JvdW5kVGV4dHVyZUJ5dGVzID0gMDsKICAgICBzaXplX3QgY29udGVudHNUZXh0dXJl
Qnl0ZXMgPSAwOwpAQCAtNTM5LDkgKzU2Myw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpwcmlv
cml0aXplVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogICAgICAgICBpZiAo
IXJlYWRiYWNrQnl0ZXMpCiAgICAgICAgICAgICByZWFkYmFja0J5dGVzID0gQ0NUZXh0dXJlOjpt
ZW1vcnlTaXplQnl0ZXMobV9kZXZpY2VWaWV3cG9ydFNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBKTsKICAgICB9Ci0gICAgc2l6ZV90IHJlbmRlclN1cmZhY2VzQnl0ZXMgPSByZWFkYmFja0J5
dGVzICsgbWF4QmFja2dyb3VuZFRleHR1cmVCeXRlcyArIGNvbnRlbnRzVGV4dHVyZUJ5dGVzOwot
Ci0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMocmVuZGVy
U3VyZmFjZXNCeXRlcyk7CisgICAgcmV0dXJuIHJlYWRiYWNrQnl0ZXMgKyBtYXhCYWNrZ3JvdW5k
VGV4dHVyZUJ5dGVzICsgY29udGVudHNUZXh0dXJlQnl0ZXM7CiB9CiAKIGJvb2wgQ0NMYXllclRy
ZWVIb3N0OjpwYWludE1hc2tzRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJT
dXJmYWNlTGF5ZXIsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCkBAIC01NzUsNiArNTk3LDgg
QEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxp
c3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICBDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVz
aW9uVHJhY2tlcihJbnRSZWN0KEludFBvaW50KCksIGRldmljZVZpZXdwb3J0U2l6ZSgpKSwgcmVj
b3JkTWV0cmljc0ZvckZyYW1lKTsKICAgICBvY2NsdXNpb25UcmFja2VyLnNldE1pbmltdW1UcmFj
a2luZ1NpemUobV9zZXR0aW5ncy5taW5pbXVtT2NjbHVzaW9uVHJhY2tpbmdTaXplKTsKIAorICAg
IHByaW9yaXRpemVUZXh0dXJlcyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBvY2NsdXNpb25UcmFj
a2VyLm92ZXJkcmF3TWV0cmljcygpKTsKKwogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0g
Q0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBm
b3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigm
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBvY2Ns
dXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwpAQCAtNTkxLDggKzYxNSw2IEBAIGJvb2wgQ0NM
YXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubGVhdmVMYXllcihpdCk7
CiAgICAgfQogCi0gICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5kaWRVc2VD
b250ZW50c1RleHR1cmVNZW1vcnlCeXRlcyhtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPm1lbW9y
eUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJp
Y3MoKS5kaWRVc2VSZW5kZXJTdXJmYWNlVGV4dHVyZU1lbW9yeUJ5dGVzKG1fY29udGVudHNUZXh0
dXJlTWFuYWdlci0+bWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXNCeXRlcygpKTsKICAgICBvY2NsdXNp
b25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnJlY29yZE1ldHJpY3ModGhpcyk7CiAKICAgICBy
ZXR1cm4gbmVlZE1vcmVVcGRhdGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA3
YmIwZjY4YzYwNTZjNTdiNzE3MGNlODM1NDFhOWQ5OTI4NTU2NzU1Li5iZDY1NjUwZjRkMzdiZDBj
OTE5YjNjNTIwNDQ2NGFhZGQ4NTNmOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApA
QCAtMjg1LDcgKzI4NSwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5
ZXJDaHJvbWl1bSosIENDVGV4dHVyZVVwZGF0ZXImKTsKIAotICAgIHZvaWQgcHJpb3JpdGl6ZVRl
eHR1cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCk7CisgICAgdm9pZCBwcmlvcml0aXpl
VGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiwgQ0NPdmVyZHJhd01ldHJpY3MmKTsgCisgICAgdm9p
ZCBzZXRQcmlvcml0aWVzRm9yU3VyZmFjZXMoc2l6ZV90IHN1cmZhY2VNZW1vcnlCeXRlcyk7Cisg
ICAgdm9pZCBzZXRQcmlvcml0aWVzRm9yTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYpOworICAgIHNp
emVfdCBjYWxjdWxhdGVNZW1vcnlGb3JSZW5kZXJTdXJmYWNlcyhjb25zdCBMYXllckxpc3QmIHVw
ZGF0ZUxpc3QpOwogCiAgICAgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1l
KTsKICAgICBib29sIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogY3VycmVu
dCwgZG91YmxlIG1vbm90b25pY1RpbWUpOwpAQCAtMzA5LDYgKzMxMiw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAgICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyOworICAgIE93
blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gbV9zdXJmYWNlTWVtb3J5UGxhY2Vob2xkZXI7CiAK
ICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIG1fc2V0dGluZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0
dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJpb3JpdGl6ZWRUZXh0dXJlLmNwcAppbmRleCBhNmEzMDgxMmJhMWE2MDNkN2Y2YTM2OWMzNWEz
MjMzMTg1ODBkNjA5Li4xZGY3NzEzODZjYWJjYjRhYTk4YmQxZTZhNWNiODM3OTRmNTc0NWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwCkBAIC00Miw2ICs0Miw3
IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZShDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIsCiAgICAgLCBtX2J5dGVzKDApCiAgICAgLCBtX3By
aW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpKQogICAgICwgbV9p
c0Fib3ZlUHJpb3JpdHlDdXRvZmYoZmFsc2UpCisgICAgLCBtX2lzU2VsZk1hbmFnZWQoZmFsc2Up
CiAgICAgLCBtX2JhY2tpbmcoMCkKICAgICAsIG1fbWFuYWdlcigwKQogewpAQCAtMTUwLDcgKzE1
MSwxMiBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjp1bmxpbmsoKQogICAgIG1fYmFja2lu
ZyA9IDA7CiB9CiAKLQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0VG9TZWxmTWFuYWdl
ZE1lbW9yeVBsYWNlaG9sZGVyKHNpemVfdCBieXRlcykKK3sKKyAgICBzZXREaW1lbnNpb25zKElu
dFNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgIHNldElzU2VsZk1hbmFnZWQo
dHJ1ZSk7CisgICAgbV9ieXRlcyA9IGJ5dGVzOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oCmluZGV4IGRjODU3OTMyNDE4
Mzk2ZmRhMzc4OTAxMDUzNTVjOTI0YTJmZjIwZTIuLjQ2MDczYzVmMzQ2ODhlZGUyZTE4OGEzZmVi
YWU0ZjQwYzM1MjU1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaApA
QCAtOTMsNiArOTMsMTQgQEAgcHVibGljOgogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQo
Q0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdW5zaWduZWQgdGV4
dHVyZUlkKCk7CiAKKyAgICAvLyBTZWxmLW1hbmFnZWQgdGV4dHVyZXMgYXJlIGFjY291bnRlZCBm
b3Igd2hlbiBwcmlvcml0aXppbmcgb3RoZXIgdGV4dHVyZXMsCisgICAgLy8gYnV0IHRoZXkgYXJl
IG5vdCBhbGxvY2F0ZWQvcmVjeWNsZWQvZGVsZXRlZCwgc28gdGhpcyBuZWVkcyB0byBiZSBkb25l
CisgICAgLy8gZXh0ZXJuYWxseS4gY2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkgaW5kaWNhdGVz
IGlmIHRoZSB0ZXh0dXJlIHdvdWxkIGhhdmUKKyAgICAvLyBiZWVuIGFsbG93ZWQgZ2l2ZW4gaXRz
IHByaW9yaXR5LgorICAgIHZvaWQgc2V0SXNTZWxmTWFuYWdlZChib29sIGlzU2VsZk1hbmFnZWQp
IHsgbV9pc1NlbGZNYW5hZ2VkID0gaXNTZWxmTWFuYWdlZDsgfQorICAgIGJvb2wgaXNTZWxmTWFu
YWdlZCgpIHsgcmV0dXJuIG1faXNTZWxmTWFuYWdlZDsgfQorICAgIHZvaWQgc2V0VG9TZWxmTWFu
YWdlZE1lbW9yeVBsYWNlaG9sZGVyKHNpemVfdCBieXRlcyk7CisKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjsKIApAQCAtMTI1LDYgKzEzMyw3
IEBAIHByaXZhdGU6CiAKICAgICBzaXplX3QgbV9wcmlvcml0eTsKICAgICBib29sIG1faXNBYm92
ZVByaW9yaXR5Q3V0b2ZmOworICAgIGJvb2wgbV9pc1NlbGZNYW5hZ2VkOwogCiAgICAgQmFja2lu
ZyogbV9iYWNraW5nOwogICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciogbV9tYW5hZ2Vy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAK
aW5kZXggMDE5NWI2ZjFjZGVhYjUwNmYwMzMyNzg1NjgzOThkYjY4NDE3N2RkMS4uZDE5ZTVhYTE5
YzhmOGYzNmNiZTYyMDczNDVmMjlkZWVjZTY1NmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6fkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcigpCiAg
ICAgICAgIGRlc3Ryb3lCYWNraW5nKCptX2JhY2tpbmdzLmJlZ2luKCksIDApOwogfQogCi12b2lk
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cHJpb3JpdGl6ZVRleHR1cmVzKHNpemVfdCBy
ZW5kZXJTdXJmYWNlc01lbW9yeUJ5dGVzKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OnByaW9yaXRpemVUZXh0dXJlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyIpOwogCkBAIC03OSwz
MSArNzksMjkgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVU
ZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnkKIAogICAgIG1fbWVtb3J5QXZhaWxh
YmxlQnl0ZXMgPSBtX21heE1lbW9yeUxpbWl0Qnl0ZXM7CiAgICAgbV9wcmlvcml0eUN1dG9mZiA9
IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpOwotICAgIGJvb2wgcmVzZXJ2
ZWRSZW5kZXJTdXJmYWNlcyA9IGZhbHNlOwogICAgIHNpemVfdCBtZW1vcnlCeXRlcyA9IDA7CiAg
ICAgZm9yIChUZXh0dXJlVmVjdG9yOjppdGVyYXRvciBpdCA9IHNvcnRlZFRleHR1cmVzLmJlZ2lu
KCk7IGl0ICE9IHNvcnRlZFRleHR1cmVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGlmICgoKml0
KS0+cmVxdWVzdFByaW9yaXR5KCkgPT0gQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9y
aXR5KCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAvLyBGSVhNRTogV2UgY2FuIG1h
a2UgcGxhY2Vob2xkZXIgb2JqZWN0cyBzaW1pbGFyIHRvIHRleHR1cmVzIHRvIHJlcHJlc2VudCB0
aGUgcmVuZGVyIHN1cmZhY2UgbWVtb3J5IHJlcXVlc3QuCi0gICAgICAgIGlmICghcmVzZXJ2ZWRS
ZW5kZXJTdXJmYWNlcyAmJiBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0xvd2VyKCgq
aXQpLT5yZXF1ZXN0UHJpb3JpdHkoKSwgQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnJlbmRlclN1cmZh
Y2VQcmlvcml0eSgpKSkgewotICAgICAgICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVt
b3J5Qnl0ZXMgKyByZW5kZXJTdXJmYWNlc01lbW9yeUJ5dGVzOworICAgICAgICBpZiAoKCppdCkt
PmlzU2VsZk1hbmFnZWQoKSkgeworICAgICAgICAgICAgLy8gQWNjb3VudCBmb3Igc2VsZi1tYW5h
Z2VkIG1lbW9yeSBpbW1lZGlhdGVseSBieSByZWR1Y2luZyB0aGUgbWVtb3J5CisgICAgICAgICAg
ICAvLyBhdmFpbGFibGUgKHNpbmNlIGl0IG5ldmVyIGdldHMgYWNxdWlyZWQpLgorICAgICAgICAg
ICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAoKml0KS0+Ynl0ZXMoKTsK
ICAgICAgICAgICAgIGlmIChuZXdNZW1vcnlCeXRlcyA+IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMp
IHsKICAgICAgICAgICAgICAgICBtX3ByaW9yaXR5Q3V0b2ZmID0gKCppdCktPnJlcXVlc3RQcmlv
cml0eSgpOwogICAgICAgICAgICAgICAgIG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgPSBtZW1vcnlC
eXRlczsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgLT0gcmVuZGVyU3VyZmFjZXNNZW1vcnlCeXRlczsKLSAg
ICAgICAgICAgIHJlc2VydmVkUmVuZGVyU3VyZmFjZXMgPSB0cnVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAoKml0KS0+Ynl0ZXMo
KTsKLSAgICAgICAgaWYgKG5ld01lbW9yeUJ5dGVzID4gbV9tZW1vcnlBdmFpbGFibGVCeXRlcykg
ewotICAgICAgICAgICAgbV9wcmlvcml0eUN1dG9mZiA9ICgqaXQpLT5yZXF1ZXN0UHJpb3JpdHko
KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbV9tZW1vcnlBdmFpbGFibGVCeXRl
cyAtPSAoKml0KS0+Ynl0ZXMoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNpemVf
dCBuZXdNZW1vcnlCeXRlcyA9IG1lbW9yeUJ5dGVzICsgKCppdCktPmJ5dGVzKCk7CisgICAgICAg
ICAgICBpZiAobmV3TWVtb3J5Qnl0ZXMgPiBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzKSB7CisgICAg
ICAgICAgICAgICAgbV9wcmlvcml0eUN1dG9mZiA9ICgqaXQpLT5yZXF1ZXN0UHJpb3JpdHkoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbW9y
eUJ5dGVzID0gbmV3TWVtb3J5Qnl0ZXM7CiAgICAgICAgIH0KLQotICAgICAgICBtZW1vcnlCeXRl
cyA9IG5ld01lbW9yeUJ5dGVzOwogICAgIH0KIAogICAgIC8vIE9ubHkgYWxsb3cgdGV4dHVyZXMg
aWYgdGhleSBhcmUgaGlnaGVyIHRoYW4gdGhlIGN1dG9mZi4gQWxsIHRleHR1cmVzCkBAIC0xMTMs
NyArMTExLDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVU
ZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnkKICAgICBmb3IgKFRleHR1cmVWZWN0
b3I6Oml0ZXJhdG9yIGl0ID0gc29ydGVkVGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0gc29ydGVkVGV4
dHVyZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgYm9vbCBpc0Fib3ZlUHJpb3JpdHlDdXRvZmYg
PSBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0hpZ2hlcigoKml0KS0+cmVxdWVzdFBy
aW9yaXR5KCksIG1fcHJpb3JpdHlDdXRvZmYpOwogICAgICAgICAoKml0KS0+c2V0QWJvdmVQcmlv
cml0eUN1dG9mZihpc0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwotICAgICAgICBpZiAoaXNBYm92ZVBy
aW9yaXR5Q3V0b2ZmKQorICAgICAgICBpZiAoaXNBYm92ZVByaW9yaXR5Q3V0b2ZmICYmICEoKml0
KS0+aXNTZWxmTWFuYWdlZCgpKQogICAgICAgICAgICAgbV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVz
ICs9ICgqaXQpLT5ieXRlcygpOwogICAgIH0KICAgICBBU1NFUlQobV9tZW1vcnlBYm92ZUN1dG9m
ZkJ5dGVzIDw9IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMpOwpAQCAtMTcyLDYgKzE3MCw3IEBAIGJv
b2wgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0TGF0ZShDQ1ByaW9yaXRpemVk
VGV4dHVyZSogdGV4dHVyZSkKIAogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFj
cXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJl
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CisgICAgQVNTRVJUKCF0ZXh0dXJlLT5p
c1NlbGZNYW5hZ2VkKCkpOwogICAgIEFTU0VSVCh0ZXh0dXJlLT5pc0Fib3ZlUHJpb3JpdHlDdXRv
ZmYoKSk7CiAgICAgaWYgKHRleHR1cmUtPmJhY2tpbmcoKSB8fCAhdGV4dHVyZS0+aXNBYm92ZVBy
aW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwNyw2ICszMDYsNyBAQCB2b2lk
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVzdHJveUJhY2tpbmcoQ0NQcmlvcml0aXpl
ZFRleHR1cmU6OkJhY2tpbmcqCiB7CiAgICAgQVNTRVJUKGJhY2tpbmcpOwogICAgIEFTU0VSVCgh
YmFja2luZy0+b3duZXIoKSB8fCAhYmFja2luZy0+b3duZXIoKS0+aXNBYm92ZVByaW9yaXR5Q3V0
b2ZmKCkpOworICAgIEFTU0VSVCghYmFja2luZy0+b3duZXIoKSB8fCAhYmFja2luZy0+b3duZXIo
KS0+aXNTZWxmTWFuYWdlZCgpKTsKICAgICBBU1NFUlQobV9iYWNraW5ncy5maW5kKGJhY2tpbmcp
ICE9IG1fYmFja2luZ3MuZW5kKCkpOwogCiAgICAgaWYgKGFsbG9jYXRvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKaW5kZXggOTgwMjkxYWRiODdi
MjhkYWQ1ZGM4MjNmNjc2M2I0ODYwZWViYTJmYy4uMDE5YzQ1Y2Y0ZTMzM2U1NGNmOWVhNGQwYmNk
NTljNjc5OTFiM2NlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyLmgKQEAgLTYzLDEyICs2MywxMiBAQCBwdWJsaWM6CiAgICAgLy8gbWVtb3J5VXNl
Qnl0ZXMoKSA8PSBtZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkgc2hvdWxkIGFsd2F5cyBiZSB0cnVl
LgogICAgIHNpemVfdCBtZW1vcnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNl
Qnl0ZXM7IH0KICAgICBzaXplX3QgbWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpIGNvbnN0IHsgcmV0
dXJuIG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlczsgfQotICAgIHNpemVfdCBtZW1vcnlGb3JSZW5k
ZXJTdXJmYWNlc0J5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tYXhNZW1vcnlMaW1pdEJ5dGVzIC0g
bV9tZW1vcnlBdmFpbGFibGVCeXRlczsgfQorICAgIHNpemVfdCBtZW1vcnlGb3JTZWxmTWFuYWdl
ZFRleHR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9tYXhNZW1vcnlMaW1pdEJ5dGVzIC0gbV9tZW1v
cnlBdmFpbGFibGVCeXRlczsgfQogCiAgICAgdm9pZCBzZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHNp
emVfdCBieXRlcykgeyBtX21heE1lbW9yeUxpbWl0Qnl0ZXMgPSBieXRlczsgfQogICAgIHNpemVf
dCBtYXhNZW1vcnlMaW1pdEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tYXhNZW1vcnlMaW1pdEJ5
dGVzOyB9CiAKLSAgICB2b2lkIHByaW9yaXRpemVUZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFj
ZXNNZW1vcnlCeXRlcyk7CisgICAgdm9pZCBwcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICB2b2lk
IGNsZWFyUHJpb3JpdGllcygpOwogCiAgICAgYm9vbCByZXF1ZXN0TGF0ZShDQ1ByaW9yaXRpemVk
VGV4dHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1By
aW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwCmluZGV4IGE4Yjk2Mjc4N2Q4ZjIzZmViNjhmZDcy
YmM1ZjY3OTUyYTVhNjYwZDguLjIxZTBhNzE3YzM2Yzc5ZTJhMmMwMzIzOTJlZmE4YTEwZTEyZGFh
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXpl
ZFRleHR1cmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJp
b3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgVEVTVF9GKENDUHJpb3Jp
dGl6ZWRUZXh0dXJlVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRpbmdNYXhMaW1pdCkKICAgICAg
ICAgdGV4dHVyZXNbaV0tPnNldFJlcXVlc3RQcmlvcml0eSgxMDAgKyBpKTsKIAogICAgIC8vIE9u
bHkgbG93ZXIgaGFsZiBzaG91bGQgYmUgYXZhaWxhYmxlLgotICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1swXSwgZmFs
c2UpKTsKICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbN10sIGZhbHNl
KSk7CiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1s4XSwgZmFsc2Up
KTsKQEAgLTExMCw3ICsxMTAsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBy
ZXF1ZXN0VGV4dHVyZUV4Y2VlZGluZ01heExpbWl0KQogICAgICAgICB0ZXh0dXJlc1tpXS0+c2V0
UmVxdWVzdFByaW9yaXR5KDEwMCAtIGkpOwogCiAgICAgLy8gT25seSB1cHBlciBoYWxmIHNob3Vs
ZCBiZSBhdmFpbGFibGUuCi0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygw
KTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgRVhQRUNU
X0ZBTFNFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1swXSwgZmFsc2UpKTsKICAgICBFWFBFQ1Rf
RkFMU0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzddLCBmYWxzZSkpOwogICAgIEVYUEVDVF9U
UlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1s4XSwgZmFsc2UpKTsKQEAgLTEzNSw3ICsxMzUs
NyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBjaGFuZ2VNZW1vcnlMaW1pdHMp
CiAKICAgICAvLyBTZXQgbWF4IGxpbWl0IHRvIDggdGV4dHVyZXMKICAgICB0ZXh0dXJlTWFuYWdl
ci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyh0ZXh0dXJlc01lbW9yeVNpemUoOCkpOwotICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4VGV4
dHVyZXM7ICsraSkKICAgICAgICAgdmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSk7
CiAgICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeShhbGxvY2F0b3IoKSk7CkBAIC0xNDUs
NyArMTQ1LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5
TGltaXRzKQogCiAgICAgLy8gU2V0IG1heCBsaW1pdCB0byA1IHRleHR1cmVzCiAgICAgdGV4dHVy
ZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXplKDUpKTsK
LSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1heFRleHR1cmVzOyArK2kpCiAgICAgICAgIEVYUEVDVF9FUSh2YWxpZGF0ZVRleHR1cmUodGV4
dHVyZXNbaV0sIGZhbHNlKSwgaSA8IDUpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1v
cnkoYWxsb2NhdG9yKCkpOwpAQCAtMTU1LDcgKzE1NSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVk
VGV4dHVyZVRlc3QsIGNoYW5nZU1lbW9yeUxpbWl0cykKIAogICAgIC8vIFNldCBtYXggbGltaXQg
dG8gNCB0ZXh0dXJlcwogICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVz
KHRleHR1cmVzTWVtb3J5U2l6ZSg0KSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKQogICAgICAgICBFWFBF
Q1RfRVEodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSksIGkgPCA0KTsKICAgICB0
ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KGFsbG9jYXRvcigpKTsKQEAgLTE4MSw3ICsxODEs
NyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlclBhcnRp
YWxVcGRhdGVUZXh0dXJlcykKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtVGV4dHVy
ZXM7ICsraSkKICAgICAgICAgdGV4dHVyZXNbaV0tPnNldFJlcXVlc3RQcmlvcml0eSgyMDAgKyBp
KTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIEFsbG9jYXRlIHRleHR1
cmVzIHdoaWNoIGFyZSBjdXJyZW50bHkgaGlnaCBwcmlvcml0eS4KICAgICBFWFBFQ1RfVFJVRSh2
YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbMF0sIGZhbHNlKSk7CkBAIC0xOTYsNyArMTk2LDcgQEAg
VEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJQYXJ0aWFsVXBk
YXRlVGV4dHVyZXMpCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVRleHR1cmVzOyAr
K2kpCiAgICAgICAgIG1vcmVUZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9yaXR5KDEwMCArIGkp
OwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gVGV4dHVyZXMgYXJlIG5v
dyBiZWxvdyBjdXRvZmYuCiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJl
c1swXSwgZmFsc2UpKTsKQEAgLTI0Miw3ICsyNDIsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRl
eHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlclByaW9yaXRpZXNBcmVFcXVhbCkKIAogICAgIC8vIFNl
dCBtYXggbGltaXQgdG8gOCB0ZXh0dXJlcwogICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1v
cnlMaW1pdEJ5dGVzKHRleHR1cmVzTWVtb3J5U2l6ZSg4KSk7Ci0gICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKCk7CiAKICAgICAvLyBUaGUgdHdvIGhpZ2ggcHJpb3JpdHkgdGV4dHVyZXMgc2hvdWxk
IGJlIGF2YWlsYWJsZSwgb3RoZXJzIHNob3VsZCBub3QuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCAyOyArK2kpCkBAIC0yNzMsNyArMjczLDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0
dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJEZXN0cm95ZWRGaXJzdCkKICAgICBFWFBFQ1RfRkFMU0Uo
dGV4dHVyZS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpOwogCiAgICAgdGV4dHVyZS0+c2V0UmVxdWVz
dFByaW9yaXR5KDEwMCk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygw
KTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBFWFBF
Q1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfVFJV
RSh0ZXh0dXJlLT5jYW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKSk7CkBAIC0yOTYsNyArMjk2LDcg
QEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1vdmVkVG9OZXdNYW5h
Z2VyKQogICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJlLT5oYXZlQmFja2luZ1RleHR1cmUoKSk7CiAK
ICAgICB0ZXh0dXJlLT5zZXRSZXF1ZXN0UHJpb3JpdHkoMTAwKTsKLSAgICB0ZXh0dXJlTWFuYWdl
ck9uZS0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyT25lLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKIAogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0
dXJlLCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHRleHR1cmUtPmNhbkFjcXVpcmVCYWNraW5n
VGV4dHVyZSgpKTsKQEAgLTMxMiw3ICszMTIsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1
cmVUZXN0LCB0ZXh0dXJlTW92ZWRUb05ld01hbmFnZXIpCiAKICAgICB0ZXh0dXJlLT5zZXRUZXh0
dXJlTWFuYWdlcih0ZXh0dXJlTWFuYWdlclR3by5nZXQoKSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdl
clR3by0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyVHdvLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKIAogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4dHVyZSh0ZXh0
dXJlLCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHRleHR1cmUtPmNhbkFjcXVpcmVCYWNraW5n
VGV4dHVyZSgpKTsKQEAgLTMyNiw4ICszMjYsMTAgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0
dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVPdXRzaWRlUm9vdFMK
ICAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwogICAgIE93blB0cjxDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlTWFuYWdlcihtYXhUZXh0
dXJlcyk7CiAKLSAgICAvLyBIYWxmIG9mIHRoZSBtZW1vcnkgaXMgdGFrZW4gYnkgc3VyZmFjZXMu
Ci0gICAgY29uc3Qgc2l6ZV90IHJlbmRlclN1cmZhY2VzQnl0ZXMgPSB0ZXh0dXJlc01lbW9yeVNp
emUoNCk7CisgICAgLy8gSGFsZiBvZiB0aGUgbWVtb3J5IGlzIHRha2VuIGJ5IHN1cmZhY2VzICh3
aXRoIGhpZ2ggcHJpb3JpdHkgcGxhY2UtaG9sZGVyKQorICAgIE93blB0cjxDQ1ByaW9yaXRpemVk
VGV4dHVyZT4gcmVuZGVyU3VyZmFjZVBsYWNlSG9sZGVyID0gdGV4dHVyZU1hbmFnZXItPmNyZWF0
ZVRleHR1cmUobV90ZXh0dXJlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KTsKKyAgICByZW5kZXJTdXJm
YWNlUGxhY2VIb2xkZXItPnNldFRvU2VsZk1hbmFnZWRNZW1vcnlQbGFjZWhvbGRlcih0ZXh0dXJl
c01lbW9yeVNpemUoNCkpOworICAgIHJlbmRlclN1cmZhY2VQbGFjZUhvbGRlci0+c2V0UmVxdWVz
dFByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpyZW5kZXJTdXJmYWNlUHJpb3JpdHkoKSk7
CiAKICAgICAvLyBDcmVhdGUgdGV4dHVyZXMgdG8gZmlsbCBvdXIgbWVtb3J5IGxpbWl0LgogICAg
IE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gdGV4dHVyZXNbbWF4VGV4dHVyZXNdOwpAQCAt
MzQwLDcgKzM0Miw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlbmRlclN1
cmZhY2VzUmVkdWNlTWVtb3J5QXZhaWxhYmxlT3V0c2lkZVJvb3RTCiAgICAgICAgIHRleHR1cmVz
W2ldLT5zZXRSZXF1ZXN0UHJpb3JpdHkoMTAwICsgaSk7CiAKICAgICAvLyBPbmx5IGxvd2VyIGhh
bGYgc2hvdWxkIGJlIGF2YWlsYWJsZS4KLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKHJlbmRlclN1cmZhY2VzQnl0ZXMpOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoKTsKICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNb
MF0sIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzNd
LCBmYWxzZSkpOwogICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbNF0s
IGZhbHNlKSk7CkBAIC0zNTEsMTQgKzM1MywxNCBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1
cmVUZXN0LCByZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZU91dHNpZGVSb290Uwog
ICAgICAgICB0ZXh0dXJlc1tpXS0+c2V0UmVxdWVzdFByaW9yaXR5KDEwMCAtIGkpOwogCiAgICAg
Ly8gT25seSB1cHBlciBoYWxmIHNob3VsZCBiZSBhdmFpbGFibGUuCi0gICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcyhyZW5kZXJTdXJmYWNlc0J5dGVzKTsKKyAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkYXRl
VGV4dHVyZSh0ZXh0dXJlc1swXSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVU
ZXh0dXJlKHRleHR1cmVzWzNdLCBmYWxzZSkpOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkYXRlVGV4
dHVyZSh0ZXh0dXJlc1s0XSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfVFJVRSh2YWxpZGF0ZVRleHR1
cmUodGV4dHVyZXNbN10sIGZhbHNlKSk7CiAKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlT
aXplKDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKLSAgICBF
WFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9y
UmVuZGVyU3VyZmFjZXNCeXRlcygpKTsKKyAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXpl
KDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9yU2VsZk1hbmFnZWRUZXh0dXJlcygpKTsKICAg
ICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5h
Z2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCiAgICAgdGV4dHVyZU1hbmFnZXItPmNs
ZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKQEAgLTM2OSw4ICszNzEsMTAgQEAgVEVTVF9GKEND
UHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFi
bGVGb3JSZXF1ZXN0TGEKICAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwogICAgIE93
blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRl
TWFuYWdlcihtYXhUZXh0dXJlcyk7CiAKLSAgICAvLyBIYWxmIG9mIHRoZSBtZW1vcnkgaXMgdGFr
ZW4gYnkgc3VyZmFjZXMuCi0gICAgY29uc3Qgc2l6ZV90IHJlbmRlclN1cmZhY2VzQnl0ZXMgPSB0
ZXh0dXJlc01lbW9yeVNpemUoNCk7CisgICAgLy8gSGFsZiBvZiB0aGUgbWVtb3J5IGlzIHRha2Vu
IGJ5IHN1cmZhY2VzICh3aXRoIGhpZ2ggcHJpb3JpdHkgcGxhY2UtaG9sZGVyKQorICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gcmVuZGVyU3VyZmFjZVBsYWNlSG9sZGVyID0gdGV4dHVy
ZU1hbmFnZXItPmNyZWF0ZVRleHR1cmUobV90ZXh0dXJlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KTsK
KyAgICByZW5kZXJTdXJmYWNlUGxhY2VIb2xkZXItPnNldFRvU2VsZk1hbmFnZWRNZW1vcnlQbGFj
ZWhvbGRlcih0ZXh0dXJlc01lbW9yeVNpemUoNCkpOworICAgIHJlbmRlclN1cmZhY2VQbGFjZUhv
bGRlci0+c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpyZW5kZXJTdXJm
YWNlUHJpb3JpdHkoKSk7CiAKICAgICAvLyBDcmVhdGUgdGV4dHVyZXMgdG8gZmlsbCBvdXIgbWVt
b3J5IGxpbWl0LgogICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gdGV4dHVyZXNbbWF4
VGV4dHVyZXNdOwpAQCAtMzgzLDcgKzM4Nyw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVy
ZVRlc3QsIHJlbmRlclN1cmZhY2VzUmVkdWNlTWVtb3J5QXZhaWxhYmxlRm9yUmVxdWVzdExhCiAg
ICAgICAgIHRleHR1cmVzW2ldLT5zZXRSZXF1ZXN0UHJpb3JpdHkoMTAwKTsKIAogICAgIC8vIFRo
ZSBmaXJzdCBmb3VyIHRvIGJlIHJlcXVlc3RlZCBsYXRlIHdpbGwgYmUgYXZhaWxhYmxlLgotICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMocmVuZGVyU3VyZmFjZXNCeXRlcyk7
CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKQogICAgICAgICBFWFBFQ1RfRkFMU0Uo
dmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSkpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgaSArPSAyKQpAQCAtMzkyLDcgKzM5Niw3IEBAIFRFU1Rf
RihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlbmRlclN1cmZhY2VzUmVkdWNlTWVtb3J5QXZh
aWxhYmxlRm9yUmVxdWVzdExhCiAgICAgICAgIEVYUEVDVF9GQUxTRSh2YWxpZGF0ZVRleHR1cmUo
dGV4dHVyZXNbaV0sIHRydWUpKTsKIAogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUo
NCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwotICAgIEVYUEVD
VF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JSZW5k
ZXJTdXJmYWNlc0J5dGVzKCkpOworICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCks
IHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JTZWxmTWFuYWdlZFRleHR1cmVzKCkpOwogICAgIEVY
UEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXIt
Pm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKICAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJB
bGxNZW1vcnkoYWxsb2NhdG9yKCkpOwpAQCAtNDAzLDggKzQwNywxMCBAQCBURVNUX0YoQ0NQcmlv
cml0aXplZFRleHR1cmVUZXN0LCB3aGVuUmVuZGVyU3VyZmFjZU5vdEF2YWlsYWJsZVRleHR1cmVz
QWxzb05vdEF2YQogICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlcyA9IDg7CiAgICAgT3duUHRy
PENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBjcmVhdGVNYW5h
Z2VyKG1heFRleHR1cmVzKTsKIAotICAgIC8vIEhhbGYgb2YgdGhlIG1lbW9yeSBpcyB0YWtlbiBi
eSBzdXJmYWNlcy4KLSAgICBjb25zdCBzaXplX3QgcmVuZGVyU3VyZmFjZXNCeXRlcyA9IHRleHR1
cmVzTWVtb3J5U2l6ZSg0KTsKKyAgICAvLyBIYWxmIG9mIHRoZSBtZW1vcnkgaXMgdGFrZW4gYnkg
c3VyZmFjZXMgKHdpdGggaGlnaCBwcmlvcml0eSBwbGFjZS1ob2xkZXIpCisgICAgT3duUHRyPEND
UHJpb3JpdGl6ZWRUZXh0dXJlPiByZW5kZXJTdXJmYWNlUGxhY2VIb2xkZXIgPSB0ZXh0dXJlTWFu
YWdlci0+Y3JlYXRlVGV4dHVyZShtX3RleHR1cmVTaXplLCBtX3RleHR1cmVGb3JtYXQpOworICAg
IHJlbmRlclN1cmZhY2VQbGFjZUhvbGRlci0+c2V0VG9TZWxmTWFuYWdlZE1lbW9yeVBsYWNlaG9s
ZGVyKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSk7CisgICAgcmVuZGVyU3VyZmFjZVBsYWNlSG9sZGVy
LT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnJlbmRlclN1cmZhY2VQ
cmlvcml0eSgpKTsKIAogICAgIC8vIENyZWF0ZSB0ZXh0dXJlcyB0byBmaWxsIG91ciBtZW1vcnkg
bGltaXQuCiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiB0ZXh0dXJlc1ttYXhUZXh0
dXJlc107CkBAIC00MTgsNyArNDI0LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVz
dCwgd2hlblJlbmRlclN1cmZhY2VOb3RBdmFpbGFibGVUZXh0dXJlc0Fsc29Ob3RBdmEKICAgICBm
b3IgKHNpemVfdCBpID0gNjsgaSA8IDg7ICsraSkKICAgICAgICAgdGV4dHVyZXNbaV0tPnNldFJl
cXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6dmlzaWJsZVByaW9yaXR5KGZhbHNl
KSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKHJlbmRlclN1cmZh
Y2VzQnl0ZXMpOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAog
ICAgIC8vIFVuYWJsZSB0byByZXF1ZXN0TGF0ZSB0ZXh0dXJlcyBpbiB0aGUgY2hpbGQgc3VyZmFj
ZS4KICAgICBFWFBFQ1RfRkFMU0UodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzWzZdLCB0cnVlKSk7
CkBAIC00MjksNyArNDM1LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgd2hl
blJlbmRlclN1cmZhY2VOb3RBdmFpbGFibGVUZXh0dXJlc0Fsc29Ob3RBdmEKICAgICAgICAgRVhQ
RUNUX1RSVUUodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSkpOwogCiAgICAgRVhQ
RUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg2KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3Zl
Q3V0b2ZmQnl0ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSgyKSwgdGV4
dHVyZU1hbmFnZXItPm1lbW9yeUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSk7CisgICAgRVhQRUNU
X0VRKHRleHR1cmVzTWVtb3J5U2l6ZSgyKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclNlbGZN
YW5hZ2VkVGV4dHVyZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlV
c2VCeXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKIAog
ICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcAppbmRleCAzMWNmNjcyNWUxMzI4NGQwNGI3ZGZhMjc0YzgzYmVmNzVjOTZmMDZhLi5mMTUy
YWI0ZmJlNzg5MWUwNTM2NzllYmYzMTIyNjQ3Nzg0MGNkZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAg
LTEwNSw3ICsxMDUsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5
VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIGxheWVyLT51cGRh
dGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAg
dXBkYXRlVGV4dHVyZXMoKTsKQEAgLTExOSw3ICsxMTksNyBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGVuIG9ubHkg
dXBkYXRlIG9uZSBvZiB0aGVtLgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
MCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7
CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMTQ0
LDcgKzE0NCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2NjbHVkZWRE
aXJ0eVRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCkpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5
Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsK
KyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2Ns
dWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKQEAgLTE4OCw3ICsxODgsNyBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKICAgICBsYXllci0+aW52
YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKIAogICAgIGxheWVy
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygpOwogCiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIs
IEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAt
MjExLDcgKzIxMSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRl
ZFRpbGVzKQogCiAgICAgLy8gVGhpcyBzaG91bGQgcmVjcmVhdGUgYW5kIHVwZGF0ZSB0aGUgZGVs
ZXRlZCB0ZXh0dXJlcy4KICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlD
YWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwor
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogICAg
IHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKQEAgLTIzOSw3ICsyMzksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3Qo
Y29udGVudFJlY3QpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5
Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsK
KyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgIHVwZGF0ZVRl
eHR1cmVzKCk7CkBAIC0yNTUsNyArMjU1LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICAvLyBGb3IgdGhlIG5leHQgZm91ciB1cGRhdGVz
LCB3ZSBzaG91bGQgZGV0ZWN0IHdlIHN0aWxsIG5lZWQgaWRsZSBwYWludGluZy4KICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygwKTsKKyAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygpOwogCiAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNp
YmxlUmVjdCwgMCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2
aXNpYmxlUmVjdCkpOwpAQCAtMzA3LDcgKzMwNyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAgICAvLyBQYWludCBhIHNp
bmdsZSB0aWxlIGluIGxheWVyMiBzbyB0aGF0IGl0IHdpbGwgaWRsZSBwYWludC4KICAgICBsYXll
cjItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5ZXIx
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
bGF5ZXJSZWN0LCAwKTsKICAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKIApAQCAtMzI1LDcgKzMyNSw3IEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAg
ICAvLyBOb3cgaWRsZSBwYWludCBsYXllcjIuIFdlIGFyZSBnb2luZyB0byBydW4gb3V0IG9mIG1l
bW9yeSB0aG91Z2ghCiAgICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNh
bGN1bGF0b3IpOwogICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllcjItPnVwZGF0
ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKIAogICAg
IC8vIE9oIHdlbGwsIGNvbW1pdCB0aGUgZnJhbWUgYW5kIHB1c2guCkBAIC0zNDUsNyArMzQ1LDcg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50
RmFpbGVkKQogICAgIC8vIE5vdyBpZiBsYXllcjIgYmVjb21lcyBmdWxseSB2aXNpYmxlLCB3ZSBz
aG91bGQgYmUgYWJsZSB0byBwYWludCBpdCBhbmQgcHVzaCB2YWxpZCB0ZXh0dXJlcy4KICAgICBs
YXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5
ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRl
ciwgbGF5ZXIyUmVjdCwgMCk7CiAgICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVy
LCBsYXllclJlY3QsIDApOwogCkBAIC0zNzgsNyArMzc4LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRlZE9jY2x1ZGVkVGlsZXMpCiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMo
KTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwpAQCAtNDAz
LDcgKzQwMyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNNYXJr
ZWREaXJ0eUR1cmluZ1BhaW50KQogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXllci5nZXQo
KSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9y
KTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIHVwZGF0ZVRl
eHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
QEAgLTQzMiw3ICs0MzIsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRp
bGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIpCiAKICAgICBsYXllcjEt
PnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5ZXIyLT5z
ZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwogCiAgICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1Bh
aW50T25QcmV2aW91c0xheQogCiAgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOwogICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3Jp
dHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDAp
OworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIElu
dmFsaWRhdGUgYSB0aWxlIG9uIGxheWVyMgogICAgIGxheWVyMS0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5
ZXIyLmdldCgpKTsKQEAgLTUwOCw3ICs1MDgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50
UmVjdChjb250ZW50UmVjdCk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJp
b3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAgLy8g
SWRsZS1wYWludGluZyBzaG91bGQgc2VlIG5vIG1vcmUgcHJpb3JpdHkgdGlsZXMgZm9yIHBhaW50
aW5nLgpAQCAtNTIxLDcgKzUyMSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBp
ZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVB
dCgxLCAxKSk7CiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAgLy8gV2Ugc2hvdWxk
bid0IHNpZ25hbCB3ZSBuZWVkIGFub3RoZXIgaWRsZSBwYWludC4KQEAgLTU0OCw3ICs1NDgsNyBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkTGF5ZXIp
CiAgICAgICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogCiAg
ICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwot
ICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgICAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAgICAgLy8gRW1wdHkg
bGF5ZXJzIGRvbid0IHBhaW50IG9yIGlkbGUtcGFpbnQuCiAgICAgICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CkBAIC01ODYsNyArNTg2LDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXllcnMp
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICAgLy8gUGFpbnQgLyBp
ZGxlLXBhaW50LgogICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlD
YWxjdWxhdG9yKTsKLSAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygw
KTsKKyAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgICAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAg
ICAgICAgIC8vIE5vbi12aXNpYmxlIGxheWVycyBkb24ndCBuZWVkIGlkbGUgcGFpbnQuCkBAIC02
MzYsNyArNjM2LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5v
blZpc2libGVBbmltYXRpbmdMYXllcnMpCiAgICAgICAgICAgICBsYXllci0+aW52YWxpZGF0ZUNv
bnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKIAogICAgICAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgICAgICAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgICAgICAgICAvLyBJZiBpZGxlUGFpbnRSZWN0IGdp
dmVzIGJhY2sgYSBub24tZW1wdHkgcmVzdWx0IHRoZW4gd2Ugc2hvdWxkIHBhaW50IGl0LiBPdGhl
cndpc2UsCiAgICAgICAgICAgICAvLyB3ZSBzaG91ZCBwYWludCBub3RoaW5nLgpAQCAtNjQ4LDcg
KzY0OCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNp
YmxlQW5pbWF0aW5nTGF5ZXJzKQogICAgICAgICAgICAgLy8gSWYgdGhlIGxheWVyIGlzIHRvIGJl
IHByZXBhaW50ZWQgYXQgYWxsLCB0aGVuIGFmdGVyIGZvdXIgdXBkYXRlcyB3ZSBzaG91bGQgaGF2
ZSB0aGUgb3V0ZXIgcm93L2NvbHVtbnMgcGFpbnRlZC4KICAgICAgICAgICAgIGZvciAoaW50IGsg
PSAwOyBrIDwgNDsgKytrKSB7CiAgICAgICAgICAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgICAgICAgICAgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAgICAgICAgICAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICAgICAgICAgIHVw
ZGF0ZVRleHR1cmVzKCk7CkBAIC02NjEsNyArNjYxLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAgICAgICAgICAg
ICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAgICAg
ICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7ICsraykgewogICAgICAgICAgICAgICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgICAgICAg
ICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgICAgICAg
ICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgICAgICAg
ICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsK
ICAgICAgICAgICAgICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtNjkwLDcgKzY5MCw3IEBAIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAg
bGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAg
ICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7
CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0g
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICB1cGRhdGVyLnVwZGF0
ZShjY0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxv
YWRlciwgMTAwMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKQEAgLTc0MCwxNCArNzQwLDE0IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2
ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50Qm91bmRzKTsKIAogICAgIGxheWVyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91
bmRzLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwgMCwgMzAwLCAz
MDAgKiAwLjgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwog
CiAgICAgLy8gQWZ0ZXIgdGhlIHRpbGVzIGFyZSB1cGRhdGVkIG9uY2UsIGFub3RoZXIgaW52YWxp
ZGF0ZSBvbmx5IG5lZWRzIHRvIHVwZGF0ZSB0aGUgYm91bmRzIG9mIHRoZSBsYXllci4KICAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNv
bnRlbnRCb3VuZHMpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250
ZW50Qm91bmRzLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QobGF5ZXJC
b3VuZHMpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRz
QXJlU2NhbGVkKQogICAgIEludFJlY3QgcGFydGlhbERhbWFnZSgzMCwgMTAwLCAxMCwgMTApOwog
ICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QocGFydGlhbERhbWFnZSk7CiAgICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIs
IGNvbnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCg0
NSwgODAsIDE1LCA4KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiB9CkBAIC03NzksNyArNzc5LDcg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5D
b250ZW50c1NjYWxlQ2hhbmdlcykKIAogICAgIC8vIFB1c2ggdGhlIHRpbGVzIHRvIHRoZSBpbXBs
IHNpZGUgYW5kIGNoZWNrIHRoYXQgdGhlcmUgaXMgZXhhY3RseSBvbmUuCiAgICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CkBAIC03OTYsNyArNzk2LDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250
ZW50c1NjYWxlQ2hhbmdlcykKIAogICAgIC8vIFRoZSBpbXBsIHNpZGUgc2hvdWxkIGdldCAyeDIg
dGlsZXMgbm93LgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSwgMCk7CiAgICAgdXBk
YXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0
KCkpOwpAQCAtODEwLDcgKzgxMCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2
ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAgICAgbGF5ZXItPnNl
dE5lZWRzRGlzcGxheSgpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRS
ZWN0KDEsIDAsIDAsIDEpLCAwKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAg
IGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX0ZB
TFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKQEAgLTg4MCw3ICs4ODAsNyBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcmVzaXplVG9TbWFsbGVyKQogICAgIGxheWVyLT5p
bnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCkpOwogCiAgICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIs
IEludFJlY3QoMCwgMCwgNzAwLCA3MDApLCAwKTsKIAogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50
U2l6ZSgyMDAsIDIwMCkpOwpAQCAtODk5LDcgKzg5OSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBodWdlTGF5ZXJVcGRhdGVDcmFzaCkKIAogICAgIC8vIEVuc3VyZSBubyBjcmFz
aCBmb3IgYm91bmRzIHdoZXJlIHNpemUgKiBzaXplIHdvdWxkIG92ZXJmbG93IGFuIGludC4KICAg
ICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2Vy
LT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBk
YXRlciwgSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOwogfQogCkBAIC0xMDM5LDcgKzEwMzks
NyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aG91dE9j
Y2x1c2lvbikKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwg
MTAwLCAyMDApKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNh
bGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Cisg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRh
dGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAg
RVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVj
dENvdW50KCkpOwogfQpAQCAtMTA2MCw3ICsxMDYwLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCiAgICAgbGF5ZXItPmludmFsaWRh
dGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAKICAgICBsYXllci0+c2V0
VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCkBAIC0x
MTA4LDcgKzExMDgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWlu
dGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAgIGxheWVyLT5pbnZh
bGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogCiAgICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIElu
dFJlY3QoMCwgMCwgNjAwLCAzNjApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgyNC0zLCBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIApA
QCAtMTEyMyw3ICsxMTIzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVz
UGFpbnRlZFdpdGhPY2NsdXNpb25BbmRWaXNpYmxpdHlDb25zdHJhaW50cykKICAgICBsYXllci0+
c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNTApKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRl
ciwgSW50UmVjdCgwLCAwLCA2MDAsIDM1MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDI0
LTYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkp
OwogCkBAIC0xMTM4LDcgKzExMzgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAgIGxh
eWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDM0MCkpOwogICAg
IGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwog
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzQwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1Rf
RVEoMjQtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291
bnQoKSk7CiAKQEAgLTExNjMsNyArMTE2Myw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB0aWxlc05vdFBhaW50ZWRXaXRob3V0SW52YWxpZGF0aW9uKQogICAgIGxheWVyLT5zZXRW
aXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogICAgIGxheWVyLT5p
bnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogICAgIGxheWVy
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJ
bnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYtMywg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAg
ICAgdXBkYXRlVGV4dHVyZXMoKTsKQEAgLTEyMDMsNyArMTIwMyw3IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3JtcykK
ICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5
ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9y
aXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygw
KTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2Nj
bHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIApAQCAtMTIzMSw3ICsxMjMxLDcgQEAgVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2Fs
aW5nKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgp
LCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMo
cHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKDApOworICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCks
ICZvY2NsdWRlZCk7CiAgICAgLy8gVGhlIGNvbnRlbnQgaXMgaGFsZiB0aGUgc2l6ZSBvZiB0aGUg
bGF5ZXIgKHNvIHRoZSBudW1iZXIgb2YgdGlsZXMgaXMgZmV3ZXIpLgogICAgIC8vIEluIHRoaXMg
Y2FzZSwgdGhlIGNvbnRlbnQgaXMgMzAweDMwMCwgYW5kIHNpbmNlIHRoZSB0aWxlIHNpemUgaXMg
MTAwLCB0aGUKQEAgLTEyNTEsNyArMTI1MSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICBsYXllci0+c2V0
VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7
Ci0gICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVY
UEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVj
dENvdW50KCkpOwogCkBAIC0xMjcxLDcgKzEyNzEsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgbGF5ZXIt
PnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMo
KSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAs
IDYwMCkpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAg
ICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZVJlY3RDb3VudCgpKTsKIApAQCAtMTMwMCw3ICsxMzAwLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIGxheWVyLT5zZXRE
cmF3T3BhY2l0eSgxKTsKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7
CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gSWYg
dGhlIGxheWVyIGRvZXNuJ3QgcGFpbnQgb3BhcXVlIGNvbnRlbnQsIHRoZW4gdGhlIHZpc2libGVD
b250ZW50T3BhcXVlUmVnaW9uIHNob3VsZCBiZSBlbXB0eS4KICAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CkBAIC0xMzkz
LDcgKzEzOTMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGl4ZWxzUGFpbnRl
ZE1ldHJpY3MpCiAgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5KDEpOwogCiAgICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKCk7CiAKICAgICAvLyBJbnZhbGlkYXRlcyBhbmQgcGFpbnRzIHRoZSB3aG9sZSBs
YXllci4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFp
bnRSZWN0KEludFJlY3QoKSk7CkBAIC0xNjM2LDcgKzE2MzYsNyBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgbm9uSW50ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3RvcnRlZER1cmlu
Z1BhaW50KQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwog
CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKGNhbGN1bGF0b3IpOwotICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gVXBkYXRlIHRoZSB3aG9sZSB0aWxlLgogICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CkBAIC0x
NjY5LDcgKzE2NjksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbm9uSW50ZWdl
ckNvbnRlbnRzU2NhbGVJc05vdERpc3RvcnRlZER1cmluZ0ludmFsaQogICAgIGxheWVyLT5zZXRW
aXNpYmxlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKGNhbGN1bGF0b3IpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4
dHVyZXMoMCk7CisgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAg
ICAgLy8gVXBkYXRlIHRoZSB3aG9sZSB0aWxlLgogICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>