<?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>67750</bug_id>
          
          <creation_ts>2011-09-07 18:11:48 -0700</creation_ts>
          <short_desc>Create a delegate class to help cleanly isolate the chromium compositor API</short_desc>
          <delta_ts>2011-09-22 19:41:52 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Shawn Singh">shawnsingh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>463797</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-09-07 18:11:48 -0700</bug_when>
    <thetext>First-attempt patch will be uploaded in a moment.

Essentially this delegate hides the layer stuff in WebCore from the chromium compositor.  For now, it only has functions that the compositor was actually using.  (had to rename them to avoid name conflicts between GraphicsLayer and CCLayerDelegate).   Additionally this delegate will make stubbing/mocking easier for unit testing the compositor.

In theory, there are no changes to the actual semantics of the code.  All tests passed on OS X.  Are there other tests we should include?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463799</commentid>
    <comment_count>1</comment_count>
      <attachid>106676</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-09-07 18:14:46 -0700</bug_when>
    <thetext>Created attachment 106676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463848</commentid>
    <comment_count>2</comment_count>
      <attachid>106676</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-09-07 20:05:45 -0700</bug_when>
    <thetext>Comment on attachment 106676
Patch

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

I think there are references to GraphicsLayer on CCLayerTreeHost as well for the root layer.

Did you add CCLayerDelegate.h? I dont see the actual class...

I don think you need to call the virtual methods on those doPaintGraphicsLayerContents... paintContents should work just fine. GraphicsLayer is supposed to go away from the Layer tree completely.

git grep for graphicslayer --- it should be gone from all compositor related files when this patch lands.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Added a pure virtual class CCLayerDelegate which helps to isolate

I think the traditional format of changelog entries is a short sumary, the bug# ,then a detailed summary if need. i might be wrong...

&gt; Source/WebCore/WebCore.gypi:3537
&gt; +            &apos;platform/graphics/chromium/cc/CCLayerDelegate.h&apos;,

My preference would be for this to be in LayerChromium.h file, which is sort of how we&apos;ve doing client classes as well, c.f. CCLayerTreeHost and CCLayerTreeHostClient, which are the same file.

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:704
&gt; +void GraphicsLayerChromium::doPaintGraphicsLayerContents(GraphicsContext&amp; context, const IntRect&amp; clip)

