<?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>85893</bug_id>
          
          <creation_ts>2012-05-08 10:06:18 -0700</creation_ts>
          <short_desc>[Chromium] Move instantiation of texture uploader to LayerRendererChromium.</short_desc>
          <delta_ts>2012-05-11 09:41:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          <dependson>85848</dependson>
    
    <dependson>86178</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</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>618589</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-08 10:06:18 -0700</bug_when>
    <thetext>To clean up the initialization of texture uploaders, create both a throttled and unthrottled uploader in LayerRendererChromium and have the CCProxy make the choice of which one to use when creating a CCTextureUpdater instead of at context initialization time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618594</commentid>
    <comment_count>1</comment_count>
      <attachid>140734</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-08 10:10:24 -0700</bug_when>
    <thetext>Created attachment 140734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618601</commentid>
    <comment_count>2</comment_count>
      <attachid>140736</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-08 10:20:09 -0700</bug_when>
    <thetext>Created attachment 140736
Patch

Correct changelog entry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618602</commentid>
    <comment_count>3</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-08 10:22:16 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=140734&amp;action=review

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1402
&gt; +    m_unthrottledTextureUploader = UnthrottledTextureUploader::create();
&gt; +    m_throttledTextureUploader = ThrottledTextureUploader::create(m_context.get());

It&apos;s a little weird to me to have both of these exist simultaneously on LRC.  Do you expect that this will ever not be determined statically?

It doesn&apos;t look like LRC uses these members directly either.  It seems like maybe the proxies should own their own uploader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618610</commentid>
    <comment_count>4</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-08 10:36:44 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140734&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1402
&gt; &gt; +    m_unthrottledTextureUploader = UnthrottledTextureUploader::create();
&gt; &gt; +    m_throttledTextureUploader = ThrottledTextureUploader::create(m_context.get());
&gt; 
&gt; It&apos;s a little weird to me to have both of these exist simultaneously on LRC.  Do you expect that this will ever not be determined statically?
&gt; 
&gt; It doesn&apos;t look like LRC uses these members directly either.  It seems like maybe the proxies should own their own uploader.

The problem is that the uploaders need to be created with a GC3D reference. Existing objects that need a GC3D all live in LRC and I think that&apos;s where the uploaders belong as well.

See this bug for some more context: https://bugs.webkit.org/show_bug.cgi?id=85848</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618627</commentid>
    <comment_count>5</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-08 10:57:50 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140734&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1402
&gt; &gt; &gt; +    m_unthrottledTextureUploader = UnthrottledTextureUploader::create();
&gt; &gt; &gt; +    m_throttledTextureUploader = ThrottledTextureUploader::create(m_context.get());
&gt; &gt; 
&gt; &gt; It&apos;s a little weird to me to have both of these exist simultaneously on LRC.  Do you expect that this will ever not be determined statically?
&gt; &gt; 
&gt; &gt; It doesn&apos;t look like LRC uses these members directly either.  It seems like maybe the proxies should own their own uploader.
&gt; 
&gt; The problem is that the uploaders need to be created with a GC3D reference. Existing objects that need a GC3D all live in LRC and I think that&apos;s where the uploaders belong as well.
&gt; 
&gt; See this bug for some more context: https://bugs.webkit.org/show_bug.cgi?id=85848

I saw that, but I still think it&apos;s awkward to have them both simultaneously exist on LRC.

I think I&apos;d prefer a LayerRendererChromium::setTextureUploader(PassOwnPtr&lt;TextureUploader&gt;) that a proxy could call after initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618637</commentid>
    <comment_count>6</comment_count>
      <attachid>140736</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-08 11:08:40 -0700</bug_when>
    <thetext>Comment on attachment 140736
Patch

Yeah this just feels sloppy.  Pick one, or pass a bit down to LRC telling it which sort of uploader to create.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618681</commentid>
    <comment_count>7</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-08 11:59:00 -0700</bug_when>
    <thetext>The main reason I like this approach is that I think the texture uploaders, just like the texture copiers and texture allocators are LRC specific and the LRC should be in control of what implementations to use. E.g. a software rendering LRC should be able to use completely different implementations of these if it wants to. So in this sense I think of the addition of the throttled uploader as an extension to the LRC rather than a replacement of the existing uploader.

Also, lets say we want to use the texture uploader from within LRC. We likely want to control the type of uploader used in that case so having both a throttled and unthrottled uploader available would then make a lot of sense.


I find that passing an uploader to the LRC constructor or using setTextureUploader(PassOwnPtr&lt;TextureUploader&gt;) and then destroying it in LayerRendererChromium::cleanupSharedObjects really awkward. If we stick with the current approach, we should at least fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618731</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-08 12:57:26 -0700</bug_when>
    <thetext>I agree with having ownership on the LRC to the extent that it&apos;s GL-specific (maybe we need to split that part out?).  But no matter what we never need to have two simultaneous uploaders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618866</commentid>
    <comment_count>9</comment_count>
      <attachid>140799</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-08 15:25:38 -0700</bug_when>
    <thetext>Created attachment 140799
Patch

How about this as a compromise?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618917</commentid>
    <comment_count>10</comment_count>
      <attachid>140799</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-08 16:18:22 -0700</bug_when>
    <thetext>Comment on attachment 140799
Patch

Why don&apos;t we just wait until we can use the throttled uploader everywhere and then just unconditionally use that?  I can&apos;t tell what this helps with given that this is still  hardcoded to use the unthrottled uploader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618936</commentid>
    <comment_count>11</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-08 16:34:28 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 140799 [details])
&gt; Why don&apos;t we just wait until we can use the throttled uploader everywhere and then just unconditionally use that?  I can&apos;t tell what this helps with given that this is still  hardcoded to use the unthrottled uploader

It doesn&apos;t make sense to use the throttled uploader in single thread mode. When we can enable the throttled uploader, we will only enable it in CCThreadProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619026</commentid>
    <comment_count>12</comment_count>
      <attachid>140799</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-08 17:55:58 -0700</bug_when>
    <thetext>Comment on attachment 140799
Patch

How does the fake texture uploader fit into the &quot;bool useThrottledTextureUploader&quot; world?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619156</commentid>
    <comment_count>13</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-08 21:50:01 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 140799 [details])
&gt; How does the fake texture uploader fit into the &quot;bool useThrottledTextureUploader&quot; world?

The fake texture updater currently used for unit testing really behaves as a unthrottled texture updater. It just calls updateRect() and never does any blocking. So replacing it with useThrottledTextureUploader=1 is safe.

FYI, my current thinking is that we should eventually remove the updateRect() function from LayerTextureUpdater::Texture when all the texture upload logic has been moved into our TextureUpload classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621037</commentid>
    <comment_count>14</comment_count>
      <attachid>140799</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-10 15:00:50 -0700</bug_when>
    <thetext>Comment on attachment 140799
Patch

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

I like this a lot better than having two uploaders.  Thanks.  :)

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:215
&gt; -PassOwnPtr&lt;LayerRendererChromium&gt; LayerRendererChromium::create(LayerRendererChromiumClient* client, PassRefPtr&lt;GraphicsContext3D&gt; context, PassOwnPtr&lt;TextureUploader&gt; uploader)
&gt; +PassOwnPtr&lt;LayerRendererChromium&gt; LayerRendererChromium::create(LayerRendererChromiumClient* client, PassRefPtr&lt;GraphicsContext3D&gt; context, bool useThrottledTextureUploader)

Can you make this boolean an enum, e.g. {ThrottledUploader, UnthrottledUploader}? Non-named boolean args from callsites are really opaque.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1407
&gt; +    m_textureCopier = AcceleratedTextureCopier::create(m_context.get());

Duplicated line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621098</commentid>
    <comment_count>15</comment_count>
      <attachid>141288</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-10 16:20:46 -0700</bug_when>
    <thetext>Created attachment 141288
Patch

Add TextureUploaderOption enum and remove duplicate line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621111</commentid>
    <comment_count>16</comment_count>
      <attachid>141288</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-10 16:43:45 -0700</bug_when>
    <thetext>Comment on attachment 141288
Patch

Thanks.  R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621212</commentid>
    <comment_count>17</comment_count>
      <attachid>141288</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-10 19:31:58 -0700</bug_when>
    <thetext>Comment on attachment 141288
Patch

Rejecting attachment 141288 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
 hunks FAILED -- saving rejects to file Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp.rej
patching file Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp
patching file Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp
patching file Source/WebKit/chromium/tests/LayerRendererChromiumTest.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Adrienne W...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12663543</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621224</commentid>
    <comment_count>18</comment_count>
      <attachid>141317</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-10 20:13:14 -0700</bug_when>
    <thetext>Created attachment 141317
Patch

Rebase for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621234</commentid>
    <comment_count>19</comment_count>
      <attachid>141320</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-10 20:53:34 -0700</bug_when>
    <thetext>Created attachment 141320
Patch

Add R+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621297</commentid>
    <comment_count>20</comment_count>
      <attachid>141320</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-10 23:33:16 -0700</bug_when>
    <thetext>Comment on attachment 141320
Patch

Clearing flags on attachment: 141320

Committed r116731: &lt;http://trac.webkit.org/changeset/116731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621298</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-10 23:33:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621308</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-10 23:52:57 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 86178</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621315</commentid>
    <comment_count>23</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-11 00:00:18 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 141320 [details])
&gt; Clearing flags on attachment: 141320
&gt; 
&gt; Committed r116731: &lt;http://trac.webkit.org/changeset/116731&gt;

I rolled it out.

http://chromegw.corp.google.com/i/chromium.webkit/builders/Webkit%20Mac%20Builder/builds/23855/steps/compile/logs/stdio


third_party/WebKit/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:236:32:error: field is uninitialized when used here [-Werror,-Wuninitialized]
    , m_textureUploaderSetting(m_textureUploaderSetting)
                               ^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621331</commentid>
    <comment_count>24</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-11 00:14:56 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 141320 [details] [details])
&gt; &gt; Clearing flags on attachment: 141320
&gt; &gt; 
&gt; &gt; Committed r116731: &lt;http://trac.webkit.org/changeset/116731&gt;

Two tests crashed on Linux-Debug by r116731.

platform/chromium/compositing/lost-compositor-context-permanently.html
platform/chromium/compositing/webgl-loses-compositor-context.html

crash log for DumpRenderTree (pid 11699):
STDOUT: &lt;empty&gt;
STDERR: gpu/command_buffer/client/gles2_implementation.cc(371): GPU_CHECK_EQ(0 (0), gles2_implementation_-&gt;use_count_(1)) failed. 
STDERR: DumpRenderTree: gpu/command_buffer/common/logging.cc:20: gpu::Logger::~Logger(): Assertion `false&apos; failed.
STDERR: [11699:11699:4182410782745:ERROR:process_util_posix.cc(143)] Received signal 6
STDERR: 	base::debug::StackTrace::StackTrace() [0x861696]
STDERR: 	base::(anonymous namespace)::StackDumpSignalHandler() [0x8217c9]
STDERR: 	0x7f54a9548af0
STDERR: 	0x7f54a9548a75
STDERR: 	0x7f54a954c5c0
STDERR: 	0x7f54a9541941
STDERR: 	gpu::Logger::~Logger() [0x236403b]
STDERR: 	gpu::Logger::CheckEqual&lt;&gt;() [0x23656ab]
STDERR: 	gpu::gles2::GLES2Implementation::SingleThreadChecker::SingleThreadChecker() [0x23695f6]
STDERR: 	gpu::gles2::GLES2Implementation::Finish() [0x236c2dd]
STDERR: 	gpu::gles2::GLES2Implementation::DeleteQueriesEXTHelper() [0x2378a9a]
STDERR: 	gpu::gles2::GLES2Implementation::DeleteQueriesEXT() [0x1f89776]
STDERR: 	webkit::gpu::WebGraphicsContext3DInProcessCommandBufferImpl::deleteQueryEXT() [0x1f73034]
STDERR: 	WebCore::GraphicsContext3DPrivate::deleteQueryEXT() [0x50d3f2]
STDERR: 	WebCore::Extensions3DChromium::deleteQueryEXT() [0x54e6c6]
STDERR: 	WebCore::ThrottledTextureUploader::Query::~Query() [0x124906b]
STDERR: 	WTF::deleteOwnedPtr&lt;&gt;() [0x1249be1]
STDERR: 	WTF::OwnPtr&lt;&gt;::~OwnPtr() [0x124a0d1]
STDERR: 	WTF::VectorDestructor&lt;&gt;::destruct() [0x124a4a1]
STDERR: 	WTF::VectorTypeOperations&lt;&gt;::destruct() [0x124a283]
STDERR: 	WTF::Deque&lt;&gt;::destroyAll() [0x1249f06]
STDERR: 	WTF::Deque&lt;&gt;::~Deque() [0x12498de]
STDERR: 	WebCore::ThrottledTextureUploader::~ThrottledTextureUploader() [0x12494a0]
STDERR: 	WTF::deleteOwnedPtr&lt;&gt;() [0x12444a7]
STDERR: 	WTF::OwnPtr&lt;&gt;::clear() [0x1243cc0]
STDERR: 	WebCore::LayerRendererChromium::cleanupSharedObjects() [0x123d527]
STDERR: 	WebCore::LayerRendererChromium::~LayerRendererChromium() [0x1234e15]
STDERR: 	WTF::deleteOwnedPtr&lt;&gt;() [0x1199153]
STDERR: 	WTF::OwnPtr&lt;&gt;::operator=() [0x11988c5]
STDERR: 	WebCore::CCLayerTreeHostImpl::initializeLayerRenderer() [0x11949ad]
STDERR: 	WebCore::CCSingleThreadProxy::recreateContext() [0x11afd43]
STDERR: 	WebCore::CCLayerTreeHost::recreateContext() [0x1184b87]
STDERR: 	WebCore::CCLayerTreeHost::compositeAndReadback() [0x11853b6]
STDERR: 	WebKit::WebLayerTreeView::compositeAndReadback() [0x53238b]
STDERR: 	WebKit::WebViewImpl::doPixelReadbackToCanvas() [0x4d2492]
STDERR: 	WebKit::WebViewImpl::paint() [0x4d278d]
STDERR: 	WebViewHost::paintRect() [0x48147f]
STDERR: 	WebViewHost::paintInvalidatedRegion() [0x481706]
STDERR: 	LayoutTestController::display() [0x44e47c]
STDERR: 	CppBoundClass::MemberCallback&lt;&gt;::run() [0x45b070]
STDERR: 	CppBoundClass::invoke() [0x42ba78]
STDERR: 	CppNPObject::invoke() [0x42b157]
STDERR: 	WebCore::npObjectInvokeImpl() [0x1339e89]
STDERR: 	WebCore::npObjectMethodHandler() [0x133a004]
STDERR: 	v8::internal::HandleApiCallHelper&lt;&gt;() [0xb2b004]
STDERR: 	v8::internal::Builtin_Impl_HandleApiCall() [0xb25f78]
STDERR: 	v8::internal::Builtin_HandleApiCall() [0xb25f49]
STDERR: 	0x2df2fd90618e


crash log for DumpRenderTree (pid 15467):
STDOUT: 
STDERR: gpu/command_buffer/client/gles2_implementation.cc(371): GPU_CHECK_EQ(0 (0), gles2_implementation_-&gt;use_count_(1)) failed. 
STDERR: DumpRenderTree: gpu/command_buffer/common/logging.cc:20: gpu::Logger::~Logger(): Assertion `false&apos; failed.
STDERR: [15467:15467:4182440541082:ERROR:process_util_posix.cc(143)] Received signal 6
STDERR: 	base::debug::StackTrace::StackTrace() [0x861696]
STDERR: 	base::(anonymous namespace)::StackDumpSignalHandler() [0x8217c9]
STDERR: 	0x7fb270ffbaf0
STDERR: 	0x7fb270ffba75
STDERR: 	0x7fb270fff5c0
STDERR: 	0x7fb270ff4941
STDERR: 	gpu::Logger::~Logger() [0x236403b]
STDERR: 	gpu::Logger::CheckEqual&lt;&gt;() [0x23656ab]
STDERR: 	gpu::gles2::GLES2Implementation::SingleThreadChecker::SingleThreadChecker() [0x23695f6]
STDERR: 	gpu::gles2::GLES2Implementation::Finish() [0x236c2dd]
STDERR: 	gpu::gles2::GLES2Implementation::DeleteQueriesEXTHelper() [0x2378a9a]
STDERR: 	gpu::gles2::GLES2Implementation::DeleteQueriesEXT() [0x1f89776]
STDERR: 	webkit::gpu::WebGraphicsContext3DInProcessCommandBufferImpl::deleteQueryEXT() [0x1f73034]
STDERR: 	WebCore::GraphicsContext3DPrivate::deleteQueryEXT() [0x50d3f2]
STDERR: 	WebCore::Extensions3DChromium::deleteQueryEXT() [0x54e6c6]
STDERR: 	WebCore::ThrottledTextureUploader::Query::~Query() [0x124906b]
STDERR: 	WTF::deleteOwnedPtr&lt;&gt;() [0x1249be1]
STDERR: 	WTF::OwnPtr&lt;&gt;::~OwnPtr() [0x124a0d1]
STDERR: 	WTF::VectorDestructor&lt;&gt;::destruct() [0x124a4a1]
STDERR: 	WTF::VectorTypeOperations&lt;&gt;::destruct() [0x124a283]
STDERR: 	WTF::Deque&lt;&gt;::destroyAll() [0x1249f06]
STDERR: 	WTF::Deque&lt;&gt;::~Deque() [0x12498de]
STDERR: 	WebCore::ThrottledTextureUploader::~ThrottledTextureUploader() [0x12494a0]
STDERR: 	WTF::deleteOwnedPtr&lt;&gt;() [0x12444a7]
STDERR: 	WTF::OwnPtr&lt;&gt;::clear() [0x1243cc0]
STDERR: 	WebCore::LayerRendererChromium::cleanupSharedObjects() [0x123d527]
STDERR: 	WebCore::LayerRendererChromium::~LayerRendererChromium() [0x1234e15]
STDERR: 	WTF::deleteOwnedPtr&lt;&gt;() [0x1199153]
STDERR: 	WTF::OwnPtr&lt;&gt;::operator=() [0x11988c5]
STDERR: 	WebCore::CCLayerTreeHostImpl::initializeLayerRenderer() [0x11949ad]
STDERR: 	WebCore::CCSingleThreadProxy::recreateContext() [0x11afd43]
STDERR: 	WebCore::CCLayerTreeHost::recreateContext() [0x1184b87]
STDERR: 	WebCore::CCLayerTreeHost::compositeAndReadback() [0x11853b6]
STDERR: 	WebKit::WebLayerTreeView::compositeAndReadback() [0x53238b]
STDERR: 	WebKit::WebViewImpl::doPixelReadbackToCanvas() [0x4d2492]
STDERR: 	WebKit::WebViewImpl::paint() [0x4d278d]
STDERR: 	WebViewHost::paintRect() [0x48147f]
STDERR: 	WebViewHost::paintInvalidatedRegion() [0x481706]
STDERR: 	TestShell::dump() [0x46cdb0]
STDERR: 	TestShell::testFinished() [0x46b5ba]
STDERR: 	LayoutTestController::completeNotifyDone() [0x44b038]
STDERR: 	LayoutTestController::notifyDone() [0x44af95]
STDERR: 	CppBoundClass::MemberCallback&lt;&gt;::run() [0x45b070]
STDERR: 	CppBoundClass::invoke() [0x42ba78]
STDERR: 	CppNPObject::invoke() [0x42b157]
STDERR: 	WebCore::npObjectInvokeImpl() [0x1339e89]
STDERR: 	WebCore::npObjectMethodHandler() [0x133a004]
STDERR: 	v8::internal::HandleApiCallHelper&lt;&gt;() [0xb2b004]
STDERR: 	v8::internal::Builtin_Impl_HandleApiCall() [0xb25f78]
STDERR: 	v8::internal::Builtin_HandleApiCall() [0xb25f49]
STDERR: 	0x34c05120618e</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621653</commentid>
    <comment_count>25</comment_count>
      <attachid>141420</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-11 08:12:45 -0700</bug_when>
    <thetext>Created attachment 141420
Patch

Fix typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621663</commentid>
    <comment_count>26</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-11 08:38:57 -0700</bug_when>
    <thetext>Would you mind giving the diff from the previous version?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621673</commentid>
    <comment_count>27</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-11 08:49:19 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Would you mind giving the diff from the previous version?