Is there a way to do this without to doPaint?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464127</commentid>
    <comment_count>3</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-09-08 10:18:22 -0700</bug_when>
    <thetext>(In reply to comment #2)

After clarifying with Nat offline, here&apos;s what I understand should be fixed:

- make sure other instances of GraphicsLayer / GraphicsLayerChromium are also replaced

- move the CCLayerDelegate class into the LayerChromium file

- name the functions more simply and without the words &quot;GraphicsLayer&quot;

Will upload a new patch soon.


&gt; 
&gt; I don think you need to call the virtual methods on those doPaintGraphicsLayerContents... paintContents should work just fine. GraphicsLayer is supposed to go away from the Layer tree completely.
&gt; 
&gt; git grep for graphicslayer --- it should be gone from all compositor related files when this patch lands.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Added a pure virtual class CCLayerDelegate which helps to isolate
&gt; 
&gt; I think the traditional format of changelog entries is a short sumary, the bug# ,then a detailed summary if need. i might be wrong...
&gt; 
&gt; &gt; Source/WebCore/WebCore.gypi:3537
&gt; &gt; +            &apos;platform/graphics/chromium/cc/CCLayerDelegate.h&apos;,
&gt; 
&gt; My preference would be for this to be in LayerChromium.h file, which is sort of how we&apos;ve doing client classes as well, c.f. CCLayerTreeHost and CCLayerTreeHostClient, which are the same file.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:704
&gt; &gt; +void GraphicsLayerChromium::doPaintGraphicsLayerContents(GraphicsContext&amp; context, const IntRect&amp; clip)
&gt; 
&gt; Is there a way to do this without to doPaint?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464289</commentid>
    <comment_count>4</comment_count>
      <attachid>106676</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-08 13:25:26 -0700</bug_when>
    <thetext>Comment on attachment 106676
Patch

Attachment 106676 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9623323</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466049</commentid>
    <comment_count>5</comment_count>
      <attachid>107132</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-12 19:46:42 -0700</bug_when>
    <thetext>Created attachment 107132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466050</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-12 19:49:23 -0700</bug_when>
    <thetext>I think this addresses the review comments, and also removes the use of GraphicsLayerClient from the VideoLayerChromium.

Along with a follow up patch to https://bugs.webkit.org/show_bug.cgi?id=67883 the LayerChromium/CCLayer is free of GraphicsLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466096</commentid>
    <comment_count>7</comment_count>
      <attachid>107132</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-12 21:01:32 -0700</bug_when>
    <thetext>Comment on attachment 107132
Patch

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

This change looks really good - R-&apos;ing for some naming nitpicks and because of some unsafe code in GraphicsLayerChromium (the old code was safe for the specific case of video layers, but still skeevy).

I also think that having the LayerChromium back pointer be called &apos;m_owner&apos; doesn&apos;t really make much sense with the new type.  We use m_delegate elsewhere in WebKit.  It might also make sense to call it CCLayerClient and have the pointer be m_client but I leave it to up to you.

&gt; Source/WebCore/ChangeLog:12
&gt; +        No new tests. (OOPS!)

There&apos;s an SVN presubmit hook that rejects checkins with this line.  You should remove this line and instead say that these changes don&apos;t change behavior and the code is covered by tests in compositing/

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:704
&gt; +bool GraphicsLayerChromium::paintingGoesToWindow() const
&gt; +{
&gt; +    RenderLayerBacking* backing = static_cast&lt;RenderLayerBacking*&gt;(client());
&gt; +    return !backing || backing-&gt;paintingGoesToWindow();
&gt; +}

this downcast isn&apos;t actually safe, we do create GraphicsLayerChromium instances with clients that are not RenderLayerBackings - for instance, for overflow controls - and we may do more of this in the future. I&apos;m pretty sure you can kill this completely - see the comments for VideoLayerChromium.

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:62
&gt; +    virtual bool getDrawsContent() const = 0;
&gt; +    virtual bool getPreserves3D() const = 0;

in WebKit style, simple getters do not have the &apos;get&apos; prefix - so these should be drawsContent() and preserves3D()

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:63
&gt; +    virtual bool paintingGoesToWindow() const = 0;

I think you can (and should) remove this

&gt; Source/WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:82
&gt; +    if (!m_contentsDirty || !m_owner || m_owner-&gt;paintingGoesToWindow())

the paintingGoesToWindow() check is old and I&apos;m pretty sure it was never necessary. can you verify our tests pass without this and remove it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466415</commentid>
    <comment_count>8</comment_count>
      <attachid>107198</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-13 11:32:30 -0700</bug_when>
    <thetext>Created attachment 107198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466421</commentid>
    <comment_count>9</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-13 11:35:38 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 107132 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107132&amp;action=review
&gt; 
&gt; This change looks really good - R-&apos;ing for some naming nitpicks and because of some unsafe code in GraphicsLayerChromium (the old code was safe for the specific case of video layers, but still skeevy).
&gt; 
&gt; I also think that having the LayerChromium back pointer be called &apos;m_owner&apos; doesn&apos;t really make much sense with the new type.  We use m_delegate elsewhere in WebKit.  It might also make sense to call it CCLayerClient and have the pointer be m_client but I leave it to up to you.

Done (m_delegate).

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        No new tests. (OOPS!)
&gt; 
&gt; There&apos;s an SVN presubmit hook that rejects checkins with this line.  You should remove this line and instead say that these changes don&apos;t change behavior and the code is covered by tests in compositing/

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:704
&gt; &gt; +bool GraphicsLayerChromium::paintingGoesToWindow() const
&gt; &gt; +{
&gt; &gt; +    RenderLayerBacking* backing = static_cast&lt;RenderLayerBacking*&gt;(client());
&gt; &gt; +    return !backing || backing-&gt;paintingGoesToWindow();
&gt; &gt; +}
&gt; 
&gt; this downcast isn&apos;t actually safe, we do create GraphicsLayerChromium instances with clients that are not RenderLayerBackings - for instance, for overflow controls - and we may do more of this in the future. I&apos;m pretty sure you can kill this completely - see the comments for VideoLayerChromium.

Done. I removed it and the compositing layout tests still pass.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:62
&gt; &gt; +    virtual bool getDrawsContent() const = 0;
&gt; &gt; +    virtual bool getPreserves3D() const = 0;
&gt; 
&gt; in WebKit style, simple getters do not have the &apos;get&apos; prefix - so these should be drawsContent() and preserves3D()

Done. It may get a little confusing because in GraphicsLayerChromium, the CCLayerDelegate overrides hide the GraphicsLayers&apos;s versions, but semantically it&apos;s consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466766</commentid>
    <comment_count>10</comment_count>
      <attachid>107198</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-13 18:24:30 -0700</bug_when>
    <thetext>Comment on attachment 107198
Patch

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

R=me

&gt; Source/WebCore/platform/graphics/chromium/ContentLayerChromium.h:48
&gt; +    static PassRefPtr&lt;ContentLayerChromium&gt; create(CCLayerDelegate* = 0);

nit: we&apos;re inconsistent in the various *LayerChromium::create() calls about whether there&apos;s a default param. I don&apos;t think a null delegate makes sense for this layer type so probably better to remove it.

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:56
&gt; +#include &quot;RenderLayerBacking.h&quot;

i don&apos;t think you need this #include any more, and it&apos;s actually a layering violation (things in WebCore/platform should not depend on anything in WebCore/ outside of WebCore/platform)

&gt; Source/WebCore/platform/graphics/chromium/ImageLayerChromium.h:52
&gt; +    static PassRefPtr&lt;ImageLayerChromium&gt; create(CCLayerDelegate* = 0);

nit: no default 0

&gt; Source/WebCore/platform/graphics/chromium/ImageLayerChromium.h:61
&gt; +    ImageLayerChromium(CCLayerDelegate*);

nit: explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467258</commentid>
    <comment_count>11</comment_count>
      <attachid>107377</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-14 12:42:56 -0700</bug_when>
    <thetext>Created attachment 107377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467272</commentid>
    <comment_count>12</comment_count>
      <attachid>107377</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 13:05:02 -0700</bug_when>
    <thetext>Comment on attachment 107377
Patch

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

Looks good.  Left one comment FYI but this is fine to land as-is

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:60
&gt; +    virtual ~CCLayerDelegate() { }

another thing: we normally put the d&apos;tor in the protected section, since it rarely makes sense to delete a delegate through a CCLayerDelegate*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467273</commentid>
    <comment_count>13</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-14 13:07:14 -0700</bug_when>
    <thetext>I&apos;ll fix in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467522</commentid>
    <comment_count>14</comment_count>
      <attachid>107377</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 18:31:26 -0700</bug_when>
    <thetext>Comment on attachment 107377
Patch

Clearing flags on attachment: 107377

Committed r95148: &lt;http://trac.webkit.org/changeset/95148&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467523</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-14 18:31:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470910</commentid>
    <comment_count>16</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-09-21 10:28:21 -0700</bug_when>
    <thetext>Now that we have this CCLayerDelegate... 

The CCLayerDelegate has a drawsContent() interface which the user should provide.

The base class &quot;LayerChromium&quot; default implementation returns false.

should it return  &quot;(m_delegate) ? m_delegate-&gt;drawsContent() : false&quot;   instead?

I can imagine that users may want to explicitly create a new type of layer, so they use the delegate to implement their own paintContents function... and set drawsContent() to true thinking that it will be called appropriately.   But as the code is now, it wouldn&apos;t be called.

Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471591</commentid>
    <comment_count>17</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-09-22 08:55:10 -0700</bug_when>
    <thetext>Sounds like another bug to me... or a conversation you might have with piman or jamesr in person. It&apos;d be even cooler if we could get rid of this drawscontent crap entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471885</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-22 15:07:22 -0700</bug_when>
    <thetext>We&apos;re definitely doing something wrong here, I&apos;m just not sure yet exactly what it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471948</commentid>
    <comment_count>19</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-22 17:02:09 -0700</bug_when>
    <thetext>Well, today several layers share the same delegate, e.g. the transform layer and the content layer of a given GraphicsLayerChromium. Problem is, you don&apos;t want to assume the transform layer (which is a LayerChromium) draws anything.
I&apos;ve been trying to factor out the delegate from LayerChromium altogether, and move it into a CCContentLayerDelegate, only applicable to ContentLayerChromium, but it&apos;s more complicated than it appears, because GLC doesn&apos;t know anything about the types of layers (hence no safe down casting), yet wants to set itself as the delegate.

But in general, I agree with the premise that drawsContent should have nothing to do with LayerChromium in general.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472022</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-22 19:29:08 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Well, today several layers share the same delegate, e.g. the transform layer and the content layer of a given GraphicsLayerChromium. Problem is, you don&apos;t want to assume the transform layer (which is a LayerChromium) draws anything.
&gt; I&apos;ve been trying to factor out the delegate from LayerChromium altogether, and move it into a CCContentLayerDelegate, only applicable to ContentLayerChromium, but it&apos;s more complicated than it appears, because GLC doesn&apos;t know anything about the types of layers (hence no safe down casting), yet wants to set itself as the delegate.

GraphicsLayerChromium does know about ContentLayerChromium, and provides itself as the delegate here:
http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp#L77

I like the idea of having a separate delegate type for providing content than for general CCLayer delegation.  notifySyncRequired() applies to all layer types, and once we hook up animation stuff we&apos;ll need a set of callbacks on the layer delegate for that, but paintContents() is definitely something that is only relevant for content layers.  This could be a subclass of CCLayerDelegate or an orthogonal type that&apos;s passed in to ContentLayerChromium::create().  Image/Video/WebGL/etc layers wouldn&apos;t need this.



&gt; 
&gt; But in general, I agree with the premise that drawsContent should have nothing to do with LayerChromium in general.

At the GraphicsLayer interface drawsContent only applies to content layers.  In our implementation we use it in a bunch of other cases, though, that are internal to the compositor implementation - for example if you try to make an mask layer that&apos;s crazy sized, when we internally decide that drawsContent() is false for that layer.  That shouldn&apos;t be part of the external interface but it is something that it handy for our internals.

Maybe it&apos;s time to formalize the split between stuff that is on LayerChromium that is public interface and the stuff that is implementation detail we&apos;re using in the compositor.  We use friend declarations / protected for some things, like createCCLayerImpl(), but we aren&apos;t nearly as careful as we should be.  LayerChromium::pushPropertiesTo() and LayerChromium::id() for instance are 100% internal and shouldn&apos;t be in the public header at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472028</commentid>
    <comment_count>21</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-22 19:41:52 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; Well, today several layers share the same delegate, e.g. the transform layer and the content layer of a given GraphicsLayerChromium. Problem is, you don&apos;t want to assume the transform layer (which is a LayerChromium) draws anything.
&gt; &gt; I&apos;ve been trying to factor out the delegate from LayerChromium altogether, and move it into a CCContentLayerDelegate, only applicable to ContentLayerChromium, but it&apos;s more complicated than it appears, because GLC doesn&apos;t know anything about the types of layers (hence no safe down casting), yet wants to set itself as the delegate.
&gt; 
&gt; GraphicsLayerChromium does know about ContentLayerChromium, and provides itself as the delegate here:
&gt; http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp#L77

The problem is the other cases like seContentsToCanvas or setContentsToMedia, where the GLC sets itself as the delegate of a possibly non-CLC layer.

&gt; 
&gt; I like the idea of having a separate delegate type for providing content than for general CCLayer delegation.  notifySyncRequired() applies to all layer types, and once we hook up animation stuff we&apos;ll need a set of callbacks on the layer delegate for that, but paintContents() is definitely something that is only relevant for content layers.  This could be a subclass of CCLayerDelegate or an orthogonal type that&apos;s passed in to ContentLayerChromium::create().  Image/Video/WebGL/etc layers wouldn&apos;t need this.
&gt; 
&gt; 
&gt; 
&gt; &gt; 
&gt; &gt; But in general, I agree with the premise that drawsContent should have nothing to do with LayerChromium in general.
&gt; 
&gt; At the GraphicsLayer interface drawsContent only applies to content layers.  In our implementation we use it in a bunch of other cases, though, that are internal to the compositor implementation - for example if you try to make an mask layer that&apos;s crazy sized, when we internally decide that drawsContent() is false for that layer.  That shouldn&apos;t be part of the external interface but it is something that it handy for our internals.

I think in general drawsContent is overloaded for various uses, both internal and external, which is what is causing the complexity to get it out...

&gt; 
&gt; Maybe it&apos;s time to formalize the split between stuff that is on LayerChromium that is public interface and the stuff that is implementation detail we&apos;re using in the compositor.  We use friend declarations / protected for some things, like createCCLayerImpl(), but we aren&apos;t nearly as careful as we should be.  LayerChromium::pushPropertiesTo() and LayerChromium::id() for instance are 100% internal and shouldn&apos;t be in the public header at all.

We could add a pure-virtual base class that would define the public API, and only have that visible from GLC. That&apos;d keep us honest.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106676</attachid>
            <date>2011-09-07 18:14:46 -0700</date>
            <delta_ts>2011-09-12 20:54:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67750-20110907181445.patch</filename>
            <type>text/plain</type>
            <size>24636</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ1NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxYzkxMWNiNWFiMTMwOTA3
YTJjMmVhM2U2OWE0ODhiYzA1N2Q4NmIzLi5mOTQ3NTdiOGNlZDY5OTBiZTlkYzBjMjkyNjJkNmY5
YmExNjFlMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEtMDktMDcgIFNoYXdu
IFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkZWQgYSBwdXJl
IHZpcnR1YWwgY2xhc3MgQ0NMYXllckRlbGVnYXRlIHdoaWNoIGhlbHBzIHRvIGlzb2xhdGUKKyAg
ICAgICAgdGhlIGNocm9taXVtIGNvbXBvc2l0b3IgZnJvbSB0aGUgcmVzdCBvZiBXZWJDb3JlLCBh
bmQgYWlkcyB1bml0CisgICAgICAgIHRlc3RpbmcgYnkgYmVpbmcgZWFzaWx5IG1vY2thYmxlLiAg
VGhlIGNvbXBvc2l0b3IgbGF5ZXJzIG5vIGxvbmdlcgorICAgICAgICBkaXJlY3RseSBzZWUgaW5z
dGFuY2VzIG9mIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSwgaW5zdGVhZCB0aGV5IHVzZQorICAgICAg
ICB0aGlzIGludGVyZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY3NzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGFwcGxpY2FibGU7IG5vIHNlbWFudGljIGNoYW5nZXMgdG8g
Y29kZS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc0xheWVyQ2hyb21pdW06OkNhbnZhc0xheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyUGFpbnRlcjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudExheWVyUGFpbnRlcjo6Q29udGVudExheWVyUGFpbnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRMYXllckNocm9taXVtOjpDb250ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmdldERyYXdzQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmdldFByZXNlcnZlczNE
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6Z2V0Q2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6ZG9QYWludEdyYXBoaWNz
TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06
Om5vdGlmeVN5bmNSZXF1aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR3JhcGhpY3NMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJv
bWl1bTo6SW1hZ2VMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hy
b21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpMYXllckNo
cm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwcmVzZXJ2ZXMzRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRPd25lcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luTGF5ZXJDaHJvbWl1bTo6UGx1Z2luTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OlRpbGVkTGF5ZXJDaHJvbWl1bSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVt
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9M
YXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6V2ViR0xM
YXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uaDoKKwogMjAxMS0wOS0wNSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZp
bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiByZS1pbXBsZW1lbnQg
UmF3U291cmNlQ29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxZDIyYmZhNTUyMDMwYjFhOTRhYjg4
YzBhZGRiM2I5ZmI3ZjQyNzdjLi42MjU1YmNlOWExZmYyZjhjNmZiZWE5MTExZGMxMDk4YWNkZDBi
NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTM0LDYgKzM1MzQsNyBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXku
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRz
VXBEaXNwbGF5LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJEZWxlZ2F0ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJD
aHJvbWl1bS5jcHAKaW5kZXggYTNlMjE3MmFmMDcwYjhjNzhjN2Q3ODRiY2JkZWViODZiMWE5OTc5
OC4uNzM2YmNiZGNkOTQyNmUxMDcyYzAzM2EyMGI2OTQ4MjA5ZjMzMGE5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1DYW52YXNMYXllckNocm9taXVtOjpDYW52YXNMYXllckNocm9taXVtKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCitDYW52YXNMYXllckNocm9taXVtOjpDYW52YXNMYXll
ckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogb3duZXIpCiAgICAgOiBMYXllckNocm9taXVtKG93
bmVyKQogICAgICwgbV9oYXNBbHBoYSh0cnVlKQogICAgICwgbV9wcmVtdWx0aXBsaWVkQWxwaGEo
dHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaAppbmRleCBlYTI2ZGZlMTg3ZTYyYzU3
NTU4NTdhZjExN2FjMzU3NDNlNWNiZDVkLi43MDhhZjU1NjRjNzE0YmZlZTY0N2M0ZTE1OWQzMjYy
YzY1YzQ2N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCkBAIC01MCw3ICs1MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQpIHsg
bV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7IH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IENh
bnZhc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7CisgICAgZXhw
bGljaXQgQ2FudmFzTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIG93bmVyKTsKIAogICAg
IHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiAi
Q2FudmFzTGF5ZXIiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRl
eCBmYTdkM2ZlOWE5NmRmNzZhMTc0MTllMjM4MWI1MTIzNzA4ZTFiNjZjLi5jZmI5OTY1MTExMDUx
ZTRiODhlNWQ2ZTQxMDM4YWZhNzZlYjQ4ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENv
bnRlbnRMYXllclBhaW50ZXIgOiBwdWJsaWMgTGF5ZXJQYWludGVyQ2hyb21pdW0gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKENvbnRlbnRMYXllclBhaW50ZXIpOwogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPENvbnRlbnRMYXllclBhaW50ZXI+IGNyZWF0ZShHcmFwaGljc0xheWVy
Q2hyb21pdW0qIG93bmVyKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENvbnRlbnRMYXllclBhaW50
ZXI+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIG93bmVyKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDb250ZW50TGF5ZXJQYWludGVyKG93bmVyKSk7CiAgICAgfQpAQCAtNTYs
MjcgKzU2LDI3IEBAIHB1YmxpYzoKICAgICAgICAgZG91YmxlIHBhaW50U3RhcnQgPSBjdXJyZW50
VGltZSgpOwogICAgICAgICBjb250ZXh0LmNsZWFyUmVjdChjb250ZW50UmVjdCk7CiAgICAgICAg
IGNvbnRleHQuY2xpcChjb250ZW50UmVjdCk7Ci0gICAgICAgIG1fb3duZXItPnBhaW50R3JhcGhp
Y3NMYXllckNvbnRlbnRzKGNvbnRleHQsIGNvbnRlbnRSZWN0KTsKKyAgICAgICAgbV9vd25lci0+
ZG9QYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBjb250ZW50UmVjdCk7CiAgICAg
ICAgIGRvdWJsZSBwYWludEVuZCA9IGN1cnJlbnRUaW1lKCk7CiAgICAgICAgIGRvdWJsZSBwaXhl
bHNQZXJTZWMgPSAoY29udGVudFJlY3Qud2lkdGgoKSAqIGNvbnRlbnRSZWN0LmhlaWdodCgpKSAv
IChwYWludEVuZCAtIHBhaW50U3RhcnQpOwogICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6Omhpc3Rv
Z3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0LkFjY2VsQ29udGVudFBhaW50RHVyYXRpb25NUyIs
IChwYWludEVuZCAtIHBhaW50U3RhcnQpICogMTAwMCwgMCwgMTIwLCAzMCk7CiAgICAgICAgIFBs
YXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQuQWNjZWxDb250
ZW50UGFpbnRNZWdhcGl4UGVyU2Vjb25kIiwgcGl4ZWxzUGVyU2VjIC8gMTAwMDAwMCwgMTAsIDIx
MCwgMzApOwogICAgIH0KIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ29udGVudExheWVyUGFpbnRl
cihHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQorICAgIGV4cGxpY2l0IENvbnRlbnRMYXll
clBhaW50ZXIoQ0NMYXllckRlbGVnYXRlKiBvd25lcikKICAgICAgICAgOiBtX293bmVyKG93bmVy
KQogICAgIHsKICAgICB9CiAKLSAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0qIG1fb3duZXI7Cisg
ICAgQ0NMYXllckRlbGVnYXRlKiBtX293bmVyOwogfTsKIAotUGFzc1JlZlB0cjxDb250ZW50TGF5
ZXJDaHJvbWl1bT4gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0xheWVyQ2hy
b21pdW0qIG93bmVyKQorUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bT4gQ29udGVudExh
eWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIG93bmVyKQogewogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ29udGVudExheWVyQ2hyb21pdW0ob3duZXIpKTsKIH0KIAotQ29udGVu
dExheWVyQ2hyb21pdW06OkNvbnRlbnRMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bSogb3duZXIpCitDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVyQ2hyb21pdW0oQ0NM
YXllckRlbGVnYXRlKiBvd25lcikKICAgICA6IFRpbGVkTGF5ZXJDaHJvbWl1bShvd25lcikKIHsK
IH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eSgpCiAKIGJvb2wgQ29udGVudExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVu
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fb3duZXIgJiYgbV9vd25lci0+ZHJhd3NDb250ZW50
KCkgJiYgVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKKyAgICByZXR1cm4gbV9v
d25lciAmJiBtX293bmVyLT5nZXREcmF3c0NvbnRlbnQoKSAmJiBUaWxlZExheWVyQ2hyb21pdW06
OmRyYXdzQ29udGVudCgpOwogfQogCiB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVU
ZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uaAppbmRleCBiYWM0MWY5Yzg4YTRmMDkxMzFhMTRiNjk0YTRmYWIwNDky
ZDlmNTRlLi43NWMwMzBkMzJkZWEyZTc2M2YyMGExODI2ZWIyNTg5YzQ1YjIzNmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTQ1LDE0ICs0NSwxNCBAQCBjbGFzcyBMYXll
clRleHR1cmVVcGRhdGVyOwogLy8gQSBMYXllciB0aGF0IHJlcXVpcmVzIGEgR3JhcGhpY3NDb250
ZXh0IHRvIHJlbmRlciBpdHMgY29udGVudHMuCiBjbGFzcyBDb250ZW50TGF5ZXJDaHJvbWl1bSA6
IHB1YmxpYyBUaWxlZExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENvbnRlbnRMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBv
d25lciA9IDApOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiBj
cmVhdGUoQ0NMYXllckRlbGVnYXRlKiBvd25lciA9IDApOwogCiAgICAgdmlydHVhbCB+Q29udGVu
dExheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0
eSgpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9taXVtKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOworICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9t
aXVtKENDTGF5ZXJEZWxlZ2F0ZSogb3duZXIpOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBs
YXllclR5cGVBc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuICJDb250ZW50TGF5ZXIiOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGQzNjcwM2Y0MTk2MDAyMzY5
Y2JiZDQ3MTUwOTFhNGI3ODVlMWIwY2EuLmVmZDIzNjY0MWY2MmE1NmIwYmRlMjU4YmUwMmRjNWVm
Y2M5M2Y3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNjg2
LDYgKzY4NiwzMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlT3BhY2l0eU9u
TGF5ZXIoKQogICAgIHByaW1hcnlMYXllcigpLT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7CiB9CiAK
K2Jvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjpnZXREcmF3c0NvbnRlbnQoKSBjb25zdAorewor
ICAgIHJldHVybiBkcmF3c0NvbnRlbnQoKTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OmdldFByZXNlcnZlczNEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcHJlc2VydmVzM0QoKTsK
K30KKworR3JhcGhpY3NMYXllckNsaWVudCogR3JhcGhpY3NMYXllckNocm9taXVtOjpnZXRDbGll
bnQoKSBjb25zdAoreworICAgIHJldHVybiBjbGllbnQoKTsKK30KKwordm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OmRvUGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjbGlwKQoreworICAgIHBhaW50R3JhcGhpY3NMYXll
ckNvbnRlbnRzKGNvbnRleHQsIGNsaXApOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6bm90aWZ5U3luY1JlcXVpcmVkKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1f
Y2xpZW50LT5ub3RpZnlTeW5jUmVxdWlyZWQodGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R3JhcGhpY3NMYXllckNocm9taXVtLmgKaW5kZXggNWE4MjRjZTFlZGMxNWM0ZDcxZTAxZTFlZWZl
ZDYyNThlNjhmMzZhOS4uOTRmNjE2OGExOTVhOTE5NThhMTEyZGM4YzMxNzUzYmYwMGNhZjJhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAorI2luY2x1ZGUgImNjL0NDTGF5ZXJE
ZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXIuaCIKIApAQCAtNDAsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIExheWVyQ2hyb21pdW07CiAKLWNsYXNzIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSA6IHB1Ymxp
YyBHcmFwaGljc0xheWVyIHsKK2NsYXNzIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBH
cmFwaGljc0xheWVyLCBwdWJsaWMgQ0NMYXllckRlbGVnYXRlIHsKIHB1YmxpYzoKICAgICBHcmFw
aGljc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNsaWVudCopOwogICAgIHZpcnR1YWwgfkdy
YXBoaWNzTGF5ZXJDaHJvbWl1bSgpOwpAQCAtOTQsMTEgKzk1LDEyIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0
aCk7CiAKLSAgICB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgpCi0gICAgewotICAgICAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+bm90aWZ5U3luY1JlcXVpcmVkKHRoaXMp
OwotICAgIH0KKyAgICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBpbXBsZW1lbnQgdGhlIEND
TGF5ZXJEZWxlZ2F0ZSBpbnRlcmZhY2UuCisgICAgdmlydHVhbCBib29sIGdldERyYXdzQ29udGVu
dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRQcmVzZXJ2ZXMzRCgpIGNvbnN0OworICAg
IHZpcnR1YWwgR3JhcGhpY3NMYXllckNsaWVudCogZ2V0Q2xpZW50KCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIGRvUGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgSW50UmVjdCYgY2xpcCk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJl
ZCgpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDcxYmMwYjZiOWRiNjU2YmM0NjBmNGY4NTY1
NDk0ZmE1N2FiNTBiOGQuLmIxYWZmMjUwNjdlOWJhMmVjMjU0NzI1N2VlMzc1OGFkZjZiMzExYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMTA4LDEyICsxMDgsMTIgQEAg
cHJpdmF0ZToKICAgICBMYXllclRleHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOwogfTsKIAot
UGFzc1JlZlB0cjxJbWFnZUxheWVyQ2hyb21pdW0+IEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCitQYXNzUmVmUHRyPEltYWdlTGF5ZXJDaHJv
bWl1bT4gSW1hZ2VMYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBvd25lcikK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlTGF5ZXJDaHJvbWl1bShvd25lcikpOwog
fQogCi1JbWFnZUxheWVyQ2hyb21pdW06OkltYWdlTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVy
Q2hyb21pdW0qIG93bmVyKQorSW1hZ2VMYXllckNocm9taXVtOjpJbWFnZUxheWVyQ2hyb21pdW0o
Q0NMYXllckRlbGVnYXRlKiBvd25lcikKICAgICA6IFRpbGVkTGF5ZXJDaHJvbWl1bShvd25lcikK
ICAgICAsIG1faW1hZ2VGb3JDdXJyZW50RnJhbWUoMCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9t
aXVtLmgKaW5kZXggZDY5NzkxMzFiNTg4ZDUyMjgzMzlhYjUzZWFmMGIwM2I5ODEzN2ZkZS4uNzI0
YzRiYzEzMGQ1ZGM3MDcxY2NjNWFiMTc1NTdhNGEzNzAxMThjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXll
ckNocm9taXVtLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW1hZ2VMYXllclRleHR1cmVVcGRh
dGVyOwogLy8gQSBMYXllciB0aGF0IGNvbnRhaW5zIG9ubHkgYW4gSW1hZ2UgZWxlbWVudC4KIGNs
YXNzIEltYWdlTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBUaWxlZExheWVyQ2hyb21pdW0gewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIgPSAwKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bWFnZUxheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIG93bmVyID0gMCk7CiAg
ICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJh
d3NDb250ZW50KCkgY29uc3Q7CkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIGxheWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gIkltYWdl
TGF5ZXIiOyB9CiAKIHByaXZhdGU6Ci0gICAgSW1hZ2VMYXllckNocm9taXVtKEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bSogb3duZXIpOworICAgIEltYWdlTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdh
dGUqIG93bmVyKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwUmVzb3VyY2VzKCk7CiAgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCAyNThlZGJlOTUwODA4OWMwYWRkNWU0ZDVkMGM3
Njk3YWMxODk0OTQ3Li43OTViYTQ2NTY3MmQ4OWIxOWRjY2U4MDY0NjQ3NWM4NTE1M2FlYTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtNTEsMTIgKzUxLDEyIEBAIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKIHN0YXRpYyBpbnQgc19uZXh0TGF5ZXJJZCA9IDE7CiAKLVBhc3NSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSog
b3duZXIpCitQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IExheWVyQ2hyb21pdW06OmNyZWF0ZShD
Q0xheWVyRGVsZWdhdGUqIG93bmVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGF5ZXJD
aHJvbWl1bShvd25lcikpOwogfQogCi1MYXllckNocm9taXVtOjpMYXllckNocm9taXVtKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCitMYXllckNocm9taXVtOjpMYXllckNocm9taXVtKEND
TGF5ZXJEZWxlZ2F0ZSogb3duZXIpCiAgICAgOiBtX293bmVyKG93bmVyKQogICAgICwgbV9jb250
ZW50c0RpcnR5KGZhbHNlKQogICAgICwgbV9sYXllcklkKHNfbmV4dExheWVySWQrKykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaAppbmRleCBiN2Q0YTJjNDg5ZTRkODExYTM2ODY3NjdlYzhjYTc1ZjNkYWUxYTNm
Li41M2VlNzhmNzk0YzhiMmY3NzA4YzgwNzRkMmVlNWVkY2MwNWEyY2RmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCkBAIC0zNCw2ICszNCw3IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAKKyNpbmNsdWRlICJjYy9DQ0xheWVyRGVsZWdhdGUuaCIKICNpbmNsdWRlICJGbG9hdFBv
aW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckNocm9taXVtLmgiCkBAIC02MSw3ICs2Miw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNE
OwogY2xhc3MgTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBSZWZDb3VudGVkPExheWVyQ2hyb21pdW0+
IHsKICAgICBmcmllbmQgY2xhc3MgTGF5ZXJUaWxlckNocm9taXVtOwogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21p
dW0qIG93bmVyID0gMCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY3Jl
YXRlKENDTGF5ZXJEZWxlZ2F0ZSogb3duZXIgPSAwKTsKIAogICAgIHZpcnR1YWwgfkxheWVyQ2hy
b21pdW0oKTsKIApAQCAtMTQ0LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdlb21l
dHJ5RmxpcHBlZChib29sIGZsaXBwZWQpIHsgbV9nZW9tZXRyeUZsaXBwZWQgPSBmbGlwcGVkOyBz
ZXROZWVkc0NvbW1pdCgpOyB9CiAgICAgYm9vbCBnZW9tZXRyeUZsaXBwZWQoKSBjb25zdCB7IHJl
dHVybiBtX2dlb21ldHJ5RmxpcHBlZDsgfQogCi0gICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIHsgcmV0
dXJuIG1fb3duZXIgJiYgbV9vd25lci0+cHJlc2VydmVzM0QoKTsgfQorICAgIGJvb2wgcHJlc2Vy
dmVzM0QoKSB7IHJldHVybiBtX293bmVyICYmIG1fb3duZXItPmdldFByZXNlcnZlczNEKCk7IH0K
IAogICAgIHZvaWQgc2V0VXNlc0xheWVyU2Npc3Nvcihib29sIHVzZXNMYXllclNjaXNzb3IpIHsg
bV91c2VzTGF5ZXJTY2lzc29yID0gdXNlc0xheWVyU2Npc3NvcjsgfQogICAgIGJvb2wgdXNlc0xh
eWVyU2Npc3NvcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0xheWVyU2Npc3NvcjsgfQpAQCAtMTU0
LDcgKzE1NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVIb3N0
KENDTGF5ZXJUcmVlSG9zdCopOwogCi0gICAgdm9pZCBzZXRPd25lcihHcmFwaGljc0xheWVyQ2hy
b21pdW0qIG93bmVyKSB7IG1fb3duZXIgPSBvd25lcjsgfQorICAgIHZvaWQgc2V0T3duZXIoQ0NM
YXllckRlbGVnYXRlKiBvd25lcikgeyBtX293bmVyID0gb3duZXI7IH0KIAogICAgIHZvaWQgc2V0
UmVwbGljYUxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyKSB7IG1fcmVwbGljYUxheWVyID0gbGF5
ZXI7IH0KICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIoKSB7IHJldHVybiBtX3JlcGxp
Y2FMYXllci5nZXQoKTsgfQpAQCAtMjEwLDggKzIxMSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY2xlYW51cFJlc291cmNlc1JlY3Vyc2l2ZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgR3Jh
cGhpY3NMYXllckNocm9taXVtKiBtX293bmVyOwotICAgIGV4cGxpY2l0IExheWVyQ2hyb21pdW0o
R3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7CisgICAgQ0NMYXllckRlbGVnYXRlKiBtX293
bmVyOworICAgIGV4cGxpY2l0IExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBvd25lcik7
CiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCB0byBjbGVhbiB1cCByZXNvdXJjZXMgYmVpbmcgaGVs
ZCBpbiB0aGUgc2FtZSBjb250ZXh0IGFzCiAgICAgLy8gbGF5ZXJSZW5kZXJlckNvbnRleHQoKS4g
U3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QgaWYgdGhleQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bHVnaW5MYXllckNocm9taXVtLmNwcAppbmRleCBiNmUzNTA2ZmNmZmYzYTU2ODFhNTUzZjQxYTZm
NWViMjQ4ZTgxZTcwLi5iOGQzNDE0ODBiZTZhNzg2NzU5OTI0NmUxMzAwMjllOGRlMmE2ZmZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVn
aW5MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcApAQCAtMzYsMTIgKzM2LDEyIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBQ
bHVnaW5MYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikK
K1Bhc3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bT4gUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKENDTGF5ZXJEZWxlZ2F0ZSogb3duZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQ
bHVnaW5MYXllckNocm9taXVtKG93bmVyKSk7CiB9CiAKLVBsdWdpbkxheWVyQ2hyb21pdW06OlBs
dWdpbkxheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKK1BsdWdpbkxh
eWVyQ2hyb21pdW06OlBsdWdpbkxheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBvd25lcikK
ICAgICA6IExheWVyQ2hyb21pdW0ob3duZXIpCiAgICAgLCBtX3RleHR1cmVJZCgwKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2lu
TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDg1MmRjMmVhNmZkMGQ3ZDg0MTU0Yjk0OTI0
ODI3NDhiN2FkNmEyOGIuLjQyNTYyNTY1Y2RmYTYzODA0ODkzNWI3NWQwMzZkZDcxMDFiNTk5OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Bs
dWdpbkxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLy8gQSBMYXllciBjb250YWluaW5nIGEgdGhlIHJlbmRlcmVkIG91dHB1
dCBvZiBhIHBsdWdpbiBpbnN0YW5jZS4KIGNsYXNzIFBsdWdpbkxheWVyQ2hyb21pdW0gOiBwdWJs
aWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2lu
TGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIgPSAwKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXll
ckRlbGVnYXRlKiBvd25lciA9IDApOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcklt
cGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CkBAIC01MCw3ICs1MCw3IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
IlBsdWdpbkxheWVyIjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBsdWdpbkxheWVyQ2hy
b21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7CisgICAgZXhwbGljaXQgUGx1Z2lu
TGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIG93bmVyKTsKICAgICB1bnNpZ25lZCBtX3Rl
eHR1cmVJZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGM5MWRi
YTdjNDM5MTJhY2RlM2Y3ZTAwMTVlNWE0YjAwYzlkMzdlOWEuLjA5ZGI2NGQ2NTJlN2VkZDEyZGJl
NzljM2JhYWIwYjIwZGNlYzdlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApA
QCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90
ZXg7CiB9OwogCi1UaWxlZExheWVyQ2hyb21pdW06OlRpbGVkTGF5ZXJDaHJvbWl1bShHcmFwaGlj
c0xheWVyQ2hyb21pdW0qIG93bmVyKQorVGlsZWRMYXllckNocm9taXVtOjpUaWxlZExheWVyQ2hy
b21pdW0oQ0NMYXllckRlbGVnYXRlKiBvd25lcikKICAgICA6IExheWVyQ2hyb21pdW0ob3duZXIp
CiAgICAgLCBtX3RpbGluZ09wdGlvbihBdXRvVGlsZSkKICAgICAsIG1fdGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aAppbmRleCA1ODU2OTE4MTQ0MDY5M2Y2MGY2ZGQ2YjI5OWNiYjlkYzg5ZDFhNDVjLi5kMDA3MTkz
NTA2ZDFlYzIxYzRkM2M0Y2ZmZTc1Y2Y3YzgwNmUwYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm90ZWN0VGlsZVRl
eHR1cmVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKIAogcHJvdGVjdGVkOgotICAgIGV4
cGxpY2l0IFRpbGVkTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qKTsKKyAgICBl
eHBsaWNpdCBUaWxlZExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYW51cFJlc291cmNlcygpOwogICAgIHZvaWQgdXBkYXRlVGlsZVNpemVBbmRU
aWxpbmdPcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDNhYzU3
NDdmOTQ3ZDkyMzdkYjMyODJmNTZhZDg2ZjIwZmJhNWYwYmUuLjI4YmQ2Mjk2MThhNGEyODRkZWY5
MDAzY2E1MTNmNDVlNGRkOTRkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApA
QCAtNDUsMTMgKzQ1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxW
aWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bSogb3duZXIsCitQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9M
YXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBvd25lciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0ZyYW1l
UHJvdmlkZXIqIHByb3ZpZGVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9MYXll
ckNocm9taXVtKG93bmVyLCBwcm92aWRlcikpOwogfQogCi1WaWRlb0xheWVyQ2hyb21pdW06OlZp
ZGVvTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyLCBWaWRlb0ZyYW1l
UHJvdmlkZXIqIHByb3ZpZGVyKQorVmlkZW9MYXllckNocm9taXVtOjpWaWRlb0xheWVyQ2hyb21p
dW0oQ0NMYXllckRlbGVnYXRlKiBvd25lciwgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikK
ICAgICA6IExheWVyQ2hyb21pdW0ob3duZXIpCiAgICAgLCBtX3NraXBzRHJhdyh0cnVlKQogICAg
ICwgbV9mcmFtZUZvcm1hdChWaWRlb0ZyYW1lQ2hyb21pdW06OkludmFsaWQpCkBAIC04Myw3ICs4
Myw3IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIGlmICghbV9jb250ZW50c0RpcnR5IHx8
ICFtX293bmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJh
Y2tpbmcgPSBzdGF0aWNfY2FzdDxSZW5kZXJMYXllckJhY2tpbmcqPihtX293bmVyLT5jbGllbnQo
KSk7CisgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gc3RhdGljX2Nhc3Q8UmVuZGVy
TGF5ZXJCYWNraW5nKj4obV9vd25lci0+Z2V0Q2xpZW50KCkpOwogICAgIGlmICghYmFja2luZyB8
fCBiYWNraW5nLT5wYWludGluZ0dvZXNUb1dpbmRvdygpKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVv
TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVmlkZW9MYXllckNocm9taXVtLmgKaW5kZXggN2IxNTZmYjE0MGFiMDFkM2Q1ZDlmMTdmNGUz
NGJlNzNmMjczYmUyNC4uYzlmNTVjODhjOWI4NzMyNTdiYTg5ZmM4NGFhNzBlYjQ0YzM4Y2I4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgVmlkZW9MYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21p
dW0gewogcHVibGljOgogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVt
PiBjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciA9IDAsCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBvd25l
ciA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOwogICAgIHZpcnR1YWwgflZpZGVvTGF5ZXJDaHJvbWl1
bSgpOwogCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIE93blB0cjxNYW5hZ2Vk
VGV4dHVyZT4gbV90ZXh0dXJlOwogICAgIH07CiAKLSAgICBWaWRlb0xheWVyQ2hyb21pdW0oR3Jh
cGhpY3NMYXllckNocm9taXVtKiBvd25lciwgVmlkZW9GcmFtZVByb3ZpZGVyKik7CisgICAgVmlk
ZW9MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogb3duZXIsIFZpZGVvRnJhbWVQcm92aWRl
ciopOwogCiAgICAgc3RhdGljIEdDM0RlbnVtIGRldGVybWluZVRleHR1cmVGb3JtYXQoY29uc3Qg
VmlkZW9GcmFtZUNocm9taXVtKik7CiAgICAgc3RhdGljIEludFNpemUgY29tcHV0ZVZpc2libGVT
aXplKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSosIHVuc2lnbmVkIHBsYW5lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGQxMGQ0ZjU0YjEyNmZiYzU1MGQ3MWU1NThiNTI1
MzUwNTMxNjNiZDUuLjRhMjVkNjE5ZThiODgzYWRlNmI2N2ViZDQzNTE0NDY3NDdkMmVmYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdM
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtNDEsMTIgKzQxLDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+IFdlYkdM
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCitQYXNz
UmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gV2ViR0xMYXllckNocm9taXVtOjpjcmVhdGUoQ0NM
YXllckRlbGVnYXRlKiBvd25lcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMTGF5
ZXJDaHJvbWl1bShvd25lcikpOwogfQogCi1XZWJHTExheWVyQ2hyb21pdW06OldlYkdMTGF5ZXJD
aHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQorV2ViR0xMYXllckNocm9taXVt
OjpXZWJHTExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBvd25lcikKICAgICA6IENhbnZh
c0xheWVyQ2hyb21pdW0ob3duZXIpCiAgICAgLCBtX2NvbnRleHQoMCkKICAgICAsIG1fdGV4dHVy
ZUNoYW5nZWQodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5kZXggODYyZmE4OGYz
ZmIwODhlOTY4ODkyNDhmODMyNGJjNDYyM2YwNWIxMS4uNjQzNzI1N2RjZjcxYTdlOTZlZDAwMzlm
N2U1NjVjN2Y2MTdiYTBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKQEAgLTQ1LDcg
KzQ1LDcgQEAgY2xhc3MgV2ViR0xMYXllckNocm9taXVtUmF0ZUxpbWl0VGFzazsKIC8vIEEgTGF5
ZXIgY29udGFpbmluZyBhIFdlYkdMIGNhbnZhcwogY2xhc3MgV2ViR0xMYXllckNocm9taXVtIDog
cHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3du
ZXIgPSAwKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+IGNyZWF0
ZShDQ0xheWVyRGVsZWdhdGUqIG93bmVyID0gMCk7CiAKICAgICB2aXJ0dWFsIH5XZWJHTExheWVy
Q2hyb21pdW0oKTsKIApAQCAtNjEsNyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBj
b25zdCBjaGFyKiBsYXllclR5cGVBc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuICJXZWJHTExheWVy
IjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkdMTGF5ZXJDaHJvbWl1bShHcmFwaGlj
c0xheWVyQ2hyb21pdW0qIG93bmVyKTsKKyAgICBleHBsaWNpdCBXZWJHTExheWVyQ2hyb21pdW0o
Q0NMYXllckRlbGVnYXRlKiBvd25lcik7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMTGF5ZXJDaHJv
bWl1bVJhdGVMaW1pdFRhc2s7CiAKICAgICBHcmFwaGljc0NvbnRleHQzRCogbGF5ZXJSZW5kZXJl
ckNvbnRleHQoKTsK
</data>
<flag name="review"
          id="103165"
          type_id="1"
          status="-"
          setter="jamesr"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107132</attachid>
            <date>2011-09-12 19:46:42 -0700</date>
            <delta_ts>2011-09-13 11:32:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67750-20110912194641.patch</filename>
            <type>text/plain</type>
            <size>24886</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ5OTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYTI1N2JkYTk0MjQzYjA5
ZDUwNDM4NjkxZTdlOWY5MzUzMDE4MTY0Li45N2Q1ZjQ0MGVmMThiNzA5ZmRkMzZkYmJiY2E0YmNi
ZjFkYjVlNjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEtMDktMTIgIEFudG9p
bmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZGVkIGEgcHVyZSB2
aXJ0dWFsIGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB3aGljaCBoZWxwcyB0byBpc29sYXRlCisgICAg
ICAgIHRoZSBjaHJvbWl1bSBjb21wb3NpdG9yIGZyb20gdGhlIHJlc3Qgb2YgV2ViQ29yZSwgYW5k
IGFpZHMgdW5pdAorICAgICAgICB0ZXN0aW5nIGJ5IGJlaW5nIGVhc2lseSBtb2NrYWJsZS4gIFRo
ZSBjb21wb3NpdG9yIGxheWVycyBubyBsb25nZXIKKyAgICAgICAgZGlyZWN0bHkgc2VlIGluc3Rh
bmNlcyBvZiBHcmFwaGljc0xheWVyQ2hyb21pdW0sIGluc3RlYWQgdGhleSB1c2UKKyAgICAgICAg
dGhpcyBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02Nzc1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNMYXllckNocm9taXVtOjpDYW52YXNMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRMYXllclBhaW50ZXI6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRMYXllclBhaW50ZXI6OkNvbnRlbnRMYXllclBhaW50ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpnZXREcmF3c0NvbnRlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpnZXRQcmVzZXJ2ZXMzRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhaW50aW5nR29lc1Rv
V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6ZG9QYWlu
dEdyYXBoaWNzTGF5ZXJDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06Om5vdGlmeVN5bmNSZXF1aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
TGF5ZXJDaHJvbWl1bTo6SW1hZ2VMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjpMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyRGVsZWdhdGU6On5DQ0xh
eWVyRGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHJlc2VydmVz
M0QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0T3duZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21pdW06OlBsdWdpbkxheWVyQ2hyb21pdW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpUaWxlZExheWVyQ2hy
b21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVy
Q2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06
OldlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vV2ViR0xMYXllckNocm9taXVtLmg6CisKIDIwMTEtMDktMTIgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNTQ2MTU+IEZsb2F0
cyBpbiBydWJ5IHRleHQgaW50cnVkZSBpbnRvIHRoZSBiYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVy
Q2hyb21pdW0uY3BwCmluZGV4IGEzZTIxNzJhZjA3MGI4Yzc4YzdkNzg0YmNiZGVlYjg2YjFhOTk3
OTguLjczNmJjYmRjZDk0MjZlMTA3MmMwMzNhMjBiNjk0ODIwOWYzMzBhOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Q2FudmFzTGF5ZXJDaHJvbWl1bShHcmFw
aGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQorQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Q2FudmFzTGF5
ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIG93bmVyKQogICAgIDogTGF5ZXJDaHJvbWl1bShv
d25lcikKICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKICAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhh
KHRydWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXNMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmgKaW5kZXggNGMyZTQ0MDg1Zjc2NDQz
YWIxMjE4MGQ3NzQwOWM0OGI1ZmQ3NGFlOS4uNDQ1N2Q0YWYzMzIzOTI5ZDVlMGRjM2IwN2ExNTM1
OTc0OTNkNzBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaApAQCAtNTAsNyArNTAs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKSB7
IG1fdGV4dHVyZUlkID0gdGV4dHVyZUlkOyB9CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBD
YW52YXNMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOworICAgIGV4
cGxpY2l0IENhbnZhc0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBvd25lcik7CiAKICAg
ICBib29sIG1faGFzQWxwaGE7CiAgICAgYm9vbCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCBmYTdkM2ZlOWE5NmRmNzZhMTc0MTll
MjM4MWI1MTIzNzA4ZTFiNjZjLi45NGM4N2Q2ZGIxYWUwN2MyZjc4YjIzY2I5NmFiNTk4ZGVlMTNh
ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC00Niw3ICs0Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRMYXllclBhaW50ZXIgOiBwdWJs
aWMgTGF5ZXJQYWludGVyQ2hyb21pdW0gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRl
bnRMYXllclBhaW50ZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENvbnRlbnRM
YXllclBhaW50ZXI+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQorICAgIHN0
YXRpYyBQYXNzT3duUHRyPENvbnRlbnRMYXllclBhaW50ZXI+IGNyZWF0ZShDQ0xheWVyRGVsZWdh
dGUqIG93bmVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZW50TGF5
ZXJQYWludGVyKG93bmVyKSk7CiAgICAgfQpAQCAtNTYsMjcgKzU2LDI3IEBAIHB1YmxpYzoKICAg
ICAgICAgZG91YmxlIHBhaW50U3RhcnQgPSBjdXJyZW50VGltZSgpOwogICAgICAgICBjb250ZXh0
LmNsZWFyUmVjdChjb250ZW50UmVjdCk7CiAgICAgICAgIGNvbnRleHQuY2xpcChjb250ZW50UmVj
dCk7Ci0gICAgICAgIG1fb3duZXItPnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQs
IGNvbnRlbnRSZWN0KTsKKyAgICAgICAgbV9vd25lci0+cGFpbnRDb250ZW50cyhjb250ZXh0LCBj
b250ZW50UmVjdCk7CiAgICAgICAgIGRvdWJsZSBwYWludEVuZCA9IGN1cnJlbnRUaW1lKCk7CiAg
ICAgICAgIGRvdWJsZSBwaXhlbHNQZXJTZWMgPSAoY29udGVudFJlY3Qud2lkdGgoKSAqIGNvbnRl
bnRSZWN0LmhlaWdodCgpKSAvIChwYWludEVuZCAtIHBhaW50U3RhcnQpOwogICAgICAgICBQbGF0
Zm9ybVN1cHBvcnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0LkFjY2VsQ29udGVu
dFBhaW50RHVyYXRpb25NUyIsIChwYWludEVuZCAtIHBhaW50U3RhcnQpICogMTAwMCwgMCwgMTIw
LCAzMCk7CiAgICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJS
ZW5kZXJlcjQuQWNjZWxDb250ZW50UGFpbnRNZWdhcGl4UGVyU2Vjb25kIiwgcGl4ZWxzUGVyU2Vj
IC8gMTAwMDAwMCwgMTAsIDIxMCwgMzApOwogICAgIH0KIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
Q29udGVudExheWVyUGFpbnRlcihHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQorICAgIGV4
cGxpY2l0IENvbnRlbnRMYXllclBhaW50ZXIoQ0NMYXllckRlbGVnYXRlKiBvd25lcikKICAgICAg
ICAgOiBtX293bmVyKG93bmVyKQogICAgIHsKICAgICB9CiAKLSAgICBHcmFwaGljc0xheWVyQ2hy
b21pdW0qIG1fb3duZXI7CisgICAgQ0NMYXllckRlbGVnYXRlKiBtX293bmVyOwogfTsKIAotUGFz
c1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bT4gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0
ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQorUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJD
aHJvbWl1bT4gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIG93
bmVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVyQ2hyb21pdW0ob3du
ZXIpKTsKIH0KIAotQ29udGVudExheWVyQ2hyb21pdW06OkNvbnRlbnRMYXllckNocm9taXVtKEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCitDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVu
dExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBvd25lcikKICAgICA6IFRpbGVkTGF5ZXJD
aHJvbWl1bShvd25lcikKIHsKIH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIENvbnRlbnRMYXll
ckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCiAKIGJvb2wgQ29udGVudExheWVyQ2hy
b21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fb3duZXIgJiYgbV9v
d25lci0+ZHJhd3NDb250ZW50KCkgJiYgVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQo
KTsKKyAgICByZXR1cm4gbV9vd25lciAmJiBtX293bmVyLT5nZXREcmF3c0NvbnRlbnQoKSAmJiBU
aWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpOwogfQogCiB2b2lkIENvbnRlbnRMYXll
ckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqIGhv
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCA5NDA5YWUxMmU5ZjMyNjc1
MjM1MGFlNjBmNGQzMGFmOTkyZmJjOTE2Li4yMGY0ZDg5NWIxMTE5YmVjMmU3MGZlMzA5MWY4NTE2
YmIxNmMwYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTQ1LDE0ICs0
NSwxNCBAQCBjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyOwogLy8gQSBMYXllciB0aGF0IHJlcXVp
cmVzIGEgR3JhcGhpY3NDb250ZXh0IHRvIHJlbmRlciBpdHMgY29udGVudHMuCiBjbGFzcyBDb250
ZW50TGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBUaWxlZExheWVyQ2hyb21pdW0gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhp
Y3NMYXllckNocm9taXVtKiBvd25lciA9IDApOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRl
bnRMYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBvd25lciA9IDApOwogCiAg
ICAgdmlydHVhbCB+Q29udGVudExheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eSgpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IENvbnRlbnRM
YXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOworICAgIGV4cGxpY2l0
IENvbnRlbnRMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogb3duZXIpOwogCiAgICAgdmly
dHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250
ZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAppbmRleCBk
MzY3MDNmNDE5NjAwMjM2OWNiYmQ0NzE1MDkxYTRiNzg1ZTFiMGNhLi45NWVlZTAyYTZkZWFkOWU4
Y2VhYmUyOWQwZDUwYjVhOGY3ZDVjY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJJbWFnZUxheWVyQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKICNpbmNsdWRlICJTeXN0ZW1UaW1l
LmgiCiAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTY4Niw2ICs2ODcsMzMgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZU9wYWNpdHlPbkxheWVyKCkKICAgICBw
cmltYXJ5TGF5ZXIoKS0+c2V0T3BhY2l0eShtX29wYWNpdHkpOwogfQogCitib29sIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6Z2V0RHJhd3NDb250ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZHJh
d3NDb250ZW50KCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjpnZXRQcmVzZXJ2
ZXMzRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHByZXNlcnZlczNEKCk7Cit9CisKK2Jvb2wgR3Jh
cGhpY3NMYXllckNocm9taXVtOjpwYWludGluZ0dvZXNUb1dpbmRvdygpIGNvbnN0Cit7CisgICAg
UmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gc3RhdGljX2Nhc3Q8UmVuZGVyTGF5ZXJCYWNr
aW5nKj4oY2xpZW50KCkpOworICAgIHJldHVybiAhYmFja2luZyB8fCBiYWNraW5nLT5wYWludGlu
Z0dvZXNUb1dpbmRvdygpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cGFpbnRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNsaXApCit7
CisgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgY2xpcCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpub3RpZnlTeW5jUmVxdWlyZWQoKQoreworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmeVN5bmNSZXF1aXJlZCh0aGlzKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAppbmRleCA1YTgy
NGNlMWVkYzE1YzRkNzFlMDFlMWVlZmVkNjI1OGU2OGYzNmE5Li5hZjg2MzliY2U5MjlhZmZkYjRh
MzZjMTlhNjUyZTdkZWFkNWIwNjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
aApAQCAtMzMsNiArMzMsNyBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
CisjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKIApAQCAtNDAsNyArNDEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyQ2hyb21pdW07CiAKLWNsYXNzIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bSA6IHB1YmxpYyBHcmFwaGljc0xheWVyIHsKK2NsYXNzIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgQ0NMYXllckRlbGVnYXRlIHsK
IHB1YmxpYzoKICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNsaWVudCop
OwogICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSgpOwpAQCAtOTQsMTEgKzk1LDEy
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IoY29u
c3QgQ29sb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3Im
LCBmbG9hdCBib3JkZXJXaWR0aCk7CiAKLSAgICB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgpCi0g
ICAgewotICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+bm90aWZ5
U3luY1JlcXVpcmVkKHRoaXMpOwotICAgIH0KKyAgICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9u
cyBpbXBsZW1lbnQgdGhlIENDTGF5ZXJEZWxlZ2F0ZSBpbnRlcmZhY2UuCisgICAgdmlydHVhbCBi
b29sIGdldERyYXdzQ29udGVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRQcmVzZXJ2
ZXMzRCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBwYWludGluZ0dvZXNUb1dpbmRvdygpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGNsaXApOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQo
KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCA3MWJjMGI2YjlkYjY1NmJjNDYwZjRmODU2NTQ5
NGZhNTdhYjUwYjhkLi5iMWFmZjI1MDY3ZTliYTJlYzI1NDcyNTdlZTM3NThhZGY2YjMxMWI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTEwOCwxMiArMTA4LDEyIEBAIHBy
aXZhdGU6CiAgICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90ZXhTdWJJbWFnZTsKIH07CiAKLVBh
c3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBJbWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZShH
cmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQorUGFzc1JlZlB0cjxJbWFnZUxheWVyQ2hyb21p
dW0+IEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogb3duZXIpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUxheWVyQ2hyb21pdW0ob3duZXIpKTsKIH0K
IAotSW1hZ2VMYXllckNocm9taXVtOjpJbWFnZUxheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNo
cm9taXVtKiBvd25lcikKK0ltYWdlTGF5ZXJDaHJvbWl1bTo6SW1hZ2VMYXllckNocm9taXVtKEND
TGF5ZXJEZWxlZ2F0ZSogb3duZXIpCiAgICAgOiBUaWxlZExheWVyQ2hyb21pdW0ob3duZXIpCiAg
ICAgLCBtX2ltYWdlRm9yQ3VycmVudEZyYW1lKDApCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5oCmluZGV4IDRhZmUwNWQxNTFmOGIzNjM2Mjk2MzA0MzMxMGEyMDk0OTQxODI5NTYuLjVmNTRh
YmEyNmNmNDE5MWYwZDBhNzcwOTJkZDE5ZjRmZjY1YTQ2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
cjsKIC8vIEEgTGF5ZXIgdGhhdCBjb250YWlucyBvbmx5IGFuIEltYWdlIGVsZW1lbnQuCiBjbGFz
cyBJbWFnZUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgVGlsZWRMYXllckNocm9taXVtIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUxheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFw
aGljc0xheWVyQ2hyb21pdW0qIG93bmVyID0gMCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1h
Z2VMYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBvd25lciA9IDApOwogICAg
IHZpcnR1YWwgfkltYWdlTGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdz
Q29udGVudCgpIGNvbnN0OwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRD
b250ZW50cyhJbWFnZSogaW1hZ2UpOwogCiBwcml2YXRlOgotICAgIEltYWdlTGF5ZXJDaHJvbWl1
bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKTsKKyAgICBJbWFnZUxheWVyQ2hyb21pdW0o
Q0NMYXllckRlbGVnYXRlKiBvd25lcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291
cmNlcygpOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xh
eWVyVHJlZUhvc3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYTBkMzQ2NTZlOGMxNWQ1
MmQwNWU0MDJkMjkxZjg1NDA1MjM4ZjQ3ZC4uZTgwNjZmMWE3YzljMTk0NzdjYWFhMDhiMGI5YTQ4
NTc3NjQ2MDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUxLDEyICs1MSwxMiBAQCB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBzdGF0aWMgaW50IHNfbmV4dExheWVySWQgPSAxOwogCi1Q
YXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0xh
eWVyQ2hyb21pdW0qIG93bmVyKQorUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBMYXllckNocm9t
aXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBvd25lcikKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IExheWVyQ2hyb21pdW0ob3duZXIpKTsKIH0KIAotTGF5ZXJDaHJvbWl1bTo6TGF5ZXJD
aHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQorTGF5ZXJDaHJvbWl1bTo6TGF5
ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIG93bmVyKQogICAgIDogbV9vd25lcihvd25lcikK
ICAgICAsIG1fY29udGVudHNEaXJ0eShmYWxzZSkKICAgICAsIG1fbGF5ZXJJZChzX25leHRMYXll
cklkKyspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggN2Y2ZmZhNzRjNWY2YjJmMWZlYTk3MjhkODcz
NzE2ZTQ1ZGVjNjk5ZS4uNzNkMDc1MWE3MWU4MzNkYTEwZDUzMmZjMjU2ZWJmYjI0YmFhZTBmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMzYsNyArMzYsNiBAQAogCiAjaW5jbHVkZSAiRmxvYXRQ
b2ludC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAi
UHJvZ3JhbUJpbmRpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCIKQEAg
LTU2LDEyICs1NSwyMiBAQCBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9z
dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCitjbGFzcyBDQ0xheWVyRGVsZWdhdGUgewor
cHVibGljOgorICAgIHZpcnR1YWwgfkNDTGF5ZXJEZWxlZ2F0ZSgpIHsgfQorICAgIHZpcnR1YWwg
Ym9vbCBnZXREcmF3c0NvbnRlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGdldFBy
ZXNlcnZlczNEKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwYWludGluZ0dvZXNUb1dp
bmRvdygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjbGlwKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5v
dGlmeVN5bmNSZXF1aXJlZCgpID0gMDsKK307CisKIC8vIEJhc2UgY2xhc3MgZm9yIGNvbXBvc2l0
ZWQgbGF5ZXJzLiBTcGVjaWFsIGxheWVyIHR5cGVzIGFyZSBkZXJpdmVkIGZyb20KIC8vIHRoaXMg
Y2xhc3MuCiBjbGFzcyBMYXllckNocm9taXVtIDogcHVibGljIFJlZkNvdW50ZWQ8TGF5ZXJDaHJv
bWl1bT4gewogICAgIGZyaWVuZCBjbGFzcyBMYXllclRpbGVyQ2hyb21pdW07CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bSogb3duZXIgPSAwKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxMYXllckNocm9taXVt
PiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBvd25lciA9IDApOwogCiAgICAgdmlydHVhbCB+TGF5
ZXJDaHJvbWl1bSgpOwogCkBAIC0xNDQsNyArMTUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
R2VvbWV0cnlGbGlwcGVkKGJvb2wgZmxpcHBlZCkgeyBtX2dlb21ldHJ5RmxpcHBlZCA9IGZsaXBw
ZWQ7IHNldE5lZWRzQ29tbWl0KCk7IH0KICAgICBib29sIGdlb21ldHJ5RmxpcHBlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZ2VvbWV0cnlGbGlwcGVkOyB9CiAKLSAgICBib29sIHByZXNlcnZlczNEKCkg
eyByZXR1cm4gbV9vd25lciAmJiBtX293bmVyLT5wcmVzZXJ2ZXMzRCgpOyB9CisgICAgYm9vbCBw
cmVzZXJ2ZXMzRCgpIHsgcmV0dXJuIG1fb3duZXIgJiYgbV9vd25lci0+Z2V0UHJlc2VydmVzM0Qo
KTsgfQogCiAgICAgdm9pZCBzZXRVc2VzTGF5ZXJTY2lzc29yKGJvb2wgdXNlc0xheWVyU2Npc3Nv
cikgeyBtX3VzZXNMYXllclNjaXNzb3IgPSB1c2VzTGF5ZXJTY2lzc29yOyB9CiAgICAgYm9vbCB1
c2VzTGF5ZXJTY2lzc29yKCkgY29uc3QgeyByZXR1cm4gbV91c2VzTGF5ZXJTY2lzc29yOyB9CkBA
IC0xNTQsNyArMTYzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyVHJl
ZUhvc3QoQ0NMYXllclRyZWVIb3N0Kik7CiAKLSAgICB2b2lkIHNldE93bmVyKEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bSogb3duZXIpIHsgbV9vd25lciA9IG93bmVyOyB9CisgICAgdm9pZCBzZXRPd25l
cihDQ0xheWVyRGVsZWdhdGUqIG93bmVyKSB7IG1fb3duZXIgPSBvd25lcjsgfQogCiAgICAgdm9p
ZCBzZXRSZXBsaWNhTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIHsgbV9yZXBsaWNhTGF5ZXIg
PSBsYXllcjsgfQogICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXllcigpIHsgcmV0dXJuIG1f
cmVwbGljYUxheWVyLmdldCgpOyB9CkBAIC0yMDksOCArMjE4LDggQEAgcHVibGljOgogICAgIHZv
aWQgY2xlYW51cFJlc291cmNlc1JlY3Vyc2l2ZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgR3JhcGhp
Y3NMYXllckNocm9taXVtKiBtX293bmVyOwotICAgIGV4cGxpY2l0IExheWVyQ2hyb21pdW0oR3Jh
cGhpY3NMYXllckNocm9taXVtKiBvd25lcik7CisgICAgQ0NMYXllckRlbGVnYXRlKiBtX293bmVy
OworICAgIGV4cGxpY2l0IExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBvd25lcik7CiAK
ICAgICAvLyBUaGlzIGlzIGNhbGxlZCB0byBjbGVhbiB1cCByZXNvdXJjZXMgYmVpbmcgaGVsZCBp
biB0aGUgc2FtZSBjb250ZXh0IGFzCiAgICAgLy8gbGF5ZXJSZW5kZXJlckNvbnRleHQoKS4gU3Vi
Y2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QgaWYgdGhleQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVn
aW5MYXllckNocm9taXVtLmNwcAppbmRleCBiNmUzNTA2ZmNmZmYzYTU2ODFhNTUzZjQxYTZmNWVi
MjQ4ZTgxZTcwLi5iOGQzNDE0ODBiZTZhNzg2NzU5OTI0NmUxMzAwMjllOGRlMmE2ZmZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5M
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcApAQCAtMzYsMTIgKzM2LDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBQbHVn
aW5MYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKK1Bh
c3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bT4gUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KENDTGF5ZXJEZWxlZ2F0ZSogb3duZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVn
aW5MYXllckNocm9taXVtKG93bmVyKSk7CiB9CiAKLVBsdWdpbkxheWVyQ2hyb21pdW06OlBsdWdp
bkxheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKK1BsdWdpbkxheWVy
Q2hyb21pdW06OlBsdWdpbkxheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBvd25lcikKICAg
ICA6IExheWVyQ2hyb21pdW0ob3duZXIpCiAgICAgLCBtX3RleHR1cmVJZCgwKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5
ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UGx1Z2luTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGQxY2ZjODAyOWViMjFmNGYyNmMyYjVjZTdlYjY4
ZTA2NDNjMTkzYmIuLjM5ZDVmZTQ3NmEwZDQ3MzFkMTVmN2YwZWQwNTU2ODI5OTZhNmU2NmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdp
bkxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogLy8gQSBMYXllciBjb250YWluaW5nIGEgdGhlIHJlbmRlcmVkIG91dHB1dCBv
ZiBhIHBsdWdpbiBpbnN0YW5jZS4KIGNsYXNzIFBsdWdpbkxheWVyQ2hyb21pdW0gOiBwdWJsaWMg
TGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luTGF5
ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIgPSAwKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRl
bGVnYXRlKiBvd25lciA9IDApOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+
IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwogCiBwcml2YXRlOgotICAg
IGV4cGxpY2l0IFBsdWdpbkxheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25l
cik7CisgICAgZXhwbGljaXQgUGx1Z2luTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIG93
bmVyKTsKICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDZiZDI4MjFkY2YxZGIyOTFlMzQ1NTdkNTIyZGZlYmI2ZGI5MTQ0
ZjkuLmUyODc0ZmJhZTZjZTA5OWQyYWE4Njg0ZDUwOWViZDViMGIzYjgzYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIE93
blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXg7CiB9OwogCi1UaWxlZExheWVyQ2hyb21pdW06OlRp
bGVkTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQorVGlsZWRMYXll
ckNocm9taXVtOjpUaWxlZExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBvd25lcikKICAg
ICA6IExheWVyQ2hyb21pdW0ob3duZXIpCiAgICAgLCBtX3RpbGluZ09wdGlvbihBdXRvVGlsZSkK
ICAgICAsIG1fdGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCA2OTI2ZTNkNTNjMDg3NDIwZDRhZjE5M2Vm
NjVkMDc4MTUzNDRjODc2Li43MzIwZDRiNjliMjAwMjc5MGRlNTZmYjVmNDZlZTU4YTY5ZjBlYjc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwcm90ZWN0VGlsZVRleHR1cmVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFRpbGVkTGF5ZXJDaHJvbWl1bShHcmFwaGlj
c0xheWVyQ2hyb21pdW0qKTsKKyAgICBleHBsaWNpdCBUaWxlZExheWVyQ2hyb21pdW0oQ0NMYXll
ckRlbGVnYXRlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291cmNlcygpOwogICAg
IHZvaWQgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDE4OGUyZjBjY2RiNWI5YTQ3NDRjZjViMzYzNjY4YjI4MWQ4MWM1
NmMuLjhlNWVhZDI5NzBlNDNmYWFhZDIxNWJhZjRhMWFhMWM5MDdkZGIyMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9MYXllckNocm9taXVtLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIK
ICNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0uaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1lUHJv
dmlkZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgpAQCAtNDUsMTMgKzQ0LDEzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+
IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIs
CitQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVtOjpjcmVh
dGUoQ0NMYXllckRlbGVnYXRlKiBvd25lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVy
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9MYXllckNocm9taXVtKG93bmVyLCBw
cm92aWRlcikpOwogfQogCi1WaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShH
cmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyLCBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVy
KQorVmlkZW9MYXllckNocm9taXVtOjpWaWRlb0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRl
KiBvd25lciwgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikKICAgICA6IExheWVyQ2hyb21p
dW0ob3duZXIpCiAgICAgLCBtX3NraXBzRHJhdyh0cnVlKQogICAgICwgbV9mcmFtZUZvcm1hdChW
aWRlb0ZyYW1lQ2hyb21pdW06OkludmFsaWQpCkBAIC04MCwxMSArNzksNyBAQCB2b2lkIFZpZGVv
TGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAKIHZvaWQgVmlkZW9MYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
KQogewotICAgIGlmICghbV9jb250ZW50c0RpcnR5IHx8ICFtX293bmVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSBzdGF0aWNfY2FzdDxSZW5k
ZXJMYXllckJhY2tpbmcqPihtX293bmVyLT5jbGllbnQoKSk7Ci0gICAgaWYgKCFiYWNraW5nIHx8
IGJhY2tpbmctPnBhaW50aW5nR29lc1RvV2luZG93KCkpCisgICAgaWYgKCFtX2NvbnRlbnRzRGly
dHkgfHwgIW1fb3duZXIgfHwgbV9vd25lci0+cGFpbnRpbmdHb2VzVG9XaW5kb3coKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGRyYXdzQ29udGVudCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXll
ckNocm9taXVtLmgKaW5kZXggOWY3OTAzMjU2ZmJlODg2YWM0ZWU2YzlkZjZkYWIzNjYwY2YzZTUx
Zi4uMzNiZDkxYTk1NjEzZDg2Yjc1ZmRjODFjMWVmOGMyYzRlYmY1NDA3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9MYXllckNocm9taXVtLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgVmlkZW9MYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGlj
OgogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoR3Jh
cGhpY3NMYXllckNocm9taXVtKiBvd25lciA9IDAsCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Vmlk
ZW9MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBvd25lciA9IDAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVBy
b3ZpZGVyKiA9IDApOwogICAgIHZpcnR1YWwgflZpZGVvTGF5ZXJDaHJvbWl1bSgpOwogCkBAIC03
MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90
ZXh0dXJlOwogICAgIH07CiAKLSAgICBWaWRlb0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNo
cm9taXVtKiBvd25lciwgVmlkZW9GcmFtZVByb3ZpZGVyKik7CisgICAgVmlkZW9MYXllckNocm9t
aXVtKENDTGF5ZXJEZWxlZ2F0ZSogb3duZXIsIFZpZGVvRnJhbWVQcm92aWRlciopOwogCiAgICAg
c3RhdGljIEdDM0RlbnVtIGRldGVybWluZVRleHR1cmVGb3JtYXQoY29uc3QgVmlkZW9GcmFtZUNo
cm9taXVtKik7CiAgICAgc3RhdGljIEludFNpemUgY29tcHV0ZVZpc2libGVTaXplKGNvbnN0IFZp
ZGVvRnJhbWVDaHJvbWl1bSosIHVuc2lnbmVkIHBsYW5lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hy
b21pdW0uY3BwCmluZGV4IGQxMGQ0ZjU0YjEyNmZiYzU1MGQ3MWU1NThiNTI1MzUwNTMxNjNiZDUu
LjRhMjVkNjE5ZThiODgzYWRlNmI2N2ViZDQzNTE0NDY3NDdkMmVmYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmNwcApAQCAtNDEsMTIgKzQxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+IFdlYkdMTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCitQYXNzUmVmUHRyPFdlYkdM
TGF5ZXJDaHJvbWl1bT4gV2ViR0xMYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRl
KiBvd25lcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMTGF5ZXJDaHJvbWl1bShv
d25lcikpOwogfQogCi1XZWJHTExheWVyQ2hyb21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bShHcmFw
aGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQorV2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVy
Q2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBvd25lcikKICAgICA6IENhbnZhc0xheWVyQ2hyb21p
dW0ob3duZXIpCiAgICAgLCBtX2NvbnRleHQoMCkKICAgICAsIG1fdGV4dHVyZUNoYW5nZWQodHJ1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5kZXggMjE1NTBkZmMxNDEzZjBiNDc2ZDUw
YjA2MzJhYThmNTI3OWJjMWMwNC4uNzc0YzIxNjhjMTBiYmQ3Mzk4Y2M0YmJkM2YwZTA5MDhiMWM3
NTFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xh
c3MgV2ViR0xMYXllckNocm9taXVtUmF0ZUxpbWl0VGFzazsKIC8vIEEgTGF5ZXIgY29udGFpbmlu
ZyBhIFdlYkdMIGNhbnZhcwogY2xhc3MgV2ViR0xMYXllckNocm9taXVtIDogcHVibGljIENhbnZh
c0xheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5
ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIgPSAwKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVs
ZWdhdGUqIG93bmVyID0gMCk7CiAKICAgICB2aXJ0dWFsIH5XZWJHTExheWVyQ2hyb21pdW0oKTsK
IApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJH
TExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7CisgICAgZXhwbGlj
aXQgV2ViR0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogb3duZXIpOwogICAgIGZyaWVu
ZCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0M0QqIGxheWVyUmVuZGVyZXJDb250ZXh0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107198</attachid>
            <date>2011-09-13 11:32:30 -0700</date>
            <delta_ts>2011-09-14 12:42:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67750-20110913113229.patch</filename>
            <type>text/plain</type>
            <size>28369</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ5OTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYTI1N2JkYTk0MjQzYjA5
ZDUwNDM4NjkxZTdlOWY5MzUzMDE4MTY0Li4zMWE0YWU4YzYyNmFjYjhlZTA4YjBjY2NlOTJjZWNh
YTliZTJmZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTEtMDktMTIgIEFudG9p
bmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZGVkIGEgcHVyZSB2
aXJ0dWFsIGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB3aGljaCBoZWxwcyB0byBpc29sYXRlCisgICAg
ICAgIHRoZSBjaHJvbWl1bSBjb21wb3NpdG9yIGZyb20gdGhlIHJlc3Qgb2YgV2ViQ29yZSwgYW5k
IGFpZHMgdW5pdAorICAgICAgICB0ZXN0aW5nIGJ5IGJlaW5nIGVhc2lseSBtb2NrYWJsZS4gIFRo
ZSBjb21wb3NpdG9yIGxheWVycyBubyBsb25nZXIKKyAgICAgICAgZGlyZWN0bHkgc2VlIGluc3Rh
bmNlcyBvZiBHcmFwaGljc0xheWVyQ2hyb21pdW0sIGluc3RlYWQgdGhleSB1c2UKKyAgICAgICAg
dGhpcyBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02Nzc1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0czogY2hhbmdlcyBhbHJlYWR5IGNvdmVyZWQgYnkgZXhpc3Rpbmcg
Y29tcG9zaXRpbmcgbGF5b3V0CisgICAgICAgIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNMYXllckNocm9taXVtOjpDYW52YXNMYXllckNocm9taXVtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllclBhaW50ZXI6OnBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRMYXllclBhaW50ZXI6OkNvbnRlbnRMYXllclBhaW50ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpnZXREcmF3c0NvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpnZXRQcmVzZXJ2
ZXMzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhaW50aW5n
R29lc1RvV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
ZG9QYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06Om5vdGlmeVN5bmNSZXF1aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlTGF5ZXJDaHJvbWl1bTo6SW1hZ2VMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNo
cm9taXVtOjpMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyRGVsZWdhdGU6
On5DQ0xheWVyRGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHJl
c2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0T3duZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21pdW06OlBsdWdpbkxheWVyQ2hyb21pdW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpUaWxlZExh
eWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Zp
ZGVvTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21p
dW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVv
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TExheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hy
b21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisKIDIwMTEtMDktMTIgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNTQ2MTU+
IEZsb2F0cyBpbiBydWJ5IHRleHQgaW50cnVkZSBpbnRvIHRoZSBiYXNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
c0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGEzZTIxNzJhZjA3MGI4Yzc4YzdkNzg0YmNiZGVlYjg2
YjFhOTk3OTguLjFhZGRlZmNjNTMzYzBjODAxMWM2YTc5MGUwMjU4YmE4MzNkNjllZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCkBAIC00MCw4ICs0MCw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Q2FudmFzTGF5ZXJDaHJvbWl1
bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQotICAgIDogTGF5ZXJDaHJvbWl1bShvd25l
cikKK0NhbnZhc0xheWVyQ2hyb21pdW06OkNhbnZhc0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVn
YXRlKiBkZWxlZ2F0ZSkKKyAgICA6IExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCiAgICAgLCBtX2hh
c0FscGhhKHRydWUpCiAgICAgLCBtX3ByZW11bHRpcGxpZWRBbHBoYSh0cnVlKQogICAgICwgbV90
ZXh0dXJlSWQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaAppbmRleCA0YzJlNDQwODVm
NzY0NDNhYjEyMTgwZDc3NDA5YzQ4YjVmZDc0YWU5Li44NWE1ZWMyNzMzZGUxYTFhZjkyYTFlZTRm
MmM3OTcwMjZiMzAyNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCkBAIC01MCw3
ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJl
SWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7IH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxp
Y2l0IENhbnZhc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7Cisg
ICAgZXhwbGljaXQgQ2FudmFzTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqKTsKIAogICAg
IGJvb2wgbV9oYXNBbHBoYTsKICAgICBib29sIG1fcHJlbXVsdGlwbGllZEFscGhhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGZhN2QzZmU5YTk2ZGY3NmExNzQxOWUy
MzgxYjUxMjM3MDhlMWI2NmMuLjA1ZTMxNjY1ZjQ1NTlmMzY0Njc1ZWExNjI1ZjI4NWEyNjNiNzU3
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ2LDkgKzQ2LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudExheWVyUGFpbnRlciA6IHB1Ymxp
YyBMYXllclBhaW50ZXJDaHJvbWl1bSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGVu
dExheWVyUGFpbnRlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q29udGVudExh
eWVyUGFpbnRlcj4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCisgICAgc3Rh
dGljIFBhc3NPd25QdHI8Q29udGVudExheWVyUGFpbnRlcj4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0
ZSogZGVsZWdhdGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbnRlbnRM
YXllclBhaW50ZXIob3duZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZW50
TGF5ZXJQYWludGVyKGRlbGVnYXRlKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCkBA
IC01NiwyOCArNTYsMjggQEAgcHVibGljOgogICAgICAgICBkb3VibGUgcGFpbnRTdGFydCA9IGN1
cnJlbnRUaW1lKCk7CiAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KGNvbnRlbnRSZWN0KTsKICAg
ICAgICAgY29udGV4dC5jbGlwKGNvbnRlbnRSZWN0KTsKLSAgICAgICAgbV9vd25lci0+cGFpbnRH
cmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgY29udGVudFJlY3QpOworICAgICAgICBtX2Rl
bGVnYXRlLT5wYWludENvbnRlbnRzKGNvbnRleHQsIGNvbnRlbnRSZWN0KTsKICAgICAgICAgZG91
YmxlIHBhaW50RW5kID0gY3VycmVudFRpbWUoKTsKICAgICAgICAgZG91YmxlIHBpeGVsc1BlclNl
YyA9IChjb250ZW50UmVjdC53aWR0aCgpICogY29udGVudFJlY3QuaGVpZ2h0KCkpIC8gKHBhaW50
RW5kIC0gcGFpbnRTdGFydCk7CiAgICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtQ3Vz
dG9tQ291bnRzKCJSZW5kZXJlcjQuQWNjZWxDb250ZW50UGFpbnREdXJhdGlvbk1TIiwgKHBhaW50
RW5kIC0gcGFpbnRTdGFydCkgKiAxMDAwLCAwLCAxMjAsIDMwKTsKICAgICAgICAgUGxhdGZvcm1T
dXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5BY2NlbENvbnRlbnRQYWlu
dE1lZ2FwaXhQZXJTZWNvbmQiLCBwaXhlbHNQZXJTZWMgLyAxMDAwMDAwLCAxMCwgMjEwLCAzMCk7
CiAgICAgfQogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJQYWludGVyKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCi0gICAgICAgIDogbV9vd25lcihvd25lcikKKyAgICBl
eHBsaWNpdCBDb250ZW50TGF5ZXJQYWludGVyKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCisg
ICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICB7CiAgICAgfQogCi0gICAgR3JhcGhp
Y3NMYXllckNocm9taXVtKiBtX293bmVyOworICAgIENDTGF5ZXJEZWxlZ2F0ZSogbV9kZWxlZ2F0
ZTsKIH07CiAKLVBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IENvbnRlbnRMYXllckNo
cm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKK1Bhc3NSZWZQdHI8
Q29udGVudExheWVyQ2hyb21pdW0+IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXll
ckRlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRM
YXllckNocm9taXVtKG93bmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5
ZXJDaHJvbWl1bShkZWxlZ2F0ZSkpOwogfQogCi1Db250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVu
dExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKLSAgICA6IFRpbGVk
TGF5ZXJDaHJvbWl1bShvd25lcikKK0NvbnRlbnRMYXllckNocm9taXVtOjpDb250ZW50TGF5ZXJD
aHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQorICAgIDogVGlsZWRMYXllckNocm9t
aXVtKGRlbGVnYXRlKQogewogfQogCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQogCiBib29sIENvbnRlbnRMYXllckNo
cm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX293bmVyICYmIG1f
b3duZXItPmRyYXdzQ29udGVudCgpICYmIFRpbGVkTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50
KCk7CisgICAgcmV0dXJuIG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+ZHJhd3NDb250ZW50KCkg
JiYgVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKIH0KIAogdm9pZCBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0
KiBob3N0KQpAQCAtMTI1LDEyICsxMjUsMTIgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBob3N0KQogICAgIC8v
IG1vZGUuIFRoaXMgdGh1cyBkZXBlbmRzIG9uIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSB0
dXJuaW5nIG9mZgogICAgIC8vIGFjY2VsZXJhdGVQYWludGluZyB0byBwcmV2ZW50IHRoaXMgZnJv
bSBjcmFzaGluZy4KICAgICBpZiAoaG9zdC0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcp
IHsKLSAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1
cmU6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9vd25lcikpOworICAgICAg
ICBtX3RleHR1cmVVcGRhdGVyID0gTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6Y3JlYXRl
KENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZW5kaWYgLy8gU0tJQQogCi0gICAgbV90ZXh0dXJlVXBkYXRlciA9IExheWVy
VGV4dHVyZVVwZGF0ZXJCaXRtYXA6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUo
bV9vd25lciksIGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7
CisgICAgbV90ZXh0dXJlVXBkYXRlciA9IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OmNyZWF0
ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGhvc3QtPmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDk0MDlhZTEyZTlmMzI2NzUyMzUwYWU2MGY0ZDMwYWY5OTJm
YmM5MTYuLmQ5OWNhZDBjMmFmOTBmMjdiOTZjNTAxNTNlYjcyMWQ3Yjk3YzdiM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNDUsMTQgKzQ1LDE0IEBAIGNsYXNzIExheWVy
VGV4dHVyZVVwZGF0ZXI7CiAvLyBBIExheWVyIHRoYXQgcmVxdWlyZXMgYSBHcmFwaGljc0NvbnRl
eHQgdG8gcmVuZGVyIGl0cyBjb250ZW50cy4KIGNsYXNzIENvbnRlbnRMYXllckNocm9taXVtIDog
cHVibGljIFRpbGVkTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q29udGVudExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93
bmVyID0gMCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IGNy
ZWF0ZShDQ0xheWVyRGVsZWdhdGUqID0gMCk7CiAKICAgICB2aXJ0dWFsIH5Db250ZW50TGF5ZXJD
aHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXll
ckNocm9taXVtKiBvd25lcik7CisgICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21pdW0oQ0NM
YXllckRlbGVnYXRlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291cmNlcygpOwog
ICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGQzNjcwM2Y0MTk2MDAyMzY5Y2JiZDQ3MTUwOTFhNGI3
ODVlMWIwY2EuLjZmYjJkMzc3NjNkOGZiYTg0MTY1NDQxMWRlZjYyM2M2OGVlNGU0YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNz
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2lu
Y2x1ZGUgIkltYWdlTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2lu
Zy5oIgogI2luY2x1ZGUgIlN5c3RlbVRpbWUuaCIKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgpAQCAtMTAyLDE1ICsxMDMsMTUgQEAgR3JhcGhpY3NMYXllckNocm9taXVtOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogR3JhcGhpY3NMYXll
ckNocm9taXVtOjp+R3JhcGhpY3NMYXllckNocm9taXVtKCkKIHsKICAgICBpZiAobV9sYXllcikg
ewotICAgICAgICBtX2xheWVyLT5zZXRPd25lcigwKTsKKyAgICAgICAgbV9sYXllci0+c2V0RGVs
ZWdhdGUoMCk7CiAgICAgICAgIG1fbGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogICAgIH0K
ICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7Ci0gICAgICAgIG1fY29udGVudHNMYXllci0+c2V0
T3duZXIoMCk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0RGVsZWdhdGUoMCk7CiAgICAg
ICAgIG1fY29udGVudHNMYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CiAgICAgfQogICAgIGlm
IChtX3RyYW5zZm9ybUxheWVyKSB7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldE93bmVy
KDApOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXREZWxlZ2F0ZSgwKTsKICAgICAgICAg
bV90cmFuc2Zvcm1MYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CiAgICAgfQogfQpAQCAtMzgz
LDcgKzM4NCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvQ2Fu
dmFzKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCiB7CiAgICAgYm9vbCBjaGlsZHJlbkNo
YW5nZWQgPSBmYWxzZTsKICAgICBpZiAocGxhdGZvcm1MYXllcikgewotICAgICAgICBwbGF0Zm9y
bUxheWVyLT5zZXRPd25lcih0aGlzKTsKKyAgICAgICAgcGxhdGZvcm1MYXllci0+c2V0RGVsZWdh
dGUodGhpcyk7CiAgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgIT0gcGxhdGZvcm1M
YXllcikgewogICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKHBsYXRmb3JtTGF5ZXIpOwog
ICAgICAgICAgICAgbV9jb250ZW50c0xheWVyID0gcGxhdGZvcm1MYXllcjsKQEAgLTQxNSw3ICs0
MTYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb01lZGlhKFBs
YXRmb3JtTGF5ZXIqIGxheWVyKQogICAgICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9
IENvbnRlbnRzTGF5ZXJGb3JWaWRlbzsKICAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRy
dWU7CiAgICAgICAgIH0KLSAgICAgICAgbGF5ZXItPnNldE93bmVyKHRoaXMpOworICAgICAgICBs
YXllci0+c2V0RGVsZWdhdGUodGhpcyk7CiAgICAgICAgIGxheWVyLT5zZXROZWVkc0Rpc3BsYXko
KTsKICAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7CiAgICAgfSBlbHNlIHsKQEAgLTY4Niw2
ICs2ODcsMjcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZU9wYWNpdHlPbkxh
eWVyKCkKICAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0T3BhY2l0eShtX29wYWNpdHkpOwogfQogCiti
b29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gR3JhcGhpY3NMYXllcjo6ZHJhd3NDb250ZW50KCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NM
YXllckNocm9taXVtOjpwcmVzZXJ2ZXMzRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNz
TGF5ZXI6OnByZXNlcnZlczNEKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpw
YWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY2xp
cCkKK3sKKyAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBjbGlwKTsKK30K
Kwordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06Om5vdGlmeVN5bmNSZXF1aXJlZCgpCit7Cisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bm90aWZ5U3luY1JlcXVpcmVkKHRo
aXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDVhODI0Y2UxZWRjMTVjNGQ3MWUwMWUxZWVmZWQ2MjU4ZTY4ZjM2YTkuLjhiMjEzYTg0MDM4NTcx
MzQxMGU3NzM0MTBmNGRiNzNlZjBjMzBmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAKKyNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogCkBAIC00MCw3ICs0MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIAotY2xhc3MgR3JhcGhp
Y3NMYXllckNocm9taXVtIDogcHVibGljIEdyYXBoaWNzTGF5ZXIgeworY2xhc3MgR3JhcGhpY3NM
YXllckNocm9taXVtIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBDQ0xheWVyRGVsZWdh
dGUgewogcHVibGljOgogICAgIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2xp
ZW50Kik7CiAgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNocm9taXVtKCk7CkBAIC05NCwxMSAr
OTUsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBD
b2xvciYsIGZsb2F0IGJvcmRlcldpZHRoKTsKIAotICAgIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVk
KCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5u
b3RpZnlTeW5jUmVxdWlyZWQodGhpcyk7Ci0gICAgfQorICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVu
Y3Rpb25zIGltcGxlbWVudCB0aGUgQ0NMYXllckRlbGVnYXRlIGludGVyZmFjZS4KKyAgICB2aXJ0
dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHByZXNlcnZl
czNEKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgY2xpcCk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNS
ZXF1aXJlZCgpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDcxYmMwYjZiOWRiNjU2YmM0NjBm
NGY4NTY1NDk0ZmE1N2FiNTBiOGQuLjY0M2QxNjc4ZjkxNjc4YTVmNTRiMjI3ZjY2ODUzNDQ2ZDE3
MTgwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMTA4LDEzICsxMDgs
MTMgQEAgcHJpdmF0ZToKICAgICBMYXllclRleHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOwog
fTsKIAotUGFzc1JlZlB0cjxJbWFnZUxheWVyQ2hyb21pdW0+IEltYWdlTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCitQYXNzUmVmUHRyPEltYWdlTGF5
ZXJDaHJvbWl1bT4gSW1hZ2VMYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBk
ZWxlZ2F0ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlTGF5ZXJDaHJvbWl1bShv
d25lcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VMYXllckNocm9taXVtKGRlbGVn
YXRlKSk7CiB9CiAKLUltYWdlTGF5ZXJDaHJvbWl1bTo6SW1hZ2VMYXllckNocm9taXVtKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCi0gICAgOiBUaWxlZExheWVyQ2hyb21pdW0ob3duZXIp
CitJbWFnZUxheWVyQ2hyb21pdW06OkltYWdlTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUq
IGRlbGVnYXRlKQorICAgIDogVGlsZWRMYXllckNocm9taXVtKGRlbGVnYXRlKQogICAgICwgbV9p
bWFnZUZvckN1cnJlbnRGcmFtZSgwKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApp
bmRleCA0YWZlMDVkMTUxZjhiMzYzNjI5NjMwNDMzMTBhMjA5NDk0MTgyOTU2Li43NjMyNjgyZDhk
OWUyZDYwZTFkYWFiNTk1MmRiNTRhYWI0YWY3NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI7CiAv
LyBBIExheWVyIHRoYXQgY29udGFpbnMgb25seSBhbiBJbWFnZSBlbGVtZW50LgogY2xhc3MgSW1h
Z2VMYXllckNocm9taXVtIDogcHVibGljIFRpbGVkTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NM
YXllckNocm9taXVtKiBvd25lciA9IDApOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlTGF5
ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogPSAwKTsKICAgICB2aXJ0dWFsIH5J
bWFnZUxheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdDsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudHMoSW1h
Z2UqIGltYWdlKTsKIAogcHJpdmF0ZToKLSAgICBJbWFnZUxheWVyQ2hyb21pdW0oR3JhcGhpY3NM
YXllckNocm9taXVtKiBvd25lcik7CisgICAgSW1hZ2VMYXllckNocm9taXVtKENDTGF5ZXJEZWxl
Z2F0ZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKICAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGEwZDM0NjU2ZThjMTVkNTJkMDVlNDAyZDI5MWY4NTQw
NTIzOGY0N2QuLjNlOWRlMGRiY2FmYWUxNTYzZTUwNjgzOWMxNGFjNGQ4NGEzOTRmZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwCkBAIC01MSwxMyArNTEsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIAogc3RhdGljIGludCBzX25leHRMYXllcklkID0gMTsKIAotUGFzc1JlZlB0cjxMYXllckNo
cm9taXVtPiBMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25l
cikKK1Bhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5
ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMYXllckNo
cm9taXVtKG93bmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtKGRl
bGVnYXRlKSk7CiB9CiAKLUxheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXll
ckNocm9taXVtKiBvd25lcikKLSAgICA6IG1fb3duZXIob3duZXIpCitMYXllckNocm9taXVtOjpM
YXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCisgICAgOiBtX2RlbGVnYXRl
KGRlbGVnYXRlKQogICAgICwgbV9jb250ZW50c0RpcnR5KGZhbHNlKQogICAgICwgbV9sYXllcklk
KHNfbmV4dExheWVySWQrKykKICAgICAsIG1fcGFyZW50KDApCkBAIC0xMjcsOCArMTI3LDggQEAg
dm9pZCBMYXllckNocm9taXVtOjpzZXROZWVkc0NvbW1pdCgpCiAgICAgLy8gY2FsbCBzZXRSb290
TGF5ZXJOZWVkc0Rpc3BsYXkoKSBvbiB0aGUgV2ViVmlldywgd2hpY2ggd2lsbCBjYXVzZSBMYXll
clJlbmRlcmVyQ2hyb21pdW0KICAgICAvLyB0byByZW5kZXIgYSBmcmFtZS4KICAgICAvLyBUaGlz
IGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qgb24gcm9vdCBsYXllcnMuCi0gICAgaWYgKG1fb3duZXIp
Ci0gICAgICAgIG1fb3duZXItPm5vdGlmeVN5bmNSZXF1aXJlZCgpOworICAgIGlmIChtX2RlbGVn
YXRlKQorICAgICAgICBtX2RlbGVnYXRlLT5ub3RpZnlTeW5jUmVxdWlyZWQoKTsKIH0KIAogdm9p
ZCBMYXllckNocm9taXVtOjpzZXRQYXJlbnQoTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmgKaW5kZXggN2Y2ZmZhNzRjNWY2YjJmMWZlYTk3MjhkODczNzE2ZTQ1ZGVjNjk5ZS4u
OTBkZjY4ZDVkYzllYmFjOTI4MmY3MDM5OTVlYmYwNTA4ZWNiZTc5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uaApAQCAtMzYsNyArMzYsNiBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUJpbmRpbmcu
aCIKICNpbmNsdWRlICJSZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCIKQEAgLTU2LDEyICs1NSwyMSBA
QCBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDNEOwogCitjbGFzcyBDQ0xheWVyRGVsZWdhdGUgeworcHVibGljOgorICAgIHZp
cnR1YWwgfkNDTGF5ZXJEZWxlZ2F0ZSgpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHByZXNlcnZlczNEKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEludFJlY3QmIGNsaXApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVk
KCkgPSAwOworfTsKKwogLy8gQmFzZSBjbGFzcyBmb3IgY29tcG9zaXRlZCBsYXllcnMuIFNwZWNp
YWwgbGF5ZXIgdHlwZXMgYXJlIGRlcml2ZWQgZnJvbQogLy8gdGhpcyBjbGFzcy4KIGNsYXNzIExh
eWVyQ2hyb21pdW0gOiBwdWJsaWMgUmVmQ291bnRlZDxMYXllckNocm9taXVtPiB7CiAgICAgZnJp
ZW5kIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciA9
IDApOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVy
RGVsZWdhdGUqID0gMCk7CiAKICAgICB2aXJ0dWFsIH5MYXllckNocm9taXVtKCk7CiAKQEAgLTE0
NCw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRHZW9tZXRyeUZsaXBwZWQoYm9vbCBm
bGlwcGVkKSB7IG1fZ2VvbWV0cnlGbGlwcGVkID0gZmxpcHBlZDsgc2V0TmVlZHNDb21taXQoKTsg
fQogICAgIGJvb2wgZ2VvbWV0cnlGbGlwcGVkKCkgY29uc3QgeyByZXR1cm4gbV9nZW9tZXRyeUZs
aXBwZWQ7IH0KIAotICAgIGJvb2wgcHJlc2VydmVzM0QoKSB7IHJldHVybiBtX293bmVyICYmIG1f
b3duZXItPnByZXNlcnZlczNEKCk7IH0KKyAgICBib29sIHByZXNlcnZlczNEKCkgeyByZXR1cm4g
bV9kZWxlZ2F0ZSAmJiBtX2RlbGVnYXRlLT5wcmVzZXJ2ZXMzRCgpOyB9CiAKICAgICB2b2lkIHNl
dFVzZXNMYXllclNjaXNzb3IoYm9vbCB1c2VzTGF5ZXJTY2lzc29yKSB7IG1fdXNlc0xheWVyU2Np
c3NvciA9IHVzZXNMYXllclNjaXNzb3I7IH0KICAgICBib29sIHVzZXNMYXllclNjaXNzb3IoKSBj
b25zdCB7IHJldHVybiBtX3VzZXNMYXllclNjaXNzb3I7IH0KQEAgLTE1NCw3ICsxNjIsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhv
c3QqKTsKIAotICAgIHZvaWQgc2V0T3duZXIoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikg
eyBtX293bmVyID0gb3duZXI7IH0KKyAgICB2b2lkIHNldERlbGVnYXRlKENDTGF5ZXJEZWxlZ2F0
ZSogZGVsZWdhdGUpIHsgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOyB9CiAKICAgICB2b2lkIHNldFJl
cGxpY2FMYXllcihMYXllckNocm9taXVtKiBsYXllcikgeyBtX3JlcGxpY2FMYXllciA9IGxheWVy
OyB9CiAgICAgTGF5ZXJDaHJvbWl1bSogcmVwbGljYUxheWVyKCkgeyByZXR1cm4gbV9yZXBsaWNh
TGF5ZXIuZ2V0KCk7IH0KQEAgLTIwOSw4ICsyMTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
bnVwUmVzb3VyY2VzUmVjdXJzaXZlKCk7CiAKIHByb3RlY3RlZDoKLSAgICBHcmFwaGljc0xheWVy
Q2hyb21pdW0qIG1fb3duZXI7Ci0gICAgZXhwbGljaXQgTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xh
eWVyQ2hyb21pdW0qIG93bmVyKTsKKyAgICBDQ0xheWVyRGVsZWdhdGUqIG1fZGVsZWdhdGU7Cisg
ICAgZXhwbGljaXQgTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqKTsKIAogICAgIC8vIFRo
aXMgaXMgY2FsbGVkIHRvIGNsZWFuIHVwIHJlc291cmNlcyBiZWluZyBoZWxkIGluIHRoZSBzYW1l
IGNvbnRleHQgYXMKICAgICAvLyBsYXllclJlbmRlcmVyQ29udGV4dCgpLiBTdWJjbGFzc2VzIHNo
b3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZCBpZiB0aGV5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hy
b21pdW0uY3BwCmluZGV4IGI2ZTM1MDZmY2ZmZjNhNTY4MWE1NTNmNDFhNmY1ZWIyNDhlODFlNzAu
LjIwMTQ2ODc1NTgzMTFkZjA4NTczNGM0YmM1OGI0YTdiZGEzMDdmMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Bs
dWdpbkxheWVyQ2hyb21pdW0uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IFBsdWdpbkxheWVyQ2hy
b21pdW06OmNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQorUGFzc1JlZlB0cjxQ
bHVnaW5MYXllckNocm9taXVtPiBQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRl
bGVnYXRlKiBkZWxlZ2F0ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpbkxheWVy
Q2hyb21pdW0ob3duZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpbkxheWVyQ2hy
b21pdW0oZGVsZWdhdGUpKTsKIH0KIAotUGx1Z2luTGF5ZXJDaHJvbWl1bTo6UGx1Z2luTGF5ZXJD
aHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQotICAgIDogTGF5ZXJDaHJvbWl1
bShvd25lcikKK1BsdWdpbkxheWVyQ2hyb21pdW06OlBsdWdpbkxheWVyQ2hyb21pdW0oQ0NMYXll
ckRlbGVnYXRlKiBkZWxlZ2F0ZSkKKyAgICA6IExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCiAgICAg
LCBtX3RleHR1cmVJZCgwKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IGQxY2ZjODAyOWViMjFmNGYyNmMyYjVjZTdlYjY4ZTA2NDNjMTkzYmIuLjE4MzRkZmQ4MjZiOWQx
MjQyZDJmOTQ0MjM5NzU4NGU3NWFjZTY0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
LmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQSBMYXllciBjb250
YWluaW5nIGEgdGhlIHJlbmRlcmVkIG91dHB1dCBvZiBhIHBsdWdpbiBpbnN0YW5jZS4KIGNsYXNz
IFBsdWdpbkxheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSogb3duZXIgPSAwKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5M
YXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOwogICAgIHZpcnR1YWwg
Ym9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CkBAIC00Nyw3ICs0
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVy
SW1wbCopOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBsdWdpbkxheWVyQ2hyb21pdW0oR3Jh
cGhpY3NMYXllckNocm9taXVtKiBvd25lcik7CisgICAgZXhwbGljaXQgUGx1Z2luTGF5ZXJDaHJv
bWl1bShDQ0xheWVyRGVsZWdhdGUqKTsKICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDZiZDI4MjFkY2YxZGIyOTFlMzQ1
NTdkNTIyZGZlYmI2ZGI5MTQ0ZjkuLmI4YWQyMGE4NDkwZDJjOTM0MTM3NGI1NGEyZDYxZTliYjU5
MWRjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtNjMsOCArNjMsOCBA
QCBwcml2YXRlOgogICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXg7CiB9OwogCi1UaWxl
ZExheWVyQ2hyb21pdW06OlRpbGVkTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0q
IG93bmVyKQotICAgIDogTGF5ZXJDaHJvbWl1bShvd25lcikKK1RpbGVkTGF5ZXJDaHJvbWl1bTo6
VGlsZWRMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCisgICAgOiBMYXll
ckNocm9taXVtKGRlbGVnYXRlKQogICAgICwgbV90aWxpbmdPcHRpb24oQXV0b1RpbGUpCiAgICAg
LCBtX3RleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSkKICAgICAs
IG1fc2tpcHNEcmF3KGZhbHNlKQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjp1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpCiAKIGJvb2wgVGlsZWRMYXll
ckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogewotICAgIGlmICghbV9vd25lcikKKyAg
ICBpZiAoIW1fZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV90
aWxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggNjkyNmUzZDUzYzA4NzQyMGQ0
YWYxOTNlZjY1ZDA3ODE1MzQ0Yzg3Ni4uNzMyMGQ0YjY5YjIwMDI3OTBkZTU2ZmI1ZjQ2ZWU1OGE2
OWYwZWI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTU1LDcgKzU1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcHJvdGVjdFRpbGVUZXh0dXJlcyhjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCk7CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBUaWxlZExheWVyQ2hyb21pdW0o
R3JhcGhpY3NMYXllckNocm9taXVtKik7CisgICAgZXhwbGljaXQgVGlsZWRMYXllckNocm9taXVt
KENDTGF5ZXJEZWxlZ2F0ZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMo
KTsKICAgICB2b2lkIHVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9MYXllckNocm9taXVtLmNwcAppbmRleCAxODhlMmYwY2NkYjViOWE0NzQ0Y2Y1YjM2MzY2OGIy
ODFkODFjNTZjLi4xYTk0OTg4MTc3ZTA5MDIxN2UzY2ViYmY2ZGZlN2IxY2M3NTc5MTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNr
aW5nLmgiCiAjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiVmlkZW9G
cmFtZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKQEAgLTQ1LDE0ICs0
NCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8VmlkZW9MYXllckNo
cm9taXVtPiBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0q
IG93bmVyLAorUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVy
KiBwcm92aWRlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvTGF5ZXJDaHJvbWl1
bShvd25lciwgcHJvdmlkZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvTGF5ZXJD
aHJvbWl1bShkZWxlZ2F0ZSwgcHJvdmlkZXIpKTsKIH0KIAotVmlkZW9MYXllckNocm9taXVtOjpW
aWRlb0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciwgVmlkZW9GcmFt
ZVByb3ZpZGVyKiBwcm92aWRlcikKLSAgICA6IExheWVyQ2hyb21pdW0ob3duZXIpCitWaWRlb0xh
eWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRl
LCBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQorICAgIDogTGF5ZXJDaHJvbWl1bShkZWxl
Z2F0ZSkKICAgICAsIG1fc2tpcHNEcmF3KHRydWUpCiAgICAgLCBtX2ZyYW1lRm9ybWF0KFZpZGVv
RnJhbWVDaHJvbWl1bTo6SW52YWxpZCkKICAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCkBAIC04
MCwxMSArNzksNyBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygp
CiAKIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewotICAgIGlmICghbV9jb250ZW50c0RpcnR5IHx8
ICFtX293bmVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJh
Y2tpbmcgPSBzdGF0aWNfY2FzdDxSZW5kZXJMYXllckJhY2tpbmcqPihtX293bmVyLT5jbGllbnQo
KSk7Ci0gICAgaWYgKCFiYWNraW5nIHx8IGJhY2tpbmctPnBhaW50aW5nR29lc1RvV2luZG93KCkp
CisgICAgaWYgKCFtX2NvbnRlbnRzRGlydHkgfHwgIW1fZGVsZWdhdGUpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEFTU0VSVChkcmF3c0NvbnRlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1
bS5oCmluZGV4IDlmNzkwMzI1NmZiZTg4NmFjNGVlNmM5ZGY2ZGFiMzY2MGNmM2U1MWYuLjZkOTQ3
ZTIwMmZiZTk3OGNjMDU3NzI0YmRlOWVkM2U5NmEyNWU1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJD
aHJvbWl1bS5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFZp
ZGVvTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoKIAotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bSogb3duZXIgPSAwLAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJD
aHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogPSAwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvRnJhbWVQcm92aWRlciogPSAwKTsK
ICAgICB2aXJ0dWFsIH5WaWRlb0xheWVyQ2hyb21pdW0oKTsKIApAQCAtNzAsNyArNzAsNyBAQCBw
cml2YXRlOgogICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKICAgICB9
OwogCi0gICAgVmlkZW9MYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIs
IFZpZGVvRnJhbWVQcm92aWRlciopOworICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVs
ZWdhdGUqLCBWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAogICAgIHN0YXRpYyBHQzNEZW51bSBkZXRl
cm1pbmVUZXh0dXJlRm9ybWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSopOwogICAgIHN0YXRp
YyBJbnRTaXplIGNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qLCB1
bnNpZ25lZCBwbGFuZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCBkMTBk
NGY1NGIxMjZmYmM1NTBkNzFlNTU4YjUyNTM1MDUzMTYzYmQ1Li40NmMxOTU4YTdjNTdjZDIzNzQy
YmI4NmE0YWFlMmZhMzAzNDk0ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTQxLDEzICs0MSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8
V2ViR0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0xh
eWVyQ2hyb21pdW0qIG93bmVyKQorUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+IFdlYkdM
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTExheWVyQ2hyb21pdW0ob3duZXIpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkdMTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkpOwogfQogCi1XZWJH
TExheWVyQ2hyb21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0q
IG93bmVyKQotICAgIDogQ2FudmFzTGF5ZXJDaHJvbWl1bShvd25lcikKK1dlYkdMTGF5ZXJDaHJv
bWl1bTo6V2ViR0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCisgICAg
OiBDYW52YXNMYXllckNocm9taXVtKGRlbGVnYXRlKQogICAgICwgbV9jb250ZXh0KDApCiAgICAg
LCBtX3RleHR1cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBtX2NvbnRleHRTdXBwb3J0c1JhdGVMaW1p
dGluZ0V4dGVuc2lvbihmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5kZXggMjE1
NTBkZmMxNDEzZjBiNDc2ZDUwYjA2MzJhYThmNTI3OWJjMWMwNC4uYTU4ZDU2Mjk5YmE4YzYyYTA2
Y2M5NjE5ZTg5Yjk4MDg1NTY4NzU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgY2xhc3MgV2ViR0xMYXllckNocm9taXVtUmF0ZUxpbWl0VGFzazsKIC8v
IEEgTGF5ZXIgY29udGFpbmluZyBhIFdlYkdMIGNhbnZhcwogY2xhc3MgV2ViR0xMYXllckNocm9t
aXVtIDogcHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bSogb3duZXIgPSAwKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+
IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqID0gMCk7CiAKICAgICB2aXJ0dWFsIH5XZWJHTExheWVy
Q2hyb21pdW0oKTsKIApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBXZWJHTExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7
CisgICAgZXhwbGljaXQgV2ViR0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSopOwogICAg
IGZyaWVuZCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0M0QqIGxheWVyUmVuZGVyZXJDb250ZXh0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107377</attachid>
            <date>2011-09-14 12:42:56 -0700</date>
            <delta_ts>2011-09-14 18:31:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67750-20110914124255.patch</filename>
            <type>text/plain</type>
            <size>28172</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ5OTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYTI1N2JkYTk0MjQzYjA5
ZDUwNDM4NjkxZTdlOWY5MzUzMDE4MTY0Li4zMWE0YWU4YzYyNmFjYjhlZTA4YjBjY2NlOTJjZWNh
YTliZTJmZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTEtMDktMTIgIEFudG9p
bmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZGVkIGEgcHVyZSB2
aXJ0dWFsIGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB3aGljaCBoZWxwcyB0byBpc29sYXRlCisgICAg
ICAgIHRoZSBjaHJvbWl1bSBjb21wb3NpdG9yIGZyb20gdGhlIHJlc3Qgb2YgV2ViQ29yZSwgYW5k
IGFpZHMgdW5pdAorICAgICAgICB0ZXN0aW5nIGJ5IGJlaW5nIGVhc2lseSBtb2NrYWJsZS4gIFRo
ZSBjb21wb3NpdG9yIGxheWVycyBubyBsb25nZXIKKyAgICAgICAgZGlyZWN0bHkgc2VlIGluc3Rh
bmNlcyBvZiBHcmFwaGljc0xheWVyQ2hyb21pdW0sIGluc3RlYWQgdGhleSB1c2UKKyAgICAgICAg
dGhpcyBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02Nzc1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0czogY2hhbmdlcyBhbHJlYWR5IGNvdmVyZWQgYnkgZXhpc3Rpbmcg
Y29tcG9zaXRpbmcgbGF5b3V0CisgICAgICAgIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNMYXllckNocm9taXVtOjpDYW52YXNMYXllckNocm9taXVtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllclBhaW50ZXI6OnBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRMYXllclBhaW50ZXI6OkNvbnRlbnRMYXllclBhaW50ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpnZXREcmF3c0NvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpnZXRQcmVzZXJ2
ZXMzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhaW50aW5n
R29lc1RvV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
ZG9QYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06Om5vdGlmeVN5bmNSZXF1aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlTGF5ZXJDaHJvbWl1bTo6SW1hZ2VMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNo
cm9taXVtOjpMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyRGVsZWdhdGU6
On5DQ0xheWVyRGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHJl
c2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0T3duZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21pdW06OlBsdWdpbkxheWVyQ2hyb21pdW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpUaWxlZExh
eWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Zp
ZGVvTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21p
dW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVv
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TExheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hy
b21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisKIDIwMTEtMDktMTIgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNTQ2MTU+
IEZsb2F0cyBpbiBydWJ5IHRleHQgaW50cnVkZSBpbnRvIHRoZSBiYXNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
c0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGEzZTIxNzJhZjA3MGI4Yzc4YzdkNzg0YmNiZGVlYjg2
YjFhOTk3OTguLjFhZGRlZmNjNTMzYzBjODAxMWM2YTc5MGUwMjU4YmE4MzNkNjllZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCkBAIC00MCw4ICs0MCw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Q2FudmFzTGF5ZXJDaHJvbWl1
bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQotICAgIDogTGF5ZXJDaHJvbWl1bShvd25l
cikKK0NhbnZhc0xheWVyQ2hyb21pdW06OkNhbnZhc0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVn
YXRlKiBkZWxlZ2F0ZSkKKyAgICA6IExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCiAgICAgLCBtX2hh
c0FscGhhKHRydWUpCiAgICAgLCBtX3ByZW11bHRpcGxpZWRBbHBoYSh0cnVlKQogICAgICwgbV90
ZXh0dXJlSWQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaAppbmRleCA0YzJlNDQwODVm
NzY0NDNhYjEyMTgwZDc3NDA5YzQ4YjVmZDc0YWU5Li44NWE1ZWMyNzMzZGUxYTFhZjkyYTFlZTRm
MmM3OTcwMjZiMzAyNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCkBAIC01MCw3
ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJl
SWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7IH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxp
Y2l0IENhbnZhc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7Cisg
ICAgZXhwbGljaXQgQ2FudmFzTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqKTsKIAogICAg
IGJvb2wgbV9oYXNBbHBoYTsKICAgICBib29sIG1fcHJlbXVsdGlwbGllZEFscGhhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGZhN2QzZmU5YTk2ZGY3NmExNzQxOWUy
MzgxYjUxMjM3MDhlMWI2NmMuLjA1ZTMxNjY1ZjQ1NTlmMzY0Njc1ZWExNjI1ZjI4NWEyNjNiNzU3
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ2LDkgKzQ2LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudExheWVyUGFpbnRlciA6IHB1Ymxp
YyBMYXllclBhaW50ZXJDaHJvbWl1bSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGVu
dExheWVyUGFpbnRlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q29udGVudExh
eWVyUGFpbnRlcj4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCisgICAgc3Rh
dGljIFBhc3NPd25QdHI8Q29udGVudExheWVyUGFpbnRlcj4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0
ZSogZGVsZWdhdGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbnRlbnRM
YXllclBhaW50ZXIob3duZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZW50
TGF5ZXJQYWludGVyKGRlbGVnYXRlKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCkBA
IC01NiwyOCArNTYsMjggQEAgcHVibGljOgogICAgICAgICBkb3VibGUgcGFpbnRTdGFydCA9IGN1
cnJlbnRUaW1lKCk7CiAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KGNvbnRlbnRSZWN0KTsKICAg
ICAgICAgY29udGV4dC5jbGlwKGNvbnRlbnRSZWN0KTsKLSAgICAgICAgbV9vd25lci0+cGFpbnRH
cmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgY29udGVudFJlY3QpOworICAgICAgICBtX2Rl
bGVnYXRlLT5wYWludENvbnRlbnRzKGNvbnRleHQsIGNvbnRlbnRSZWN0KTsKICAgICAgICAgZG91
YmxlIHBhaW50RW5kID0gY3VycmVudFRpbWUoKTsKICAgICAgICAgZG91YmxlIHBpeGVsc1BlclNl
YyA9IChjb250ZW50UmVjdC53aWR0aCgpICogY29udGVudFJlY3QuaGVpZ2h0KCkpIC8gKHBhaW50
RW5kIC0gcGFpbnRTdGFydCk7CiAgICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtQ3Vz
dG9tQ291bnRzKCJSZW5kZXJlcjQuQWNjZWxDb250ZW50UGFpbnREdXJhdGlvbk1TIiwgKHBhaW50
RW5kIC0gcGFpbnRTdGFydCkgKiAxMDAwLCAwLCAxMjAsIDMwKTsKICAgICAgICAgUGxhdGZvcm1T
dXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5BY2NlbENvbnRlbnRQYWlu
dE1lZ2FwaXhQZXJTZWNvbmQiLCBwaXhlbHNQZXJTZWMgLyAxMDAwMDAwLCAxMCwgMjEwLCAzMCk7
CiAgICAgfQogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJQYWludGVyKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCi0gICAgICAgIDogbV9vd25lcihvd25lcikKKyAgICBl
eHBsaWNpdCBDb250ZW50TGF5ZXJQYWludGVyKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCisg
ICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICB7CiAgICAgfQogCi0gICAgR3JhcGhp
Y3NMYXllckNocm9taXVtKiBtX293bmVyOworICAgIENDTGF5ZXJEZWxlZ2F0ZSogbV9kZWxlZ2F0
ZTsKIH07CiAKLVBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IENvbnRlbnRMYXllckNo
cm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKK1Bhc3NSZWZQdHI8
Q29udGVudExheWVyQ2hyb21pdW0+IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXll
ckRlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRM
YXllckNocm9taXVtKG93bmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5
ZXJDaHJvbWl1bShkZWxlZ2F0ZSkpOwogfQogCi1Db250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVu
dExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKLSAgICA6IFRpbGVk
TGF5ZXJDaHJvbWl1bShvd25lcikKK0NvbnRlbnRMYXllckNocm9taXVtOjpDb250ZW50TGF5ZXJD
aHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQorICAgIDogVGlsZWRMYXllckNocm9t
aXVtKGRlbGVnYXRlKQogewogfQogCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQogCiBib29sIENvbnRlbnRMYXllckNo
cm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX293bmVyICYmIG1f
b3duZXItPmRyYXdzQ29udGVudCgpICYmIFRpbGVkTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50
KCk7CisgICAgcmV0dXJuIG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+ZHJhd3NDb250ZW50KCkg
JiYgVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKIH0KIAogdm9pZCBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0
KiBob3N0KQpAQCAtMTI1LDEyICsxMjUsMTIgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBob3N0KQogICAgIC8v
IG1vZGUuIFRoaXMgdGh1cyBkZXBlbmRzIG9uIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSB0
dXJuaW5nIG9mZgogICAgIC8vIGFjY2VsZXJhdGVQYWludGluZyB0byBwcmV2ZW50IHRoaXMgZnJv
bSBjcmFzaGluZy4KICAgICBpZiAoaG9zdC0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcp
IHsKLSAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1
cmU6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9vd25lcikpOworICAgICAg
ICBtX3RleHR1cmVVcGRhdGVyID0gTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6Y3JlYXRl
KENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZW5kaWYgLy8gU0tJQQogCi0gICAgbV90ZXh0dXJlVXBkYXRlciA9IExheWVy
VGV4dHVyZVVwZGF0ZXJCaXRtYXA6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUo
bV9vd25lciksIGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7
CisgICAgbV90ZXh0dXJlVXBkYXRlciA9IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OmNyZWF0
ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGhvc3QtPmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDk0MDlhZTEyZTlmMzI2NzUyMzUwYWU2MGY0ZDMwYWY5OTJm
YmM5MTYuLjRlNGEzZmZhYTI2YTk5MDA5NTQyZjE5M2I2ZGMyNjYxNTE5MDgxZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNDUsMTQgKzQ1LDE0IEBAIGNsYXNzIExheWVy
VGV4dHVyZVVwZGF0ZXI7CiAvLyBBIExheWVyIHRoYXQgcmVxdWlyZXMgYSBHcmFwaGljc0NvbnRl
eHQgdG8gcmVuZGVyIGl0cyBjb250ZW50cy4KIGNsYXNzIENvbnRlbnRMYXllckNocm9taXVtIDog
cHVibGljIFRpbGVkTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q29udGVudExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93
bmVyID0gMCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IGNy
ZWF0ZShDQ0xheWVyRGVsZWdhdGUqKTsKIAogICAgIHZpcnR1YWwgfkNvbnRlbnRMYXllckNocm9t
aXVtKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKIAogcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hy
b21pdW0qIG93bmVyKTsKKyAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bShDQ0xheWVy
RGVsZWdhdGUqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwUmVzb3VyY2VzKCk7CiAgICAg
dmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5jcHAKaW5kZXggZDM2NzAzZjQxOTYwMDIzNjljYmJkNDcxNTA5MWE0Yjc4NWUx
YjBjYS4uZjQ2NzFmOWYzZjE0MTdiZWRhYWIzZGRmMjA5ZTFmNjA4MTJjNThlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXll
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2xp
ZW50KiBjbGllbnQpCiBHcmFwaGljc0xheWVyQ2hyb21pdW06On5HcmFwaGljc0xheWVyQ2hyb21p
dW0oKQogewogICAgIGlmIChtX2xheWVyKSB7Ci0gICAgICAgIG1fbGF5ZXItPnNldE93bmVyKDAp
OworICAgICAgICBtX2xheWVyLT5zZXREZWxlZ2F0ZSgwKTsKICAgICAgICAgbV9sYXllci0+Y2xl
YXJSZW5kZXJTdXJmYWNlKCk7CiAgICAgfQogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKLSAg
ICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRPd25lcigwKTsKKyAgICAgICAgbV9jb250ZW50c0xh
eWVyLT5zZXREZWxlZ2F0ZSgwKTsKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5jbGVhclJlbmRl
clN1cmZhY2UoKTsKICAgICB9CiAgICAgaWYgKG1fdHJhbnNmb3JtTGF5ZXIpIHsKLSAgICAgICAg
bV90cmFuc2Zvcm1MYXllci0+c2V0T3duZXIoMCk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIt
PnNldERlbGVnYXRlKDApOwogICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5jbGVhclJlbmRlclN1
cmZhY2UoKTsKICAgICB9CiB9CkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
Q2hyb21pdW06OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cikKIHsKICAgICBib29sIGNoaWxkcmVuQ2hhbmdlZCA9IGZhbHNlOwogICAgIGlmIChwbGF0Zm9y
bUxheWVyKSB7Ci0gICAgICAgIHBsYXRmb3JtTGF5ZXItPnNldE93bmVyKHRoaXMpOworICAgICAg
ICBwbGF0Zm9ybUxheWVyLT5zZXREZWxlZ2F0ZSh0aGlzKTsKICAgICAgICAgaWYgKG1fY29udGVu
dHNMYXllci5nZXQoKSAhPSBwbGF0Zm9ybUxheWVyKSB7CiAgICAgICAgICAgICBzZXR1cENvbnRl
bnRzTGF5ZXIocGxhdGZvcm1MYXllcik7CiAgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBw
bGF0Zm9ybUxheWVyOwpAQCAtNDE1LDcgKzQxNSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciogbGF5ZXIpCiAgICAgICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvclZpZGVvOwogICAgICAg
ICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBsYXllci0+
c2V0T3duZXIodGhpcyk7CisgICAgICAgIGxheWVyLT5zZXREZWxlZ2F0ZSh0aGlzKTsKICAgICAg
ICAgbGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgICAgICB1cGRhdGVDb250ZW50c1JlY3Qo
KTsKICAgICB9IGVsc2UgewpAQCAtNjg2LDYgKzY4NiwyNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlT3BhY2l0eU9uTGF5ZXIoKQogICAgIHByaW1hcnlMYXllcigpLT5zZXRP
cGFjaXR5KG1fb3BhY2l0eSk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjpkcmF3
c0NvbnRlbnQoKSBjb25zdAoreworICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpkcmF3c0NvbnRl
bnQoKTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnByZXNlcnZlczNEKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6cHJlc2VydmVzM0QoKTsKK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBjbGlwKQoreworICAgIHBhaW50R3JhcGhpY3NMYXllckNv
bnRlbnRzKGNvbnRleHQsIGNsaXApOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
bm90aWZ5U3luY1JlcXVpcmVkKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5ub3RpZnlTeW5jUmVxdWlyZWQodGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmgKaW5kZXggNWE4MjRjZTFlZGMxNWM0ZDcxZTAxZTFlZWZlZDYy
NThlNjhmMzZhOS4uOGIyMTNhODQwMzg1NzEzNDEwZTc3MzQxMGY0ZGI3M2VmMGMzMGYxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhp
Y3NMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAorI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVy
LmgiCiAKQEAgLTQwLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYXll
ckNocm9taXVtOwogCi1jbGFzcyBHcmFwaGljc0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgR3JhcGhp
Y3NMYXllciB7CitjbGFzcyBHcmFwaGljc0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgR3JhcGhpY3NM
YXllciwgcHVibGljIENDTGF5ZXJEZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NMYXll
ckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0xh
eWVyQ2hyb21pdW0oKTsKQEAgLTk0LDExICs5NSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldERlYnVnQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgdmlydHVhbCB2
b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgpOwogCi0g
ICAgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoKQotICAgIHsKLSAgICAgICAgaWYgKG1fY2xpZW50
KQotICAgICAgICAgICAgbV9jbGllbnQtPm5vdGlmeVN5bmNSZXF1aXJlZCh0aGlzKTsKLSAgICB9
CisgICAgLy8gVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaW1wbGVtZW50IHRoZSBDQ0xheWVyRGVs
ZWdhdGUgaW50ZXJmYWNlLgorICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgcHJlc2VydmVzM0QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjbGlwKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKCk7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGRhdGVPcGFjaXR5T25MYXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggNzFiYzBiNmI5ZGI2NTZiYzQ2MGY0Zjg1NjU0OTRmYTU3YWI1MGI4ZC4uNjQzZDE2Nzhm
OTE2NzhhNWY1NGIyMjdmNjY4NTM0NDZkMTcxODA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uY3BwCkBAIC0xMDgsMTMgKzEwOCwxMyBAQCBwcml2YXRlOgogICAgIExheWVyVGV4dHVy
ZVN1YkltYWdlIG1fdGV4U3ViSW1hZ2U7CiB9OwogCi1QYXNzUmVmUHRyPEltYWdlTGF5ZXJDaHJv
bWl1bT4gSW1hZ2VMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBv
d25lcikKK1Bhc3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBJbWFnZUxheWVyQ2hyb21pdW06
OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSW1hZ2VMYXllckNocm9taXVtKG93bmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbWFnZUxheWVyQ2hyb21pdW0oZGVsZWdhdGUpKTsKIH0KIAotSW1hZ2VMYXllckNocm9taXVt
OjpJbWFnZUxheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKLSAgICA6
IFRpbGVkTGF5ZXJDaHJvbWl1bShvd25lcikKK0ltYWdlTGF5ZXJDaHJvbWl1bTo6SW1hZ2VMYXll
ckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCisgICAgOiBUaWxlZExheWVyQ2hy
b21pdW0oZGVsZWdhdGUpCiAgICAgLCBtX2ltYWdlRm9yQ3VycmVudEZyYW1lKDApCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDRhZmUwNWQxNTFmOGIzNjM2Mjk2MzA0MzMx
MGEyMDk0OTQxODI5NTYuLmFkNWU2OTY2MGEwMzFhMzNhZTYxZjYxNjBkNDQ0NWVhN2VhNGMzMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIElt
YWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjsKIC8vIEEgTGF5ZXIgdGhhdCBjb250YWlucyBvbmx5IGFu
IEltYWdlIGVsZW1lbnQuCiBjbGFzcyBJbWFnZUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgVGlsZWRM
YXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUxheWVy
Q2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyID0gMCk7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVn
YXRlKik7CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFs
IGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CiAKIHByaXZhdGU6Ci0gICAgSW1hZ2VM
YXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOworICAgIGV4cGxpY2l0
IEltYWdlTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhbnVwUmVzb3VyY2VzKCk7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRh
dGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCBh
MGQzNDY1NmU4YzE1ZDUyZDA1ZTQwMmQyOTFmODU0MDUyMzhmNDdkLi4zZTlkZTBkYmNhZmFlMTU2
M2U1MDY4MzljMTRhYzRkODRhMzk0ZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtNTEs
MTMgKzUxLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIHN0YXRpYyBpbnQgc19uZXh0TGF5
ZXJJZCA9IDE7CiAKLVBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCitQYXNzUmVmUHRyPExheWVyQ2hyb21p
dW0+IExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bShvd25lcikpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkpOwogfQogCi1MYXllckNocm9t
aXVtOjpMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCi0gICAgOiBt
X293bmVyKG93bmVyKQorTGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdh
dGUqIGRlbGVnYXRlKQorICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICAsIG1fY29udGVu
dHNEaXJ0eShmYWxzZSkKICAgICAsIG1fbGF5ZXJJZChzX25leHRMYXllcklkKyspCiAgICAgLCBt
X3BhcmVudCgwKQpAQCAtMTI3LDggKzEyNyw4IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0TmVl
ZHNDb21taXQoKQogICAgIC8vIGNhbGwgc2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KCkgb24gdGhl
IFdlYlZpZXcsIHdoaWNoIHdpbGwgY2F1c2UgTGF5ZXJSZW5kZXJlckNocm9taXVtCiAgICAgLy8g
dG8gcmVuZGVyIGEgZnJhbWUuCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBoYXMgbm8gZWZmZWN0IG9u
IHJvb3QgbGF5ZXJzLgotICAgIGlmIChtX293bmVyKQotICAgICAgICBtX293bmVyLT5ub3RpZnlT
eW5jUmVxdWlyZWQoKTsKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+
bm90aWZ5U3luY1JlcXVpcmVkKCk7CiB9CiAKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0UGFyZW50
KExheWVyQ2hyb21pdW0qIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDdmNmZmYTc0YzVm
NmIyZjFmZWE5NzI4ZDg3MzcxNmU0NWRlYzY5OWUuLjkwZGY2OGQ1ZGM5ZWJhYzkyODJmNzAzOTk1
ZWJmMDUwOGVjYmU3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTM2LDcgKzM2LDYgQEAKIAog
I2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNp
bmNsdWRlICJHcmFwaGljc0xheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFj
ZUNocm9taXVtLmgiCkBAIC01NiwxMiArNTUsMjEgQEAgY2xhc3MgQ0NMYXllckltcGw7CiBjbGFz
cyBDQ0xheWVyVHJlZUhvc3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIAorY2xhc3MgQ0NM
YXllckRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5DQ0xheWVyRGVsZWdhdGUoKSB7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjbGlwKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgpID0gMDsKK307CisKIC8vIEJhc2UgY2xh
c3MgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzLiBTcGVjaWFsIGxheWVyIHR5cGVzIGFyZSBkZXJpdmVk
IGZyb20KIC8vIHRoaXMgY2xhc3MuCiBjbGFzcyBMYXllckNocm9taXVtIDogcHVibGljIFJlZkNv
dW50ZWQ8TGF5ZXJDaHJvbWl1bT4gewogICAgIGZyaWVuZCBjbGFzcyBMYXllclRpbGVyQ2hyb21p
dW07CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY3JlYXRl
KEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIgPSAwKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxMYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOwogCiAgICAgdmly
dHVhbCB+TGF5ZXJDaHJvbWl1bSgpOwogCkBAIC0xNDQsNyArMTUyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0R2VvbWV0cnlGbGlwcGVkKGJvb2wgZmxpcHBlZCkgeyBtX2dlb21ldHJ5RmxpcHBl
ZCA9IGZsaXBwZWQ7IHNldE5lZWRzQ29tbWl0KCk7IH0KICAgICBib29sIGdlb21ldHJ5RmxpcHBl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbWV0cnlGbGlwcGVkOyB9CiAKLSAgICBib29sIHByZXNl
cnZlczNEKCkgeyByZXR1cm4gbV9vd25lciAmJiBtX293bmVyLT5wcmVzZXJ2ZXMzRCgpOyB9Cisg
ICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIHsgcmV0dXJuIG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+
cHJlc2VydmVzM0QoKTsgfQogCiAgICAgdm9pZCBzZXRVc2VzTGF5ZXJTY2lzc29yKGJvb2wgdXNl
c0xheWVyU2Npc3NvcikgeyBtX3VzZXNMYXllclNjaXNzb3IgPSB1c2VzTGF5ZXJTY2lzc29yOyB9
CiAgICAgYm9vbCB1c2VzTGF5ZXJTY2lzc29yKCkgY29uc3QgeyByZXR1cm4gbV91c2VzTGF5ZXJT
Y2lzc29yOyB9CkBAIC0xNTQsNyArMTYyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IHNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Kik7CiAKLSAgICB2b2lkIHNldE93bmVy
KEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpIHsgbV9vd25lciA9IG93bmVyOyB9CisgICAg
dm9pZCBzZXREZWxlZ2F0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKSB7IG1fZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsgfQogCiAgICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoTGF5ZXJDaHJvbWl1bSog
bGF5ZXIpIHsgbV9yZXBsaWNhTGF5ZXIgPSBsYXllcjsgfQogICAgIExheWVyQ2hyb21pdW0qIHJl
cGxpY2FMYXllcigpIHsgcmV0dXJuIG1fcmVwbGljYUxheWVyLmdldCgpOyB9CkBAIC0yMDksOCAr
MjE3LDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYW51cFJlc291cmNlc1JlY3Vyc2l2ZSgpOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgR3JhcGhpY3NMYXllckNocm9taXVtKiBtX293bmVyOwotICAgIGV4
cGxpY2l0IExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7CisgICAg
Q0NMYXllckRlbGVnYXRlKiBtX2RlbGVnYXRlOworICAgIGV4cGxpY2l0IExheWVyQ2hyb21pdW0o
Q0NMYXllckRlbGVnYXRlKik7CiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCB0byBjbGVhbiB1cCBy
ZXNvdXJjZXMgYmVpbmcgaGVsZCBpbiB0aGUgc2FtZSBjb250ZXh0IGFzCiAgICAgLy8gbGF5ZXJS
ZW5kZXJlckNvbnRleHQoKS4gU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2Qg
aWYgdGhleQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcAppbmRleCBiNmUzNTA2ZmNm
ZmYzYTU2ODFhNTUzZjQxYTZmNWViMjQ4ZTgxZTcwLi4yMDE0Njg3NTU4MzExZGYwODU3MzRjNGJj
NThiNGE3YmRhMzA3ZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcApAQCAt
MzYsMTMgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxQbHVn
aW5MYXllckNocm9taXVtPiBQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXll
ckNocm9taXVtKiBvd25lcikKK1Bhc3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bT4gUGx1Z2lu
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5MYXllckNocm9taXVtKG93bmVyKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5MYXllckNocm9taXVtKGRlbGVnYXRlKSk7CiB9CiAKLVBs
dWdpbkxheWVyQ2hyb21pdW06OlBsdWdpbkxheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9t
aXVtKiBvd25lcikKLSAgICA6IExheWVyQ2hyb21pdW0ob3duZXIpCitQbHVnaW5MYXllckNocm9t
aXVtOjpQbHVnaW5MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCisgICAg
OiBMYXllckNocm9taXVtKGRlbGVnYXRlKQogICAgICwgbV90ZXh0dXJlSWQoMCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdp
bkxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAppbmRleCBkMWNmYzgwMjllYjIxZjRmMjZjMmI1Y2U3
ZWI2OGUwNjQzYzE5M2JiLi4xODM0ZGZkODI2YjlkMTI0MmQyZjk0NDIzOTc1ODRlNzVhY2U2NGRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bHVnaW5MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIC8vIEEgTGF5ZXIgY29udGFpbmluZyBhIHRoZSByZW5kZXJlZCBvdXRw
dXQgb2YgYSBwbHVnaW4gaW5zdGFuY2UuCiBjbGFzcyBQbHVnaW5MYXllckNocm9taXVtIDogcHVi
bGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdp
bkxheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyID0gMCk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5
ZXJEZWxlZ2F0ZSogPSAwKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBj
cmVhdGVDQ0xheWVySW1wbCgpOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKIAogcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBQbHVnaW5MYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIp
OworICAgIGV4cGxpY2l0IFBsdWdpbkxheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKik7CiAg
ICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcAppbmRleCA2YmQyODIxZGNmMWRiMjkxZTM0NTU3ZDUyMmRmZWJiNmRiOTE0NGY5Li5iOGFk
MjBhODQ5MGQyYzkzNDEzNzRiNTRhMmQ2MWU5YmI1OTFkY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTYzLDggKzYzLDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8TWFu
YWdlZFRleHR1cmU+IG1fdGV4OwogfTsKIAotVGlsZWRMYXllckNocm9taXVtOjpUaWxlZExheWVy
Q2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKLSAgICA6IExheWVyQ2hyb21p
dW0ob3duZXIpCitUaWxlZExheWVyQ2hyb21pdW06OlRpbGVkTGF5ZXJDaHJvbWl1bShDQ0xheWVy
RGVsZWdhdGUqIGRlbGVnYXRlKQorICAgIDogTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKICAgICAs
IG1fdGlsaW5nT3B0aW9uKEF1dG9UaWxlKQogICAgICwgbV90ZXh0dXJlRm9ybWF0KEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX0VOVU0pCiAgICAgLCBtX3NraXBzRHJhdyhmYWxzZSkKQEAgLTEy
Miw3ICsxMjIsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRU
aWxpbmdPcHRpb24oKQogCiBib29sIFRpbGVkTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkg
Y29uc3QKIHsKLSAgICBpZiAoIW1fb3duZXIpCisgICAgaWYgKCFtX2RlbGVnYXRlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1fdGlsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCmluZGV4IDY5MjZlM2Q1M2MwODc0MjBkNGFmMTkzZWY2NWQwNzgxNTM0NGM4NzYuLjcz
MjBkNGI2OWIyMDAyNzkwZGU1NmZiNWY0NmVlNThhNjlmMGViNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHByb3RlY3RU
aWxlVGV4dHVyZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgZXhwbGljaXQgVGlsZWRMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSopOwor
ICAgIGV4cGxpY2l0IFRpbGVkTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBjbGVhbnVwUmVzb3VyY2VzKCk7CiAgICAgdm9pZCB1cGRhdGVUaWxlU2l6
ZUFuZFRpbGluZ09wdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXgg
MTg4ZTJmMGNjZGI1YjlhNDc0NGNmNWIzNjM2NjhiMjgxZDgxYzU2Yy4uMWE5NDk4ODE3N2UwOTAy
MTdlM2NlYmJmNmRmZTdiMWNjNzU3OTE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0u
Y3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNp
bmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogI2luY2x1ZGUgIlZpZGVvRnJh
bWVDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlZpZGVvRnJhbWVQcm92aWRlci5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJJbXBsLmgiCkBAIC00NSwxNCArNDQsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVt
OjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciwKK1Bhc3NSZWZQdHI8VmlkZW9M
YXllckNocm9taXVtPiBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUq
IGRlbGVnYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBWaWRlb0xheWVyQ2hyb21pdW0ob3duZXIsIHByb3ZpZGVyKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb0xheWVyQ2hyb21pdW0oZGVsZWdhdGUsIHByb3ZpZGVy
KSk7CiB9CiAKLVZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSogb3duZXIsIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCi0gICAg
OiBMYXllckNocm9taXVtKG93bmVyKQorVmlkZW9MYXllckNocm9taXVtOjpWaWRlb0xheWVyQ2hy
b21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92
aWRlcikKKyAgICA6IExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCiAgICAgLCBtX3NraXBzRHJhdyh0
cnVlKQogICAgICwgbV9mcmFtZUZvcm1hdChWaWRlb0ZyYW1lQ2hyb21pdW06OkludmFsaWQpCiAg
ICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQpAQCAtODAsMTEgKzc5LDcgQEAgdm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkK
IHsKLSAgICBpZiAoIW1fY29udGVudHNEaXJ0eSB8fCAhbV9vd25lcikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gc3RhdGljX2Nhc3Q8UmVuZGVy
TGF5ZXJCYWNraW5nKj4obV9vd25lci0+Y2xpZW50KCkpOwotICAgIGlmICghYmFja2luZyB8fCBi
YWNraW5nLT5wYWludGluZ0dvZXNUb1dpbmRvdygpKQorICAgIGlmICghbV9jb250ZW50c0RpcnR5
IHx8ICFtX2RlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoZHJhd3NDb250
ZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCA5Zjc5MDMyNTZmYmU4ODZh
YzRlZTZjOWRmNmRhYjM2NjBjZjNlNTFmLi42ZDk0N2UyMDJmYmU5NzhjYzA1NzcyNGJkZTllZDNl
OTZhMjVlNWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAtNDQsNyArNDQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWaWRlb0xheWVyQ2hyb21pdW0gOiBwdWJsaWMg
TGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb0xh
eWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyID0gMCwKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVs
ZWdhdGUqID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqID0gMCk7CiAgICAgdmlydHVhbCB+VmlkZW9MYXllckNo
cm9taXVtKCk7CiAKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgT3duUHRyPE1h
bmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgfTsKIAotICAgIFZpZGVvTGF5ZXJDaHJvbWl1
bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyLCBWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKKyAg
ICBWaWRlb0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiwgVmlkZW9GcmFtZVByb3ZpZGVy
Kik7CiAKICAgICBzdGF0aWMgR0MzRGVudW0gZGV0ZXJtaW5lVGV4dHVyZUZvcm1hdChjb25zdCBW
aWRlb0ZyYW1lQ2hyb21pdW0qKTsKICAgICBzdGF0aWMgSW50U2l6ZSBjb21wdXRlVmlzaWJsZVNp
emUoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiwgdW5zaWduZWQgcGxhbmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZDEwZDRmNTRiMTI2ZmJjNTUwZDcxZTU1OGI1MjUz
NTA1MzE2M2JkNS4uNDZjMTk1OGE3YzU3Y2QyMzc0MmJiODZhNGFhZTJmYTMwMzQ5NGUxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCkBAIC00MSwxMyArNDEsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gV2ViR0xM
YXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKK1Bhc3NS
ZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xh
eWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xM
YXllckNocm9taXVtKG93bmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTExheWVy
Q2hyb21pdW0oZGVsZWdhdGUpKTsKIH0KIAotV2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVy
Q2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKLSAgICA6IENhbnZhc0xheWVy
Q2hyb21pdW0ob3duZXIpCitXZWJHTExheWVyQ2hyb21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bShD
Q0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQorICAgIDogQ2FudmFzTGF5ZXJDaHJvbWl1bShkZWxl
Z2F0ZSkKICAgICAsIG1fY29udGV4dCgwKQogICAgICwgbV90ZXh0dXJlQ2hhbmdlZCh0cnVlKQog
ICAgICwgbV9jb250ZXh0U3VwcG9ydHNSYXRlTGltaXRpbmdFeHRlbnNpb24oZmFsc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExh
eWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDIxNTUwZGZjMTQxM2YwYjQ3NmQ1MGIwNjMyYWE4
ZjUyNzliYzFjMDQuLmE1OGQ1NjI5OWJhOGM2MmEwNmNjOTYxOWU4OWI5ODA4NTU2ODc1OWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdM
TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFdlYkdM
TGF5ZXJDaHJvbWl1bVJhdGVMaW1pdFRhc2s7CiAvLyBBIExheWVyIGNvbnRhaW5pbmcgYSBXZWJH
TCBjYW52YXMKIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNo
cm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21p
dW0+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyID0gMCk7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9
IDApOwogCiAgICAgdmlydHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7CiAKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgeyByZXR1cm4g
bV9jb250ZXh0OyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViR0xMYXllckNocm9taXVt
KEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOworICAgIGV4cGxpY2l0IFdlYkdMTGF5ZXJD
aHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqKTsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xMYXllckNo
cm9taXVtUmF0ZUxpbWl0VGFzazsKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBsYXllclJlbmRl
cmVyQ29udGV4dCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>