--- a/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
+++ b/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
@@ -233,7 +233,7 @@ LayerRendererChromium::LayerRendererChromium(LayerRendererCh
     , m_sharedGeometryQuad(FloatRect(-0.5f, -0.5f, 1.0f, 1.0f))
     , m_isViewportChanged(false)
     , m_isFramebufferDiscarded(false)
-    , m_textureUploaderSetting(m_textureUploaderSetting)
+    , m_textureUploaderSetting(textureUploaderSetting)
 {
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621687</commentid>
    <comment_count>28</comment_count>
      <attachid>141420</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-11 09:16:48 -0700</bug_when>
    <thetext>Comment on attachment 141420
Patch

Ok, let&apos;s try this again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621709</commentid>
    <comment_count>29</comment_count>
      <attachid>141420</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 09:41:12 -0700</bug_when>
    <thetext>Comment on attachment 141420
Patch

Clearing flags on attachment: 141420

Committed r116779: &lt;http://trac.webkit.org/changeset/116779&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621710</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 09:41:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140734</attachid>
            <date>2012-05-08 10:10:24 -0700</date>
            <delta_ts>2012-05-08 10:20:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85893-20120508131022.patch</filename>
            <type>text/plain</type>
            <size>28688</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM0NDQxY2ViOTFlYzM3
ZTA5OTRiMTcxODk5ZTg4MzQ3ZWE3ZGRiNC4uNTkzZGRiNWIzNGY5ODJhZTQyZTk3YWZlMGFiZmY2
Nzc5YjVhNzYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA1LTA4ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBD
cmVhdGUgYm90aCBhIHRocm90dGxlZCBhbmQgdW50aHJvdHRsZWQgdGV4dHVyZSB1cGxvYWRlciBp
biBMYXllclJlbmRlcmVyQ2hyb21pdW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NTg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENsZWFuIHVwIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0ZXh0dXJlIHVw
bG9hZGVycyBieSBjcmVhdGluZyBib3RoIGEKKyAgICAgICAgdGhyb3R0bGVkIGFuZCB1bnRocm90
dGxlZCB1cGxvYWRlciBpbiBMYXllclJlbmRlcmVyQ2hyb21pdW0uIENDUHJveHkKKyAgICAgICAg
bm93IG1ha2VzIHRoZSBjaG9pY2Ugb2Ygd2hpY2ggb25lIHRvIHVzZSB3aGVuIGNyZWF0aW5nIGEK
KyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciBpbnN0ZWFkIG9mIHdoZW4gaW5pdGlhbGl6YXRpb24g
dGhlIGNvbnRleHQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVM
YXllclJlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmluaXRpYWxpemVM
YXllclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OnJl
Y3JlYXRlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpk
b0NvbW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJv
eHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCk6CisKIDIwMTIt
MDUtMDggIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFNocmlu
ayBFbGVtZW50QXR0cmlidXRlRGF0YSBieSBmYWN0b3Jpbmcgb3V0IEF0dHIgb2JqZWN0IGNvdW50
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxY2Y2M2Q4Mjg3NGVjOWZiMzM5ZGJlMDgy
NWFmNGZlMzg0MjZkZWY4Li41ZTJmZjRjYmUzMzVhZGUzYjE5Y2YzMDE5MzFmMTUzNmI5N2NjMjc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA1LTA4
ICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9t
aXVtXSBDcmVhdGUgYm90aCBhIHRocm90dGxlZCBhbmQgdW50aHJvdHRsZWQgdGV4dHVyZSB1cGxv
YWRlciBpbiBMYXllclJlbmRlcmVyQ2hyb21pdW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
OgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvTGF5ZXJS
ZW5kZXJlckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChGYWtlTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJD
aHJvbWl1bVRlc3Q6OkxheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QpOgorICAgICAgICAoVEVTVCk6
CisKIDIwMTItMDUtMDcgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4OiBkaWRPcGVuRmlsZVN5c3RlbSBoaWRlcyBvdmVy
bG9hZGVkIHZpcnR1YWwgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCmluZGV4IDlmM2VkZDBhZWZhNjNhZjgyOGIxNzE1MTM2ZDlkODZhMmVhZmEwYWQuLjNhZmE2
MDdlNDRhOTQyZDQwNjU3NGYyYjYyZGViOTdlMTFjNzNmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcApAQCAtMTQzLDYgKzE0MywyNCBAQCBib29sIG5lZWRzTGlvbklP
U3VyZmFjZVJlYWRiYWNrV29ya2Fyb3VuZCgpCiAjZW5kaWYKIH0KIAorY2xhc3MgVW50aHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIgOiBwdWJsaWMgVGV4dHVyZVVwbG9hZGVyIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcik7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyKCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5VbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigp
IHsgfQorCisgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxv
YWRzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0IGRlc3RSZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9y
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0KKworcHJvdGVjdGVkOgorICAgIFVudGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyKCkgeyB9Cit9OworCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAog
Y2xhc3MgTGF5ZXJSZW5kZXJlclN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0FkYXB0ZXIgOiBw
dWJsaWMgRXh0ZW5zaW9uczNEQ2hyb21pdW06OlN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0NI
Uk9NSVVNIHsKQEAgLTE5NCw5ICsyMTIsOSBAQCBwcml2YXRlOgogfTsKIAogCi1QYXNzT3duUHRy
PExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoTGF5
ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQsIFBhc3NPd25QdHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxvYWRlcikKK1Bh
c3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNy
ZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dCkKIHsKLSAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9t
aXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xp
ZW50LCBjb250ZXh0LCB1cGxvYWRlcikpKTsKKyAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9t
aXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xp
ZW50LCBjb250ZXh0KSkpOwogICAgIGlmICghbGF5ZXJSZW5kZXJlci0+aW5pdGlhbGl6ZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjA0LDEzICsyMjIsMTEgQEAgUGFzc093blB0
cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKExh
eWVyUmVuZGVyZXJDaHIKIH0KIAogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVy
Q2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gY29udGV4dCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fY3VycmVudFJl
bmRlclN1cmZhY2UoMCkKICAgICAsIG1fY3VycmVudE1hbmFnZWRUZXh0dXJlKDApCiAgICAgLCBt
X29mZnNjcmVlbkZyYW1lYnVmZmVySWQoMCkKLSAgICAsIG1fdGV4dHVyZVVwbG9hZGVyKHVwbG9h
ZGVyKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2RlZmF1bHRSZW5kZXJTdXJm
YWNlKDApCiAgICAgLCBtX3NoYXJlZEdlb21ldHJ5UXVhZChGbG9hdFJlY3QoLTAuNWYsIC0wLjVm
LCAxLjBmLCAxLjBmKSkKQEAgLTEzODIsNiArMTM5OCw5IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cygpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVNYW5hZ2VyOjpyZWNs
YWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1
cmVTaXplKTsKICAgICBtX3RleHR1cmVDb3BpZXIgPSBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6
OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIG1fdW50aHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXIgPSBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKCk7CisgICAgbV90aHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIgPSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZShtX2Nv
bnRleHQuZ2V0KCkpOworICAgIG1fdGV4dHVyZUNvcGllciA9IEFjY2VsZXJhdGVkVGV4dHVyZUNv
cGllcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAgbV9jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkp
OwogICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChtX2NhcGFiaWxpdGll
cy51c2luZ1RleHR1cmVVc2FnZUhpbnQpCkBAIC0xNjQxLDcgKzE2NjAsOCBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAgICAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fb2Zmc2NyZWVuRnJhbWVidWZm
ZXJJZCkpOwogCiAgICAgbV90ZXh0dXJlQ29waWVyLmNsZWFyKCk7Ci0gICAgbV90ZXh0dXJlVXBs
b2FkZXIuY2xlYXIoKTsKKyAgICBtX3VudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNsZWFyKCk7
CisgICAgbV90aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY2xlYXIoKTsKIAogICAgIHJlbGVhc2VS
ZW5kZXJTdXJmYWNlVGV4dHVyZXMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKaW5kZXggZDczZjcxYWU3ZDAxNzA1ZjQ5MDA2MjZkODY3YjM0NTc5MDc3NTUyNC4uNGU4YTI1
Y2MyMGVjZGYzZjk0NDM4NGJlOWQ2ZGYwNjVhNjVkNzNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogY2xhc3MgTGF5ZXJSZW5k
ZXJlckNocm9taXVtIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllclJlbmRlcmVyQ2hy
b21pdW0pOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJv
bWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4pOworICAgIHN0YXRp
YyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJD
aHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKIAogICAgIH5M
YXllclJlbmRlcmVyQ2hyb21pdW0oKTsKIApAQCAtMTIxLDcgKzEyMSw4IEBAIHB1YmxpYzoKIAog
ICAgIFRleHR1cmVNYW5hZ2VyKiByZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7
IHJldHVybiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci5nZXQoKTsgfQogICAgIFRleHR1
cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVDb3BpZXIu
Z2V0KCk7IH0KLSAgICBUZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dHVyZVVwbG9hZGVyLmdldCgpOyB9CisgICAgVGV4dHVyZVVwbG9hZGVyKiB1
bnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdW50aHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXIuZ2V0KCk7IH0KKyAgICBUZXh0dXJlVXBsb2FkZXIqIHRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
LmdldCgpOyB9CiAgICAgVGV4dHVyZUFsbG9jYXRvciogcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxv
Y2F0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdl
dCgpOyB9CiAgICAgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KIApAQCAt
MTQ0LDcgKzE0NSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGVuc3VyZUZyYW1lYnVmZmVyKCk7
CiAgICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Zy
YW1lYnVmZmVyRGlzY2FyZGVkOyB9CiAKLSAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJS
ZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFBh
c3NPd25QdHI8VGV4dHVyZVVwbG9hZGVyPik7CisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKExh
eWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
KTsKICAgICBib29sIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToKQEAgLTI4Niw3ICsyODcsOCBA
QCBwcml2YXRlOgogCiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX3JlbmRlclN1cmZhY2VU
ZXh0dXJlTWFuYWdlcjsKICAgICBPd25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBtX3Rl
eHR1cmVDb3BpZXI7Ci0gICAgT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gbV90ZXh0dXJlVXBsb2Fk
ZXI7CisgICAgT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gbV91bnRocm90dGxlZFRleHR1cmVVcGxv
YWRlcjsKKyAgICBPd25QdHI8VGV4dHVyZVVwbG9hZGVyPiBtX3Rocm90dGxlZFRleHR1cmVVcGxv
YWRlcjsKICAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2NvbnRlbnRzVGV4
dHVyZUFsbG9jYXRvcjsKICAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX3Jl
bmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCmluZGV4IDMxYmRiYzJlNWZmMWViOTI1MjIwZjhlM2Q1NTAzZjI4NDcxMjI4
MGUuLjNlYTVmYjE5YWM3YmRjZGI0ZGQ2ZmMxZWMxMTU5NTFlY2E0NWZjZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC01MzEsMTAgKzUzMSwxMCBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIG1fdGlt
ZVNvdXJjZUNsaWVudEFkYXB0ZXItPnNldEFjdGl2ZShzaG91bGRUaWNrSW5CYWNrZ3JvdW5kKTsK
IH0KIAotYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBQYXNzT3duUHRyPFRleHR1cmVV
cGxvYWRlcj4gdXBsb2FkZXIpCitib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVM
YXllclJlbmRlcmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCiB7CiAg
ICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcjsKLSAgICBsYXll
clJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgY29udGV4dCwg
dXBsb2FkZXIpOworICAgIGxheWVyUmVuZGVyZXIgPSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNy
ZWF0ZSh0aGlzLCBjb250ZXh0KTsKIAogICAgIC8vIFNpbmNlIHdlIG5vdyBoYXZlIGEgbmV3IGNv
bnRleHQvbGF5ZXJSZW5kZXJlciwgd2UgY2Fubm90IGNvbnRpbnVlIHRvIHVzZSB0aGUgb2xkCiAg
ICAgLy8gcmVzb3VyY2VzIChpLmUuIHJlbmRlclN1cmZhY2VzIGFuZCB0ZXh0dXJlIElEcykuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggOGYxNmY5ZmQ0MDY0N2U5YTUz
Y2E4MWVmNmJhYWU2Nzk3MmNjNDI5ZC4uZGRlMjdmNjhiYTE4ZjRlMTliMWQzYTYzMTliMTA1Njdl
MWE2YjcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMTIyLDcg
KzEyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIGlu
dCBmcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KIAotICAgIGJv
b2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4s
IFBhc3NPd25QdHI8VGV4dHVyZVVwbG9hZGVyPik7CisgICAgYm9vbCBpbml0aWFsaXplTGF5ZXJS
ZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CiAgICAgYm9vbCBpc0NvbnRl
eHRMb3N0KCk7CiAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKCkgeyBy
ZXR1cm4gbV9sYXllclJlbmRlcmVyLmdldCgpOyB9CiAgICAgY29uc3QgTGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAyYzQxN2RmMTcxM2I2ODBkNWNkNWQ5
NDIyMDU3YWIzNzYyMzcyOTdmLi4yMWMwOWYzZjM5NDk3MzJkMTc4ODQzMjlkYWIyYjg1NGRjNWEw
N2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzgsMjQg
KzM4LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlciA6IHB1YmxpYyBUZXh0dXJlVXBsb2FkZXIg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKTsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxVbnRocm90dGxlZFRleHR1cmVVcGxvYWRl
cj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVW50aHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIoKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgflVudGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
dGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+dXBkYXRlUmVjdChjb250
ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQotCi1wcm90ZWN0ZWQ6Ci0g
ICAgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KLX07Ci0KIFBhc3NPd25QdHI8Q0NQ
cm94eT4gQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJU
cmVlSG9zdCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDU2luZ2xlVGhyZWFkUHJveHko
bGF5ZXJUcmVlSG9zdCkpOwpAQCAtMTU1LDcgKzEzNyw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQ
cm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKQogICAgIEFTU0VSVChtX2NvbnRleHRCZWZv
cmVJbml0aWFsaXphdGlvbik7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbDsKLSAgICAgICAgYm9vbCBvayA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxp
emVMYXllclJlbmRlcmVyKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uLnJlbGVhc2UoKSwg
VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgYm9vbCBvayA9
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29udGV4dEJl
Zm9yZUluaXRpYWxpemF0aW9uLnJlbGVhc2UoKSk7CiAgICAgICAgIGlmIChvaykgewogICAgICAg
ICAgICAgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgICAgICAgICAgbV9s
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVhZCA9IG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKQEAgLTE3OSw3ICsxNjEsNyBAQCBib29s
IENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgewogICAgICAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5k
ZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSBtX2xheWVy
VHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBVbnRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKCkpOworICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOwogICAgICAg
ICBpZiAoaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllc0Zvck1haW5UaHJlYWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCk7CiAgICAgICAgIH0KQEAgLTIyNiw3ICsyMDgsNyBAQCB2b2lkIENDU2luZ2xl
VGhyZWFkUHJveHk6OmRvQ29tbWl0KENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiAgICAgICAg
IC8vIGhlcmUgYXMgdGhlIHRocm90dGxlZCB1cGxvYWRlciBpc24ndCB1c2VkIGluIHNpbmdsZSB0
aHJlYWQgbW9kZS4KICAgICAgICAgLy8gRm9yIGNvcnJlY3RuZXNzLCBsb29wIHVudGlsIG5vIG1v
cmUgdXBkYXRlcyBhcmUgcGVuZGluZy4KICAgICAgICAgd2hpbGUgKHVwZGF0ZXIuaGFzTW9yZVVw
ZGF0ZXMoKSkKLSAgICAgICAgICAgIHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9y
KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigp
LCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVVcGxvYWRlcigp
LCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSk7CisgICAgICAgICAgICB1cGRhdGVyLnVwZGF0
ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRl
cmVyKCktPnRleHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJl
cigpLT51bnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigpLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0
ZXMoKSk7CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJsZShtX2xheWVy
VHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29t
bWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAppbmRleCAxNTdmYzFkZjA4NjNiN2JkYjk3ZGJkNDNkNWQzMjA4ZDM1ZjNm
NWFhLi4xYWQ5OTFhYThiZGQ2ODUwMzllMWRmZjVkODFmN2VjMDUwNTE0ZTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNTcsMjUgKzU3LDYgQEAgc3RhdGljIGNvbnN0IGRvdWJs
ZSBjb250ZXh0UmVjcmVhdGlvblRpY2tSYXRlID0gMC4wMzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0vLyBGSVhNRTogcmVtb3ZlIHdoZW4gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyIGlzIHJl
YWR5IHRvIGJlIHVzZWQuCi1jbGFzcyBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlciA6IHB1Ymxp
YyBUZXh0dXJlVXBsb2FkZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVudGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxVbnRocm90
dGxlZFRleHR1cmVVcGxvYWRlcj4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNvbnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVudGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyKGNvbnRleHQpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+VW50aHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0
KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9Ci0KLXByb3RlY3Rl
ZDoKLSAgICBleHBsaWNpdCBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcihQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPikgeyB9Ci19OwotCiBQYXNzT3duUHRyPENDUHJveHk+IENDVGhyZWFk
UHJveHk6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDQ1RocmVhZFByb3h5KGxheWVyVHJlZUhvc3QpKTsKQEAgLTU4Niw3
ICs1NjcsOCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVS
ZXNvdXJjZXMoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhv
c3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVVcGxvYWRlcigpLCB0ZXh0dXJlVXBkYXRl
c1BlckZyYW1lKTsKKyAgICAvLyBGSVhNRTogVXNlIHRocm90dGxlZFRleHR1cmVVcGxvYWRlcigp
IHdoZW4gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyIGlzIHJlYWR5IHRvIGJlIHVzZWQuCisgICAg
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFs
bG9jYXRvcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVD
b3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT51bnRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcigpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lKTsKIH0KIAogdm9pZCBD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQpAQCAtODI0LDggKzgwNiw3IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkltcGxUaHJlYWQo
Q0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsCiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6
OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNT
RVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6
YXRpb25PbkltcGxUaHJlYWQpOwotICAgIE93blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVy
ID0gVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZShtX2NvbnRleHRCZWZvcmVJbml0
aWFsaXphdGlvbk9uSW1wbFRocmVhZC5nZXQoKSk7Ci0gICAgKmluaXRpYWxpemVTdWNjZWVkZWQg
PSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihtX2NvbnRleHRC
ZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVhZC5yZWxlYXNlKCksIHVwbG9hZGVyLnJlbGVh
c2UoKSk7CisgICAgKmluaXRpYWxpemVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5p
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1w
bFRocmVhZC5yZWxlYXNlKCkpOwogICAgIGlmICgqaW5pdGlhbGl6ZVN1Y2NlZWRlZCkgewogICAg
ICAgICAqY2FwYWJpbGl0aWVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpOwogICAgICAgICBpZiAoY2FwYWJpbGl0aWVzLT51c2luZ1N3YXBDb21wbGV0
ZUNhbGxiYWNrKQpAQCAtODc1LDggKzg1Niw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVh
dGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBHCiAg
ICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbklt
cGxUaHJlYWQiKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIG1fbGF5ZXJUcmVl
SG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0gICAgT3duUHRyPFRleHR1cmVVcGxv
YWRlcj4gdXBsb2FkZXIgPSBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKGNvbnRl
eHRQdHIpOwotICAgICpyZWNyZWF0ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKGFkb3B0UmVmKGNvbnRleHRQdHIpLCB1cGxvYWRlci5yZWxl
YXNlKCkpOworICAgICpyZWNyZWF0ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKGFkb3B0UmVmKGNvbnRleHRQdHIpKTsKICAgICBpZiAoKnJl
Y3JlYXRlU3VjY2VlZGVkKSB7CiAgICAgICAgICpjYXBhYmlsaXRpZXMgPSBtX2xheWVyVHJlZUhv
c3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiAgICAgICAgIG1fc2NoZWR1bGVy
T25JbXBsVGhyZWFkLT5kaWRSZWNyZWF0ZUNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXgg
YjJhNGE0YWM5NGY3NTNkMTQzOWUxMWM1NDVhNWIzYzZmYWZiODQ3Ny4uZmYyNDk3MDg1MGQ1NGU4
ZWJmNmM3OGFlMjMxZGQxNmZlODAyYmJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTI4LDcgKzI4
LDYgQEAKIAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkND
TGF5ZXJUZXN0Q29tbW9uLmgiCi0jaW5jbHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgog
I2luY2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgpA
QCAtMjU1LDcgKzI1NCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9uRmFz
dFNjcm9sbGFibGVSZWdpb25CYXNpYykKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbldpdGhPZmZzZXQpCiB7Ci0gICAgbV9ob3N0SW1wbC0+
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFr
ZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRl
cmVyKGNyZWF0ZUNvbnRleHQoKSk7CiAKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBD
Q0xheWVySW1wbDo6Y3JlYXRlKDApOwogICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CkBA
IC00NDEsNyArNDQwLDcgQEAgcHJpdmF0ZToKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCBkaWREcmF3Tm90Q2FsbGVkT25IaWRkZW5MYXllcikKIHsKLSAgICBtX2hvc3RJbXBsLT5p
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtl
VGV4dHVyZVVwbG9hZGVyKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoY3JlYXRlQ29udGV4dCgpKTsKIAogICAgIC8vIEVuc3VyZSB2aXNpYmxlTGF5ZXJSZWN0IGZv
ciByb290IGxheWVyIGlzIGVtcHR5CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKElu
dFNpemUoMCwgMCkpOwpAQCAtNDgxLDcgKzQ4MCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgZGlkRHJhd05vdENhbGxlZE9uSGlkZGVuTGF5ZXIpCiAKIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgZGlkRHJhd0NhbGxlZE9uQWxsTGF5ZXJzKQogewotICAgIG1faG9z
dEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIo
bmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERp
ZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCkpOwpAQCAtNTM0LDcgKzUzMyw3IEBAIHByaXZhdGU6
CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcHJlcGFyZVRvRHJhd0ZhaWxzV2hl
bkFuaW1hdGlvblVzZXNDaGVja2VyYm9hcmQpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVV
cGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0
ZUNvbnRleHQoKSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAs
IDEwKSk7CiAKICAgICAvLyBXaGVuIHRoZSB0ZXh0dXJlIGlzIG5vdCBtaXNzaW5nLCB3ZSBkcmF3
IGFzIHVzdWFsLgpAQCAtNjYxLDcgKzY2MCw3IEBAIHByaXZhdGU6CiAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODMKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIHsKLSAgICBtX2hv
c3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRy
KG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpKTsKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9y
dFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAgIHsKQEAgLTg3OSw3ICs4NzgsNyBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVM
YXllcnMpCiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdmlld3BvcnRDb3ZlcmVk
KQogewotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRl
eHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKKyAgICBtX2hvc3RJbXBs
LT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOwogICAgIG1faG9zdElt
cGwtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSk7CiAKICAgICBJbnRTaXplIHZpZXdw
b3J0U2l6ZSgxMDAwLCAxMDAwKTsKQEAgLTk5MCw3ICs5ODksNyBAQCBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIHJlc2hhcGVOb3RDYWxsZWRVbnRpbERyYXcpCiB7CiAgICAgUmVzaGFw
ZVRyYWNrZXJDb250ZXh0KiByZXNoYXBlVHJhY2tlciA9IG5ldyBSZXNoYXBlVHJhY2tlckNvbnRl
eHQoKTsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0
UHRyKHJlc2hhcGVUcmFja2VyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9I
b3N0V2luZG93KTsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250
ZXh0LCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOwogICAgIG1faG9zdEltcGwtPnNldFZp
ZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCiAgICAgQ0NMYXllckltcGwqIHJvb3QgPSBu
ZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMSk7CkBAIC0xMDQwLDcgKzEwMzksNyBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBhcnRpYWxTd2FwUmVjZWl2ZXNEYW1hZ2VSZWN0
KQogICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgc2V0dGluZ3MucGFydGlhbFN3YXBFbmFi
bGVkID0gdHJ1ZTsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbGF5ZXJUcmVlSG9z
dEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOwotICAg
IGxheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBhZG9w
dFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcigpKSk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOwogICAgIGxheWVyVHJlZUhvc3RJbXBs
LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSg1MDAsIDUwMCkpOwogCiAgICAgQ0NMYXllckltcGwq
IHJvb3QgPSBuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMSk7CkBAIC0xMTI2LDcgKzExMjUs
NyBAQCBwcml2YXRlOgogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGNvbnRleHRM
b3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25TZW50VG9BbGxMYXllcnMpCiB7Ci0gICAgbV9ob3N0
SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihu
ZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRT
aXplKEludFNpemUoMTAsIDEwKSk7CiAKICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoQ29u
dGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyOjpjcmVhdGUoMCkpOwpAQCAtMTE0Miw3ICsx
MTQxLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBjb250ZXh0TG9zdEFuZFJl
c3RvcmVkTm90aWZpY2F0aW9uU2VudFRvQWxsTGF5ZXIKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXIx
LT5kaWRMb3NlQ29udGV4dENhbGxlZCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXIyLT5kaWRM
b3NlQ29udGV4dENhbGxlZCgpKTsKIAotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJl
bmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIp
KTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0
KCkpOwogCiAgICAgRVhQRUNUX1RSVUUocm9vdC0+ZGlkTG9zZUNvbnRleHRDYWxsZWQoKSk7CiAg
ICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5kaWRMb3NlQ29udGV4dENhbGxlZCgpKTsKQEAgLTExNTcs
NyArMTE1Niw3IEBAIHB1YmxpYzoKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZmlu
aXNoQWxsUmVuZGVyaW5nQWZ0ZXJDb250ZXh0TG9zdCkKIHsKICAgICAvLyBUaGUgY29udGV4dCBp
bml0aWFsaXphdGlvbiB3aWxsIGZhaWwsIGJ1dCB3ZSBzaG91bGQgc3RpbGwgYmUgYWJsZSB0byBj
YWxsIGZpbmlzaEFsbFJlbmRlcmluZygpIHdpdGhvdXQgYW55IGlsbCBlZmZlY3RzLgotICAgIG1f
aG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VX
ZWJHcmFwaGljc0NvbnRleHQzRE1ha2VDdXJyZW50RmFpbHMpLCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxv
YWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRv
cHRQdHIobmV3IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRE1ha2VDdXJyZW50RmFpbHMpLCBHcmFw
aGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKICAgICBtX2hvc3RJ
bXBsLT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKIH0KIApAQCAtMTE3Myw3ICsxMTcyLDcgQEAgcHJp
dmF0ZToKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxiYXJMYXllckxv
c3RDb250ZXh0KQogewotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNy
ZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKKyAgICBt
X2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOwogICAg
IG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCiAgICAgbV9o
b3N0SW1wbC0+c2V0Um9vdExheWVyKFNjcm9sbGJhckxheWVyRmFrZVBhaW50OjpjcmVhdGUoMCkp
OwpAQCAtMTE5MCw3ICsxMTg5LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBz
Y3JvbGxiYXJMYXllckxvc3RDb250ZXh0KQogICAgICAgICAvLyBTY3JvbGxiYXIgbGF5ZXIgc2hv
dWxkIGFsd2F5cyBnZW5lcmF0ZSBxdWFkcywgZXZlbiBhZnRlciBsb3N0IGNvbnRleHQKICAgICAg
ICAgRVhQRUNUX0dUKHJlbmRlclBhc3MtPnF1YWRMaXN0KCkuc2l6ZSgpLCAwdSk7CiAgICAgICAg
IG1faG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOwotICAgICAgICBtX2hvc3RJbXBs
LT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBG
YWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAgICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CiAgICAgfQogfQogCkBAIC0xMzIzLDcgKzEzMjIs
NyBAQCBwcml2YXRlOgogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRvbnRVc2VP
bGRSZXNvdXJjZXNBZnRlckxvc3RDb250ZXh0KQogewotICAgIG1faG9zdEltcGwtPmluaXRpYWxp
emVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJl
VXBsb2FkZXIpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVh
dGVDb250ZXh0KCkpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEw
LCAxMCkpOwogCiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290TGF5ZXIoQ0NMYXllckltcGw6
OmNyZWF0ZSgwKSk7CkBAIC0xMzY4LDcgKzEzNjcsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIGRvbnRVc2VPbGRSZXNvdXJjZXNBZnRlckxvc3RDb250ZXh0KQogCiAgICAgLy8g
TG9zZSB0aGUgY29udGV4dCwgcmVwbGFjaW5nIGl0IHdpdGggYSBTdHJpY3RXZWJHcmFwaGljc0Nv
bnRleHQzRCwgdGhhdAogICAgIC8vIHdpbGwgd2FybiBpZiBhbnkgcmVzb3VyY2UgZnJvbSB0aGUg
cHJldmlvdXMgY29udGV4dCBnZXRzIHVzZWQuCi0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdElt
cGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNEOjpj
cmVhdGVHcmFwaGljc0NvbnRleHQoKSk7CiAgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJl
cGFyZVRvRHJhdyhmcmFtZSkpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwog
ICAgIG1faG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5j
cHAKaW5kZXggNjlkMGZmNWZmNTAwYjE2ZjAyYzE2NGY5ODAxZTNkZjUzMjc2OTRiMC4uZGRhYjE3
NTY0YzcxNWM1YTZjNDQ0MzgyOTgwODBkN2JhNzlhMGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3Bw
CkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgi
CiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKQEAg
LTM2LDcgKzM1LDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwogCiBjbGFzcyBGcmFtZUNv
dW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0IDogcHVibGljIEZha2VXZWJHcmFw
aGljc0NvbnRleHQzRCB7CiBwdWJsaWM6CkBAIC05Myw3ICs5MSw3IEBAIHByaXZhdGU6CiAKIGNs
YXNzIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJSZW5kZXJlckNocm9t
aXVtIHsKIHB1YmxpYzoKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVy
ZXJDaHJvbWl1bUNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIpIDogTGF5ZXJSZW5k
ZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgdXBsb2FkZXIpIHsgfQorICAgIEZha2VMYXll
clJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQsIFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpIDogTGF5ZXJSZW5kZXJlckNocm9t
aXVtKGNsaWVudCwgY29udGV4dCkgeyB9CiAKICAgICAvLyBMYXllclJlbmRlcmVyQ2hyb21pdW0g
bWV0aG9kcy4KIApAQCAtMTA5LDcgKzEwNyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3N1
Z2dlc3RIYXZlQmFja2J1ZmZlck5vKDEsIGZhbHNlKQogICAgICAgICAsIG1fY29udGV4dChHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0
KGFkb3B0UHRyKG5ldyBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0
KCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKQogICAg
ICAgICAsIG1fbW9ja0NvbnRleHQoKnN0YXRpY19jYXN0PEZyYW1lQ291bnRpbmdNZW1vcnlBbGxv
Y2F0aW9uU2V0dGluZ0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RX
ZWJHcmFwaGljc0NvbnRleHQzRChtX2NvbnRleHQuZ2V0KCkpKSkKLSAgICAgICAgLCBtX2xheWVy
UmVuZGVyZXJDaHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX2NvbnRleHQucmVsZWFzZSgpLCBhZG9w
dFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcigpKSkKKyAgICAgICAgLCBtX2xheWVyUmVuZGVy
ZXJDaHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX2NvbnRleHQucmVsZWFzZSgpKQogICAgIHsKICAg
ICB9CiAKQEAgLTI3Myw3ICsyNzEsNyBAQCBwdWJsaWM6CiBURVNUKExheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbkRvZXNOb3RNYWtlU3luY2hyb25vdXNDYWxscykKIHsK
ICAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgRmFr
ZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQs
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNv
bnRleHQoYWRvcHRQdHIobmV3IEZvcmJpZFN5bmNocm9ub3VzQ2FsbENvbnRleHQpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpLCBhZG9wdFB0cihuZXcgRmFr
ZVRleHR1cmVVcGxvYWRlcigpKSk7CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXll
clJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZvcmJpZFN5
bmNocm9ub3VzQ2FsbENvbnRleHQpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlU
b0hvc3RXaW5kb3cpKTsKIAogICAgIEVYUEVDVF9UUlVFKGxheWVyUmVuZGVyZXJDaHJvbWl1bS5p
bml0aWFsaXplKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140736</attachid>
            <date>2012-05-08 10:20:09 -0700</date>
            <delta_ts>2012-05-08 15:25:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85893-20120508132008.patch</filename>
            <type>text/plain</type>
            <size>28675</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM0NDQxY2ViOTFlYzM3
ZTA5OTRiMTcxODk5ZTg4MzQ3ZWE3ZGRiNC4uN2U5ZmNmYTEzMDlmMjQ4ZWIxMTdjNDc2ODk4YmI4
ZTEwNzQxMmM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA1LTA4ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBD
cmVhdGUgYm90aCBhIHRocm90dGxlZCBhbmQgdW50aHJvdHRsZWQgdGV4dHVyZSB1cGxvYWRlciBp
biBMYXllclJlbmRlcmVyQ2hyb21pdW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NTg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENsZWFuIHVwIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0ZXh0dXJlIHVw
bG9hZGVycyBieSBjcmVhdGluZyBib3RoIGEKKyAgICAgICAgdGhyb3R0bGVkIGFuZCB1bnRocm90
dGxlZCB1cGxvYWRlciBpbiBMYXllclJlbmRlcmVyQ2hyb21pdW0uIENDUHJveHkKKyAgICAgICAg
bm93IG1ha2VzIHRoZSBjaG9pY2Ugb2Ygd2hpY2ggb25lIHRvIHVzZSB3aGVuIGlzc3VlcyB1cGRh
dGVzIGluc3RlYWQKKyAgICAgICAgb2Ygd2hlbiBpbml0aWFsaXphdGlvbiB0aGUgY29udGV4dC4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06Omlu
aXRpYWxpemVTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjp0aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1v
cmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXJPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKToKKwogMjAxMi0wNS0wOCAgQW5kcmVh
cyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2hyaW5rIEVsZW1lbnRBdHRy
aWJ1dGVEYXRhIGJ5IGZhY3RvcmluZyBvdXQgQXR0ciBvYmplY3QgY291bnQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IDFjZjYzZDgyODc0ZWM5ZmIzMzlkYmUwODI1YWY0ZmUzODQyNmRl
ZjguLjVlMmZmNGNiZTMzNWFkZTNiMTljZjMwMTkzMWYxNTM2Yjk3Y2MyNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDUtMDggIERhdmlkIFJldmVt
YW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIENyZWF0ZSBi
b3RoIGEgdGhyb3R0bGVkIGFuZCB1bnRocm90dGxlZCB0ZXh0dXJlIHVwbG9hZGVyIGluIExheWVy
UmVuZGVyZXJDaHJvbWl1bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg1ODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21p
dW1UZXN0LmNwcDoKKyAgICAgICAgKEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW06OkZha2VMYXll
clJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDo6
TGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCk6CisgICAgICAgIChURVNUKToKKwogMjAxMi0wNS0w
NyAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCBidWlsZCBmaXg6IGRpZE9wZW5GaWxlU3lzdGVtIGhpZGVzIG92ZXJsb2FkZWQgdmlydHVh
bCBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggOWYz
ZWRkMGFlZmE2M2FmODI4YjE3MTUxMzZkOWQ4NmEyZWFmYTBhZC4uM2FmYTYwN2U0NGE5NDJkNDA2
NTc0ZjJiNjJkZWI5N2UxMWM3M2Y1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwCkBAIC0xNDMsNiArMTQzLDI0IEBAIGJvb2wgbmVlZHNMaW9uSU9TdXJmYWNlUmVhZGJh
Y2tXb3JrYXJvdW5kKCkKICNlbmRpZgogfQogCitjbGFzcyBVbnRocm90dGxlZFRleHR1cmVVcGxv
YWRlciA6IHB1YmxpYyBUZXh0dXJlVXBsb2FkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093
blB0cjxVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSk7CisgICAg
fQorICAgIHZpcnR1YWwgflVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkgeyB9CisKKyAgICB2
aXJ0dWFsIGJvb2wgaXNCdXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5VcGxvYWRzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJl
Y3QpIHsgdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3Qs
IGRlc3RSZWN0KTsgfQorCitwcm90ZWN0ZWQ6CisgICAgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXIoKSB7IH0KK307CisKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBjbGFzcyBMYXllclJl
bmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlciA6IHB1YmxpYyBFeHRlbnNp
b25zM0RDaHJvbWl1bTo6U3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hST01JVU0gewpAQCAt
MTk0LDkgKzIxMiw5IEBAIHByaXZhdGU6CiB9OwogCiAKLVBhc3NPd25QdHI8TGF5ZXJSZW5kZXJl
ckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShMYXllclJlbmRlcmVyQ2hy
b21pdW1DbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dCwgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyKQorUGFzc093blB0cjxMYXll
clJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVu
ZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0KQogewotICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVu
ZGVyZXIoYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQs
IHVwbG9hZGVyKSkpOworICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVu
ZGVyZXIoYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQp
KSk7CiAgICAgaWYgKCFsYXllclJlbmRlcmVyLT5pbml0aWFsaXplKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC0yMDQsMTMgKzIyMiwxMSBAQCBQYXNzT3duUHRyPExheWVyUmVuZGVy
ZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5kZXJlckNo
cgogfQogCiBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bShMYXll
clJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRl
eHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3du
UHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0
KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSgw
KQogICAgICwgbV9jdXJyZW50TWFuYWdlZFRleHR1cmUoMCkKICAgICAsIG1fb2Zmc2NyZWVuRnJh
bWVidWZmZXJJZCgwKQotICAgICwgbV90ZXh0dXJlVXBsb2FkZXIodXBsb2FkZXIpCiAgICAgLCBt
X2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkKICAgICAs
IG1fc2hhcmVkR2VvbWV0cnlRdWFkKEZsb2F0UmVjdCgtMC41ZiwgLTAuNWYsIDEuMGYsIDEuMGYp
KQpAQCAtMTM4Miw2ICsxMzk4LDkgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRp
YWxpemVTaGFyZWRPYmplY3RzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVz
KHZpZXdwb3J0U2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwogICAg
IG1fdGV4dHVyZUNvcGllciA9IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1fY29u
dGV4dC5nZXQoKSk7CisgICAgbV91bnRocm90dGxlZFRleHR1cmVVcGxvYWRlciA9IFVudGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUoKTsKKyAgICBtX3Rocm90dGxlZFRleHR1cmVVcGxv
YWRlciA9IFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7
CisgICAgbV90ZXh0dXJlQ29waWVyID0gQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjcmVhdGUo
bV9jb250ZXh0LmdldCgpKTsKICAgICBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNr
aW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAgbV9yZW5k
ZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3Jl
YXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVy
ZVVzYWdlSGludCkKQEAgLTE2NDEsNyArMTY2MCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cygpCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7CiAKICAg
ICBtX3RleHR1cmVDb3BpZXIuY2xlYXIoKTsKLSAgICBtX3RleHR1cmVVcGxvYWRlci5jbGVhcigp
OworICAgIG1fdW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY2xlYXIoKTsKKyAgICBtX3Rocm90
dGxlZFRleHR1cmVVcGxvYWRlci5jbGVhcigpOwogCiAgICAgcmVsZWFzZVJlbmRlclN1cmZhY2VU
ZXh0dXJlcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBkNzNm
NzFhZTdkMDE3MDVmNDkwMDYyNmQ4NjdiMzQ1NzkwNzc1NTI0Li40ZThhMjVjYzIwZWNkZjNmOTQ0
Mzg0YmU5ZDZkZjA2NWE2NWQ3M2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW0g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheWVyUmVuZGVyZXJDaHJvbWl1bSk7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBjcmVhdGUo
TGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4sIFBhc3NPd25QdHI8VGV4dHVyZVVwbG9hZGVyPik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8
TGF5ZXJSZW5kZXJlckNocm9taXVtPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50
KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwogCiAgICAgfkxheWVyUmVuZGVyZXJD
aHJvbWl1bSgpOwogCkBAIC0xMjEsNyArMTIxLDggQEAgcHVibGljOgogCiAgICAgVGV4dHVyZU1h
bmFnZXIqIHJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVu
ZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLmdldCgpOyB9CiAgICAgVGV4dHVyZUNvcGllciogdGV4
dHVyZUNvcGllcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUNvcGllci5nZXQoKTsgfQotICAg
IFRleHR1cmVVcGxvYWRlciogdGV4dHVyZVVwbG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlVXBsb2FkZXIuZ2V0KCk7IH0KKyAgICBUZXh0dXJlVXBsb2FkZXIqIHVudGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV91bnRocm90dGxlZFRleHR1cmVVcGxvYWRl
ci5nZXQoKTsgfQorICAgIFRleHR1cmVVcGxvYWRlciogdGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
KCkgY29uc3QgeyByZXR1cm4gbV90aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuZ2V0KCk7IH0KICAg
ICBUZXh0dXJlQWxsb2NhdG9yKiByZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KICAgICBU
ZXh0dXJlQWxsb2NhdG9yKiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQogCkBAIC0xNDQsNyArMTQ1LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW5zdXJlRnJhbWVidWZmZXIoKTsKICAgICBib29sIGlz
RnJhbWVidWZmZXJEaXNjYXJkZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnJhbWVidWZmZXJEaXNj
YXJkZWQ7IH0KIAotICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21p
dW1DbGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgUGFzc093blB0cjxUZXh0
dXJlVXBsb2FkZXI+KTsKKyAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNo
cm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwogICAgIGJvb2wg
aW5pdGlhbGl6ZSgpOwogCiBwcml2YXRlOgpAQCAtMjg2LDcgKzI4Nyw4IEBAIHByaXZhdGU6CiAK
ICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2Vy
OwogICAgIE93blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IG1fdGV4dHVyZUNvcGllcjsK
LSAgICBPd25QdHI8VGV4dHVyZVVwbG9hZGVyPiBtX3RleHR1cmVVcGxvYWRlcjsKKyAgICBPd25Q
dHI8VGV4dHVyZVVwbG9hZGVyPiBtX3VudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOworICAgIE93
blB0cjxUZXh0dXJlVXBsb2FkZXI+IG1fdGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOwogICAgIE93
blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9y
OwogICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fcmVuZGVyU3VyZmFjZVRl
eHR1cmVBbGxvY2F0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
aW5kZXggMzFiZGJjMmU1ZmYxZWI5MjUyMjBmOGUzZDU1MDNmMjg0NzEyMjgwZS4uM2VhNWZiMTlh
YzdiZGNkYjRkZDZmYzFlYzExNTk1MWVjYTQ1ZmNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKQEAgLTUzMSwxMCArNTMxLDEwIEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgbV90aW1lU291cmNlQ2xpZW50
QWRhcHRlci0+c2V0QWN0aXZlKHNob3VsZFRpY2tJbkJhY2tncm91bmQpOwogfQogCi1ib29sIEND
TGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIFBhc3NPd25QdHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxv
YWRlcikKK2Jvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
UGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKIHsKICAgICBPd25QdHI8TGF5
ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyOwotICAgIGxheWVyUmVuZGVyZXIgPSBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCBjb250ZXh0LCB1cGxvYWRlcik7Cisg
ICAgbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIGNv
bnRleHQpOwogCiAgICAgLy8gU2luY2Ugd2Ugbm93IGhhdmUgYSBuZXcgY29udGV4dC9sYXllclJl
bmRlcmVyLCB3ZSBjYW5ub3QgY29udGludWUgdG8gdXNlIHRoZSBvbGQKICAgICAvLyByZXNvdXJj
ZXMgKGkuZS4gcmVuZGVyU3VyZmFjZXMgYW5kIHRleHR1cmUgSURzKS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCA4ZjE2ZjlmZDQwNjQ3ZTlhNTNjYTgxZWY2YmFhZTY3
OTcyY2M0MjlkLi5kZGUyN2Y2OGJhMThmNGUxOWIxZDNhNjMxOWIxMDU2N2UxYTZiNzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xMjIsNyArMTIyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgaW50IGZyYW1lTnVtYmVy
KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51bWJlcjsgfQogCi0gICAgYm9vbCBpbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgUGFzc093blB0cjxU
ZXh0dXJlVXBsb2FkZXI+KTsKKyAgICBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKICAgICBib29sIGlzQ29udGV4dExvc3QoKTsKICAg
ICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIoKSB7IHJldHVybiBtX2xheWVy
UmVuZGVyZXIuZ2V0KCk7IH0KICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBs
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwCmluZGV4IDJjNDE3ZGYxNzEzYjY4MGQ1Y2Q1ZDk0MjIwNTdhYjM3NjIz
NzI5N2YuLjIxYzA5ZjNmMzk0OTczMmQxNzg4NDMyOWRhYjJiODU0ZGM1YTA3ZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0zOCwyNCArMzgsNiBAQCB1c2lu
ZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVudGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyIDogcHVibGljIFRleHR1cmVVcGxvYWRlciB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOwotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVbnRocm90dGxlZFRleHR1cmVVcGxv
YWRlcigpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIo
KSB7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZW5kVXBs
b2FkcygpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRv
ciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBVbnRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcigpIHsgfQotfTsKLQogUGFzc093blB0cjxDQ1Byb3h5PiBDQ1Npbmds
ZVRocmVhZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogewog
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTaW5nbGVUaHJlYWRQcm94eShsYXllclRyZWVIb3N0
KSk7CkBAIC0xNTUsNyArMTM3LDcgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojppbml0aWFs
aXplTGF5ZXJSZW5kZXJlcigpCiAgICAgQVNTRVJUKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0
aW9uKTsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAg
ICAgICBib29sIG9rID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb24ucmVsZWFzZSgpLCBVbnRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcjo6Y3JlYXRlKCkpOworICAgICAgICBib29sIG9rID0gbV9sYXllclRyZWVI
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6
YXRpb24ucmVsZWFzZSgpKTsKICAgICAgICAgaWYgKG9rKSB7CiAgICAgICAgICAgICBtX2xheWVy
UmVuZGVyZXJJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXNGb3JNYWluVGhyZWFkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpOwpAQCAtMTc5LDcgKzE2MSw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJl
YWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRz
VGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJl
QWxsb2NhdG9yKCkpOwotICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIFVudGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyOjpjcmVhdGUoKSk7CisgICAgICAgIGluaXRpYWxpemVkID0gbV9sYXllclRyZWVIb3N0SW1w
bC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7CiAgICAgICAgIGlmIChpbml0aWFs
aXplZCkgewogICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRo
cmVhZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsK
ICAgICAgICAgfQpAQCAtMjI2LDcgKzIwOCw3IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
ZG9Db21taXQoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKICAgICAgICAgLy8gaGVyZSBhcyB0
aGUgdGhyb3R0bGVkIHVwbG9hZGVyIGlzbid0IHVzZWQgaW4gc2luZ2xlIHRocmVhZCBtb2RlLgog
ICAgICAgICAvLyBGb3IgY29ycmVjdG5lc3MsIGxvb3AgdW50aWwgbm8gbW9yZSB1cGRhdGVzIGFy
ZSBwZW5kaW5nLgogICAgICAgICB3aGlsZSAodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKQotICAg
ICAgICAgICAgdXBkYXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBt
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwgbV9sYXllclRy
ZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCksIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVyKCksIG1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlcygpKTsKKyAgICAgICAgICAgIHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJl
QWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVy
ZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnVudGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyKCksIG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpKTsKIAogICAg
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlz
aWJsZSgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJl
YWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CmluZGV4IDE1N2ZjMWRmMDg2M2I3YmRiOTdkYmQ0M2Q1ZDMyMDhkMzVmM2Y1YWEuLjFhZDk5MWFh
OGJkZDY4NTAzOWUxZGZmNWQ4MWY3ZWMwNTA1MTRlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCkBAIC01NywyNSArNTcsNiBAQCBzdGF0aWMgY29uc3QgZG91YmxlIGNvbnRleHRSZWNy
ZWF0aW9uVGlja1JhdGUgPSAwLjAzOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1F
OiByZW1vdmUgd2hlbiBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIgaXMgcmVhZHkgdG8gYmUgdXNl
ZC4KLWNsYXNzIFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyIDogcHVibGljIFRleHR1cmVVcGxv
YWRlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVW50aHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXIpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFVudGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXIoY29udGV4dCkpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5VbnRocm90dGxlZFRleHR1cmVVcGxv
YWRlcigpIHsgfQotCi0gICAgdmlydHVhbCBib29sIGlzQnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBl
bmRVcGxvYWRzKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0IGRlc3RSZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxs
b2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0KLQotcHJvdGVjdGVkOgotICAgIGV4cGxp
Y2l0IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+KSB7IH0KLX07Ci0KIFBhc3NPd25QdHI8Q0NQcm94eT4gQ0NUaHJlYWRQcm94eTo6Y3JlYXRl
KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IENDVGhyZWFkUHJveHkobGF5ZXJUcmVlSG9zdCkpOwpAQCAtNTg2LDcgKzU2Nyw4IEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7
CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1v
cmVSZXNvdXJjZXMiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0
ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
LT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5
ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVy
UmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVyKCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUpOwor
ICAgIC8vIEZJWE1FOiBVc2UgdGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkgd2hlbiBUaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIgaXMgcmVhZHkgdG8gYmUgdXNlZC4KKyAgICBtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
eHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnVudGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyKCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6
OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCkBAIC04MjQsOCArODA2LDcgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25F
dmVudCogY29tcGwKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXJPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRo
cmVhZCk7Ci0gICAgT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIgPSBVbnRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uT25J
bXBsVGhyZWFkLmdldCgpKTsKLSAgICAqaW5pdGlhbGl6ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29udGV4dEJlZm9yZUluaXRpYWxp
emF0aW9uT25JbXBsVGhyZWFkLnJlbGVhc2UoKSwgdXBsb2FkZXIucmVsZWFzZSgpKTsKKyAgICAq
aW5pdGlhbGl6ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFkLnJlbGVh
c2UoKSk7CiAgICAgaWYgKCppbml0aWFsaXplU3VjY2VlZGVkKSB7CiAgICAgICAgICpjYXBhYmls
aXRpZXMgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7
CiAgICAgICAgIGlmIChjYXBhYmlsaXRpZXMtPnVzaW5nU3dhcENvbXBsZXRlQ2FsbGJhY2spCkBA
IC04NzUsOCArODU2LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbklt
cGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEcKICAgICBUUkFDRV9FVkVO
VDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCIpOwog
ICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVD
b250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICBPd25QdHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxvYWRl
ciA9IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUoY29udGV4dFB0cik7Ci0gICAg
KnJlY3JlYXRlU3VjY2VlZGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoYWRvcHRSZWYoY29udGV4dFB0ciksIHVwbG9hZGVyLnJlbGVhc2UoKSk7CisgICAg
KnJlY3JlYXRlU3VjY2VlZGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoYWRvcHRSZWYoY29udGV4dFB0cikpOwogICAgIGlmICgqcmVjcmVhdGVTdWNjZWVk
ZWQpIHsKICAgICAgICAgKmNhcGFiaWxpdGllcyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKICAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQt
PmRpZFJlY3JlYXRlQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBiMmE0YTRhYzk0Zjc1
M2QxNDM5ZTExYzU0NWE1YjNjNmZhZmI4NDc3Li5mZjI0OTcwODUwZDU0ZThlYmY2Yzc4YWUyMzFk
ZDE2ZmU4MDJiYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5j
bHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiQ0NMYXllclRlc3RDb21t
b24uaCIKLSNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFr
ZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCkBAIC0yNTUsNyArMjU0
LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBub25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbkJhc2ljKQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIG5vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uV2l0aE9mZnNldCkKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9h
ZGVyKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29u
dGV4dCgpKTsKIAogICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoMCk7CiAgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKQEAgLTQ0MSw3ICs0NDAs
NyBAQCBwcml2YXRlOgogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdO
b3RDYWxsZWRPbkhpZGRlbkxheWVyKQogewotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2Fk
ZXIpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250
ZXh0KCkpOwogCiAgICAgLy8gRW5zdXJlIHZpc2libGVMYXllclJlY3QgZm9yIHJvb3QgbGF5ZXIg
aXMgZW1wdHkKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgwLCAwKSk7
CkBAIC00ODEsNyArNDgwLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWRE
cmF3Tm90Q2FsbGVkT25IaWRkZW5MYXllcikKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCBkaWREcmF3Q2FsbGVkT25BbGxMYXllcnMpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1
cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNy
ZWF0ZUNvbnRleHQoKSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUo
MTAsIDEwKSk7CiAKICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5
ZXI6OmNyZWF0ZSgwKSk7CkBAIC01MzQsNyArNTMzLDcgQEAgcHJpdmF0ZToKIAogVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVuQW5pbWF0aW9uVXNl
c0NoZWNrZXJib2FyZCkKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJl
cihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7Cisg
ICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpKTsK
ICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAg
IC8vIFdoZW4gdGhlIHRleHR1cmUgaXMgbm90IG1pc3NpbmcsIHdlIGRyYXcgYXMgdXN1YWwuCkBA
IC02NjEsNyArNjYwLDcgQEAgcHJpdmF0ZToKIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NTc4MwogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVu
ZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogewotICAgIG1faG9zdEltcGwtPmluaXRp
YWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0
dXJlVXBsb2FkZXIpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihj
cmVhdGVDb250ZXh0KCkpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXpl
KDEwLCAxMCkpOwogCiAgICAgewpAQCAtODc5LDcgKzg3OCw3IEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAogVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB2aWV3cG9ydENvdmVyZWQpCiB7Ci0gICAgbV9o
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0
cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0QmFja2dy
b3VuZENvbG9yKENvbG9yOjpncmF5KTsKIAogICAgIEludFNpemUgdmlld3BvcnRTaXplKDEwMDAs
IDEwMDApOwpAQCAtOTkwLDcgKzk4OSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgcmVzaGFwZU5vdENhbGxlZFVudGlsRHJhdykKIHsKICAgICBSZXNoYXBlVHJhY2tlckNvbnRl
eHQqIHJlc2hhcGVUcmFja2VyID0gbmV3IFJlc2hhcGVUcmFja2VyQ29udGV4dCgpOwogICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIocmVzaGFwZVRy
YWNrZXIpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwot
ICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIGFkb3B0UHRy
KG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY29udGV4dCk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKElu
dFNpemUoMTAsIDEwKSk7CiAKICAgICBDQ0xheWVySW1wbCogcm9vdCA9IG5ldyBGYWtlRHJhd2Fi
bGVDQ0xheWVySW1wbCgxKTsKQEAgLTEwNDAsNyArMTAzOSw3IEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAgICAgQ0NTZXR0
aW5ncyBzZXR0aW5nczsKICAgICBzZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSB0cnVlOwog
ICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBsYXllclRyZWVIb3N0SW1wbCA9IENDTGF5
ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7Ci0gICAgbGF5ZXJUcmVlSG9z
dEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIGFkb3B0UHRyKG5ldyBGYWtl
VGV4dHVyZVVwbG9hZGVyKCkpKTsKKyAgICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY29udGV4dCk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKDUwMCwgNTAwKSk7CiAKICAgICBDQ0xheWVySW1wbCogcm9vdCA9IG5ldyBG
YWtlRHJhd2FibGVDQ0xheWVySW1wbCgxKTsKQEAgLTExMjYsNyArMTEyNSw3IEBAIHByaXZhdGU6
CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgY29udGV4dExvc3RBbmRSZXN0b3Jl
ZE5vdGlmaWNhdGlvblNlbnRUb0FsbExheWVycykKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFs
aXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVy
ZVVwbG9hZGVyKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3Jl
YXRlQ29udGV4dCgpKTsKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgx
MCwgMTApKTsKIAogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihDb250ZXh0TG9zdE5vdGlm
aWNhdGlvbkNoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CkBAIC0xMTQyLDcgKzExNDEsNyBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGNvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmlj
YXRpb25TZW50VG9BbGxMYXllcgogICAgIEVYUEVDVF9GQUxTRShsYXllcjEtPmRpZExvc2VDb250
ZXh0Q2FsbGVkKCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllcjItPmRpZExvc2VDb250ZXh0Q2Fs
bGVkKCkpOwogCi0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRl
Q29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9z
dEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CiAKICAgICBF
WFBFQ1RfVFJVRShyb290LT5kaWRMb3NlQ29udGV4dENhbGxlZCgpKTsKICAgICBFWFBFQ1RfVFJV
RShsYXllcjEtPmRpZExvc2VDb250ZXh0Q2FsbGVkKCkpOwpAQCAtMTE1Nyw3ICsxMTU2LDcgQEAg
cHVibGljOgogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBmaW5pc2hBbGxSZW5kZXJp
bmdBZnRlckNvbnRleHRMb3N0KQogewogICAgIC8vIFRoZSBjb250ZXh0IGluaXRpYWxpemF0aW9u
IHdpbGwgZmFpbCwgYnV0IHdlIHNob3VsZCBzdGlsbCBiZSBhYmxlIHRvIGNhbGwgZmluaXNoQWxs
UmVuZGVyaW5nKCkgd2l0aG91dCBhbnkgaWxsIGVmZmVjdHMuCi0gICAgbV9ob3N0SW1wbC0+aW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNETWFrZUN1cnJlbnRGYWlscyksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3Rs
eVRvSG9zdFdpbmRvdyksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAg
bV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFr
ZVdlYkdyYXBoaWNzQ29udGV4dDNETWFrZUN1cnJlbnRGYWlscyksIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOwogICAgIG1faG9zdEltcGwtPmZpbmlzaEFs
bFJlbmRlcmluZygpOwogfQogCkBAIC0xMTczLDcgKzExNzIsNyBAQCBwcml2YXRlOgogCiBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbGJhckxheWVyTG9zdENvbnRleHQpCiB7
Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgp
LCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CiAgICAgbV9ob3N0SW1wbC0+
c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAKICAgICBtX2hvc3RJbXBsLT5zZXRS
b290TGF5ZXIoU2Nyb2xsYmFyTGF5ZXJGYWtlUGFpbnQ6OmNyZWF0ZSgwKSk7CkBAIC0xMTkwLDcg
KzExODksNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbGJhckxheWVy
TG9zdENvbnRleHQpCiAgICAgICAgIC8vIFNjcm9sbGJhciBsYXllciBzaG91bGQgYWx3YXlzIGdl
bmVyYXRlIHF1YWRzLCBldmVuIGFmdGVyIGxvc3QgY29udGV4dAogICAgICAgICBFWFBFQ1RfR1Qo
cmVuZGVyUGFzcy0+cXVhZExpc3QoKS5zaXplKCksIDB1KTsKICAgICAgICAgbV9ob3N0SW1wbC0+
ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7Ci0gICAgICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBs
b2FkZXIpKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3Jl
YXRlQ29udGV4dCgpKTsKICAgICB9CiB9CiAKQEAgLTEzMjMsNyArMTMyMiw3IEBAIHByaXZhdGU6
CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZG9udFVzZU9sZFJlc291cmNlc0Fm
dGVyTG9zdENvbnRleHQpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwor
ICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7
CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAKICAg
ICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3RMYXllcihDQ0xheWVySW1wbDo6Y3JlYXRlKDApKTsK
QEAgLTEzNjgsNyArMTM2Nyw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZG9u
dFVzZU9sZFJlc291cmNlc0FmdGVyTG9zdENvbnRleHQpCiAKICAgICAvLyBMb3NlIHRoZSBjb250
ZXh0LCByZXBsYWNpbmcgaXQgd2l0aCBhIFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNELCB0aGF0
CiAgICAgLy8gd2lsbCB3YXJuIGlmIGFueSByZXNvdXJjZSBmcm9tIHRoZSBwcmV2aW91cyBjb250
ZXh0IGdldHMgdXNlZC4KLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihT
dHJpY3RXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCksIGFkb3B0
UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpKTsKICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZy
YW1lKSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgbV9ob3N0SW1w
bC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA2OWQw
ZmY1ZmY1MDBiMTZmMDJjMTY0Zjk4MDFlM2RmNTMyNzY5NGIwLi5kZGFiMTc1NjRjNzE1YzVhNmM0
NDQzODI5ODA4MGQ3YmE3OWEwYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKQEAgLTI1LDcgKzI1
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21p
dW0uaCIKIAotI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIKICNpbmNsdWRlICJG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgpAQCAtMzYsNyArMzUsNiBA
QAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci11
c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CiAKIGNsYXNzIEZyYW1lQ291bnRpbmdNZW1vcnlB
bGxvY2F0aW9uU2V0dGluZ0NvbnRleHQgOiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
IHsKIHB1YmxpYzoKQEAgLTkzLDcgKzkxLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgRmFrZUxheWVy
UmVuZGVyZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllclJlbmRlcmVyQ2hyb21pdW0gewogcHVibGlj
OgotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xp
ZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIFBhc3NP
d25QdHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxvYWRlcikgOiBMYXllclJlbmRlcmVyQ2hyb21pdW0o
Y2xpZW50LCBjb250ZXh0LCB1cGxvYWRlcikgeyB9CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJv
bWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dCkgOiBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBj
b250ZXh0KSB7IH0KIAogICAgIC8vIExheWVyUmVuZGVyZXJDaHJvbWl1bSBtZXRob2RzLgogCkBA
IC0xMDksNyArMTA3LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fc3VnZ2VzdEhhdmVCYWNr
YnVmZmVyTm8oMSwgZmFsc2UpCiAgICAgICAgICwgbV9jb250ZXh0KEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3
IEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRleHQoKSksIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpCiAgICAgICAgICwgbV9tb2Nr
Q29udGV4dCgqc3RhdGljX2Nhc3Q8RnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5n
Q29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29u
dGV4dDNEKG1fY29udGV4dC5nZXQoKSkpKQotICAgICAgICAsIG1fbGF5ZXJSZW5kZXJlckNocm9t
aXVtKCZtX21vY2tDbGllbnQsIG1fY29udGV4dC5yZWxlYXNlKCksIGFkb3B0UHRyKG5ldyBGYWtl
VGV4dHVyZVVwbG9hZGVyKCkpKQorICAgICAgICAsIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtKCZt
X21vY2tDbGllbnQsIG1fY29udGV4dC5yZWxlYXNlKCkpCiAgICAgewogICAgIH0KIApAQCAtMjcz
LDcgKzI3MSw3IEBAIHB1YmxpYzoKIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIGlu
aXRpYWxpemF0aW9uRG9lc05vdE1ha2VTeW5jaHJvbm91c0NhbGxzKQogewogICAgIEZha2VMYXll
clJlbmRlcmVyQ2hyb21pdW1DbGllbnQgbW9ja0NsaWVudDsKLSAgICBGYWtlTGF5ZXJSZW5kZXJl
ckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0
cihuZXcgRm9yYmlkU3luY2hyb25vdXNDYWxsQ29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9h
ZGVyKCkpKTsKKyAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJv
bWl1bSgmbW9ja0NsaWVudCwgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRm9yYmlkU3luY2hyb25vdXNDYWxs
Q29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykp
OwogCiAgICAgRVhQRUNUX1RSVUUobGF5ZXJSZW5kZXJlckNocm9taXVtLmluaXRpYWxpemUoKSk7
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140799</attachid>
            <date>2012-05-08 15:25:38 -0700</date>
            <delta_ts>2012-05-10 16:20:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85893-20120508182536.patch</filename>
            <type>text/plain</type>
            <size>25905</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM0NDQxY2ViOTFlYzM3
ZTA5OTRiMTcxODk5ZTg4MzQ3ZWE3ZGRiNC4uYTNiZTA5OTY5N2YzOGNjNjhmYTQwYTIzNjBmZGUx
MGU1OTVlMDM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA1LTA4ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBN
b3ZlIGluc3RhbnRpYXRpb24gb2YgdGV4dHVyZSB1cGxvYWRlciB0byBMYXllclJlbmRlcmVyQ2hy
b21pdW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
dmUgaW5zdGFudGlhdGlvbiBvZiB0ZXh0dXJlIHVwbG9hZGVyIHRvIExheWVyUmVuZGVyZXJDaHJv
bWl1bSBhbmQKKyAgICAgICAgYWxsb3cgQ0NQcm94eSB0byBkZWNpZGUgYmV0d2VlbiBhIHRocm90
dGxlZCBvciB1bnRocm90dGxlZCB1cGxvYWRlcgorICAgICAgICB1c2luZyBhIGZsYWcgcGFzc2Vk
IHRvIHRoZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVk
T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVh
dGVDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQpOgorCiAy
MDEyLTA1LTA4ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBT
aHJpbmsgRWxlbWVudEF0dHJpYnV0ZURhdGEgYnkgZmFjdG9yaW5nIG91dCBBdHRyIG9iamVjdCBj
b3VudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMWNmNjNkODI4NzRlYzlmYjMzOWRi
ZTA4MjVhZjRmZTM4NDI2ZGVmOC4uZmZkMTI5NzkwN2M2ODc2MjQyYWViYjlkYWM4YjQwNGVlMGM5
MmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0w
NS0wOCAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtD
aHJvbWl1bV0gTW92ZSBpbnN0YW50aWF0aW9uIG9mIHRleHR1cmUgdXBsb2FkZXIgdG8gTGF5ZXJS
ZW5kZXJlckNocm9taXVtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODU4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QuY3BwOgorICAgICAgICAoRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bTo6RmFrZUxheWVy
UmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0OjpM
YXllclJlbmRlcmVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKFRFU1QpOgorCiAyMDEyLTA1LTA3
ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeDogZGlkT3BlbkZpbGVTeXN0ZW0gaGlkZXMgb3ZlcmxvYWRlZCB2aXJ0dWFs
IGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA5ZjNl
ZGQwYWVmYTYzYWY4MjhiMTcxNTEzNmQ5ZDg2YTJlYWZhMGFkLi4xYTI5OWRlYWE5OGM4OWMyNzdl
ZjE4YWQyNTRlNWJkNWNhZTMzNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTE0Myw2ICsxNDMsMjQgQEAgYm9vbCBuZWVkc0xpb25JT1N1cmZhY2VSZWFkYmFj
a1dvcmthcm91bmQoKQogI2VuZGlmCiB9CiAKK2NsYXNzIFVudGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyIDogcHVibGljIFRleHR1cmVVcGxvYWRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigpKTsKKyAgICB9
CisgICAgdmlydHVhbCB+VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KKworICAgIHZp
cnR1YWwgYm9vbCBpc0J1c3koKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBi
ZWdpblVwbG9hZHMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVj
dCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwg
ZGVzdFJlY3QpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRl
cigpIHsgfQorfTsKKwogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIGNsYXNzIExheWVyUmVu
ZGVyZXJTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyIDogcHVibGljIEV4dGVuc2lv
bnMzRENocm9taXVtOjpTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlVTSB7CkBAIC0x
OTQsOSArMjEyLDkgQEAgcHJpdmF0ZToKIH07CiAKIAotUGFzc093blB0cjxMYXllclJlbmRlcmVy
Q2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVuZGVyZXJDaHJv
bWl1bUNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0
LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIpCitQYXNzT3duUHRyPExheWVy
UmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5k
ZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNvbnRleHQsIGJvb2wgdXNlVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKQogewotICAgIE93blB0
cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQdHIobmV3IExheWVy
UmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIHVwbG9hZGVyKSkpOworICAgIE93blB0
cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQdHIobmV3IExheWVy
UmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIHVzZVRocm90dGxlZFRleHR1cmVVcGxv
YWRlcikpKTsKICAgICBpZiAoIWxheWVyUmVuZGVyZXItPmluaXRpYWxpemUoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKQEAgLTIwNSwxNyArMjIzLDE3IEBAIFBhc3NPd25QdHI8TGF5ZXJS
ZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShMYXllclJlbmRl
cmVyQ2hyCiAKIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKExh
eWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NP
d25QdHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxvYWRlcikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKQog
ICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSgwKQog
ICAgICwgbV9jdXJyZW50TWFuYWdlZFRleHR1cmUoMCkKICAgICAsIG1fb2Zmc2NyZWVuRnJhbWVi
dWZmZXJJZCgwKQotICAgICwgbV90ZXh0dXJlVXBsb2FkZXIodXBsb2FkZXIpCiAgICAgLCBtX2Nv
bnRleHQoY29udGV4dCkKICAgICAsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkKICAgICAsIG1f
c2hhcmVkR2VvbWV0cnlRdWFkKEZsb2F0UmVjdCgtMC41ZiwgLTAuNWYsIDEuMGYsIDEuMGYpKQog
ICAgICwgbV9pc1ZpZXdwb3J0Q2hhbmdlZChmYWxzZSkKICAgICAsIG1faXNGcmFtZWJ1ZmZlckRp
c2NhcmRlZChmYWxzZSkKKyAgICAsIG1fdXNlVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKHVzZVRo
cm90dGxlZFRleHR1cmVVcGxvYWRlcikKIHsKIH0KIApAQCAtMTM4Miw2ICsxNDAwLDExIEBAIGJv
b2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cygpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2Fw
YWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKICAgICBtX3RleHR1cmVDb3BpZXIgPSBBY2NlbGVy
YXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmIChtX3Vz
ZVRocm90dGxlZFRleHR1cmVVcGxvYWRlcikKKyAgICAgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBU
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIGVs
c2UKKyAgICAgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRl
cjo6Y3JlYXRlKCk7CisgICAgbV90ZXh0dXJlQ29waWVyID0gQWNjZWxlcmF0ZWRUZXh0dXJlQ29w
aWVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKICAgICBtX2NvbnRlbnRzVGV4dHVyZUFsbG9j
YXRvciA9IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7
CiAgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVz
LnVzaW5nVGV4dHVyZVVzYWdlSGludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
aW5kZXggZDczZjcxYWU3ZDAxNzA1ZjQ5MDA2MjZkODY3YjM0NTc5MDc3NTUyNC4uN2Q3NTNmMTE4
MDFmYmIyOTQ4YzkzOTUyZjljZDRjOWQ3ZTcyZjlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogY2xhc3MgTGF5ZXJSZW5kZXJl
ckNocm9taXVtIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllclJlbmRlcmVyQ2hyb21p
dW0pOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1
bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4pOworICAgIHN0YXRpYyBQ
YXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJv
bWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBib29sIHVzZVRocm90
dGxlZFRleHR1cmVVcGxvYWRlcik7CiAKICAgICB+TGF5ZXJSZW5kZXJlckNocm9taXVtKCk7CiAK
QEAgLTE0NCw3ICsxNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbnN1cmVGcmFtZWJ1ZmZl
cigpOwogICAgIGJvb2wgaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNGcmFtZWJ1ZmZlckRpc2NhcmRlZDsgfQogCi0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKExh
eWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4pOworICAgIExheWVyUmVuZGVyZXJDaHJvbWl1
bShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiwgYm9vbCB1c2VUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOwogICAgIGJvb2wgaW5pdGlh
bGl6ZSgpOwogCiBwcml2YXRlOgpAQCAtMjk4LDYgKzI5OCw3IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIG1faXNWaWV3cG9ydENoYW5nZWQ7CiAgICAgYm9vbCBtX2lzRnJhbWVidWZmZXJEaXNjYXJk
ZWQ7CisgICAgYm9vbCBtX3VzZVRocm90dGxlZFRleHR1cmVVcGxvYWRlcjsKIH07CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCAzMWJkYmMyZTVmZjFlYjky
NTIyMGY4ZTNkNTUwM2YyODQ3MTIyODBlLi4wZTlmNDY5MTIzOGYzYWRhYTllZmVhNDFkOGNjMTUx
NzVhMWVkYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAt
NTMxLDEwICs1MzEsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaXNpYmxlKGJv
b2wgdmlzaWJsZSkKICAgICBtX3RpbWVTb3VyY2VDbGllbnRBZGFwdGVyLT5zZXRBY3RpdmUoc2hv
dWxkVGlja0luQmFja2dyb3VuZCk7CiB9CiAKLWJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dCwgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyKQorYm9vbCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjb250ZXh0LCBib29sIHVzZVRocm90dGxlZFRleHR1cmVVcGxvYWRlcikKIHsKICAg
ICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyOwotICAgIGxheWVy
UmVuZGVyZXIgPSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCBjb250ZXh0LCB1
cGxvYWRlcik7CisgICAgbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3Jl
YXRlKHRoaXMsIGNvbnRleHQsIHVzZVRocm90dGxlZFRleHR1cmVVcGxvYWRlcik7CiAKICAgICAv
LyBTaW5jZSB3ZSBub3cgaGF2ZSBhIG5ldyBjb250ZXh0L2xheWVyUmVuZGVyZXIsIHdlIGNhbm5v
dCBjb250aW51ZSB0byB1c2UgdGhlIG9sZAogICAgIC8vIHJlc291cmNlcyAoaS5lLiByZW5kZXJT
dXJmYWNlcyBhbmQgdGV4dHVyZSBJRHMpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5oCmluZGV4IDhmMTZmOWZkNDA2NDdlOWE1M2NhODFlZjZiYWFlNjc5NzJjYzQyOWQuLjcyZTdk
NThjMWYzMjM4MGU0NDNjMzgzZmM3NDFkNzhlMzVhODNiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBm
aW5pc2hBbGxSZW5kZXJpbmcoKTsKICAgICBpbnQgZnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lTnVtYmVyOyB9CiAKLSAgICBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4p
OworICAgIGJvb2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4sIGJvb2wgdXNlVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKTsKICAgICBib29sIGlz
Q29udGV4dExvc3QoKTsKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIo
KSB7IHJldHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7IH0KICAgICBjb25zdCBMYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDJjNDE3ZGYxNzEzYjY4MGQ1
Y2Q1ZDk0MjIwNTdhYjM3NjIzNzI5N2YuLjY3MmE5NjExNzU3NTQxNzMzYWQ5NmI5NGY1YjQ3Nzhl
YmU3NGQyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0z
OCwyNCArMzgsNiBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyIDogcHVibGljIFRleHR1cmVVcGxv
YWRlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVW50aHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXIpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFVudGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVbnRo
cm90dGxlZFRleHR1cmVVcGxvYWRlcigpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+VW50aHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0
KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9Ci0KLXByb3RlY3Rl
ZDoKLSAgICBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigpIHsgfQotfTsKLQogUGFzc093blB0
cjxDQ1Byb3h5PiBDQ1NpbmdsZVRocmVhZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBs
YXllclRyZWVIb3N0KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTaW5nbGVUaHJlYWRQ
cm94eShsYXllclRyZWVIb3N0KSk7CkBAIC0xNTUsNyArMTM3LDcgQEAgYm9vbCBDQ1NpbmdsZVRo
cmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgQVNTRVJUKG1fY29udGV4
dEJlZm9yZUluaXRpYWxpemF0aW9uKTsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1w
bFRocmVhZCBpbXBsOwotICAgICAgICBib29sIG9rID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXIobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb24ucmVsZWFz
ZSgpLCBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKCkpOworICAgICAgICBib29s
IG9rID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIobV9jb250
ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb24ucmVsZWFzZSgpLCBmYWxzZSk7CiAgICAgICAgIGlmIChv
aykgewogICAgICAgICAgICAgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVlOwogICAg
ICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVhZCA9IG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKQEAgLTE3OSw3ICsx
NjEsNyBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAg
ewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgaW5pdGlhbGl6
ZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0
LCBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKCkpOworICAgICAgICBpbml0aWFs
aXplZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRl
eHQsIGZhbHNlKTsKICAgICAgICAgaWYgKGluaXRpYWxpemVkKSB7CiAgICAgICAgICAgICBtX2xh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXNGb3JNYWluVGhyZWFkID0gbV9sYXllclRyZWVIb3N0SW1w
bC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCmluZGV4IDE1N2ZjMWRmMDg2M2I3YmRiOTdkYmQ0M2Q1ZDMyMDhkMzVmM2Y1
YWEuLjU3MWNkNzJiNDc3NjM1OGMzMDhmMjNlYTg5ODRhNDUyMzk2OWY2YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCkBAIC01MywyOSArNTMsMTMgQEAgc3RhdGljIGNvbnN0IHNpemVf
dCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lID0gNDg7CiAvLyBNZWFzdXJlZCBpbiBzZWNvbmRzLgog
c3RhdGljIGNvbnN0IGRvdWJsZSBjb250ZXh0UmVjcmVhdGlvblRpY2tSYXRlID0gMC4wMzsKIAor
Ly8gRklYTUU6IFNldCB0byB0cnVlIHdoZW4gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyIGlzIHJl
YWR5IHRvIGJlIHVzZWQuCitzdGF0aWMgYm9vbCB1c2VUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIg
PSBmYWxzZTsKKwogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotLy8gRklYTUU6IHJlbW92ZSB3aGVuIFRocm90dGxlZFRleHR1cmVVcGxvYWRlciBpcyBy
ZWFkeSB0byBiZSB1c2VkLgotY2xhc3MgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIgOiBwdWJs
aWMgVGV4dHVyZVVwbG9hZGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShVbnRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8VW50aHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVbnRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcihjb250ZXh0KSk7Ci0gICAgfQotICAgIHZpcnR1YWwgflVudGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+dXBkYXRlUmVj
dChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQotCi1wcm90ZWN0
ZWQ6Ci0gICAgZXhwbGljaXQgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4pIHsgfQotfTsKLQogUGFzc093blB0cjxDQ1Byb3h5PiBDQ1RocmVh
ZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogewogICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQcm94eShsYXllclRyZWVIb3N0KSk7CkBAIC04MjQs
OCArODA4LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9u
SW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGwKICAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkltcGxUaHJlYWQiLCB0aGlzLCAw
KTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2NvbnRleHRCZWZv
cmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVhZCk7Ci0gICAgT3duUHRyPFRleHR1cmVVcGxvYWRl
cj4gdXBsb2FkZXIgPSBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKG1fY29udGV4
dEJlZm9yZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFkLmdldCgpKTsKLSAgICAqaW5pdGlhbGl6
ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVy
KG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFkLnJlbGVhc2UoKSwgdXBs
b2FkZXIucmVsZWFzZSgpKTsKKyAgICAqaW5pdGlhbGl6ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29udGV4dEJlZm9yZUluaXRpYWxp
emF0aW9uT25JbXBsVGhyZWFkLnJlbGVhc2UoKSwgdXNlVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
KTsKICAgICBpZiAoKmluaXRpYWxpemVTdWNjZWVkZWQpIHsKICAgICAgICAgKmNhcGFiaWxpdGll
cyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKICAg
ICAgICAgaWYgKGNhcGFiaWxpdGllcy0+dXNpbmdTd2FwQ29tcGxldGVDYWxsYmFjaykKQEAgLTg3
NSw4ICs4NTgsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRo
cmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgRwogICAgIFRSQUNFX0VWRU5UMCgi
Y2MiLCAiQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkIik7CiAgICAg
QVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRl
bnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0
dXJlQWxsb2NhdG9yKCkpOwotICAgIE93blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyID0g
VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZShjb250ZXh0UHRyKTsKLSAgICAqcmVj
cmVhdGVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcihhZG9wdFJlZihjb250ZXh0UHRyKSwgdXBsb2FkZXIucmVsZWFzZSgpKTsKKyAgICAqcmVj
cmVhdGVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcihhZG9wdFJlZihjb250ZXh0UHRyKSwgdXNlVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKTsK
ICAgICBpZiAoKnJlY3JlYXRlU3VjY2VlZGVkKSB7CiAgICAgICAgICpjYXBhYmlsaXRpZXMgPSBt
X2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiAgICAgICAg
IG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5kaWRSZWNyZWF0ZUNvbnRleHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHAKaW5kZXggYjJhNGE0YWM5NGY3NTNkMTQzOWUxMWM1NDVhNWIzYzZmYWZiODQ3Ny4uYTUy
MWU2OWM3NTA1NDI1NmMzYzEwNzg1MDI2NmI3NmIxZDI5MjhmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAK
QEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgog
I2luY2x1ZGUgIkNDTGF5ZXJUZXN0Q29tbW9uLmgiCi0jaW5jbHVkZSAiQ0NUaWxlZExheWVyVGVz
dENvbW1vbi5oIgogI2luY2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJD
aHJvbWl1bS5oIgpAQCAtMjU1LDcgKzI1NCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb25CYXNpYykKIAogVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbldpdGhPZmZzZXQpCiB7Ci0gICAg
bV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9w
dFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxp
emVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgZmFsc2UpOwogCiAgICAgT3duUHRyPEND
TGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKICAgICByb290LT5zZXRT
Y3JvbGxhYmxlKHRydWUpOwpAQCAtNDQxLDcgKzQ0MCw3IEBAIHByaXZhdGU6CiAKIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZGlkRHJhd05vdENhbGxlZE9uSGlkZGVuTGF5ZXIpCiB7
Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgp
LCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgZmFsc2UpOwogCiAgICAgLy8g
RW5zdXJlIHZpc2libGVMYXllclJlY3QgZm9yIHJvb3QgbGF5ZXIgaXMgZW1wdHkKICAgICBtX2hv
c3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgwLCAwKSk7CkBAIC00ODEsNyArNDgwLDcg
QEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Tm90Q2FsbGVkT25IaWRk
ZW5MYXllcikKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Q2FsbGVk
T25BbGxMYXllcnMpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
Y3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAg
IG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgZmFs
c2UpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwog
CiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUo
MCkpOwpAQCAtNTM0LDcgKzUzMyw3IEBAIHByaXZhdGU6CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdCwgcHJlcGFyZVRvRHJhd0ZhaWxzV2hlbkFuaW1hdGlvblVzZXNDaGVja2VyYm9h
cmQpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29u
dGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdElt
cGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgZmFsc2UpOwogICAg
IG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCiAgICAgLy8g
V2hlbiB0aGUgdGV4dHVyZSBpcyBub3QgbWlzc2luZywgd2UgZHJhdyBhcyB1c3VhbC4KQEAgLTY2
MSw3ICs2NjAsNyBAQCBwcml2YXRlOgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc1NzgzCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5n
T2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVV
cGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0
ZUNvbnRleHQoKSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRT
aXplKDEwLCAxMCkpOwogCiAgICAgewpAQCAtODc5LDcgKzg3OCw3IEBAIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAog
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB2aWV3cG9ydENvdmVyZWQpCiB7Ci0gICAg
bV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9w
dFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxp
emVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwt
PnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSk7CiAKICAgICBJbnRTaXplIHZpZXdwb3J0
U2l6ZSgxMDAwLCAxMDAwKTsKQEAgLTk5MCw3ICs5ODksNyBAQCBURVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIHJlc2hhcGVOb3RDYWxsZWRVbnRpbERyYXcpCiB7CiAgICAgUmVzaGFwZVRy
YWNrZXJDb250ZXh0KiByZXNoYXBlVHJhY2tlciA9IG5ldyBSZXNoYXBlVHJhY2tlckNvbnRleHQo
KTsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRy
KHJlc2hhcGVUcmFja2VyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0
V2luZG93KTsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0
LCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5z
ZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAgIENDTGF5ZXJJbXBsKiByb290
ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwpAQCAtMTA0MCw3ICsxMDM5LDcgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdl
UmVjdCkKICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwogICAgIHNldHRpbmdzLnBhcnRpYWxTd2Fw
RW5hYmxlZCA9IHRydWU7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGxheWVyVHJl
ZUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsK
LSAgICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwg
YWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIoKSkpOworICAgIGxheWVyVHJlZUhvc3RJ
bXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBmYWxzZSk7CiAgICAgbGF5ZXJU
cmVlSG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDUwMCwgNTAwKSk7CiAKICAgICBD
Q0xheWVySW1wbCogcm9vdCA9IG5ldyBGYWtlRHJhd2FibGVDQ0xheWVySW1wbCgxKTsKQEAgLTEx
MjYsNyArMTEyNSw3IEBAIHByaXZhdGU6CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgY29udGV4dExvc3RBbmRSZXN0b3JlZE5vdGlmaWNhdGlvblNlbnRUb0FsbExheWVycykKIHsK
LSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCks
IGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAgbV9ob3N0SW1wbC0+aW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBmYWxzZSk7CiAgICAgbV9ob3N0
SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAKICAgICBtX2hvc3RJbXBs
LT5zZXRSb290TGF5ZXIoQ29udGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyOjpjcmVhdGUo
MCkpOwpAQCAtMTE0Miw3ICsxMTQxLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LCBjb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uU2VudFRvQWxsTGF5ZXIKICAgICBF
WFBFQ1RfRkFMU0UobGF5ZXIxLT5kaWRMb3NlQ29udGV4dENhbGxlZCgpKTsKICAgICBFWFBFQ1Rf
RkFMU0UobGF5ZXIyLT5kaWRMb3NlQ29udGV4dENhbGxlZCgpKTsKIAotICAgIG1faG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZh
a2VUZXh0dXJlVXBsb2FkZXIpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcihjcmVhdGVDb250ZXh0KCksIGZhbHNlKTsKIAogICAgIEVYUEVDVF9UUlVFKHJvb3QtPmRp
ZExvc2VDb250ZXh0Q2FsbGVkKCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+ZGlkTG9zZUNv
bnRleHRDYWxsZWQoKSk7CkBAIC0xMTU3LDcgKzExNTYsNyBAQCBwdWJsaWM6CiBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIGZpbmlzaEFsbFJlbmRlcmluZ0FmdGVyQ29udGV4dExvc3Qp
CiB7CiAgICAgLy8gVGhlIGNvbnRleHQgaW5pdGlhbGl6YXRpb24gd2lsbCBmYWlsLCBidXQgd2Ug
c2hvdWxkIHN0aWxsIGJlIGFibGUgdG8gY2FsbCBmaW5pc2hBbGxSZW5kZXJpbmcoKSB3aXRob3V0
IGFueSBpbGwgZWZmZWN0cy4KLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJl
cihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJD
b250ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtlQ3VycmVudEZh
aWxzKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSwgYWRv
cHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFs
aXplTGF5ZXJSZW5kZXJlcihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0
M0RNYWtlQ3VycmVudEZhaWxzKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9I
b3N0V2luZG93KSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmZpbmlzaEFsbFJlbmRlcmluZygp
OwogfQogCkBAIC0xMTczLDcgKzExNzIsNyBAQCBwcml2YXRlOgogCiBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIHNjcm9sbGJhckxheWVyTG9zdENvbnRleHQpCiB7Ci0gICAgbV9ob3N0
SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihu
ZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPnNldFZp
ZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExh
eWVyKFNjcm9sbGJhckxheWVyRmFrZVBhaW50OjpjcmVhdGUoMCkpOwpAQCAtMTE5MCw3ICsxMTg5
LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxiYXJMYXllckxvc3RD
b250ZXh0KQogICAgICAgICAvLyBTY3JvbGxiYXIgbGF5ZXIgc2hvdWxkIGFsd2F5cyBnZW5lcmF0
ZSBxdWFkcywgZXZlbiBhZnRlciBsb3N0IGNvbnRleHQKICAgICAgICAgRVhQRUNUX0dUKHJlbmRl
clBhc3MtPnF1YWRMaXN0KCkuc2l6ZSgpLCAwdSk7CiAgICAgICAgIG1faG9zdEltcGwtPmRpZERy
YXdBbGxMYXllcnMoZnJhbWUpOwotICAgICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJS
ZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVy
KSk7CisgICAgICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNv
bnRleHQoKSwgZmFsc2UpOwogICAgIH0KIH0KIApAQCAtMTMyMyw3ICsxMzIyLDcgQEAgcHJpdmF0
ZToKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkb250VXNlT2xkUmVzb3VyY2Vz
QWZ0ZXJMb3N0Q29udGV4dCkKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7
CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgp
LCBmYWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEw
KSk7CiAKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3RMYXllcihDQ0xheWVySW1wbDo6Y3Jl
YXRlKDApKTsKQEAgLTEzNjgsNyArMTM2Nyw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgZG9udFVzZU9sZFJlc291cmNlc0FmdGVyTG9zdENvbnRleHQpCiAKICAgICAvLyBMb3Nl
IHRoZSBjb250ZXh0LCByZXBsYWNpbmcgaXQgd2l0aCBhIFN0cmljdFdlYkdyYXBoaWNzQ29udGV4
dDNELCB0aGF0CiAgICAgLy8gd2lsbCB3YXJuIGlmIGFueSByZXNvdXJjZSBmcm9tIHRoZSBwcmV2
aW91cyBjb250ZXh0IGdldHMgdXNlZC4KLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJS
ZW5kZXJlcihTdHJpY3RXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAgbV9ob3N0SW1wbC0+
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpLCBmYWxzZSk7CiAgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+
cHJlcGFyZVRvRHJhdyhmcmFtZSkpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUp
OwogICAgIG1faG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVz
dC5jcHAKaW5kZXggNjlkMGZmNWZmNTAwYjE2ZjAyYzE2NGY5ODAxZTNkZjUzMjc2OTRiMC4uOGQ0
YTM2MjYwMTgzODNkMmNiYTljYjE0NmE5MjMxY2EzYTczNjczMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Qu
Y3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9u
LmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIK
QEAgLTM2LDcgKzM1LDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwogCiBjbGFzcyBGcmFt
ZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0IDogcHVibGljIEZha2VXZWJH
cmFwaGljc0NvbnRleHQzRCB7CiBwdWJsaWM6CkBAIC05Myw3ICs5MSw3IEBAIHByaXZhdGU6CiAK
IGNsYXNzIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJSZW5kZXJlckNo
cm9taXVtIHsKIHB1YmxpYzoKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVu
ZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIpIDogTGF5ZXJS
ZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgdXBsb2FkZXIpIHsgfQorICAgIEZha2VM
YXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQs
IFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpIDogTGF5ZXJSZW5kZXJlckNo
cm9taXVtKGNsaWVudCwgY29udGV4dCwgZmFsc2UpIHsgfQogCiAgICAgLy8gTGF5ZXJSZW5kZXJl
ckNocm9taXVtIG1ldGhvZHMuCiAKQEAgLTEwOSw3ICsxMDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgICwgbV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObygxLCBmYWxzZSkKICAgICAgICAgLCBtX2Nv
bnRleHQoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9t
V2ViQ29udGV4dChhZG9wdFB0cihuZXcgRnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0
aW5nQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2lu
ZG93KSkKICAgICAgICAgLCBtX21vY2tDb250ZXh0KCpzdGF0aWNfY2FzdDxGcmFtZUNvdW50aW5n
TWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9jb250ZXh0LmdldCgpKSkpCi0gICAgICAg
ICwgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0oJm1fbW9ja0NsaWVudCwgbV9jb250ZXh0LnJlbGVh
c2UoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIoKSkpCisgICAgICAgICwgbV9s
YXllclJlbmRlcmVyQ2hyb21pdW0oJm1fbW9ja0NsaWVudCwgbV9jb250ZXh0LnJlbGVhc2UoKSkK
ICAgICB7CiAgICAgfQogCkBAIC0yNzMsNyArMjcxLDcgQEAgcHVibGljOgogVEVTVChMYXllclJl
bmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlhbGl6YXRpb25Eb2VzTm90TWFrZVN5bmNocm9ub3Vz
Q2FsbHMpCiB7CiAgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCBtb2NrQ2xpZW50
OwotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZt
b2NrQ2xpZW50LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91c0NhbGxDb250ZXh0
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSwgYWRvcHRQ
dHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIoKSkpOworICAgIEZha2VMYXllclJlbmRlcmVyQ2hy
b21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5l
dyBGb3JiaWRTeW5jaHJvbm91c0NhbGxDb250ZXh0KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRl
ckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CiAKICAgICBFWFBFQ1RfVFJVRShsYXllclJlbmRlcmVy
Q2hyb21pdW0uaW5pdGlhbGl6ZSgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141288</attachid>
            <date>2012-05-10 16:20:46 -0700</date>
            <delta_ts>2012-05-10 20:13:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85893-20120510192045.patch</filename>
            <type>text/plain</type>
            <size>23475</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhiNDZhODY0YzY5MDk0
ZWY5YzhmYWJjZjZmMjE5NjVmMmNjNWUzOC4uOWM3MjJiZTVkNGVkZTYzNWM4NjVlNWRlODFkNjJm
MjM3NDkyNGE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA1LTEwICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBN
b3ZlIGluc3RhbnRpYXRpb24gb2YgdGV4dHVyZSB1cGxvYWRlciB0byBMYXllclJlbmRlcmVyQ2hy
b21pdW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
dmUgaW5zdGFudGlhdGlvbiBvZiB0ZXh0dXJlIHVwbG9hZGVyIHRvIExheWVyUmVuZGVyZXJDaHJv
bWl1bSBhbmQKKyAgICAgICAgYWxsb3cgQ0NQcm94eSB0byBkZWNpZGUgYmV0d2VlbiBhIHRocm90
dGxlZCBvciB1bnRocm90dGxlZCB1cGxvYWRlcgorICAgICAgICB1c2luZyBhIGZsYWcgcGFzc2Vk
IHRvIHRoZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVk
T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVh
dGVDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxp
emVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCk6CisKIDIwMTItMDUtMTAgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBBU1NFUlQgaW4gQmlkaVJlc29s
dmVyPEl0ZXJhdG9yLCBSdW4+Ojpjb21taXRFeHBsaWNpdEVtYmVkZGluZyBtYWtlcyBydW5uaW5n
IGRlYnVnIGJ1aWxkcyBhbm5veWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhMGU2
YTU4MTJiYmZhZDlkZTgxNzIzMGY0OTlhYWRkYTQ4ZGQxMTRmLi42NzU2YzY0NzVjNjk2MjVjZTZl
YTc1YWE5OWRlMDJjYWI1NDhjNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDEyLTA1LTEwICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBNb3ZlIGluc3RhbnRpYXRpb24gb2YgdGV4dHVyZSB1
cGxvYWRlciB0byBMYXllclJlbmRlcmVyQ2hyb21pdW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDTGF5ZXJUcmVlSG9zdEltcGxUZXN0OjpDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToKKyAg
ICAgICAgKiB0ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKEZh
a2VMYXllclJlbmRlcmVyQ2hyb21pdW06OkZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAg
ICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDo6TGF5ZXJSZW5kZXJlckNocm9taXVtVGVz
dCk6CisgICAgICAgIChURVNUKToKKwogMjAxMi0wNS0xMCAgTWFyayBQaWxncmltICA8cGlsZ3Jp
bUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBDYWxsIGFkZFRyYWNlRXZlbnQg
YW5kIGdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyBkaXJlY3RseQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggOWYzZWRkMGFlZmE2M2FmODI4YjE3MTUxMzZkOWQ4
NmEyZWFmYTBhZC4uOWUxMTUwN2RiNzk1OTYwMTkzYTkyZDk4NDhhYmRkNzY4YzU4NWI2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xNDMsNiArMTQzLDI0IEBA
IGJvb2wgbmVlZHNMaW9uSU9TdXJmYWNlUmVhZGJhY2tXb3JrYXJvdW5kKCkKICNlbmRpZgogfQog
CitjbGFzcyBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlciA6IHB1YmxpYyBUZXh0dXJlVXBsb2Fk
ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxVbnRocm90dGxlZFRleHR1cmVVcGxv
YWRlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVW50aHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXIoKSk7CisgICAgfQorICAgIHZpcnR1YWwgflVudGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0IHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+dXBkYXRlUmVjdChj
b250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQorCitwcm90ZWN0ZWQ6
CisgICAgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KK307CisKIH0gLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQogCiBjbGFzcyBMYXllclJlbmRlcmVyU3dhcEJ1ZmZlcnNDb21wbGV0ZUNh
bGxiYWNrQWRhcHRlciA6IHB1YmxpYyBFeHRlbnNpb25zM0RDaHJvbWl1bTo6U3dhcEJ1ZmZlcnND
b21wbGV0ZUNhbGxiYWNrQ0hST01JVU0gewpAQCAtMTk0LDkgKzIxMiw5IEBAIHByaXZhdGU6CiB9
OwogCiAKLVBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwgUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgUGFzc093blB0cjxUZXh0dXJlVXBsb2Fk
ZXI+IHVwbG9hZGVyKQorUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50
LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJP
cHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0dGluZykKIHsKLSAgICBPd25QdHI8TGF5ZXJSZW5kZXJl
ckNocm9taXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hyb21p
dW0oY2xpZW50LCBjb250ZXh0LCB1cGxvYWRlcikpKTsKKyAgICBPd25QdHI8TGF5ZXJSZW5kZXJl
ckNocm9taXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hyb21p
dW0oY2xpZW50LCBjb250ZXh0LCB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKSkpOwogICAgIGlmICgh
bGF5ZXJSZW5kZXJlci0+aW5pdGlhbGl6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtMjA1LDE3ICsyMjMsMTcgQEAgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVuZGVyZXJDaHIKIAogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVt
Q2xpZW50KiBjbGllbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxUZXh0dXJlVXBsb2Fk
ZXI+IHVwbG9hZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlclNldHRpbmcpCiAgICAgOiBt
X2NsaWVudChjbGllbnQpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlKDApCiAgICAgLCBt
X2N1cnJlbnRNYW5hZ2VkVGV4dHVyZSgwKQogICAgICwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklk
KDApCi0gICAgLCBtX3RleHR1cmVVcGxvYWRlcih1cGxvYWRlcikKICAgICAsIG1fY29udGV4dChj
b250ZXh0KQogICAgICwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSgwKQogICAgICwgbV9zaGFyZWRH
ZW9tZXRyeVF1YWQoRmxvYXRSZWN0KC0wLjVmLCAtMC41ZiwgMS4wZiwgMS4wZikpCiAgICAgLCBt
X2lzVmlld3BvcnRDaGFuZ2VkKGZhbHNlKQogICAgICwgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVk
KGZhbHNlKQorICAgICwgbV90ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKG1fdGV4dHVyZVVwbG9hZGVy
U2V0dGluZykKIHsKIH0KIApAQCAtMTM4Miw2ICsxNDAwLDEwIEBAIGJvb2wgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cygpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVNYW5hZ2VyOjpy
ZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FwYWJpbGl0aWVzLm1heFRl
eHR1cmVTaXplKTsKICAgICBtX3RleHR1cmVDb3BpZXIgPSBBY2NlbGVyYXRlZFRleHR1cmVDb3Bp
ZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmIChtX3RleHR1cmVVcGxvYWRlclNl
dHRpbmcgPT0gVGhyb3R0bGVkVXBsb2FkZXIpCisgICAgICAgIG1fdGV4dHVyZVVwbG9hZGVyID0g
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKKyAgICBl
bHNlCisgICAgICAgIG1fdGV4dHVyZVVwbG9hZGVyID0gVW50aHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXI6OmNyZWF0ZSgpOwogICAgIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdU
ZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKICAgICBtX3JlbmRlclN1
cmZhY2VUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUo
bV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlVXNh
Z2VIaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBkNzNmNzFhZTdk
MDE3MDVmNDkwMDYyNmQ4NjdiMzQ1NzkwNzc1NTI0Li5hOTJjZjgyYWUwOTIxZWE1MzI1MmM5OTk1
NjViMTdjMDA4YWQ1YjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAt
NzQsMTEgKzc0LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNNZW1v
cnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QpID0gMDsKIH07CiAKK2VudW0gVGV4dHVyZVVw
bG9hZGVyT3B0aW9uIHsgVGhyb3R0bGVkVXBsb2FkZXIsIFVudGhyb3R0bGVkVXBsb2FkZXIgfTsK
KwogLy8gQ2xhc3MgdGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIgbGF5
ZXJzIHVzaW5nIEdMLgogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShMYXllclJlbmRlcmVyQ2hyb21pdW0pOwogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJD
aHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBQYXNzT3duUHRy
PFRleHR1cmVVcGxvYWRlcj4pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJD
aHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOwogCiAgICAgfkxheWVy
UmVuZGVyZXJDaHJvbWl1bSgpOwogCkBAIC0xNDQsNyArMTQ2LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgZW5zdXJlRnJhbWVidWZmZXIoKTsKICAgICBib29sIGlzRnJhbWVidWZmZXJEaXNjYXJk
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnJhbWVidWZmZXJEaXNjYXJkZWQ7IH0KIAotICAgIExh
eWVyUmVuZGVyZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqLCBQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+KTsKKyAg
ICBMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFRleHR1cmVVcGxvYWRlck9wdGlvbik7CiAgICAg
Ym9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CkBAIC0yOTgsNiArMzAwLDcgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgbV9pc1ZpZXdwb3J0Q2hhbmdlZDsKICAgICBib29sIG1faXNGcmFtZWJ1
ZmZlckRpc2NhcmRlZDsKKyAgICBUZXh0dXJlVXBsb2FkZXJPcHRpb24gbV90ZXh0dXJlVXBsb2Fk
ZXJTZXR0aW5nOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CmluZGV4IGI1ZDllYjQ2ZmY0ODMzMTBkOGFlZTg0NzNhZjQ2MmM0Zjk0YTA4YWYuLjQ5YzY5YmU4
YTFhYzc3MWQwOTE2YzlmNDA0MzYyZjZlNWRlYzhmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC01MjYsMTAgKzUyNiwxMCBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdEltcGw6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIG1fdGltZVNvdXJjZUNsaWVu
dEFkYXB0ZXItPnNldEFjdGl2ZShzaG91bGRUaWNrSW5CYWNrZ3JvdW5kKTsKIH0KIAotYm9vbCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBs
b2FkZXIpCitib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVy
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIFRleHR1cmVVcGxvYWRlck9w
dGlvbiB0ZXh0dXJlVXBsb2FkZXIpCiB7CiAgICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1
bT4gbGF5ZXJSZW5kZXJlcjsKLSAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjcmVhdGUodGhpcywgY29udGV4dCwgdXBsb2FkZXIpOworICAgIGxheWVyUmVuZGVyZXIg
PSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCBjb250ZXh0LCB0ZXh0dXJlVXBs
b2FkZXIpOwogCiAgICAgLy8gU2luY2Ugd2Ugbm93IGhhdmUgYSBuZXcgY29udGV4dC9sYXllclJl
bmRlcmVyLCB3ZSBjYW5ub3QgY29udGludWUgdG8gdXNlIHRoZSBvbGQKICAgICAvLyByZXNvdXJj
ZXMgKGkuZS4gcmVuZGVyU3VyZmFjZXMgYW5kIHRleHR1cmUgSURzKS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCA4ZjE2ZjlmZDQwNjQ3ZTlhNTNjYTgxZWY2YmFhZTY3
OTcyY2M0MjlkLi4xM2E4Y2Q2NGNlMmI0OTNlNDVkYjMyMzAzYjNhMjJmNWMxM2Q5NDczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xMjIsNyArMTIyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgaW50IGZyYW1lTnVtYmVy
KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51bWJlcjsgfQogCi0gICAgYm9vbCBpbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgUGFzc093blB0cjxU
ZXh0dXJlVXBsb2FkZXI+KTsKKyAgICBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOwogICAgIGJv
b2wgaXNDb250ZXh0TG9zdCgpOwogICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5k
ZXJlcigpIHsgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlci5nZXQoKTsgfQogICAgIGNvbnN0IExheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggODdhNDU4YzM0MTkw
NTgxYWQ4MDQ5NGFlNjVlYjdiNWJlMmZhNWQ2Zi4uMzE1MGRhYzEwYjZmOGM3MTMxZWFhNmM0NTJm
MWUyODYxMzRlMGQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
QEAgLTM5LDI0ICszOSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIgOiBwdWJsaWMgVGV4dHVy
ZVVwbG9hZGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShVbnRocm90dGxlZFRleHR1cmVV
cGxvYWRlcik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8VW50aHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXI+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5VbnRo
cm90dGxlZFRleHR1cmVVcGxvYWRlcigpIHsgfQotCi0gICAgdmlydHVhbCBib29sIGlzQnVzeSgp
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9h
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50
UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSB7IHRleHR1cmUtPnVwZGF0
ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0KLQotcHJv
dGVjdGVkOgotICAgIFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkgeyB9Ci19OwotCiBjbGFz
cyBDQ1NpbmdsZVRocmVhZFByb3h5QW5pbWF0aW9uVGltZXIgOiBwdWJsaWMgQ0NUaW1lciwgQ0NU
aW1lckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NTaW5nbGVUaHJl
YWRQcm94eUFuaW1hdGlvblRpbWVyPiBjcmVhdGUoQ0NTaW5nbGVUaHJlYWRQcm94eSogcHJveHkp
IHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NpbmdsZVRocmVhZFByb3h5QW5pbWF0aW9uVGltZXIo
cHJveHkpKTsgfQpAQCAtMTc5LDcgKzE2MSw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKQogICAgIEFTU0VSVChtX2NvbnRleHRCZWZvcmVJbml0
aWFsaXphdGlvbik7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bDsKLSAgICAgICAgYm9vbCBvayA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uLnJlbGVhc2UoKSwgVW50aHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgYm9vbCBvayA9IG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29udGV4dEJlZm9yZUlu
aXRpYWxpemF0aW9uLnJlbGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgICAgIGlm
IChvaykgewogICAgICAgICAgICAgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVlOwog
ICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVhZCA9IG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKQEAgLTIwMyw3
ICsxODUsNyBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAg
ICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgaW5pdGlh
bGl6ZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250
ZXh0LCBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKCkpOworICAgICAgICBpbml0
aWFsaXplZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNv
bnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpOwogICAgICAgICBpZiAoaW5pdGlhbGl6ZWQpIHsK
ICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllc0Zvck1haW5UaHJlYWQgPSBt
X2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggMDc4NDkwNTgxNjI5MWQzZTEzMjBh
ZjdjYTU0NjllOTZjNzE3MTZhMi4uNjM3NWQ3ZjljM2UyYzk1OWI4YTJlYmVkMWZjMWQ5MzZjZmM5
NzAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTU3LDI0ICs1NywxMiBAQCBz
dGF0aWMgY29uc3QgZG91YmxlIGNvbnRleHRSZWNyZWF0aW9uVGlja1JhdGUgPSAwLjAzOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiByZW1vdmUgd2hlbiBUaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXIgaXMgcmVhZHkgdG8gYmUgdXNlZC4KLWNsYXNzIFVudGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyIDogcHVibGljIFRleHR1cmVVcGxvYWRlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOwotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoY29udGV4dCkpOwotICAgIH0KLSAgICB2
aXJ0dWFsIH5VbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigpIHsgfQorbmFtZXNwYWNlIHsKIAot
ICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBiZWdpblVwbG9hZHMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBk
ZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNl
UmVjdCwgZGVzdFJlY3QpOyB9CisvLyBGSVhNRTogVXNlIFRocm90dGxlZFVwbG9hZGVyIGJ5IGRl
ZmF1bHQuCitzdGF0aWMgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlciA9IFVu
dGhyb3R0bGVkVXBsb2FkZXI7CiAKLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBVbnRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPikgeyB9Ci19Owor
fSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIFBhc3NPd25QdHI8Q0NQcm94eT4gQ0NUaHJlYWRQ
cm94eTo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKIHsKQEAgLTgzNCw4
ICs4MjIsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbAogICAgIFRSQUNFX0VWRU5UKCJDQ1Ro
cmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCIsIHRoaXMsIDAp
OwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fY29udGV4dEJlZm9y
ZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFkKTsKLSAgICBPd25QdHI8VGV4dHVyZVVwbG9hZGVy
PiB1cGxvYWRlciA9IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUobV9jb250ZXh0
QmVmb3JlSW5pdGlhbGl6YXRpb25PbkltcGxUaHJlYWQuZ2V0KCkpOwotICAgICppbml0aWFsaXpl
U3VjY2VlZGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
bV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb25PbkltcGxUaHJlYWQucmVsZWFzZSgpLCB1cGxv
YWRlci5yZWxlYXNlKCkpOworICAgICppbml0aWFsaXplU3VjY2VlZGVkID0gbV9sYXllclRyZWVI
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6
YXRpb25PbkltcGxUaHJlYWQucmVsZWFzZSgpLCB0ZXh0dXJlVXBsb2FkZXIpOwogICAgIGlmICgq
aW5pdGlhbGl6ZVN1Y2NlZWRlZCkgewogICAgICAgICAqY2FwYWJpbGl0aWVzID0gbV9sYXllclRy
ZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwogICAgICAgICBpZiAoY2Fw
YWJpbGl0aWVzLT51c2luZ1N3YXBDb21wbGV0ZUNhbGxiYWNrKQpAQCAtODg1LDggKzg3Miw3IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiBjb21wbGV0aW9uLCBHCiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVh
ZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQiKTsKICAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09u
SW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3Io
KSk7Ci0gICAgT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIgPSBVbnRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcjo6Y3JlYXRlKGNvbnRleHRQdHIpOwotICAgICpyZWNyZWF0ZVN1Y2NlZWRl
ZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGFkb3B0UmVm
KGNvbnRleHRQdHIpLCB1cGxvYWRlci5yZWxlYXNlKCkpOworICAgICpyZWNyZWF0ZVN1Y2NlZWRl
ZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGFkb3B0UmVm
KGNvbnRleHRQdHIpLCB0ZXh0dXJlVXBsb2FkZXIpOwogICAgIGlmICgqcmVjcmVhdGVTdWNjZWVk
ZWQpIHsKICAgICAgICAgKmNhcGFiaWxpdGllcyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKICAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQt
PmRpZFJlY3JlYXRlQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCA1ODY2OGQwZWZhMjM3
ODE4YWRkZWE5NDM4NGFmZTBhMGJmMDlkMjliLi45ZjI2NzM0MTgxMmU0NzZlZTFkZWRjYjIzYjY0
ZjA3YjM3YTZjM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5j
bHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiQ0NMYXllclRlc3RDb21t
b24uaCIKLSNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFr
ZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCkBAIC02MCw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgICAg
IG1faG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMp
OwotICAgICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250
ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAgICAgIG1faG9z
dEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgVW50aHJvdHRs
ZWRVcGxvYWRlcik7CiAgICAgICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXpl
KDEwLCAxMCkpOwogICAgIH0KIApAQCAtODc2LDcgKzg3NSw3IEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAogVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB2aWV3cG9ydENvdmVyZWQpCiB7Ci0gICAgbV9o
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0
cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAg
bV9ob3N0SW1wbC0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpncmF5KTsKIAogICAgIEludFNp
emUgdmlld3BvcnRTaXplKDEwMDAsIDEwMDApOwpAQCAtOTg3LDcgKzk4Niw3IEBAIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcmVzaGFwZU5vdENhbGxlZFVudGlsRHJhdykKIHsKICAg
ICBSZXNoYXBlVHJhY2tlckNvbnRleHQqIHJlc2hhcGVUcmFja2VyID0gbmV3IFJlc2hhcGVUcmFj
a2VyQ29udGV4dCgpOwogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRl
eHQoYWRvcHRQdHIocmVzaGFwZVRyYWNrZXIpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGly
ZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRl
cmVyKGNvbnRleHQsIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAgbV9o
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwgVW50aHJvdHRsZWRVcGxv
YWRlcik7CiAKICAgICBDQ0xheWVySW1wbCogcm9vdCA9IG5ldyBGYWtlRHJhd2FibGVDQ0xheWVy
SW1wbCgxKTsKICAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKQEAg
LTEwMzYsNyArMTAzNSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlh
bFN3YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAgICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKICAgICBz
ZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSB0cnVlOwogICAgIE93blB0cjxDQ0xheWVyVHJl
ZUhvc3RJbXBsPiBsYXllclRyZWVIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0
ZShzZXR0aW5ncywgdGhpcyk7Ci0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKGNvbnRleHQsIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKCkpKTsK
KyAgICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwg
VW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKDUwMCwgNTAwKSk7CiAKICAgICBDQ0xheWVySW1wbCogcm9vdCA9IG5ldyBG
YWtlRHJhd2FibGVDQ0xheWVySW1wbCgxKTsKQEAgLTExMzUsNyArMTEzNCw3IEBAIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgY29udGV4dExvc3RBbmRSZXN0b3JlZE5vdGlmaWNhdGlv
blNlbnRUb0FsbExheWVyCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyMS0+ZGlkTG9zZUNvbnRleHRD
YWxsZWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyMi0+ZGlkTG9zZUNvbnRleHRDYWxsZWQo
KSk7CiAKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250
ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAgbV9ob3N0SW1w
bC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBVbnRocm90dGxlZFVw
bG9hZGVyKTsKIAogICAgIEVYUEVDVF9UUlVFKHJvb3QtPmRpZExvc2VDb250ZXh0Q2FsbGVkKCkp
OwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+ZGlkTG9zZUNvbnRleHRDYWxsZWQoKSk7CkBAIC0x
MTUwLDcgKzExNDksNyBAQCBwdWJsaWM6CiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qs
IGZpbmlzaEFsbFJlbmRlcmluZ0FmdGVyQ29udGV4dExvc3QpCiB7CiAgICAgLy8gVGhlIGNvbnRl
eHQgaW5pdGlhbGl6YXRpb24gd2lsbCBmYWlsLCBidXQgd2Ugc2hvdWxkIHN0aWxsIGJlIGFibGUg
dG8gY2FsbCBmaW5pc2hBbGxSZW5kZXJpbmcoKSB3aXRob3V0IGFueSBpbGwgZWZmZWN0cy4KLSAg
ICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtlQ3VycmVudEZhaWxzKSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJl
VXBsb2FkZXIpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0
KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtlQ3VycmVudEZhaWxzKSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSwgVW50aHJvdHRs
ZWRVcGxvYWRlcik7CiAgICAgbV9ob3N0SW1wbC0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiB9CiAK
QEAgLTExODAsNyArMTE3OSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Ny
b2xsYmFyTGF5ZXJMb3N0Q29udGV4dCkKICAgICAgICAgLy8gU2Nyb2xsYmFyIGxheWVyIHNob3Vs
ZCBhbHdheXMgZ2VuZXJhdGUgcXVhZHMsIGV2ZW4gYWZ0ZXIgbG9zdCBjb250ZXh0CiAgICAgICAg
IEVYUEVDVF9HVChyZW5kZXJQYXNzLT5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgICAgICBt
X2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKLSAgICAgICAgbV9ob3N0SW1wbC0+
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFr
ZVRleHR1cmVVcGxvYWRlcikpOworICAgICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJS
ZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwogICAgIH0KIH0K
IApAQCAtMTM1NSw3ICsxMzU0LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBk
b250VXNlT2xkUmVzb3VyY2VzQWZ0ZXJMb3N0Q29udGV4dCkKIAogICAgIC8vIExvc2UgdGhlIGNv
bnRleHQsIHJlcGxhY2luZyBpdCB3aXRoIGEgU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0QsIHRo
YXQKICAgICAvLyB3aWxsIHdhcm4gaWYgYW55IHJlc291cmNlIGZyb20gdGhlIHByZXZpb3VzIGNv
bnRleHQgZ2V0cyB1c2VkLgotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVy
KFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKSwgYWRv
cHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFs
aXplTGF5ZXJSZW5kZXJlcihTdHJpY3RXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwogICAgIEVYUEVDVF9UUlVFKG1faG9z
dEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KGZyYW1lKTsKICAgICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVt
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QuY3BwCmluZGV4IDY5ZDBmZjVmZjUwMGIxNmYwMmMxNjRmOTgwMWUzZGY1MzI3Njk0
YjAuLjEzZjA0YTJkODM5ZTcxZTQzNTdmMGE0MjIxMmJlOGIyNTBiOWFlM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21p
dW1UZXN0LmNwcApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogCi0jaW5jbHVkZSAiQ0NUaWxlZExheWVyVGVz
dENvbW1vbi5oIgogI2luY2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgiCkBAIC0zNiw3ICszNSw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXRUZXN0czsKIAogY2xh
c3MgRnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCA6IHB1YmxpYyBG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0QgewogcHVibGljOgpAQCAtOTMsNyArOTEsNyBAQCBwcml2
YXRlOgogCiBjbGFzcyBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIExheWVyUmVu
ZGVyZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bShM
YXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY29udGV4dCwgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyKSA6
IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIHVwbG9hZGVyKSB7IH0KKyAg
ICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCog
Y2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KSA6IExheWVyUmVu
ZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpIHsgfQog
CiAgICAgLy8gTGF5ZXJSZW5kZXJlckNocm9taXVtIG1ldGhvZHMuCiAKQEAgLTEwOSw3ICsxMDcs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObygxLCBm
YWxzZSkKICAgICAgICAgLCBtX2NvbnRleHQoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRnJhbWVDb3VudGlu
Z01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJl
bmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSkKICAgICAgICAgLCBtX21vY2tDb250ZXh0KCpzdGF0
aWNfY2FzdDxGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0Kj4oR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9jb250
ZXh0LmdldCgpKSkpCi0gICAgICAgICwgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0oJm1fbW9ja0Ns
aWVudCwgbV9jb250ZXh0LnJlbGVhc2UoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2Fk
ZXIoKSkpCisgICAgICAgICwgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0oJm1fbW9ja0NsaWVudCwg
bV9jb250ZXh0LnJlbGVhc2UoKSkKICAgICB7CiAgICAgfQogCkBAIC0yNzMsNyArMjcxLDcgQEAg
cHVibGljOgogVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlhbGl6YXRpb25E
b2VzTm90TWFrZVN5bmNocm9ub3VzQ2FsbHMpCiB7CiAgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJv
bWl1bUNsaWVudCBtb2NrQ2xpZW50OwotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5
ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGb3JiaWRT
eW5jaHJvbm91c0NhbGxDb250ZXh0KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5
VG9Ib3N0V2luZG93KSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIoKSkpOworICAg
IEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xp
ZW50LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21X
ZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91c0NhbGxDb250ZXh0KSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CiAKICAgICBFWFBF
Q1RfVFJVRShsYXllclJlbmRlcmVyQ2hyb21pdW0uaW5pdGlhbGl6ZSgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141317</attachid>
            <date>2012-05-10 20:13:14 -0700</date>
            <delta_ts>2012-05-10 20:53:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85893-20120510231312.patch</filename>
            <type>text/plain</type>
            <size>23289</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IxMTA1M2I5OTU1ZDg0
M2ZlOGY5ODM5OWJlZWJlYzc5NmYwZDI2ZC4uYmU2ZmE3MDlmMTE5ZTgzYzBlNGE4MGU3ODFjYzMy
N2E0NzlkZTAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA1LTEwICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBN
b3ZlIGluc3RhbnRpYXRpb24gb2YgdGV4dHVyZSB1cGxvYWRlciB0byBMYXllclJlbmRlcmVyQ2hy
b21pdW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
dmUgaW5zdGFudGlhdGlvbiBvZiB0ZXh0dXJlIHVwbG9hZGVyIHRvIExheWVyUmVuZGVyZXJDaHJv
bWl1bSBhbmQKKyAgICAgICAgYWxsb3cgQ0NQcm94eSB0byBkZWNpZGUgYmV0d2VlbiBhIHRocm90
dGxlZCBvciB1bnRocm90dGxlZCB1cGxvYWRlcgorICAgICAgICB1c2luZyBhIGZsYWcgcGFzc2Vk
IHRvIHRoZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVk
T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVh
dGVDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxp
emVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCk6CisKIDIwMTItMDUtMTAgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gYXR0ZW1w
dCB0byBidWlsZCBmaXggZm9yIENocm9taXVtLW1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggOTA4OWRkNzE5ZDRkMmQ1Y2E2NjNkMWVjZjFkMmQ4ZWY0OTk1ZTcxNi4uNjZjOTRmZGQ3
NWU0OGQzMjBhNDFjYTAyYzA4YTY4ZTAxMDc0MDMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNS0xMCAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBpbnN0YW50aWF0aW9uIG9m
IHRleHR1cmUgdXBsb2FkZXIgdG8gTGF5ZXJSZW5kZXJlckNocm9taXVtLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU4OTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdDo6Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRF
U1RfRik6CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHA6Cisg
ICAgICAgIChGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtOjpGYWtlTGF5ZXJSZW5kZXJlckNocm9t
aXVtKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Q6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bVRlc3QpOgorICAgICAgICAoVEVTVCk6CisKIDIwMTItMDUtMTAgIEtlbnQgVGFtdXJh
ICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMTY1OTQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA5ZjNl
ZGQwYWVmYTYzYWY4MjhiMTcxNTEzNmQ5ZDg2YTJlYWZhMGFkLi45ZTExNTA3ZGI3OTU5NjAxOTNh
OTJkOTg0OGFiZGQ3NjhjNTg1YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTE0Myw2ICsxNDMsMjQgQEAgYm9vbCBuZWVkc0xpb25JT1N1cmZhY2VSZWFkYmFj
a1dvcmthcm91bmQoKQogI2VuZGlmCiB9CiAKK2NsYXNzIFVudGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyIDogcHVibGljIFRleHR1cmVVcGxvYWRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigpKTsKKyAgICB9
CisgICAgdmlydHVhbCB+VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KKworICAgIHZp
cnR1YWwgYm9vbCBpc0J1c3koKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBi
ZWdpblVwbG9hZHMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVj
dCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwg
ZGVzdFJlY3QpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRl
cigpIHsgfQorfTsKKwogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIGNsYXNzIExheWVyUmVu
ZGVyZXJTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyIDogcHVibGljIEV4dGVuc2lv
bnMzRENocm9taXVtOjpTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlVTSB7CkBAIC0x
OTQsOSArMjEyLDkgQEAgcHJpdmF0ZToKIH07CiAKIAotUGFzc093blB0cjxMYXllclJlbmRlcmVy
Q2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVuZGVyZXJDaHJv
bWl1bUNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0
LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIpCitQYXNzT3duUHRyPExheWVy
UmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5k
ZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNvbnRleHQsIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQog
ewotICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQ
dHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIHVwbG9hZGVyKSkp
OworICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQ
dHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIHRleHR1cmVVcGxv
YWRlclNldHRpbmcpKSk7CiAgICAgaWYgKCFsYXllclJlbmRlcmVyLT5pbml0aWFsaXplKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMDUsMTcgKzIyMywxNyBAQCBQYXNzT3duUHRy
PExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoTGF5
ZXJSZW5kZXJlckNocgogCiBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJv
bWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVy
ZVVwbG9hZGVyU2V0dGluZykKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fY3VycmVu
dFJlbmRlclN1cmZhY2UoMCkKICAgICAsIG1fY3VycmVudE1hbmFnZWRUZXh0dXJlKDApCiAgICAg
LCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQoMCkKLSAgICAsIG1fdGV4dHVyZVVwbG9hZGVyKHVw
bG9hZGVyKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2RlZmF1bHRSZW5kZXJT
dXJmYWNlKDApCiAgICAgLCBtX3NoYXJlZEdlb21ldHJ5UXVhZChGbG9hdFJlY3QoLTAuNWYsIC0w
LjVmLCAxLjBmLCAxLjBmKSkKICAgICAsIG1faXNWaWV3cG9ydENoYW5nZWQoZmFsc2UpCiAgICAg
LCBtX2lzRnJhbWVidWZmZXJEaXNjYXJkZWQoZmFsc2UpCisgICAgLCBtX3RleHR1cmVVcGxvYWRl
clNldHRpbmcobV90ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQogewogfQogCkBAIC0xMzgyLDYgKzE0
MDAsMTAgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmpl
Y3RzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgp
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwogICAgIG1fdGV4dHVyZUNvcGll
ciA9IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7Cisg
ICAgaWYgKG1fdGV4dHVyZVVwbG9hZGVyU2V0dGluZyA9PSBUaHJvdHRsZWRVcGxvYWRlcikKKyAg
ICAgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0
ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgbV90ZXh0dXJlVXBsb2FkZXIg
PSBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKCk7CiAgICAgbV9jb250ZW50c1Rl
eHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRl
eHQuZ2V0KCkpOwogICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChtX2Nh
cGFiaWxpdGllcy51c2luZ1RleHR1cmVVc2FnZUhpbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5oCmluZGV4IGQ3M2Y3MWFlN2QwMTcwNWY0OTAwNjI2ZDg2N2IzNDU3OTA3NzU1MjQu
LmE5MmNmODJhZTA5MjFlYTUzMjUyYzk5OTU2NWIxN2MwMDhhZDViMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC03NCwxMSArNzQsMTMgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKHNpemVfdCkg
PSAwOwogfTsKIAorZW51bSBUZXh0dXJlVXBsb2FkZXJPcHRpb24geyBUaHJvdHRsZWRVcGxvYWRl
ciwgVW50aHJvdHRsZWRVcGxvYWRlciB9OworCiAvLyBDbGFzcyB0aGF0IGhhbmRsZXMgZHJhd2lu
ZyBvZiBjb21wb3NpdGVkIHJlbmRlciBsYXllcnMgdXNpbmcgR0wuCiBjbGFzcyBMYXllclJlbmRl
cmVyQ2hyb21pdW0gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheWVyUmVuZGVyZXJDaHJv
bWl1bSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9t
aXVtPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4sIFBhc3NPd25QdHI8VGV4dHVyZVVwbG9hZGVyPik7CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNo
cm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFRleHR1cmVVcGxv
YWRlck9wdGlvbik7CiAKICAgICB+TGF5ZXJSZW5kZXJlckNocm9taXVtKCk7CiAKQEAgLTE0NCw3
ICsxNDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbnN1cmVGcmFtZWJ1ZmZlcigpOwogICAg
IGJvb2wgaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGcmFtZWJ1
ZmZlckRpc2NhcmRlZDsgfQogCi0gICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVy
ZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBQYXNzT3du
UHRyPFRleHR1cmVVcGxvYWRlcj4pOworICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShMYXllclJl
bmRlcmVyQ2hyb21pdW1DbGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgVGV4
dHVyZVVwbG9hZGVyT3B0aW9uKTsKICAgICBib29sIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToK
QEAgLTI5OCw2ICszMDAsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzVmlld3BvcnRDaGFu
Z2VkOwogICAgIGJvb2wgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOworICAgIFRleHR1cmVVcGxv
YWRlck9wdGlvbiBtX3RleHR1cmVVcGxvYWRlclNldHRpbmc7CiB9OwogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZWM1NjRmNWY2ZjZkYjc1Y2RlYTcxZGU1
N2FlODU1NTZiMTViMTVjMy4uNGFjODUzNDU0MWJhM2NkYmNkOTA1YzBhMTlhZWNlNTNiNTdkZDlj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTUyNiwxMCAr
NTI2LDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0VmlzaWJsZShib29sIHZpc2li
bGUpCiAgICAgbV90aW1lU291cmNlQ2xpZW50QWRhcHRlci0+c2V0QWN0aXZlKHNob3VsZFRpY2tJ
bkJhY2tncm91bmQpOwogfQogCi1ib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVM
YXllclJlbmRlcmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIFBhc3NP
d25QdHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxvYWRlcikKK2Jvb2wgQ0NMYXllclRyZWVIb3N0SW1w
bDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y29udGV4dCwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlcikKIHsKICAgICBP
d25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyOwotICAgIGxheWVyUmVu
ZGVyZXIgPSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCBjb250ZXh0LCB1cGxv
YWRlcik7CisgICAgbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRl
KHRoaXMsIGNvbnRleHQsIHRleHR1cmVVcGxvYWRlcik7CiAKICAgICAvLyBTaW5jZSB3ZSBub3cg
aGF2ZSBhIG5ldyBjb250ZXh0L2xheWVyUmVuZGVyZXIsIHdlIGNhbm5vdCBjb250aW51ZSB0byB1
c2UgdGhlIG9sZAogICAgIC8vIHJlc291cmNlcyAoaS5lLiByZW5kZXJTdXJmYWNlcyBhbmQgdGV4
dHVyZSBJRHMpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDhmMTZm
OWZkNDA2NDdlOWE1M2NhODFlZjZiYWFlNjc5NzJjYzQyOWQuLjEzYThjZDY0Y2UyYjQ5M2U0NWRi
MzIzMDNiM2EyMmY1YzEzZDk0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJp
bmcoKTsKICAgICBpbnQgZnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTnVtYmVy
OyB9CiAKLSAgICBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4pOworICAgIGJvb2wgaW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFRleHR1
cmVVcGxvYWRlck9wdGlvbik7CiAgICAgYm9vbCBpc0NvbnRleHRMb3N0KCk7CiAgICAgTGF5ZXJS
ZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKCkgeyByZXR1cm4gbV9sYXllclJlbmRlcmVy
LmdldCgpOyB9CiAgICAgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmNwcAppbmRleCBkNTMxOGFlMzZiZTYyNDk4ZDg3YzY0NDhmYzlkMTQwMDVlOGQ5NTNmLi40
MThjYWNmMzM5NWE2ZjA1ZGY4ZTkwZDdjY2EyZjU4NDA5OTU3MDhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzgsMjQgKzM4LDYgQEAgdXNpbmcgbmFtZXNw
YWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVbnRocm90dGxlZFRleHR1
cmVVcGxvYWRlciA6IHB1YmxpYyBUZXh0dXJlVXBsb2FkZXIgewotICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcj4gY3JlYXRlKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSk7
Ci0gICAgfQotICAgIHZpcnR1YWwgflVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkgeyB9Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5VcGxvYWRzKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qg
ZGVzdFJlY3QpIHsgdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgVW50aHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXIoKSB7IH0KLX07Ci0KIFBhc3NPd25QdHI8Q0NQcm94eT4gQ0NTaW5nbGVUaHJlYWRQ
cm94eTo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKIHsKICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IENDU2luZ2xlVGhyZWFkUHJveHkobGF5ZXJUcmVlSG9zdCkpOwpAQCAt
MTU1LDcgKzEzNyw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoKQogICAgIEFTU0VSVChtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbik7CiAg
ICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICAgICAgYm9v
bCBvayA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29u
dGV4dEJlZm9yZUluaXRpYWxpemF0aW9uLnJlbGVhc2UoKSwgVW50aHJvdHRsZWRUZXh0dXJlVXBs
b2FkZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgYm9vbCBvayA9IG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uLnJl
bGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgICAgIGlmIChvaykgewogICAgICAg
ICAgICAgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgICAgICAgICAgbV9s
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVhZCA9IG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKQEAgLTE3OSw3ICsxNjEsNyBAQCBib29s
IENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgewogICAgICAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5k
ZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSBtX2xheWVy
VHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBVbnRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKCkpOworICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIFVudGhyb3R0
bGVkVXBsb2FkZXIpOwogICAgICAgICBpZiAoaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAgIG1f
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllc0Zvck1haW5UaHJlYWQgPSBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKaW5kZXggMDc4NDkwNTgxNjI5MWQzZTEzMjBhZjdjYTU0NjllOTZjNzE3
MTZhMi4uNjM3NWQ3ZjljM2UyYzk1OWI4YTJlYmVkMWZjMWQ5MzZjZmM5NzAyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTU3LDI0ICs1NywxMiBAQCBzdGF0aWMgY29uc3QgZG91
YmxlIGNvbnRleHRSZWNyZWF0aW9uVGlja1JhdGUgPSAwLjAzOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLS8vIEZJWE1FOiByZW1vdmUgd2hlbiBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIgaXMg
cmVhZHkgdG8gYmUgdXNlZC4KLWNsYXNzIFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyIDogcHVi
bGljIFRleHR1cmVVcGxvYWRlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVW50aHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFVudGhy
b3R0bGVkVGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVW50aHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIoY29udGV4dCkpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5VbnRocm90
dGxlZFRleHR1cmVVcGxvYWRlcigpIHsgfQorbmFtZXNwYWNlIHsKIAotICAgIHZpcnR1YWwgYm9v
bCBpc0J1c3koKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9h
ZHMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0
dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3Qp
OyB9CisvLyBGSVhNRTogVXNlIFRocm90dGxlZFVwbG9hZGVyIGJ5IGRlZmF1bHQuCitzdGF0aWMg
VGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlciA9IFVudGhyb3R0bGVkVXBsb2Fk
ZXI7CiAKLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRl
cihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPikgeyB9Ci19OworfSAvLyBhbm9ueW1vdXMg
bmFtZXNwYWNlCiAKIFBhc3NPd25QdHI8Q0NQcm94eT4gQ0NUaHJlYWRQcm94eTo6Y3JlYXRlKEND
TGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKIHsKQEAgLTgzNCw4ICs4MjIsNyBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50KiBjb21wbAogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0
aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChp
c0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9u
T25JbXBsVGhyZWFkKTsKLSAgICBPd25QdHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxvYWRlciA9IFVu
dGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6
YXRpb25PbkltcGxUaHJlYWQuZ2V0KCkpOwotICAgICppbml0aWFsaXplU3VjY2VlZGVkID0gbV9s
YXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIobV9jb250ZXh0QmVmb3Jl
SW5pdGlhbGl6YXRpb25PbkltcGxUaHJlYWQucmVsZWFzZSgpLCB1cGxvYWRlci5yZWxlYXNlKCkp
OworICAgICppbml0aWFsaXplU3VjY2VlZGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb25PbkltcGxUaHJl
YWQucmVsZWFzZSgpLCB0ZXh0dXJlVXBsb2FkZXIpOwogICAgIGlmICgqaW5pdGlhbGl6ZVN1Y2Nl
ZWRlZCkgewogICAgICAgICAqY2FwYWJpbGl0aWVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwogICAgICAgICBpZiAoY2FwYWJpbGl0aWVzLT51c2lu
Z1N3YXBDb21wbGV0ZUNhbGxiYWNrKQpAQCAtODg1LDggKzg3Miw3IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21w
bGV0aW9uLCBHCiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpyZWNyZWF0
ZUNvbnRleHRPbkltcGxUaHJlYWQiKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAg
IG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0gICAgT3duUHRy
PFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIgPSBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6
Y3JlYXRlKGNvbnRleHRQdHIpOwotICAgICpyZWNyZWF0ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGFkb3B0UmVmKGNvbnRleHRQdHIpLCB1
cGxvYWRlci5yZWxlYXNlKCkpOworICAgICpyZWNyZWF0ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGFkb3B0UmVmKGNvbnRleHRQdHIpLCB0
ZXh0dXJlVXBsb2FkZXIpOwogICAgIGlmICgqcmVjcmVhdGVTdWNjZWVkZWQpIHsKICAgICAgICAg
KmNhcGFiaWxpdGllcyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKTsKICAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmRpZFJlY3JlYXRlQ29u
dGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCA1ODY2OGQwZWZhMjM3ODE4YWRkZWE5NDM4NGFm
ZTBhMGJmMDlkMjliLi45ZjI2NzM0MTgxMmU0NzZlZTFkZWRjYjIzYjY0ZjA3YjM3YTZjM2ZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQ0NBbmltYXRp
b25UZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiQ0NMYXllclRlc3RDb21tb24uaCIKLSNpbmNsdWRl
ICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCkBAIC02MCw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgICAgIG1faG9zdEltcGwgPSBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOwotICAgICAgICBtX2hv
c3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRy
KG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAgICAgIG1faG9zdEltcGwtPmluaXRpYWxp
emVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAg
ICAgICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogICAg
IH0KIApAQCAtODc2LDcgKzg3NSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
YmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAogVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCB2aWV3cG9ydENvdmVyZWQpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1
cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNy
ZWF0ZUNvbnRleHQoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgbV9ob3N0SW1wbC0+c2V0
QmFja2dyb3VuZENvbG9yKENvbG9yOjpncmF5KTsKIAogICAgIEludFNpemUgdmlld3BvcnRTaXpl
KDEwMDAsIDEwMDApOwpAQCAtOTg3LDcgKzk4Niw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgcmVzaGFwZU5vdENhbGxlZFVudGlsRHJhdykKIHsKICAgICBSZXNoYXBlVHJhY2tl
ckNvbnRleHQqIHJlc2hhcGVUcmFja2VyID0gbmV3IFJlc2hhcGVUcmFja2VyQ29udGV4dCgpOwog
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIocmVz
aGFwZVRyYWNrZXIpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5k
b3cpOwotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIGFk
b3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAKICAgICBD
Q0xheWVySW1wbCogcm9vdCA9IG5ldyBGYWtlRHJhd2FibGVDQ0xheWVySW1wbCgxKTsKICAgICBy
b290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKQEAgLTEwMzYsNyArMTAzNSw3
IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0Rh
bWFnZVJlY3QpCiAgICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKICAgICBzZXR0aW5ncy5wYXJ0aWFs
U3dhcEVuYWJsZWQgPSB0cnVlOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBsYXll
clRyZWVIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhp
cyk7Ci0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRl
eHQsIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKCkpKTsKKyAgICBsYXllclRyZWVI
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwgVW50aHJvdHRsZWRVcGxv
YWRlcik7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDUw
MCwgNTAwKSk7CiAKICAgICBDQ0xheWVySW1wbCogcm9vdCA9IG5ldyBGYWtlRHJhd2FibGVDQ0xh
eWVySW1wbCgxKTsKQEAgLTExMzUsNyArMTEzNCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgY29udGV4dExvc3RBbmRSZXN0b3JlZE5vdGlmaWNhdGlvblNlbnRUb0FsbExheWVy
CiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyMS0+ZGlkTG9zZUNvbnRleHRDYWxsZWQoKSk7CiAgICAg
RVhQRUNUX0ZBTFNFKGxheWVyMi0+ZGlkTG9zZUNvbnRleHRDYWxsZWQoKSk7CiAKLSAgICBtX2hv
c3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRy
KG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKIAogICAg
IEVYUEVDVF9UUlVFKHJvb3QtPmRpZExvc2VDb250ZXh0Q2FsbGVkKCkpOwogICAgIEVYUEVDVF9U
UlVFKGxheWVyMS0+ZGlkTG9zZUNvbnRleHRDYWxsZWQoKSk7CkBAIC0xMTUwLDcgKzExNDksNyBA
QCBwdWJsaWM6CiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGZpbmlzaEFsbFJlbmRl
cmluZ0FmdGVyQ29udGV4dExvc3QpCiB7CiAgICAgLy8gVGhlIGNvbnRleHQgaW5pdGlhbGl6YXRp
b24gd2lsbCBmYWlsLCBidXQgd2Ugc2hvdWxkIHN0aWxsIGJlIGFibGUgdG8gY2FsbCBmaW5pc2hB
bGxSZW5kZXJpbmcoKSB3aXRob3V0IGFueSBpbGwgZWZmZWN0cy4KLSAgICBtX2hvc3RJbXBsLT5p
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdy
YXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0RNYWtlQ3VycmVudEZhaWxzKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVj
dGx5VG9Ib3N0V2luZG93KSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKKyAg
ICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtlQ3VycmVudEZhaWxzKSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAg
ICAgbV9ob3N0SW1wbC0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiB9CiAKQEAgLTExODAsNyArMTE3
OSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsYmFyTGF5ZXJMb3N0
Q29udGV4dCkKICAgICAgICAgLy8gU2Nyb2xsYmFyIGxheWVyIHNob3VsZCBhbHdheXMgZ2VuZXJh
dGUgcXVhZHMsIGV2ZW4gYWZ0ZXIgbG9zdCBjb250ZXh0CiAgICAgICAgIEVYUEVDVF9HVChyZW5k
ZXJQYXNzLT5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgICAgICBtX2hvc3RJbXBsLT5kaWRE
cmF3QWxsTGF5ZXJzKGZyYW1lKTsKLSAgICAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRl
cikpOworICAgICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVD
b250ZXh0KCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwogICAgIH0KIH0KIApAQCAtMTM1NSw3ICsx
MzU0LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkb250VXNlT2xkUmVzb3Vy
Y2VzQWZ0ZXJMb3N0Q29udGV4dCkKIAogICAgIC8vIExvc2UgdGhlIGNvbnRleHQsIHJlcGxhY2lu
ZyBpdCB3aXRoIGEgU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0QsIHRoYXQKICAgICAvLyB3aWxs
IHdhcm4gaWYgYW55IHJlc291cmNlIGZyb20gdGhlIHByZXZpb3VzIGNvbnRleHQgZ2V0cyB1c2Vk
LgotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKFN0cmljdFdlYkdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VU
ZXh0dXJlVXBsb2FkZXIpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJl
cihTdHJpY3RXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCksIFVu
dGhyb3R0bGVkVXBsb2FkZXIpOwogICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVU
b0RyYXcoZnJhbWUpKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBt
X2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCmlu
ZGV4IDY5ZDBmZjVmZjUwMGIxNmYwMmMxNjRmOTgwMWUzZGY1MzI3Njk0YjAuLjEzZjA0YTJkODM5
ZTcxZTQzNTdmMGE0MjIxMmJlOGIyNTBiOWFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApAQCAt
MjUsNyArMjUsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgogCi0jaW5jbHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgogI2lu
Y2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCkBAIC0zNiw3
ICszNSw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXRUZXN0czsKIAogY2xhc3MgRnJhbWVDb3VudGlu
Z01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCA6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0QgewogcHVibGljOgpAQCAtOTMsNyArOTEsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBG
YWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIExheWVyUmVuZGVyZXJDaHJvbWl1bSB7
CiBwdWJsaWM6Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hy
b21pdW1DbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dCwgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyKSA6IExheWVyUmVuZGVyZXJD
aHJvbWl1bShjbGllbnQsIGNvbnRleHQsIHVwbG9hZGVyKSB7IH0KKyAgICBGYWtlTGF5ZXJSZW5k
ZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50LCBQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KSA6IExheWVyUmVuZGVyZXJDaHJvbWl1bShj
bGllbnQsIGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpIHsgfQogCiAgICAgLy8gTGF5ZXJS
ZW5kZXJlckNocm9taXVtIG1ldGhvZHMuCiAKQEAgLTEwOSw3ICsxMDcsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgICwgbV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObygxLCBmYWxzZSkKICAgICAgICAg
LCBtX2NvbnRleHQoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRp
b25TZXR0aW5nQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9I
b3N0V2luZG93KSkKICAgICAgICAgLCBtX21vY2tDb250ZXh0KCpzdGF0aWNfY2FzdDxGcmFtZUNv
dW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9jb250ZXh0LmdldCgpKSkpCi0g
ICAgICAgICwgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0oJm1fbW9ja0NsaWVudCwgbV9jb250ZXh0
LnJlbGVhc2UoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIoKSkpCisgICAgICAg
ICwgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0oJm1fbW9ja0NsaWVudCwgbV9jb250ZXh0LnJlbGVh
c2UoKSkKICAgICB7CiAgICAgfQogCkBAIC0yNzMsNyArMjcxLDcgQEAgcHVibGljOgogVEVTVChM
YXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlhbGl6YXRpb25Eb2VzTm90TWFrZVN5bmNo
cm9ub3VzQ2FsbHMpCiB7CiAgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCBtb2Nr
Q2xpZW50OwotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9t
aXVtKCZtb2NrQ2xpZW50LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91c0NhbGxD
b250ZXh0KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSwg
YWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIoKSkpOworICAgIEZha2VMYXllclJlbmRl
cmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0
UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91c0NhbGxDb250ZXh0KSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CiAKICAgICBFWFBFQ1RfVFJVRShsYXllclJl
bmRlcmVyQ2hyb21pdW0uaW5pdGlhbGl6ZSgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141320</attachid>
            <date>2012-05-10 20:53:34 -0700</date>
            <delta_ts>2012-05-11 08:12:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85893-20120510235333.patch</filename>
            <type>text/plain</type>
            <size>23291</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IxMTA1M2I5OTU1ZDg0
M2ZlOGY5ODM5OWJlZWJlYzc5NmYwZDI2ZC4uN2NjYWY1MjM4YTRhMGFjZjkzOWFkOGVjZWUzZTBh
NzRlNjUwNWQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA1LTEwICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBN
b3ZlIGluc3RhbnRpYXRpb24gb2YgdGV4dHVyZSB1cGxvYWRlciB0byBMYXllclJlbmRlcmVyQ2hy
b21pdW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTg5MworCisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4KKworICAgICAgICBN
b3ZlIGluc3RhbnRpYXRpb24gb2YgdGV4dHVyZSB1cGxvYWRlciB0byBMYXllclJlbmRlcmVyQ2hy
b21pdW0gYW5kCisgICAgICAgIGFsbG93IENDUHJveHkgdG8gZGVjaWRlIGJldHdlZW4gYSB0aHJv
dHRsZWQgb3IgdW50aHJvdHRsZWQgdXBsb2FkZXIKKyAgICAgICAgdXNpbmcgYSBmbGFnIHBhc3Nl
ZCB0byB0aGUgTGF5ZXJSZW5kZXJlckNocm9taXVtIGNvbnN0cnVjdG9yLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJl
ZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXll
clJlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXll
clJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3Jl
YXRlQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFs
aXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQpOgorCiAyMDEyLTA1LTEwICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIGF0dGVt
cHQgdG8gYnVpbGQgZml4IGZvciBDaHJvbWl1bS1tYWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDkwODlkZDcxOWQ0ZDJkNWNhNjYzZDFlY2YxZDJkOGVmNDk5NWU3MTYuLmQxNTYyZjZj
NjBmM2VkYjBkM2ZiMDRkOWJmZTFiZjY1MzA4ZDRjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDUtMTAgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUgaW5zdGFudGlhdGlvbiBv
ZiB0ZXh0dXJlIHVwbG9hZGVyIHRvIExheWVyUmVuZGVyZXJDaHJvbWl1bS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1ODkzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0OjpDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcDoK
KyAgICAgICAgKEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW06OkZha2VMYXllclJlbmRlcmVyQ2hy
b21pdW0pOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtVGVzdCk6CisgICAgICAgIChURVNUKToKKwogMjAxMi0wNS0xMCAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjExNjU5NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDlm
M2VkZDBhZWZhNjNhZjgyOGIxNzE1MTM2ZDlkODZhMmVhZmEwYWQuLjllMTE1MDdkYjc5NTk2MDE5
M2E5MmQ5ODQ4YWJkZDc2OGM1ODViNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcApAQCAtMTQzLDYgKzE0MywyNCBAQCBib29sIG5lZWRzTGlvbklPU3VyZmFjZVJlYWRi
YWNrV29ya2Fyb3VuZCgpCiAjZW5kaWYKIH0KIAorY2xhc3MgVW50aHJvdHRsZWRUZXh0dXJlVXBs
b2FkZXIgOiBwdWJsaWMgVGV4dHVyZVVwbG9hZGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkpOworICAg
IH0KKyAgICB2aXJ0dWFsIH5VbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigpIHsgfQorCisgICAg
dmlydHVhbCBib29sIGlzQnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lk
IGJlZ2luVXBsb2FkcygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RS
ZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCk7IH0KKworcHJvdGVjdGVkOgorICAgIFVudGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyKCkgeyB9Cit9OworCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogY2xhc3MgTGF5ZXJS
ZW5kZXJlclN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0FkYXB0ZXIgOiBwdWJsaWMgRXh0ZW5z
aW9uczNEQ2hyb21pdW06OlN3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0NIUk9NSVVNIHsKQEAg
LTE5NCw5ICsyMTIsOSBAQCBwcml2YXRlOgogfTsKIAogCi1QYXNzT3duUHRyPExheWVyUmVuZGVy
ZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5kZXJlckNo
cm9taXVtQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRl
eHQsIFBhc3NPd25QdHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxvYWRlcikKK1Bhc3NPd25QdHI8TGF5
ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShMYXllclJl
bmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dCwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlclNldHRpbmcp
CiB7Ci0gICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9w
dFB0cihuZXcgTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgdXBsb2FkZXIp
KSk7CisgICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9w
dFB0cihuZXcgTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgdGV4dHVyZVVw
bG9hZGVyU2V0dGluZykpKTsKICAgICBpZiAoIWxheWVyUmVuZGVyZXItPmluaXRpYWxpemUoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIwNSwxNyArMjIzLDE3IEBAIFBhc3NPd25Q
dHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShM
YXllclJlbmRlcmVyQ2hyCiAKIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhc3NPd25QdHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxvYWRlcikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0
dXJlVXBsb2FkZXJTZXR0aW5nKQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9jdXJy
ZW50UmVuZGVyU3VyZmFjZSgwKQogICAgICwgbV9jdXJyZW50TWFuYWdlZFRleHR1cmUoMCkKICAg
ICAsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCgwKQotICAgICwgbV90ZXh0dXJlVXBsb2FkZXIo
dXBsb2FkZXIpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fZGVmYXVsdFJlbmRl
clN1cmZhY2UoMCkKICAgICAsIG1fc2hhcmVkR2VvbWV0cnlRdWFkKEZsb2F0UmVjdCgtMC41Ziwg
LTAuNWYsIDEuMGYsIDEuMGYpKQogICAgICwgbV9pc1ZpZXdwb3J0Q2hhbmdlZChmYWxzZSkKICAg
ICAsIG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZChmYWxzZSkKKyAgICAsIG1fdGV4dHVyZVVwbG9h
ZGVyU2V0dGluZyhtX3RleHR1cmVVcGxvYWRlclNldHRpbmcpCiB7CiB9CiAKQEAgLTEzODIsNiAr
MTQwMCwxMCBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9i
amVjdHMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXpl
KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSk7CiAgICAgbV90ZXh0dXJlQ29w
aWVyID0gQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsK
KyAgICBpZiAobV90ZXh0dXJlVXBsb2FkZXJTZXR0aW5nID09IFRocm90dGxlZFVwbG9hZGVyKQor
ICAgICAgICBtX3RleHR1cmVVcGxvYWRlciA9IFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3Jl
YXRlKG1fY29udGV4dC5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBtX3RleHR1cmVVcGxvYWRl
ciA9IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUoKTsKICAgICBtX2NvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKG1fY29u
dGV4dC5nZXQoKSk7CiAgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNr
aW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1f
Y2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVVzYWdlSGludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgKaW5kZXggZDczZjcxYWU3ZDAxNzA1ZjQ5MDA2MjZkODY3YjM0NTc5MDc3NTUy
NC4uYTkyY2Y4MmFlMDkyMWVhNTMyNTJjOTk5NTY1YjE3YzAwOGFkNWIyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTc0LDExICs3NCwxMyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90
KSA9IDA7CiB9OwogCitlbnVtIFRleHR1cmVVcGxvYWRlck9wdGlvbiB7IFRocm90dGxlZFVwbG9h
ZGVyLCBVbnRocm90dGxlZFVwbG9hZGVyIH07CisKIC8vIENsYXNzIHRoYXQgaGFuZGxlcyBkcmF3
aW5nIG9mIGNvbXBvc2l0ZWQgcmVuZGVyIGxheWVycyB1c2luZyBHTC4KIGNsYXNzIExheWVyUmVu
ZGVyZXJDaHJvbWl1bSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hy
b21pdW0+IGNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqLCBQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiwgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+KTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGNyZWF0ZShMYXllclJlbmRlcmVy
Q2hyb21pdW1DbGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgVGV4dHVyZVVw
bG9hZGVyT3B0aW9uKTsKIAogICAgIH5MYXllclJlbmRlcmVyQ2hyb21pdW0oKTsKIApAQCAtMTQ0
LDcgKzE0Niw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGVuc3VyZUZyYW1lYnVmZmVyKCk7CiAg
ICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyYW1l
YnVmZmVyRGlzY2FyZGVkOyB9CiAKLSAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5k
ZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFBhc3NP
d25QdHI8VGV4dHVyZVVwbG9hZGVyPik7CisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVy
UmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBU
ZXh0dXJlVXBsb2FkZXJPcHRpb24pOwogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwogCiBwcml2YXRl
OgpAQCAtMjk4LDYgKzMwMCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNWaWV3cG9ydENo
YW5nZWQ7CiAgICAgYm9vbCBtX2lzRnJhbWVidWZmZXJEaXNjYXJkZWQ7CisgICAgVGV4dHVyZVVw
bG9hZGVyT3B0aW9uIG1fdGV4dHVyZVVwbG9hZGVyU2V0dGluZzsKIH07CiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBlYzU2NGY1ZjZmNmRiNzVjZGVhNzFk
ZTU3YWU4NTU1NmIxNWIxNWMzLi40YWM4NTM0NTQxYmEzY2RiY2Q5MDVjMGExOWFlY2U1M2I1N2Rk
OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtNTI2LDEw
ICs1MjYsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaXNpYmxlKGJvb2wgdmlz
aWJsZSkKICAgICBtX3RpbWVTb3VyY2VDbGllbnRBZGFwdGVyLT5zZXRBY3RpdmUoc2hvdWxkVGlj
a0luQmFja2dyb3VuZCk7CiB9CiAKLWJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgUGFz
c093blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyKQorYm9vbCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyKQogewogICAg
IE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXI7Ci0gICAgbGF5ZXJS
ZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIGNvbnRleHQsIHVw
bG9hZGVyKTsKKyAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVh
dGUodGhpcywgY29udGV4dCwgdGV4dHVyZVVwbG9hZGVyKTsKIAogICAgIC8vIFNpbmNlIHdlIG5v
dyBoYXZlIGEgbmV3IGNvbnRleHQvbGF5ZXJSZW5kZXJlciwgd2UgY2Fubm90IGNvbnRpbnVlIHRv
IHVzZSB0aGUgb2xkCiAgICAgLy8gcmVzb3VyY2VzIChpLmUuIHJlbmRlclN1cmZhY2VzIGFuZCB0
ZXh0dXJlIElEcykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggOGYx
NmY5ZmQ0MDY0N2U5YTUzY2E4MWVmNmJhYWU2Nzk3MmNjNDI5ZC4uMTNhOGNkNjRjZTJiNDkzZTQ1
ZGIzMjMwM2IzYTIyZjVjMTNkOTQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaApAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRl
cmluZygpOwogICAgIGludCBmcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1i
ZXI7IH0KIAotICAgIGJvb2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4sIFBhc3NPd25QdHI8VGV4dHVyZVVwbG9hZGVyPik7CisgICAgYm9vbCBp
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgVGV4
dHVyZVVwbG9hZGVyT3B0aW9uKTsKICAgICBib29sIGlzQ29udGV4dExvc3QoKTsKICAgICBMYXll
clJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIoKSB7IHJldHVybiBtX2xheWVyUmVuZGVy
ZXIuZ2V0KCk7IH0KICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCmluZGV4IGQ1MzE4YWUzNmJlNjI0OThkODdjNjQ0OGZjOWQxNDAwNWU4ZDk1M2Yu
LjQxOGNhY2YzMzk1YTZmMDVkZjhlOTBkN2NjYTJmNTg0MDk5NTcwOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0zOCwyNCArMzgsNiBAQCB1c2luZyBuYW1l
c3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVudGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyIDogcHVibGljIFRleHR1cmVVcGxvYWRlciB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOwotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigp
KTsKLSAgICB9Ci0gICAgdmlydHVhbCB+VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0K
LQotICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBiZWdpblVwbG9hZHMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2Fkcygp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291
cmNlUmVjdCwgZGVzdFJlY3QpOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBVbnRocm90dGxlZFRleHR1
cmVVcGxvYWRlcigpIHsgfQotfTsKLQogUGFzc093blB0cjxDQ1Byb3h5PiBDQ1NpbmdsZVRocmVh
ZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogewogICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ0NTaW5nbGVUaHJlYWRQcm94eShsYXllclRyZWVIb3N0KSk7CkBA
IC0xNTUsNyArMTM3LDcgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojppbml0aWFsaXplTGF5
ZXJSZW5kZXJlcigpCiAgICAgQVNTRVJUKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uKTsK
ICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAgICAgICBi
b29sIG9rID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIobV9j
b250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb24ucmVsZWFzZSgpLCBVbnRocm90dGxlZFRleHR1cmVV
cGxvYWRlcjo6Y3JlYXRlKCkpOworICAgICAgICBib29sIG9rID0gbV9sYXllclRyZWVIb3N0SW1w
bC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb24u
cmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICAgICAgaWYgKG9rKSB7CiAgICAg
ICAgICAgICBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgICAgICBt
X2xheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXNGb3JNYWluVGhyZWFkID0gbV9sYXllclRyZWVIb3N0
SW1wbC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwpAQCAtMTc5LDcgKzE2MSw3IEBAIGJv
b2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICB7CiAgICAgICAg
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwotICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIFVudGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUoKSk7CisgICAgICAgIGluaXRpYWxpemVkID0gbV9s
YXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwgVW50aHJv
dHRsZWRVcGxvYWRlcik7CiAgICAgICAgIGlmIChpbml0aWFsaXplZCkgewogICAgICAgICAgICAg
bV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVhZCA9IG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcAppbmRleCAwNzg0OTA1ODE2MjkxZDNlMTMyMGFmN2NhNTQ2OWU5NmM3
MTcxNmEyLi42Mzc1ZDdmOWMzZTJjOTU5YjhhMmViZWQxZmMxZDkzNmNmYzk3MDI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNTcsMjQgKzU3LDEyIEBAIHN0YXRpYyBjb25zdCBk
b3VibGUgY29udGV4dFJlY3JlYXRpb25UaWNrUmF0ZSA9IDAuMDM7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gRklYTUU6IHJlbW92ZSB3aGVuIFRocm90dGxlZFRleHR1cmVVcGxvYWRlciBp
cyByZWFkeSB0byBiZSB1c2VkLgotY2xhc3MgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIgOiBw
dWJsaWMgVGV4dHVyZVVwbG9hZGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShVbnRocm90
dGxlZFRleHR1cmVVcGxvYWRlcik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8VW50
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVbnRocm90
dGxlZFRleHR1cmVVcGxvYWRlcihjb250ZXh0KSk7Ci0gICAgfQotICAgIHZpcnR1YWwgflVudGhy
b3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkgeyB9CituYW1lc3BhY2UgewogCi0gICAgdmlydHVhbCBi
b29sIGlzQnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luVXBs
b2FkcygpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSB7IHRl
eHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCk7IH0KKy8vIEZJWE1FOiBVc2UgVGhyb3R0bGVkVXBsb2FkZXIgYnkgZGVmYXVsdC4KK3N0YXRp
YyBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyID0gVW50aHJvdHRsZWRVcGxv
YWRlcjsKIAotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KSB7IH0KLX07Cit9IC8vIGFub255bW91
cyBuYW1lc3BhY2UKIAogUGFzc093blB0cjxDQ1Byb3h5PiBDQ1RocmVhZFByb3h5OjpjcmVhdGUo
Q0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogewpAQCAtODM0LDggKzgyMiw3IEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqIGNvbXBsCiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6Omlu
aXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJU
KGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRp
b25PbkltcGxUaHJlYWQpOwotICAgIE93blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyID0g
VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZShtX2NvbnRleHRCZWZvcmVJbml0aWFs
aXphdGlvbk9uSW1wbFRocmVhZC5nZXQoKSk7Ci0gICAgKmluaXRpYWxpemVTdWNjZWVkZWQgPSBt
X2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihtX2NvbnRleHRCZWZv
cmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVhZC5yZWxlYXNlKCksIHVwbG9hZGVyLnJlbGVhc2Uo
KSk7CisgICAgKmluaXRpYWxpemVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0
aWFsaXplTGF5ZXJSZW5kZXJlcihtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRo
cmVhZC5yZWxlYXNlKCksIHRleHR1cmVVcGxvYWRlcik7CiAgICAgaWYgKCppbml0aWFsaXplU3Vj
Y2VlZGVkKSB7CiAgICAgICAgICpjYXBhYmlsaXRpZXMgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5s
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiAgICAgICAgIGlmIChjYXBhYmlsaXRpZXMtPnVz
aW5nU3dhcENvbXBsZXRlQ2FsbGJhY2spCkBAIC04ODUsOCArODcyLDcgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNv
bXBsZXRpb24sIEcKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnJlY3Jl
YXRlQ29udGV4dE9uSW1wbFRocmVhZCIpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAg
ICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICBPd25Q
dHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxvYWRlciA9IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
OjpjcmVhdGUoY29udGV4dFB0cik7Ci0gICAgKnJlY3JlYXRlU3VjY2VlZGVkID0gbV9sYXllclRy
ZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoYWRvcHRSZWYoY29udGV4dFB0ciks
IHVwbG9hZGVyLnJlbGVhc2UoKSk7CisgICAgKnJlY3JlYXRlU3VjY2VlZGVkID0gbV9sYXllclRy
ZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoYWRvcHRSZWYoY29udGV4dFB0ciks
IHRleHR1cmVVcGxvYWRlcik7CiAgICAgaWYgKCpyZWNyZWF0ZVN1Y2NlZWRlZCkgewogICAgICAg
ICAqY2FwYWJpbGl0aWVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpOwogICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+ZGlkUmVjcmVhdGVD
b250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDU4NjY4ZDBlZmEyMzc4MThhZGRlYTk0Mzg0
YWZlMGEwYmYwOWQyOWIuLjlmMjY3MzQxODEyZTQ3NmVlMWRlZGNiMjNiNjRmMDdiMzdhNmMzZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDQ0FuaW1h
dGlvblRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ0xheWVyVGVzdENvbW1vbi5oIgotI2luY2x1
ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNs
dWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTYwLDcgKzU5LDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKICAgICAgICAgbV9ob3N0SW1wbCA9
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7Ci0gICAgICAgIG1f
aG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQ
dHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsK
ICAgICAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAg
ICAgfQogCkBAIC04NzYsNyArODc1LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogCiBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIHZpZXdwb3J0Q292ZXJlZCkKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0
aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4
dHVyZVVwbG9hZGVyKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
Y3JlYXRlQ29udGV4dCgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBtX2hvc3RJbXBsLT5z
ZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmdyYXkpOwogCiAgICAgSW50U2l6ZSB2aWV3cG9ydFNp
emUoMTAwMCwgMTAwMCk7CkBAIC05ODcsNyArOTg2LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCByZXNoYXBlTm90Q2FsbGVkVW50aWxEcmF3KQogewogICAgIFJlc2hhcGVUcmFj
a2VyQ29udGV4dCogcmVzaGFwZVRyYWNrZXIgPSBuZXcgUmVzaGFwZVRyYWNrZXJDb250ZXh0KCk7
CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihy
ZXNoYXBlVHJhY2tlciksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdyk7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwg
YWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0
aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKIAogICAg
IENDTGF5ZXJJbXBsKiByb290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwogICAg
IHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwpAQCAtMTAzNiw3ICsxMDM1
LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVz
RGFtYWdlUmVjdCkKICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwogICAgIHNldHRpbmdzLnBhcnRp
YWxTd2FwRW5hYmxlZCA9IHRydWU7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGxh
eWVyVHJlZUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0
aGlzKTsKLSAgICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29u
dGV4dCwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIoKSkpOworICAgIGxheWVyVHJl
ZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBVbnRocm90dGxlZFVw
bG9hZGVyKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUo
NTAwLCA1MDApKTsKIAogICAgIENDTGF5ZXJJbXBsKiByb290ID0gbmV3IEZha2VEcmF3YWJsZUND
TGF5ZXJJbXBsKDEpOwpAQCAtMTEzNSw3ICsxMTM0LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBjb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uU2VudFRvQWxsTGF5
ZXIKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXIxLT5kaWRMb3NlQ29udGV4dENhbGxlZCgpKTsKICAg
ICBFWFBFQ1RfRkFMU0UobGF5ZXIyLT5kaWRMb3NlQ29udGV4dENhbGxlZCgpKTsKIAotICAgIG1f
aG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQ
dHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwogCiAg
ICAgRVhQRUNUX1RSVUUocm9vdC0+ZGlkTG9zZUNvbnRleHRDYWxsZWQoKSk7CiAgICAgRVhQRUNU
X1RSVUUobGF5ZXIxLT5kaWRMb3NlQ29udGV4dENhbGxlZCgpKTsKQEAgLTExNTAsNyArMTE0OSw3
IEBAIHB1YmxpYzoKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZmluaXNoQWxsUmVu
ZGVyaW5nQWZ0ZXJDb250ZXh0TG9zdCkKIHsKICAgICAvLyBUaGUgY29udGV4dCBpbml0aWFsaXph
dGlvbiB3aWxsIGZhaWwsIGJ1dCB3ZSBzaG91bGQgc3RpbGwgYmUgYWJsZSB0byBjYWxsIGZpbmlz
aEFsbFJlbmRlcmluZygpIHdpdGhvdXQgYW55IGlsbCBlZmZlY3RzLgotICAgIG1faG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRl
R3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFwaGlj
c0NvbnRleHQzRE1ha2VDdXJyZW50RmFpbHMpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGly
ZWN0bHlUb0hvc3RXaW5kb3cpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwor
ICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3
IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRE1ha2VDdXJyZW50RmFpbHMpLCBHcmFwaGljc0NvbnRl
eHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsK
ICAgICBtX2hvc3RJbXBsLT5maW5pc2hBbGxSZW5kZXJpbmcoKTsKIH0KIApAQCAtMTE4MCw3ICsx
MTc5LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxiYXJMYXllckxv
c3RDb250ZXh0KQogICAgICAgICAvLyBTY3JvbGxiYXIgbGF5ZXIgc2hvdWxkIGFsd2F5cyBnZW5l
cmF0ZSBxdWFkcywgZXZlbiBhZnRlciBsb3N0IGNvbnRleHQKICAgICAgICAgRVhQRUNUX0dUKHJl
bmRlclBhc3MtPnF1YWRMaXN0KCkuc2l6ZSgpLCAwdSk7CiAgICAgICAgIG1faG9zdEltcGwtPmRp
ZERyYXdBbGxMYXllcnMoZnJhbWUpOwotICAgICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9h
ZGVyKSk7CisgICAgICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0
ZUNvbnRleHQoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgfQogfQogCkBAIC0xMzU1LDcg
KzEzNTQsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRvbnRVc2VPbGRSZXNv
dXJjZXNBZnRlckxvc3RDb250ZXh0KQogCiAgICAgLy8gTG9zZSB0aGUgY29udGV4dCwgcmVwbGFj
aW5nIGl0IHdpdGggYSBTdHJpY3RXZWJHcmFwaGljc0NvbnRleHQzRCwgdGhhdAogICAgIC8vIHdp
bGwgd2FybiBpZiBhbnkgcmVzb3VyY2UgZnJvbSB0aGUgcHJldmlvdXMgY29udGV4dCBnZXRzIHVz
ZWQuCi0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoU3RyaWN0V2ViR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFr
ZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRl
cmVyKFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKSwg
VW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAg
IG1faG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAK
aW5kZXggNjlkMGZmNWZmNTAwYjE2ZjAyYzE2NGY5ODAxZTNkZjUzMjc2OTRiMC4uMTNmMDRhMmQ4
MzllNzFlNDM1N2YwYTQyMjEyYmU4YjI1MGI5YWUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCkBA
IC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgiCiAj
aW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKQEAgLTM2
LDcgKzM1LDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwogCiBjbGFzcyBGcmFtZUNvdW50
aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0IDogcHVibGljIEZha2VXZWJHcmFwaGlj
c0NvbnRleHQzRCB7CiBwdWJsaWM6CkBAIC05Myw3ICs5MSw3IEBAIHByaXZhdGU6CiAKIGNsYXNz
IEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJSZW5kZXJlckNocm9taXVt
IHsKIHB1YmxpYzoKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJD
aHJvbWl1bUNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIpIDogTGF5ZXJSZW5kZXJl
ckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgdXBsb2FkZXIpIHsgfQorICAgIEZha2VMYXllclJl
bmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQsIFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpIDogTGF5ZXJSZW5kZXJlckNocm9taXVt
KGNsaWVudCwgY29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcikgeyB9CiAKICAgICAvLyBMYXll
clJlbmRlcmVyQ2hyb21pdW0gbWV0aG9kcy4KIApAQCAtMTA5LDcgKzEwNyw3IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgLCBtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKDEsIGZhbHNlKQogICAgICAg
ICAsIG1fY29udGV4dChHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2Nh
dGlvblNldHRpbmdDb250ZXh0KCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlU
b0hvc3RXaW5kb3cpKQogICAgICAgICAsIG1fbW9ja0NvbnRleHQoKnN0YXRpY19jYXN0PEZyYW1l
Q291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChtX2NvbnRleHQuZ2V0KCkpKSkK
LSAgICAgICAgLCBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX2NvbnRl
eHQucmVsZWFzZSgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcigpKSkKKyAgICAg
ICAgLCBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX2NvbnRleHQucmVs
ZWFzZSgpKQogICAgIHsKICAgICB9CiAKQEAgLTI3Myw3ICsyNzEsNyBAQCBwdWJsaWM6CiBURVNU
KExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbkRvZXNOb3RNYWtlU3lu
Y2hyb25vdXNDYWxscykKIHsKICAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50IG1v
Y2tDbGllbnQ7Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hy
b21pdW0oJm1vY2tDbGllbnQsIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZvcmJpZFN5bmNocm9ub3VzQ2Fs
bENvbnRleHQpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cp
LCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcigpKSk7CisgICAgRmFrZUxheWVyUmVu
ZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRv
cHRQdHIobmV3IEZvcmJpZFN5bmNocm9ub3VzQ2FsbENvbnRleHQpLCBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKIAogICAgIEVYUEVDVF9UUlVFKGxheWVy
UmVuZGVyZXJDaHJvbWl1bS5pbml0aWFsaXplKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141420</attachid>
            <date>2012-05-11 08:12:45 -0700</date>
            <delta_ts>2012-05-11 09:41:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85893-20120511111244.patch</filename>
            <type>text/plain</type>
            <size>23293</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQ2YmM0NTA1ZTk0NDE5
Y2E4OWY3YTllMGI5NDU2YTQ2ZDQ4ZDZjZS4uMjRhZDI3OWU2NDc1ZjIwMmQ4ZmM5ZGFkYTNlNGRh
OGU0ZDI0ZTNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA1LTExICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBN
b3ZlIGluc3RhbnRpYXRpb24gb2YgdGV4dHVyZSB1cGxvYWRlciB0byBMYXllclJlbmRlcmVyQ2hy
b21pdW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
dmUgaW5zdGFudGlhdGlvbiBvZiB0ZXh0dXJlIHVwbG9hZGVyIHRvIExheWVyUmVuZGVyZXJDaHJv
bWl1bSBhbmQKKyAgICAgICAgYWxsb3cgQ0NQcm94eSB0byBkZWNpZGUgYmV0d2VlbiBhIHRocm90
dGxlZCBvciB1bnRocm90dGxlZCB1cGxvYWRlcgorICAgICAgICB1c2luZyBhIGZsYWcgcGFzc2Vk
IHRvIHRoZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVk
T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVh
dGVDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxp
emVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCk6CisKIDIwMTItMDUtMTEgIEFsbGFu
IFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAgUXQg
c3VwcG9ydCBmb3IgbmV3IGxheW91dCB0eXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggYjM3M2ZmMWMwYjY5NGY0N2NjYWVmMThmOTAyMzM5NjhmYWNmMDg2MC4uOGJjYjM3OWE2Njg0
NjY5M2MzZjI0MWI3N2U5Y2Y2ODg1ZTgxYmM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNS0xMSAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBpbnN0YW50aWF0aW9uIG9mIHRl
eHR1cmUgdXBsb2FkZXIgdG8gTGF5ZXJSZW5kZXJlckNocm9taXVtLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU4OTMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dDo6Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1Rf
Rik6CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHA6CisgICAg
ICAgIChGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtOjpGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVt
KToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Q6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QpOgorICAgICAgICAoVEVTVCk6CisKIDIwMTItMDUtMTEgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxMTY3MjcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRl
eCA5ZjNlZGQwYWVmYTYzYWY4MjhiMTcxNTEzNmQ5ZDg2YTJlYWZhMGFkLi45ZTRhMGFmMjVlM2Vm
MjRmZWZmNjc5YWQ0YWRhZTM2OGUxMWI4OWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAKQEAgLTE0Myw2ICsxNDMsMjQgQEAgYm9vbCBuZWVkc0xpb25JT1N1cmZhY2VS
ZWFkYmFja1dvcmthcm91bmQoKQogI2VuZGlmCiB9CiAKK2NsYXNzIFVudGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyIDogcHVibGljIFRleHR1cmVVcGxvYWRlciB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigpKTsK
KyAgICB9CisgICAgdmlydHVhbCB+VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBiZWdpblVwbG9hZHMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBk
ZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNl
UmVjdCwgZGVzdFJlY3QpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBVbnRocm90dGxlZFRleHR1cmVV
cGxvYWRlcigpIHsgfQorfTsKKwogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIGNsYXNzIExh
eWVyUmVuZGVyZXJTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyIDogcHVibGljIEV4
dGVuc2lvbnMzRENocm9taXVtOjpTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlVTSB7
CkBAIC0xOTQsOSArMjEyLDkgQEAgcHJpdmF0ZToKIH07CiAKIAotUGFzc093blB0cjxMYXllclJl
bmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVuZGVy
ZXJDaHJvbWl1bUNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIpCitQYXNzT3duUHRy
PExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoTGF5
ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQsIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0
aW5nKQogewotICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIo
YWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIHVwbG9h
ZGVyKSkpOworICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIo
YWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIHRleHR1
cmVVcGxvYWRlclNldHRpbmcpKSk7CiAgICAgaWYgKCFsYXllclJlbmRlcmVyLT5pbml0aWFsaXpl
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMDUsMTcgKzIyMywxNyBAQCBQYXNz
T3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVh
dGUoTGF5ZXJSZW5kZXJlckNocgogCiBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVXBsb2FkZXJPcHRpb24g
dGV4dHVyZVVwbG9hZGVyU2V0dGluZykKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1f
Y3VycmVudFJlbmRlclN1cmZhY2UoMCkKICAgICAsIG1fY3VycmVudE1hbmFnZWRUZXh0dXJlKDAp
CiAgICAgLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQoMCkKLSAgICAsIG1fdGV4dHVyZVVwbG9h
ZGVyKHVwbG9hZGVyKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2RlZmF1bHRS
ZW5kZXJTdXJmYWNlKDApCiAgICAgLCBtX3NoYXJlZEdlb21ldHJ5UXVhZChGbG9hdFJlY3QoLTAu
NWYsIC0wLjVmLCAxLjBmLCAxLjBmKSkKICAgICAsIG1faXNWaWV3cG9ydENoYW5nZWQoZmFsc2Up
CiAgICAgLCBtX2lzRnJhbWVidWZmZXJEaXNjYXJkZWQoZmFsc2UpCisgICAgLCBtX3RleHR1cmVV
cGxvYWRlclNldHRpbmcodGV4dHVyZVVwbG9hZGVyU2V0dGluZykKIHsKIH0KIApAQCAtMTM4Miw2
ICsxNDAwLDEwIEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVk
T2JqZWN0cygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNp
emUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKICAgICBtX3RleHR1cmVD
b3BpZXIgPSBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkp
OworICAgIGlmIChtX3RleHR1cmVVcGxvYWRlclNldHRpbmcgPT0gVGhyb3R0bGVkVXBsb2FkZXIp
CisgICAgICAgIG1fdGV4dHVyZVVwbG9hZGVyID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpj
cmVhdGUobV9jb250ZXh0LmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fdGV4dHVyZVVwbG9h
ZGVyID0gVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSgpOwogICAgIG1fY29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9j
b250ZXh0LmdldCgpKTsKICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yID0gVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAo
bV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlVXNhZ2VIaW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uaAppbmRleCBkNzNmNzFhZTdkMDE3MDVmNDkwMDYyNmQ4NjdiMzQ1NzkwNzc1
NTI0Li5hOTJjZjgyYWUwOTIxZWE1MzI1MmM5OTk1NjViMTdjMDA4YWQ1YjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtNzQsMTEgKzc0LDEzIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXpl
X3QpID0gMDsKIH07CiAKK2VudW0gVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHsgVGhyb3R0bGVkVXBs
b2FkZXIsIFVudGhyb3R0bGVkVXBsb2FkZXIgfTsKKwogLy8gQ2xhc3MgdGhhdCBoYW5kbGVzIGRy
YXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdMLgogY2xhc3MgTGF5ZXJS
ZW5kZXJlckNocm9taXVtIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllclJlbmRlcmVy
Q2hyb21pdW0pOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJD
aHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4pOworICAgIHN0
YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVy
ZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBUZXh0dXJl
VXBsb2FkZXJPcHRpb24pOwogCiAgICAgfkxheWVyUmVuZGVyZXJDaHJvbWl1bSgpOwogCkBAIC0x
NDQsNyArMTQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW5zdXJlRnJhbWVidWZmZXIoKTsK
ICAgICBib29sIGlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnJh
bWVidWZmZXJEaXNjYXJkZWQ7IH0KIAotICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShMYXllclJl
bmRlcmVyQ2hyb21pdW1DbGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgUGFz
c093blB0cjxUZXh0dXJlVXBsb2FkZXI+KTsKKyAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5
ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4s
IFRleHR1cmVVcGxvYWRlck9wdGlvbik7CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZh
dGU6CkBAIC0yOTgsNiArMzAwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc1ZpZXdwb3J0
Q2hhbmdlZDsKICAgICBib29sIG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZDsKKyAgICBUZXh0dXJl
VXBsb2FkZXJPcHRpb24gbV90ZXh0dXJlVXBsb2FkZXJTZXR0aW5nOwogfTsKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGVjNTY0ZjVmNmY2ZGI3NWNkZWE3
MWRlNTdhZTg1NTU2YjE1YjE1YzMuLjRhYzg1MzQ1NDFiYTNjZGJjZDkwNWMwYTE5YWVjZTUzYjU3
ZGQ5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC01MjYs
MTAgKzUyNiwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpc2libGUoYm9vbCB2
aXNpYmxlKQogICAgIG1fdGltZVNvdXJjZUNsaWVudEFkYXB0ZXItPnNldEFjdGl2ZShzaG91bGRU
aWNrSW5CYWNrZ3JvdW5kKTsKIH0KIAotYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFs
aXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBQ
YXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIpCitib29sIENDTGF5ZXJUcmVlSG9z
dEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQsIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXIpCiB7CiAg
ICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcjsKLSAgICBsYXll
clJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgY29udGV4dCwg
dXBsb2FkZXIpOworICAgIGxheWVyUmVuZGVyZXIgPSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNy
ZWF0ZSh0aGlzLCBjb250ZXh0LCB0ZXh0dXJlVXBsb2FkZXIpOwogCiAgICAgLy8gU2luY2Ugd2Ug
bm93IGhhdmUgYSBuZXcgY29udGV4dC9sYXllclJlbmRlcmVyLCB3ZSBjYW5ub3QgY29udGludWUg
dG8gdXNlIHRoZSBvbGQKICAgICAvLyByZXNvdXJjZXMgKGkuZS4gcmVuZGVyU3VyZmFjZXMgYW5k
IHRleHR1cmUgSURzKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCA4
ZjE2ZjlmZDQwNjQ3ZTlhNTNjYTgxZWY2YmFhZTY3OTcyY2M0MjlkLi4xM2E4Y2Q2NGNlMmI0OTNl
NDVkYjMyMzAzYjNhMjJmNWMxM2Q5NDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oCkBAIC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZmluaXNoQWxsUmVu
ZGVyaW5nKCk7CiAgICAgaW50IGZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51
bWJlcjsgfQogCi0gICAgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiwgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+KTsKKyAgICBib29s
IGluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBU
ZXh0dXJlVXBsb2FkZXJPcHRpb24pOwogICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpOwogICAgIExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcigpIHsgcmV0dXJuIG1fbGF5ZXJSZW5k
ZXJlci5nZXQoKTsgfQogICAgIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKaW5kZXggZDUzMThhZTM2YmU2MjQ5OGQ4N2M2NDQ4ZmM5ZDE0MDA1ZThkOTUz
Zi4uNDE4Y2FjZjMzOTVhNmYwNWRmOGU5MGQ3Y2NhMmY1ODQwOTk1NzA4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTM4LDI0ICszOCw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVW50aHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXIgOiBwdWJsaWMgVGV4dHVyZVVwbG9hZGVyIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcik7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
KCkpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5VbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigpIHsg
fQotCi0gICAgdmlydHVhbCBib29sIGlzQnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRz
KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0IGRlc3RSZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBz
b3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0KLQotcHJvdGVjdGVkOgotICAgIFVudGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyKCkgeyB9Ci19OwotCiBQYXNzT3duUHRyPENDUHJveHk+IENDU2luZ2xlVGhy
ZWFkUHJveHk6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NpbmdsZVRocmVhZFByb3h5KGxheWVyVHJlZUhvc3QpKTsK
QEAgLTE1NSw3ICsxMzcsNyBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmluaXRpYWxpemVM
YXllclJlbmRlcmVyKCkKICAgICBBU1NFUlQobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb24p
OwogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7Ci0gICAgICAg
IGJvb2wgb2sgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlciht
X2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbi5yZWxlYXNlKCksIFVudGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyOjpjcmVhdGUoKSk7CisgICAgICAgIGJvb2wgb2sgPSBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlv
bi5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwogICAgICAgICBpZiAob2spIHsKICAg
ICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkID0gdHJ1ZTsKICAgICAgICAgICAg
IG1fbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllc0Zvck1haW5UaHJlYWQgPSBtX2xheWVyVHJlZUhv
c3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CkBAIC0xNzksNyArMTYxLDcgQEAg
Ym9vbCBDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQoKQogICAgIHsKICAgICAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0gICAgICAgIGluaXRpYWxpemVkID0gbV9s
YXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwgVW50aHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSBt
X2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBVbnRo
cm90dGxlZFVwbG9hZGVyKTsKICAgICAgICAgaWYgKGluaXRpYWxpemVkKSB7CiAgICAgICAgICAg
ICBtX2xheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXNGb3JNYWluVGhyZWFkID0gbV9sYXllclRyZWVI
b3N0SW1wbC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDA3ODQ5MDU4MTYyOTFkM2UxMzIwYWY3Y2E1NDY5ZTk2
YzcxNzE2YTIuLjYzNzVkN2Y5YzNlMmM5NTliOGEyZWJlZDFmYzFkOTM2Y2ZjOTcwMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC01NywyNCArNTcsMTIgQEAgc3RhdGljIGNvbnN0
IGRvdWJsZSBjb250ZXh0UmVjcmVhdGlvblRpY2tSYXRlID0gMC4wMzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBGSVhNRTogcmVtb3ZlIHdoZW4gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
IGlzIHJlYWR5IHRvIGJlIHVzZWQuCi1jbGFzcyBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlciA6
IHB1YmxpYyBUZXh0dXJlVXBsb2FkZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVudGhy
b3R0bGVkVGV4dHVyZVVwbG9hZGVyKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxV
bnRocm90dGxlZFRleHR1cmVVcGxvYWRlcj4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVudGhy
b3R0bGVkVGV4dHVyZVVwbG9hZGVyKGNvbnRleHQpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+VW50
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KK25hbWVzcGFjZSB7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaXNCdXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5V
cGxvYWRzKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIHsg
dGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RS
ZWN0KTsgfQorLy8gRklYTUU6IFVzZSBUaHJvdHRsZWRVcGxvYWRlciBieSBkZWZhdWx0Lgorc3Rh
dGljIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXIgPSBVbnRocm90dGxlZFVw
bG9hZGVyOwogCi1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgVW50aHJvdHRsZWRUZXh0dXJlVXBs
b2FkZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pIHsgfQotfTsKK30gLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQogCiBQYXNzT3duUHRyPENDUHJveHk+IENDVGhyZWFkUHJveHk6OmNyZWF0
ZShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiB7CkBAIC04MzQsOCArODIyLDcgQEAg
dm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCogY29tcGwKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NF
UlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2NvbnRleHRCZWZvcmVJbml0aWFsaXph
dGlvbk9uSW1wbFRocmVhZCk7Ci0gICAgT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIg
PSBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKG1fY29udGV4dEJlZm9yZUluaXRp
YWxpemF0aW9uT25JbXBsVGhyZWFkLmdldCgpKTsKLSAgICAqaW5pdGlhbGl6ZVN1Y2NlZWRlZCA9
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29udGV4dEJl
Zm9yZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFkLnJlbGVhc2UoKSwgdXBsb2FkZXIucmVsZWFz
ZSgpKTsKKyAgICAqaW5pdGlhbGl6ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uT25JbXBs
VGhyZWFkLnJlbGVhc2UoKSwgdGV4dHVyZVVwbG9hZGVyKTsKICAgICBpZiAoKmluaXRpYWxpemVT
dWNjZWVkZWQpIHsKICAgICAgICAgKmNhcGFiaWxpdGllcyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKICAgICAgICAgaWYgKGNhcGFiaWxpdGllcy0+
dXNpbmdTd2FwQ29tcGxldGVDYWxsYmFjaykKQEAgLTg4NSw4ICs4NzIsNyBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCog
Y29tcGxldGlvbiwgRwogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6cmVj
cmVhdGVDb250ZXh0T25JbXBsVGhyZWFkIik7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsK
ICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwotICAgIE93
blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyID0gVW50aHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXI6OmNyZWF0ZShjb250ZXh0UHRyKTsKLSAgICAqcmVjcmVhdGVTdWNjZWVkZWQgPSBtX2xheWVy
VHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihhZG9wdFJlZihjb250ZXh0UHRy
KSwgdXBsb2FkZXIucmVsZWFzZSgpKTsKKyAgICAqcmVjcmVhdGVTdWNjZWVkZWQgPSBtX2xheWVy
VHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihhZG9wdFJlZihjb250ZXh0UHRy
KSwgdGV4dHVyZVVwbG9hZGVyKTsKICAgICBpZiAoKnJlY3JlYXRlU3VjY2VlZGVkKSB7CiAgICAg
ICAgICpjYXBhYmlsaXRpZXMgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCk7CiAgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5kaWRSZWNyZWF0
ZUNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNTg2NjhkMGVmYTIzNzgxOGFkZGVhOTQz
ODRhZmUwYTBiZjA5ZDI5Yi4uOWYyNjczNDE4MTJlNDc2ZWUxZGVkY2IyM2I2NGYwN2IzN2E2YzNm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkNDQW5p
bWF0aW9uVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUZXN0Q29tbW9uLmgiCi0jaW5j
bHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkZha2VXZWJHcmFwaGlj
c0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgpAQCAtNjAsNyArNTksNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwogICAgICAgICBtX2hvc3RJbXBs
ID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKLSAgICAgICAg
bV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9w
dFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgICAgICBtX2hvc3RJbXBsLT5pbml0
aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIFVudGhyb3R0bGVkVXBsb2FkZXIp
OwogICAgICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsK
ICAgICB9CiAKQEAgLTg3Niw3ICs4NzUsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAKIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgdmlld3BvcnRDb3ZlcmVkKQogewotICAgIG1faG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VU
ZXh0dXJlVXBsb2FkZXIpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJl
cihjcmVhdGVDb250ZXh0KCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwogICAgIG1faG9zdEltcGwt
PnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSk7CiAKICAgICBJbnRTaXplIHZpZXdwb3J0
U2l6ZSgxMDAwLCAxMDAwKTsKQEAgLTk4Nyw3ICs5ODYsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIHJlc2hhcGVOb3RDYWxsZWRVbnRpbERyYXcpCiB7CiAgICAgUmVzaGFwZVRy
YWNrZXJDb250ZXh0KiByZXNoYXBlVHJhY2tlciA9IG5ldyBSZXNoYXBlVHJhY2tlckNvbnRleHQo
KTsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRy
KHJlc2hhcGVUcmFja2VyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0
V2luZG93KTsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0
LCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpOwogCiAg
ICAgQ0NMYXllckltcGwqIHJvb3QgPSBuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMSk7CiAg
ICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CkBAIC0xMDM2LDcgKzEw
MzUsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBhcnRpYWxTd2FwUmVjZWl2
ZXNEYW1hZ2VSZWN0KQogICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgc2V0dGluZ3MucGFy
dGlhbFN3YXBFbmFibGVkID0gdHJ1ZTsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4g
bGF5ZXJUcmVlSG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3Ms
IHRoaXMpOwotICAgIGxheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihj
b250ZXh0LCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcigpKSk7CisgICAgbGF5ZXJU
cmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIFVudGhyb3R0bGVk
VXBsb2FkZXIpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6
ZSg1MDAsIDUwMCkpOwogCiAgICAgQ0NMYXllckltcGwqIHJvb3QgPSBuZXcgRmFrZURyYXdhYmxl
Q0NMYXllckltcGwoMSk7CkBAIC0xMTM1LDcgKzExMzQsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIGNvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25TZW50VG9BbGxM
YXllcgogICAgIEVYUEVDVF9GQUxTRShsYXllcjEtPmRpZExvc2VDb250ZXh0Q2FsbGVkKCkpOwog
ICAgIEVYUEVDVF9GQUxTRShsYXllcjItPmRpZExvc2VDb250ZXh0Q2FsbGVkKCkpOwogCi0gICAg
bV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9w
dFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxp
emVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAK
ICAgICBFWFBFQ1RfVFJVRShyb290LT5kaWRMb3NlQ29udGV4dENhbGxlZCgpKTsKICAgICBFWFBF
Q1RfVFJVRShsYXllcjEtPmRpZExvc2VDb250ZXh0Q2FsbGVkKCkpOwpAQCAtMTE1MCw3ICsxMTQ5
LDcgQEAgcHVibGljOgogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBmaW5pc2hBbGxS
ZW5kZXJpbmdBZnRlckNvbnRleHRMb3N0KQogewogICAgIC8vIFRoZSBjb250ZXh0IGluaXRpYWxp
emF0aW9uIHdpbGwgZmFpbCwgYnV0IHdlIHNob3VsZCBzdGlsbCBiZSBhYmxlIHRvIGNhbGwgZmlu
aXNoQWxsUmVuZGVyaW5nKCkgd2l0aG91dCBhbnkgaWxsIGVmZmVjdHMuCi0gICAgbV9ob3N0SW1w
bC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBo
aWNzQ29udGV4dDNETWFrZUN1cnJlbnRGYWlscyksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJE
aXJlY3RseVRvSG9zdFdpbmRvdyksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7
CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihu
ZXcgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNETWFrZUN1cnJlbnRGYWlscyksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyksIFVudGhyb3R0bGVkVXBsb2FkZXIp
OwogICAgIG1faG9zdEltcGwtPmZpbmlzaEFsbFJlbmRlcmluZygpOwogfQogCkBAIC0xMTgwLDcg
KzExNzksNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbGJhckxheWVy
TG9zdENvbnRleHQpCiAgICAgICAgIC8vIFNjcm9sbGJhciBsYXllciBzaG91bGQgYWx3YXlzIGdl
bmVyYXRlIHF1YWRzLCBldmVuIGFmdGVyIGxvc3QgY29udGV4dAogICAgICAgICBFWFBFQ1RfR1Qo
cmVuZGVyUGFzcy0+cXVhZExpc3QoKS5zaXplKCksIDB1KTsKICAgICAgICAgbV9ob3N0SW1wbC0+
ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7Ci0gICAgICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBs
b2FkZXIpKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3Jl
YXRlQ29udGV4dCgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICB9CiB9CiAKQEAgLTEzNTUs
NyArMTM1NCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZG9udFVzZU9sZFJl
c291cmNlc0FmdGVyTG9zdENvbnRleHQpCiAKICAgICAvLyBMb3NlIHRoZSBjb250ZXh0LCByZXBs
YWNpbmcgaXQgd2l0aCBhIFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNELCB0aGF0CiAgICAgLy8g
d2lsbCB3YXJuIGlmIGFueSByZXNvdXJjZSBmcm9tIHRoZSBwcmV2aW91cyBjb250ZXh0IGdldHMg
dXNlZC4KLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihTdHJpY3RXZWJH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBG
YWtlVGV4dHVyZVVwbG9hZGVyKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVu
ZGVyZXIoU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVw
YXJlVG9EcmF3KGZyYW1lKSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAg
ICAgbV9ob3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNw
cAppbmRleCA2OWQwZmY1ZmY1MDBiMTZmMDJjMTY0Zjk4MDFlM2RmNTMyNzY5NGIwLi4xM2YwNGEy
ZDgzOWU3MWU0MzU3ZjBhNDIyMTJiZThiMjUwYjlhZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAK
QEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMYXllclJl
bmRlcmVyQ2hyb21pdW0uaCIKIAotI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIK
ICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgpAQCAt
MzYsNyArMzUsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CiAKIGNsYXNzIEZyYW1lQ291
bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRleHQgOiBwdWJsaWMgRmFrZVdlYkdyYXBo
aWNzQ29udGV4dDNEIHsKIHB1YmxpYzoKQEAgLTkzLDcgKzkxLDcgQEAgcHJpdmF0ZToKIAogY2xh
c3MgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllclJlbmRlcmVyQ2hyb21p
dW0gewogcHVibGljOgotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJl
ckNocm9taXVtQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNv
bnRleHQsIFBhc3NPd25QdHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxvYWRlcikgOiBMYXllclJlbmRl
cmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0LCB1cGxvYWRlcikgeyB9CisgICAgRmFrZUxheWVy
UmVuZGVyZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwgUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkgOiBMYXllclJlbmRlcmVyQ2hyb21p
dW0oY2xpZW50LCBjb250ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKSB7IH0KIAogICAgIC8vIExh
eWVyUmVuZGVyZXJDaHJvbWl1bSBtZXRob2RzLgogCkBAIC0xMDksNyArMTA3LDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICAsIG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8oMSwgZmFsc2UpCiAgICAg
ICAgICwgbV9jb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZyYW1lQ291bnRpbmdNZW1vcnlBbGxv
Y2F0aW9uU2V0dGluZ0NvbnRleHQoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3Rs
eVRvSG9zdFdpbmRvdykpCiAgICAgICAgICwgbV9tb2NrQ29udGV4dCgqc3RhdGljX2Nhc3Q8RnJh
bWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1fY29udGV4dC5nZXQoKSkp
KQotICAgICAgICAsIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtX21vY2tDbGllbnQsIG1fY29u
dGV4dC5yZWxlYXNlKCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKCkpKQorICAg
ICAgICAsIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtX21vY2tDbGllbnQsIG1fY29udGV4dC5y
ZWxlYXNlKCkpCiAgICAgewogICAgIH0KIApAQCAtMjczLDcgKzI3MSw3IEBAIHB1YmxpYzoKIFRF
U1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIGluaXRpYWxpemF0aW9uRG9lc05vdE1ha2VT
eW5jaHJvbm91c0NhbGxzKQogewogICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQg
bW9ja0NsaWVudDsKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJD
aHJvbWl1bSgmbW9ja0NsaWVudCwgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRm9yYmlkU3luY2hyb25vdXND
YWxsQ29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRv
dyksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKCkpKTsKKyAgICBGYWtlTGF5ZXJS
ZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChh
ZG9wdFB0cihuZXcgRm9yYmlkU3luY2hyb25vdXNDYWxsQ29udGV4dCksIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOwogCiAgICAgRVhQRUNUX1RSVUUobGF5
ZXJSZW5kZXJlckNocm9taXVtLmluaXRpYWxpemUoKSk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>