<?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>123477</bug_id>
          
          <creation_ts>2013-10-29 16:05:21 -0700</creation_ts>
          <short_desc>Adding addRemoteTrack and removeRemoteTrack functions to MediaStreamDescriptor and MediaStream</short_desc>
          <delta_ts>2013-11-01 11:01:32 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>123443</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Thiago de Barros Lacerda">thiago.lacerda</reporter>
          <assigned_to name="Thiago de Barros Lacerda">thiago.lacerda</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>pnormand</cc>
    
    <cc>tommyw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>944660</commentid>
    <comment_count>0</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-29 16:05:21 -0700</bug_when>
    <thetext>When the backend report that a remote track has been added or removed by a remote peer, we must be able to add it to its MediaStream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944662</commentid>
    <comment_count>1</comment_count>
      <attachid>215441</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-29 16:10:39 -0700</bug_when>
    <thetext>Created attachment 215441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945282</commentid>
    <comment_count>2</comment_count>
      <attachid>215441</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-30 18:13:16 -0700</bug_when>
    <thetext>Comment on attachment 215441
Patch

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

As we talked about on irc, it would be good to get rid of MediaStreamDescriptor::addSource and MediaStreamDescriptor::removeSource.

&gt; Source/WebCore/ChangeLog:27
&gt; +        * Modules/mediastream/MediaStream.cpp:
&gt; +        (WebCore::MediaStream::addTrack):
&gt; +        (WebCore::MediaStream::removeTrack):
&gt; +        (WebCore::MediaStream::addRemoteSource):
&gt; +        (WebCore::MediaStream::removeRemoteSource):
&gt; +        (WebCore::MediaStream::addRemoteTrack):
&gt; +        (WebCore::MediaStream::removeRemoteTrack):
&gt; +        (WebCore::MediaStream::getTrackVector):
&gt; +        * Modules/mediastream/MediaStream.h:
&gt; +        * Modules/mediastream/MediaStreamTrack.h:
&gt; +        (WebCore::MediaStreamTrack::privateTrack):
&gt; +        * platform/mediastream/MediaStreamDescriptor.cpp:
&gt; +        (WebCore::MediaStreamDescriptor::addRemoteTrack):
&gt; +        (WebCore::MediaStreamDescriptor::removeRemoteTrack):
&gt; +        * platform/mediastream/MediaStreamDescriptor.h:

Comments please.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:163
&gt; +    MediaStreamTrackVector* tracks = getTrackVector(track-&gt;source()-&gt;type());

This won&apos;t work because &quot;track&quot; is NULL after begin used above. You need to add something like &quot;RefPtr&lt;MediaStreamTrack&gt; track = prpTrack&quot; before the PassRefPtr is dereferenced.

Nit: maybe change the name to &quot;getTrackVectorForType&quot;?

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:196
&gt; +    MediaStreamTrackVector* tracks = getTrackVector(track-&gt;source()-&gt;type());
&gt; +
&gt; +    if (!tracks)
&gt; +        return false;
&gt;  
&gt; +    size_t pos = tracks-&gt;find(track);

Ditto about using a PassRefPtr.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:279
&gt; +    RefPtr&lt;MediaStreamTrackPrivate&gt; track = MediaStreamTrackPrivate::create(source);
&gt; +    addRemoteTrack(track.get());

Nit: this can be done on a single line.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:342
&gt;          scheduleDispatchEvent(MediaStreamTrackEvent::create(eventNames().removetrackEvent, false, false, track.release()));

Why don&apos;t we dispatch the event in removeTrack?

&gt; Source/WebCore/Modules/mediastream/MediaStream.h:101
&gt;      virtual void addRemoteSource(MediaStreamSource*) OVERRIDE FINAL;
&gt;      virtual void removeRemoteSource(MediaStreamSource*) OVERRIDE FINAL;
&gt; +    virtual void addRemoteTrack(MediaStreamTrackPrivate*) OVERRIDE FINAL;
&gt; +    virtual void removeRemoteTrack(MediaStreamTrackPrivate*) OVERRIDE FINAL;

Why do we need both versions, can we just have add/removeRemoteTrack?

&gt; Source/WebCore/platform/mediastream/MediaStreamDescriptor.h:53
&gt;      virtual void addRemoteSource(MediaStreamSource*) = 0;
&gt;      virtual void removeRemoteSource(MediaStreamSource*) = 0;

Can these be removed - is there ever a reason to pass the source directly to MediaStream instead of creating the private track and passing that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945341</commentid>
    <comment_count>3</comment_count>
      <attachid>215441</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-30 20:38:41 -0700</bug_when>
    <thetext>Comment on attachment 215441
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:163
&gt;&gt; +    MediaStreamTrackVector* tracks = getTrackVector(track-&gt;source()-&gt;type());
&gt; 
&gt; This won&apos;t work because &quot;track&quot; is NULL after begin used above. You need to add something like &quot;RefPtr&lt;MediaStreamTrack&gt; track = prpTrack&quot; before the PassRefPtr is dereferenced.
&gt; 
&gt; Nit: maybe change the name to &quot;getTrackVectorForType&quot;?

But here I&apos;m passing the Enum type to the getTrackVector, not the track itself, will it really have deref called?

getTrackVectorForType sounds better.

&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:196
&gt;&gt; +    size_t pos = tracks-&gt;find(track);
&gt; 
&gt; Ditto about using a PassRefPtr.

OK, here I agree that a deref will happen.

&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:279
&gt;&gt; +    addRemoteTrack(track.get());
&gt; 
&gt; Nit: this can be done on a single line.

OK.

&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:342
&gt;&gt;          scheduleDispatchEvent(MediaStreamTrackEvent::create(eventNames().removetrackEvent, false, false, track.release()));
&gt; 
&gt; Why don&apos;t we dispatch the event in removeTrack?

Because removeTrack (receiving only a track) is used by both removeRemoteTrack and removeTrack (called by JS, which is not supposed to fire the event).

&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.h:101
&gt;&gt; +    virtual void removeRemoteTrack(MediaStreamTrackPrivate*) OVERRIDE FINAL;
&gt; 
&gt; Why do we need both versions, can we just have add/removeRemoteTrack?

What do you mean with both versions?

&gt;&gt; Source/WebCore/platform/mediastream/MediaStreamDescriptor.h:53
&gt;&gt;      virtual void removeRemoteSource(MediaStreamSource*) = 0;
&gt; 
&gt; Can these be removed - is there ever a reason to pass the source directly to MediaStream instead of creating the private track and passing that?

Yes, as we have decided on irc, they will be removed. But removing them will affect more files and will increase the size of this patch, getting out of its scope and making the review more difficult.
I can do it in a separate patch. Is that OK for you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945368</commentid>
    <comment_count>4</comment_count>
      <attachid>215441</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-30 21:45:48 -0700</bug_when>
    <thetext>Comment on attachment 215441
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:163
&gt;&gt;&gt; +    MediaStreamTrackVector* tracks = getTrackVector(track-&gt;source()-&gt;type());
&gt;&gt; 
&gt;&gt; This won&apos;t work because &quot;track&quot; is NULL after begin used above. You need to add something like &quot;RefPtr&lt;MediaStreamTrack&gt; track = prpTrack&quot; before the PassRefPtr is dereferenced.
&gt;&gt; 
&gt;&gt; Nit: maybe change the name to &quot;getTrackVectorForType&quot;?
&gt; 
&gt; But here I&apos;m passing the Enum type to the getTrackVector, not the track itself, will it really have deref called?
&gt; 
&gt; getTrackVectorForType sounds better.

The patch may be misleading because it doesn&apos;t apply, but it looks like this function has both &quot;getTrackById(track-&gt;id())&quot; and &quot;getTrackVector(track-&gt;source()-&gt;type())&quot;.

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:342
&gt;&gt;&gt;          scheduleDispatchEvent(MediaStreamTrackEvent::create(eventNames().removetrackEvent, false, false, track.release()));
&gt;&gt; 
&gt;&gt; Why don&apos;t we dispatch the event in removeTrack?
&gt; 
&gt; Because removeTrack (receiving only a track) is used by both removeRemoteTrack and removeTrack (called by JS, which is not supposed to fire the event).

OK. A comment explaining that (maybe in removeTrack?) would be useful.

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.h:101
&gt;&gt;&gt; +    virtual void removeRemoteTrack(MediaStreamTrackPrivate*) OVERRIDE FINAL;
&gt;&gt; 
&gt;&gt; Why do we need both versions, can we just have add/removeRemoteTrack?
&gt; 
&gt; What do you mean with both versions?

addRemoteSource and addRemoteTrack, removeRemoteSource and removeRemoteTrack.

&gt;&gt;&gt; Source/WebCore/platform/mediastream/MediaStreamDescriptor.h:53
&gt;&gt;&gt;      virtual void removeRemoteSource(MediaStreamSource*) = 0;
&gt;&gt; 
&gt;&gt; Can these be removed - is there ever a reason to pass the source directly to MediaStream instead of creating the private track and passing that?
&gt; 
&gt; Yes, as we have decided on irc, they will be removed. But removing them will affect more files and will increase the size of this patch, getting out of its scope and making the review more difficult.
&gt; I can do it in a separate patch. Is that OK for you?

That sounds fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945504</commentid>
    <comment_count>5</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-31 06:40:58 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 215441 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215441&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:163
&gt; &gt;&gt;&gt; +    MediaStreamTrackVector* tracks = getTrackVector(track-&gt;source()-&gt;type());
&gt; &gt;&gt; 
&gt; &gt;&gt; This won&apos;t work because &quot;track&quot; is NULL after begin used above. You need to add something like &quot;RefPtr&lt;MediaStreamTrack&gt; track = prpTrack&quot; before the PassRefPtr is dereferenced.
&gt; &gt;&gt; 
&gt; &gt;&gt; Nit: maybe change the name to &quot;getTrackVectorForType&quot;?
&gt; &gt; 
&gt; &gt; But here I&apos;m passing the Enum type to the getTrackVector, not the track itself, will it really have deref called?
&gt; &gt; 
&gt; &gt; getTrackVectorForType sounds better.
&gt; 
&gt; The patch may be misleading because it doesn&apos;t apply, but it looks like this function has both &quot;getTrackById(track-&gt;id())&quot; and &quot;getTrackVector(track-&gt;source()-&gt;type())&quot;.

The patch was based in https://bugs.webkit.org/show_bug.cgi?id=123443, which changed a lot. I will update this one and push the updated patch.

&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:342
&gt; &gt;&gt;&gt;          scheduleDispatchEvent(MediaStreamTrackEvent::create(eventNames().removetrackEvent, false, false, track.release()));
&gt; &gt;&gt; 
&gt; &gt;&gt; Why don&apos;t we dispatch the event in removeTrack?
&gt; &gt; 
&gt; &gt; Because removeTrack (receiving only a track) is used by both removeRemoteTrack and removeTrack (called by JS, which is not supposed to fire the event).
&gt; 
&gt; OK. A comment explaining that (maybe in removeTrack?) would be useful.
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.h:101
&gt; &gt;&gt;&gt; +    virtual void removeRemoteTrack(MediaStreamTrackPrivate*) OVERRIDE FINAL;
&gt; &gt;&gt; 
&gt; &gt;&gt; Why do we need both versions, can we just have add/removeRemoteTrack?
&gt; &gt; 
&gt; &gt; What do you mean with both versions?
&gt; 
&gt; addRemoteSource and addRemoteTrack, removeRemoteSource and removeRemoteTrack.

The removal of those will be part of the other patch to remove add/remove/Source and remote source.
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/mediastream/MediaStreamDescriptor.h:53
&gt; &gt;&gt;&gt;      virtual void removeRemoteSource(MediaStreamSource*) = 0;
&gt; &gt;&gt; 
&gt; &gt;&gt; Can these be removed - is there ever a reason to pass the source directly to MediaStream instead of creating the private track and passing that?
&gt; &gt; 
&gt; &gt; Yes, as we have decided on irc, they will be removed. But removing them will affect more files and will increase the size of this patch, getting out of its scope and making the review more difficult.
&gt; &gt; I can do it in a separate patch. Is that OK for you?
&gt; 
&gt; That sounds fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945719</commentid>
    <comment_count>6</comment_count>
      <attachid>215681</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-31 15:31:32 -0700</bug_when>
    <thetext>Created attachment 215681
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945909</commentid>
    <comment_count>7</comment_count>
      <attachid>215681</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-11-01 09:46:10 -0700</bug_when>
    <thetext>Comment on attachment 215681
Updated patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        (WebCore::MediaStream::removeTrack): Splitted in two parts that can be used by old removeTrack and new
&gt; +        removeRemoteTrack.
&gt; +
&gt; +        (WebCore::MediaStream::addRemoteSource): Reusing code in new addTrack method.

Nit: the blank lines between methods in the same file are not necessary.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:196
&gt; +bool MediaStream::removeTrack(PassRefPtr&lt;MediaStreamTrack&gt; track)
&gt; +{
&gt; +    // This is a common part used by removeTrack called by JavaScript
&gt; +    // and removeRemoteTrack and only removeRemoteTrack must fire removetrack event
&gt; +    RefPtr&lt;MediaStreamTrack&gt; trackRef = track;

Nit: the convention is to prefix the PassRefPtr name with prp: &quot;Unless the use of the argument is very simple, the argument should be transferred to a RefPtr at the start of the function; the argument can be named with a “prp” prefix in such cases.&quot;

http://www.webkit.org/coding/RefPtr.html

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:197
&gt; +    MediaStreamTrackVector* tracks = getTrackVectorForType(trackRef-&gt;source()-&gt;type());

Nit: track-&gt;type() returns the same thing as track-&gt;source()-&gt;type()

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:302
&gt; +    Vector&lt;int&gt; tracksToRemove;
&gt; +    for (size_t i = 0; i &lt; tracks-&gt;size(); ++i) {
&gt; +        if ((*tracks)[i]-&gt;source() == source)
&gt; +            tracksToRemove.append(i);
&gt;      }

Nit: I know this isn&apos;t new code, but you could clean this up by using Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt; and &quot;for (auto ...&quot; here and you wouldn&apos;t have to loop backwards below.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:322
&gt; +    switch (privateTrack-&gt;source()-&gt;type()) {

Nit: privateTrack-&gt;type()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945920</commentid>
    <comment_count>8</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-11-01 10:12:44 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 215681 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215681&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:19
&gt; &gt; +        (WebCore::MediaStream::removeTrack): Splitted in two parts that can be used by old removeTrack and new
&gt; &gt; +        removeRemoteTrack.
&gt; &gt; +
&gt; &gt; +        (WebCore::MediaStream::addRemoteSource): Reusing code in new addTrack method.
&gt; 
&gt; Nit: the blank lines between methods in the same file are not necessary.

Got it.

&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:196
&gt; &gt; +bool MediaStream::removeTrack(PassRefPtr&lt;MediaStreamTrack&gt; track)
&gt; &gt; +{
&gt; &gt; +    // This is a common part used by removeTrack called by JavaScript
&gt; &gt; +    // and removeRemoteTrack and only removeRemoteTrack must fire removetrack event
&gt; &gt; +    RefPtr&lt;MediaStreamTrack&gt; trackRef = track;
&gt; 
&gt; Nit: the convention is to prefix the PassRefPtr name with prp: &quot;Unless the use of the argument is very simple, the argument should be transferred to a RefPtr at the start of the function; the argument can be named with a “prp” prefix in such cases.&quot;
&gt; 
&gt; http://www.webkit.org/coding/RefPtr.html

OK, changing that.

&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:197
&gt; &gt; +    MediaStreamTrackVector* tracks = getTrackVectorForType(trackRef-&gt;source()-&gt;type());
&gt; 
&gt; Nit: track-&gt;type() returns the same thing as track-&gt;source()-&gt;type()

Here I&apos;m dealing with MediaStreamTrack, and it does not have type() method. Maybe you are confusing it with MediaStreamTrackPrivate?

&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:302
&gt; &gt; +    Vector&lt;int&gt; tracksToRemove;
&gt; &gt; +    for (size_t i = 0; i &lt; tracks-&gt;size(); ++i) {
&gt; &gt; +        if ((*tracks)[i]-&gt;source() == source)
&gt; &gt; +            tracksToRemove.append(i);
&gt; &gt;      }
&gt; 
&gt; Nit: I know this isn&apos;t new code, but you could clean this up by using Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt; and &quot;for (auto ...&quot; here and you wouldn&apos;t have to loop backwards below.

I need the indexes to remove the track from the vector. But in fact I can reduce this code to only one loop, by removing the tracks while iterating the vector backwards.

&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:322
&gt; &gt; +    switch (privateTrack-&gt;source()-&gt;type()) {
&gt; 
&gt; Nit: privateTrack-&gt;type()

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945921</commentid>
    <comment_count>9</comment_count>
      <attachid>215681</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-11-01 10:17:48 -0700</bug_when>
    <thetext>Comment on attachment 215681
Updated patch

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

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:197
&gt;&gt;&gt; +    MediaStreamTrackVector* tracks = getTrackVectorForType(trackRef-&gt;source()-&gt;type());
&gt;&gt; 
&gt;&gt; Nit: track-&gt;type() returns the same thing as track-&gt;source()-&gt;type()
&gt; 
&gt; Here I&apos;m dealing with MediaStreamTrack, and it does not have type() method. Maybe you are confusing it with MediaStreamTrackPrivate?

Oops :-O.

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:302
&gt;&gt;&gt;      }
&gt;&gt; 
&gt;&gt; Nit: I know this isn&apos;t new code, but you could clean this up by using Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt; and &quot;for (auto ...&quot; here and you wouldn&apos;t have to loop backwards below.
&gt; 
&gt; I need the indexes to remove the track from the vector. But in fact I can reduce this code to only one loop, by removing the tracks while iterating the vector backwards.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945922</commentid>
    <comment_count>10</comment_count>
      <attachid>215734</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-11-01 10:17:56 -0700</bug_when>
    <thetext>Created attachment 215734
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945946</commentid>
    <comment_count>11</comment_count>
      <attachid>215734</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-01 11:01:29 -0700</bug_when>
    <thetext>Comment on attachment 215734
Updated patch

Clearing flags on attachment: 215734

Committed r158438: &lt;http://trac.webkit.org/changeset/158438&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945947</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-01 11:01:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215441</attachid>
            <date>2013-10-29 16:10:39 -0700</date>
            <delta_ts>2013-10-31 15:31:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123477-20131029201038.patch</filename>
            <type>text/plain</type>
            <size>13578</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTdiYTNlYThkOGEzMDU3
MTM3YjYxYTM1YTlhN2E2ZDIxNzYxYzhlYS4uMTllZThiZDI3MTliYzM4MWY0OTBjMzU2NWMyZTZh
YTQwN2U5M2I3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTEwLTI5ICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIEFkZGluZyBhZGRSZW1vdGVUcmFjayBhbmQgcmVtb3ZlUmVtb3RlVHJhY2sgZnVuY3Rp
b25zIHRvIE1lZGlhU3RyZWFtRGVzY3JpcHRvciBhbmQgTWVkaWFTdHJlYW0KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQ3NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdGhlIGJhY2tlbmQgcmVw
b3J0IHRoYXQgYSByZW1vdGUgdHJhY2sgaGFzIGJlZW4gYWRkZWQgb3IgcmVtb3ZlZCBieSBhIHJl
bW90ZSBwZWVyLAorICAgICAgICB3ZSBtdXN0IGJlIGFibGUgdG8gYWRkIGl0IHRvIGl0cyBNZWRp
YVN0cmVhbQorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6cmVtb3Zl
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFJlbW90ZVNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6cmVtb3ZlUmVtb3RlU291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphZGRSZW1vdGVUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbTo6cmVtb3ZlUmVtb3RlVHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW06OmdldFRyYWNrVmVjdG9yKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpwcml2
YXRlVHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVz
Y3JpcHRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmFk
ZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6
cmVtb3ZlUmVtb3RlVHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtRGVzY3JpcHRvci5oOgorCiAyMDEzLTEwLTI5ICBIdWdvIFBhcmVudGUgTGltYSAgPGh1
Z28ubGltYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIEFkZGluZyBOaXggZmlsZXMgaW4gU291
cmNlL1BsYXRmb3JtIHRvIHRydW5rCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDQ2ODljMjNkZTYwNjM0ZDcwODMzNjk3NzFk
M2E4ZWVhYThiMzQxNzcuLmIwMDkzYzljN2EwZDg4YWYwNmFhMjgwY2JmN2RhZGJmMzE1NTgyMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uY3BwCkBAIC0xNTIsMjQgKzE1MiwyMyBAQCB2b2lkIE1lZGlhU3RyZWFtOjphZGRUcmFjayhQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRpb25Db2RlJgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNr
ID0gcHJwVHJhY2s7CisgICAgYWRkVHJhY2socHJwVHJhY2spOworfQorCitib29sIE1lZGlhU3Ry
ZWFtOjphZGRUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrKQorewogICAg
IGlmIChnZXRUcmFja0J5SWQodHJhY2stPmlkKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHN3aXRjaCAodHJhY2stPnNvdXJjZSgpLT50eXBlKCkpIHsK
LSAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpBdWRpbzoKLSAgICAgICAgbV9hdWRpb1RyYWNr
cy5hcHBlbmQodHJhY2spOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhU3RyZWFtU291
cmNlOjpWaWRlbzoKLSAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQodHJhY2spOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpOb25lOgotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIE1lZGlhU3RyZWFt
VHJhY2tWZWN0b3IqIHRyYWNrcyA9IGdldFRyYWNrVmVjdG9yKHRyYWNrLT5zb3VyY2UoKS0+dHlw
ZSgpKTsKKworICAgIGlmICghdHJhY2tzKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICB0
cmFja3MtPmFwcGVuZCh0cmFjayk7CiAgICAgdHJhY2stPmFkZE9ic2VydmVyKHRoaXMpOwotICAg
IG1fZGVzY3JpcHRvci0+YWRkU291cmNlKHRyYWNrLT5zb3VyY2UoKSk7CisgICAgbV9kZXNjcmlw
dG9yLT5hZGRUcmFjaygmdHJhY2stPnByaXZhdGVUcmFjaygpKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xODQsMjggKzE4MywyMiBA
QCB2b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+IHBycFRyYWNrLCBFeGNlcHRpb25DbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CisgICAgcmVtb3ZlVHJh
Y2socHJwVHJhY2spOworfQogCi0gICAgc2l6ZV90IHBvcyA9IG5vdEZvdW5kOwotICAgIHN3aXRj
aCAodHJhY2stPnNvdXJjZSgpLT50eXBlKCkpIHsKLSAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNl
OjpBdWRpbzoKLSAgICAgICAgcG9zID0gbV9hdWRpb1RyYWNrcy5maW5kKHRyYWNrKTsKLSAgICAg
ICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIG1fYXVkaW9UcmFja3MucmVtb3Zl
KHBvcyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlZpZGVv
OgotICAgICAgICBwb3MgPSBtX3ZpZGVvVHJhY2tzLmZpbmQodHJhY2spOwotICAgICAgICBpZiAo
cG9zICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgbV92aWRlb1RyYWNrcy5yZW1vdmUocG9zKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6Tm9uZToKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KK2Jvb2wgTWVk
aWFTdHJlYW06OnJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sp
Cit7CisgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciogdHJhY2tzID0gZ2V0VHJhY2tWZWN0b3Io
dHJhY2stPnNvdXJjZSgpLT50eXBlKCkpOworCisgICAgaWYgKCF0cmFja3MpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAorICAgIHNpemVfdCBwb3MgPSB0cmFja3MtPmZpbmQodHJhY2spOwogICAg
IGlmIChwb3MgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisgICAgdHJhY2tzLT5yZW1vdmUocG9zKTsKKyAgICBtX2Rlc2NyaXB0b3ItPnJlbW92
ZVRyYWNrKCZ0cmFjay0+cHJpdmF0ZVRyYWNrKCkpOwogICAgIC8vIFRoZXJlIGNhbiBiZSBvdGhl
ciB0cmFja3MgdXNpbmcgdGhlIHNhbWUgc291cmNlIGluIHRoZSBzYW1lIE1lZGlhU3RyZWFtLAog
ICAgIC8vIGxpa2Ugd2hlbiBNZWRpYVN0cmVhbVRyYWNrOjpjbG9uZSgpIGlzIGNhbGxlZCwgZm9y
IGluc3RhbmNlLgogICAgIC8vIFNwZWMgc2F5cyB0aGF0IGEgc291cmNlIGNhbiBiZSBzaGFyZWQs
IHNvIHdlIG11c3QgYXNzdXJlIHRoYXQgdGhlcmUgaXMgbm8KQEAgLTIxNiw2ICsyMDksOCBAQCB2
b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+
IHBycFRyYWNrLCBFeGNlcHRpb25DbwogICAgIHRyYWNrLT5yZW1vdmVPYnNlcnZlcih0aGlzKTsK
ICAgICBpZiAoIW1fYXVkaW9UcmFja3Muc2l6ZSgpICYmICFtX3ZpZGVvVHJhY2tzLnNpemUoKSkK
ICAgICAgICAgc2V0RW5kZWQoKTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIE1lZGlh
U3RyZWFtOjpoYXZlVHJhY2tXaXRoU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+
IHNvdXJjZSkKQEAgLTI4MCw2MSArMjc1LDcxIEBAIHZvaWQgTWVkaWFTdHJlYW06OmNvbnRleHRE
ZXN0cm95ZWQoKQogdm9pZCBNZWRpYVN0cmVhbTo6YWRkUmVtb3RlU291cmNlKE1lZGlhU3RyZWFt
U291cmNlKiBzb3VyY2UpCiB7CiAgICAgQVNTRVJUKHNvdXJjZSk7CisgICAgUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiB0cmFjayA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVh
dGUoc291cmNlKTsKKyAgICBhZGRSZW1vdGVUcmFjayh0cmFjay5nZXQoKSk7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW06OnJlbW92ZVJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSogc291cmNl
KQorewogICAgIGlmIChlbmRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8TWVk
aWFTdHJlYW1UcmFjaz4gdHJhY2s7Ci0gICAgc3dpdGNoIChzb3VyY2UtPnR5cGUoKSkgewotICAg
IGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvOgotICAgICAgICB0cmFjayA9IEF1ZGlvU3Ry
ZWFtVHJhY2s6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICpNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTo6Y3JlYXRlKHNvdXJjZSkpOwotICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVu
ZCh0cmFjayk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlZp
ZGVvOgotICAgICAgICB0cmFjayA9IFZpZGVvU3RyZWFtVHJhY2s6OmNyZWF0ZShzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKHNvdXJjZSkp
OwotICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZCh0cmFjayk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICBicmVhazsKKyAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKiB0cmFj
a3MgPSBnZXRUcmFja1ZlY3Rvcihzb3VyY2UtPnR5cGUoKSk7CisKKyAgICBpZiAoIXRyYWNrcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPGludD4gdHJhY2tzVG9SZW1vdmU7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja3MtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGlm
ICgoKnRyYWNrcylbaV0tPnNvdXJjZSgpID09IHNvdXJjZSkKKyAgICAgICAgICAgIHRyYWNrc1Rv
UmVtb3ZlLmFwcGVuZChpKTsKICAgICB9Ci0gICAgdHJhY2stPmFkZE9ic2VydmVyKHRoaXMpOwot
ICAgIG1fZGVzY3JpcHRvci0+YWRkU291cmNlKHNvdXJjZSk7CiAKLSAgICBzY2hlZHVsZURpc3Bh
dGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFkZHRy
YWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2spKTsKKyAgICBtX2Rlc2NyaXB0b3ItPnJlbW92
ZVNvdXJjZShzb3VyY2UpOworCisgICAgZm9yIChpbnQgaSA9IHRyYWNrc1RvUmVtb3ZlLnNpemUo
KSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0
cmFjayA9ICgqdHJhY2tzKVt0cmFja3NUb1JlbW92ZVtpXV07CisgICAgICAgIHRyYWNrLT5yZW1v
dmVPYnNlcnZlcih0aGlzKTsKKyAgICAgICAgdHJhY2tzLT5yZW1vdmUodHJhY2tzVG9SZW1vdmVb
aV0pOworICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJh
Y2sucmVsZWFzZSgpKSk7CisgICAgfQogfQogCi12b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVSZW1v
dGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkKK3ZvaWQgTWVkaWFTdHJlYW06OmFk
ZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBwcml2YXRlVHJhY2spCiB7Cisg
ICAgQVNTRVJUKHByaXZhdGVUcmFjayk7CiAgICAgaWYgKGVuZGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IqIHRyYWNrcyA9IDA7Ci0gICAgc3dpdGNo
IChzb3VyY2UtPnR5cGUoKSkgeworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjazsK
KyAgICBzd2l0Y2ggKHByaXZhdGVUcmFjay0+c291cmNlKCktPnR5cGUoKSkgewogICAgIGNhc2Ug
TWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvOgotICAgICAgICB0cmFja3MgPSAmbV9hdWRpb1RyYWNr
czsKKyAgICAgICAgdHJhY2sgPSBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCAqcHJpdmF0ZVRyYWNrKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
ZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW86Ci0gICAgICAgIHRyYWNrcyA9ICZtX3ZpZGVvVHJhY2tz
OworICAgICAgICB0cmFjayA9IFZpZGVvU3RyZWFtVHJhY2s6OmNyZWF0ZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksICpwcml2YXRlVHJhY2spOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1l
ZGlhU3RyZWFtU291cmNlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgVmVjdG9yPGludD4gdHJhY2tzVG9SZW1vdmU7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja3MtPnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGlmICgoKnRyYWNrcylbaV0tPnNvdXJjZSgpID09IHNvdXJjZSkKLSAgICAgICAgICAgIHRyYWNr
c1RvUmVtb3ZlLmFwcGVuZChpKTsKLSAgICB9CisgICAgaWYgKCF0cmFjaykKKyAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9kZXNjcmlwdG9yLT5yZW1vdmVTb3VyY2Uoc291cmNlKTsKKyAgICBpZiAo
YWRkVHJhY2sodHJhY2spKQorICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJl
YW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQsIGZhbHNlLCBm
YWxzZSwgdHJhY2spKTsKK30KIAotICAgIGZvciAoaW50IGkgPSB0cmFja3NUb1JlbW92ZS5zaXpl
KCkgLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4g
dHJhY2sgPSAoKnRyYWNrcylbdHJhY2tzVG9SZW1vdmVbaV1dOwotICAgICAgICB0cmFjay0+cmVt
b3ZlT2JzZXJ2ZXIodGhpcyk7Ci0gICAgICAgIHRyYWNrcy0+cmVtb3ZlKHRyYWNrc1RvUmVtb3Zl
W2ldKTsKK3ZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZVJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlKiBwcml2YXRlVHJhY2spCit7CisgICAgQVNTRVJUKHByaXZhdGVUcmFjayk7Cisg
ICAgaWYgKGVuZGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiB0cmFjayA9IGdldFRyYWNrQnlJZChwcml2YXRlVHJhY2stPmlkKCkpOworICAgIGlm
IChyZW1vdmVUcmFjayh0cmFjaykpCiAgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZWRp
YVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCwg
ZmFsc2UsIGZhbHNlLCB0cmFjay5yZWxlYXNlKCkpKTsKLSAgICB9CiB9CiAKIHZvaWQgTWVkaWFT
dHJlYW06OnNjaGVkdWxlRGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKQEAg
LTM2Miw2ICszNjcsMjMgQEAgVVJMUmVnaXN0cnkmIE1lZGlhU3RyZWFtOjpyZWdpc3RyeSgpIGNv
bnN0CiAgICAgcmV0dXJuIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCk7CiB9CiAKK01l
ZGlhU3RyZWFtVHJhY2tWZWN0b3IqIE1lZGlhU3RyZWFtOjpnZXRUcmFja1ZlY3RvcihNZWRpYVN0
cmVhbVNvdXJjZTo6VHlwZSB0eXBlKQoreworICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IqIHRy
YWNrcyA9IG51bGxwdHI7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBNZWRpYVN0cmVh
bVNvdXJjZTo6QXVkaW86CisgICAgICAgIHRyYWNrcyA9ICZtX2F1ZGlvVHJhY2tzOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpWaWRlbzoKKyAgICAgICAgdHJh
Y2tzID0gJm1fdmlkZW9UcmFja3M7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFTdHJl
YW1Tb3VyY2U6Ok5vbmU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRyYWNrczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRleCAyYjI4N2I5YzRlZWE0
MTk0YmEwN2Q3MDJlNDg5YWFhZmRjMjQ1ZmQ2Li42YzA1YzBkY2EzYmMzMmRjMGIzNDdhOWUxN2Nk
YmY0NDc0NWFjNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5oCkBAIC05Nyw2ICs5NywxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1EaWRFbmQoKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgYWRk
UmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREUgRklOQUw7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZVJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURF
IEZJTkFMOworICAgIHZpcnR1YWwgdm9pZCBhZGRSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSopIE9WRVJSSURFIEZJTkFMOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZW1vdGVU
cmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSopIE9WRVJSSURFIEZJTkFMOworCisgICAgYm9v
bCByZW1vdmVUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+KTsKKyAgICBib29sIGFk
ZFRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4pOwogCiAgICAgYm9vbCBoYXZlVHJh
Y2tXaXRoU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+KTsKIApAQCAtMTA1LDYg
KzExMCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsb25lTWVkaWFTdHJlYW1UcmFja1ZlY3Rv
cihNZWRpYVN0cmVhbVRyYWNrVmVjdG9yJiwgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciYp
OwogCisgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciogZ2V0VHJhY2tWZWN0b3IoTWVkaWFTdHJl
YW1Tb3VyY2U6OlR5cGUpOworCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gbV9k
ZXNjcmlwdG9yOwogICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgbV9hdWRpb1RyYWNrczsKICAg
ICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIG1fdmlkZW9UcmFja3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IDIy
NjRkYzkyM2JlNWExMDhhOTE3YzRiMGY5YTMxNjA3NDRjNjIyZGQuLjcyODE1YWRkNjhkNzVjMmVl
ZDNhYWJiMjVhMzNhMjhjYjVhYjE2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBAIC05Niw2ICs5Niw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyKik7CiAgICAgdm9pZCByZW1vdmVP
YnNlcnZlcihPYnNlcnZlciopOwogCisgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHByaXZh
dGVUcmFjaygpIHsgcmV0dXJuIG1fcHJpdmF0ZVRyYWNrLmdldCgpOyB9CisKICAgICAvLyBFdmVu
dFRhcmdldAogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBNZWRpYVN0cmVhbVRyYWNrRXZl
bnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1
cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KQEAgLTEwNyw3
ICsxMDksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgTWVkaWFTdHJlYW1UcmFjayhNZWRp
YVN0cmVhbVRyYWNrKik7CiAgICAgTWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBjb25zdCBEaWN0aW9uYXJ5Kik7CiAKLSAg
ICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgcHJpdmF0ZVRyYWNrKCkgeyByZXR1cm4gbV9wcml2
YXRlVHJhY2suZ2V0KCk7IH0KICAgICB2b2lkIHNldFNvdXJjZShQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtU291cmNlPik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAppbmRleCBh
YjY2NjUyZThlMGZlNWFiNDI4NzBmNDdkMDk2ZDgzZTNhM2YyOTg2Li5hMGUzYjViYjZmMTEzZTVh
MWVkMzg1YjZkZTY5ZjRiMTEyOWNhNTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKQEAg
LTEwNyw2ICsxMDcsMjIgQEAgdm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVJlbW90
ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQogICAgICAgICByZW1vdmVTb3VyY2Uo
c291cmNlKTsKIH0KIAordm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmFkZFJlbW90ZVRyYWNr
KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB0cmFjaykKK3sKKyAgICBpZiAobV9jbGllbnQpCisg
ICAgICAgIG1fY2xpZW50LT5hZGRSZW1vdGVUcmFjayh0cmFjayk7CisgICAgZWxzZQorICAgICAg
ICBhZGRUcmFjayh0cmFjayk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpyZW1v
dmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdHJhY2spCit7CisgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+cmVtb3ZlUmVtb3RlVHJhY2sodHJhY2spOwor
ICAgIGVsc2UKKyAgICAgICAgcmVtb3ZlVHJhY2sodHJhY2spOworfQorCiBNZWRpYVN0cmVhbURl
c2NyaXB0b3I6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQogICAgIDogbV9jbGllbnQoMCkKICAgICAsIG1faWQo
aWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCmluZGV4IGI5OTkwY2FhMDc0OWExMGQxNjM3NTJkNTk4
MGUwNDg4ZGI3MzM2YzguLjI5MDNjYmU0Y2Q2ZjEzMzljZDdhNzU0YjVmMzM0ZThjNTA0ZjgyOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRW5kKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGRSZW1v
dGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZVJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlbW92ZVJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKikgPSAwOwog
fTsKIAogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTdHJlYW1EZXNjcmlwdG9yPiB7CkBAIC04OSw2ICs5MSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFkZFRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+KTsKICAgICB2b2lk
IHJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+KTsKIAorICAg
IHZvaWQgYWRkUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqKTsKKyAgICB2b2lk
IHJlbW92ZVJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKik7CisKIHByaXZhdGU6
CiAgICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiB2aWRlb1NvdXJjZXMpOwogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBT
dHJpbmcmIGlkLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZVZlY3RvciYgYXVkaW9Qcml2
YXRlVHJhY2tzLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZVZlY3RvciYgdmlkZW9Qcml2
YXRlVHJhY2tzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215681</attachid>
            <date>2013-10-31 15:31:32 -0700</date>
            <delta_ts>2013-11-01 10:17:51 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-123477-20131031193130.patch</filename>
            <type>text/plain</type>
            <size>14340</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4Mzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UxZjU4YWE0YjQ4Zjg4
Mjc1ODQzMTI5OGYwODI0YzBmYzNlZWViMS4uOTUxMjA2N2Q4OWUzNzkzYjlhYTczYzIwZGQ2M2M4
MDIyOWM0Y2I0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTEwLTMxICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIEFkZGluZyBhZGRSZW1vdGVUcmFjayBhbmQgcmVtb3ZlUmVtb3RlVHJhY2sgZnVuY3Rp
b25zIHRvIE1lZGlhU3RyZWFtRGVzY3JpcHRvciBhbmQgTWVkaWFTdHJlYW0KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQ3NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdGhlIGJhY2tlbmQgcmVw
b3J0IHRoYXQgYSByZW1vdGUgdHJhY2sgaGFzIGJlZW4gYWRkZWQgb3IgcmVtb3ZlZCBieSBhIHJl
bW90ZSBwZWVyLCB3ZSBtdXN0IGJlIGFibGUgdG8gYWRkCisgICAgICAgIGl0IHRvIGl0cyBNZWRp
YVN0cmVhbQorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtOjphZGRUcmFjayk6IFNwbGl0dGVkIGluIHR3byBwYXJ0cyB0aGF0IGNhbiBiZSB1c2Vk
IGJ5IG9sZCBhZGRUcmFjayBhbmQgbmV3IGFkZFJlbW90ZVRyYWNrLgorCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2spOiBTcGxpdHRlZCBpbiB0d28gcGFydHMgdGhh
dCBjYW4gYmUgdXNlZCBieSBvbGQgcmVtb3ZlVHJhY2sgYW5kIG5ldworICAgICAgICByZW1vdmVS
ZW1vdGVUcmFjay4KKworICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFJlbW90ZVNv
dXJjZSk6IFJldXNpbmcgY29kZSBpbiBuZXcgYWRkVHJhY2sgbWV0aG9kLgorCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbTo6cmVtb3ZlUmVtb3RlU291cmNlKTogUmVmYWN0b3JlZC4KKwor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFJlbW90ZVRyYWNrKTogQWRkZWQuCisK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpyZW1vdmVSZW1vdGVUcmFjayk6IEFkZGVk
LgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Z2V0VHJhY2tWZWN0b3JGb3JUeXBl
KTogSGVscGVyIG1ldGhvZCB0aGF0IHJldHVybnMgYSB2ZWN0b3Igb2YgdHJhY2tzIGFjY29yZGlu
ZyB0bworICAgICAgICB0cmFjaydzIHR5cGUgKEF1ZGlvIG9yIFZpZGVvKS4KKworICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRGVzY3JpcHRvcjo6YWRkUmVtb3RlVHJhY2spOiBBZGRlZC4KKworICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpyZW1vdmVSZW1vdGVUcmFjayk6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oOgor
CiAyMDEzLTEwLTMxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNYW5hZ2UgbGluZS1ncmlkIFJvb3RJbmxpbmVCb3ggd2l0aCB1bmlxdWVfcHRyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAppbmRl
eCAyZmU2MmUwY2IxYzhhZTZiNjkzMGQyNmU0YjhiMzQ0Mjg3OWMxZWUyLi44ZDUzM2RlNDU0NDBh
ZjNjYWY4OGNhZmM1MGVmNTgyYTNmNTkxOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtMTUyLDI0ICsxNTIsMjYgQEAg
dm9pZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBw
cnBUcmFjaywgRXhjZXB0aW9uQ29kZSYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9IHBycFRyYWNrOwotICAgIGlmIChnZXRUcmFj
a0J5SWQodHJhY2stPmlkKCkpKQotICAgICAgICByZXR1cm47CisgICAgYWRkVHJhY2socHJwVHJh
Y2spOworfQogCi0gICAgc3dpdGNoICh0cmFjay0+c291cmNlKCktPnR5cGUoKSkgewotICAgIGNh
c2UgTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvOgotICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVu
ZCh0cmFjayk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlZp
ZGVvOgotICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZCh0cmFjayk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Citib29sIE1lZGlhU3RyZWFtOjphZGRU
cmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrKQoreworICAgIC8vIFRoaXMg
aXMgYSBjb21tb24gcGFydCB1c2VkIGJ5IGFkZFRyYWNrIGNhbGxlZCBieSBKYXZhU2NyaXB0Cisg
ICAgLy8gYW5kIGFkZFJlbW90ZVRyYWNrIGFuZCBvbmx5IGFkZFJlbW90ZVRyYWNrIG11c3QgZmly
ZSBhZGR0cmFjayBldmVudAorICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFja1JlZiA9
IHRyYWNrOworICAgIGlmIChnZXRUcmFja0J5SWQodHJhY2tSZWYtPmlkKCkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7Ci0gICAgbV9kZXNj
cmlwdG9yLT5hZGRTb3VyY2UodHJhY2stPnNvdXJjZSgpKTsKKyAgICBNZWRpYVN0cmVhbVRyYWNr
VmVjdG9yKiB0cmFja3MgPSBnZXRUcmFja1ZlY3RvckZvclR5cGUodHJhY2tSZWYtPnNvdXJjZSgp
LT50eXBlKCkpOworCisgICAgaWYgKCF0cmFja3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHRyYWNrcy0+YXBwZW5kKHRyYWNrUmVmKTsKKyAgICB0cmFja1JlZi0+YWRkT2JzZXJ2ZXIo
dGhpcyk7CisgICAgbV9kZXNjcmlwdG9yLT5hZGRUcmFjaygmdHJhY2tSZWYtPnByaXZhdGVUcmFj
aygpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJh
Y2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYg
ZWMpCkBAIC0xODQsMzggKzE4NiwzNyBAQCB2b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayhQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRpb25DbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0g
cHJwVHJhY2s7CisgICAgcmVtb3ZlVHJhY2socHJwVHJhY2spOworfQogCi0gICAgc2l6ZV90IHBv
cyA9IG5vdEZvdW5kOwotICAgIHN3aXRjaCAodHJhY2stPnNvdXJjZSgpLT50eXBlKCkpIHsKLSAg
ICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpBdWRpbzoKLSAgICAgICAgcG9zID0gbV9hdWRpb1Ry
YWNrcy5maW5kKHRyYWNrKTsKLSAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAg
ICAgIG1fYXVkaW9UcmFja3MucmVtb3ZlKHBvcyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TWVkaWFTdHJlYW1Tb3VyY2U6OlZpZGVvOgotICAgICAgICBwb3MgPSBtX3ZpZGVvVHJhY2tzLmZp
bmQodHJhY2spOwotICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgbV92
aWRlb1RyYWNrcy5yZW1vdmUocG9zKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVN0
cmVhbVNvdXJjZTo6Tm9uZToKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KK2Jvb2wgTWVkaWFTdHJlYW06OnJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2spCit7CisgICAgLy8gVGhpcyBpcyBhIGNvbW1vbiBwYXJ0
IHVzZWQgYnkgcmVtb3ZlVHJhY2sgY2FsbGVkIGJ5IEphdmFTY3JpcHQKKyAgICAvLyBhbmQgcmVt
b3ZlUmVtb3RlVHJhY2sgYW5kIG9ubHkgcmVtb3ZlUmVtb3RlVHJhY2sgbXVzdCBmaXJlIHJlbW92
ZXRyYWNrIGV2ZW50CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrUmVmID0gdHJh
Y2s7CisgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciogdHJhY2tzID0gZ2V0VHJhY2tWZWN0b3JG
b3JUeXBlKHRyYWNrUmVmLT5zb3VyY2UoKS0+dHlwZSgpKTsKKworICAgIGlmICghdHJhY2tzKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBzaXplX3QgcG9zID0gdHJhY2tzLT5maW5kKHRy
YWNrUmVmKTsKICAgICBpZiAocG9zID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAorICAgIHRyYWNrcy0+cmVtb3ZlKHBvcyk7CisgICAgbV9kZXNj
cmlwdG9yLT5yZW1vdmVUcmFjaygmdHJhY2tSZWYtPnByaXZhdGVUcmFjaygpKTsKICAgICAvLyBU
aGVyZSBjYW4gYmUgb3RoZXIgdHJhY2tzIHVzaW5nIHRoZSBzYW1lIHNvdXJjZSBpbiB0aGUgc2Ft
ZSBNZWRpYVN0cmVhbSwKICAgICAvLyBsaWtlIHdoZW4gTWVkaWFTdHJlYW1UcmFjazo6Y2xvbmUo
KSBpcyBjYWxsZWQsIGZvciBpbnN0YW5jZS4KICAgICAvLyBTcGVjIHNheXMgdGhhdCBhIHNvdXJj
ZSBjYW4gYmUgc2hhcmVkLCBzbyB3ZSBtdXN0IGFzc3VyZSB0aGF0IHRoZXJlIGlzIG5vCiAgICAg
Ly8gb3RoZXIgdHJhY2sgdXNpbmcgaXQuCi0gICAgaWYgKCFoYXZlVHJhY2tXaXRoU291cmNlKHRy
YWNrLT5zb3VyY2UoKSkpCi0gICAgICAgIG1fZGVzY3JpcHRvci0+cmVtb3ZlU291cmNlKHRyYWNr
LT5zb3VyY2UoKSk7CisgICAgaWYgKCFoYXZlVHJhY2tXaXRoU291cmNlKHRyYWNrUmVmLT5zb3Vy
Y2UoKSkpCisgICAgICAgIG1fZGVzY3JpcHRvci0+cmVtb3ZlU291cmNlKHRyYWNrUmVmLT5zb3Vy
Y2UoKSk7CiAKLSAgICB0cmFjay0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CisgICAgdHJhY2tSZWYt
PnJlbW92ZU9ic2VydmVyKHRoaXMpOwogICAgIGlmICghbV9hdWRpb1RyYWNrcy5zaXplKCkgJiYg
IW1fdmlkZW9UcmFja3Muc2l6ZSgpKQogICAgICAgICBzZXRFbmRlZCgpOworCisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIGJvb2wgTWVkaWFTdHJlYW06OmhhdmVUcmFja1dpdGhTb3VyY2UoUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gc291cmNlKQpAQCAtMjgwLDYxICsyODEsNzIgQEAgdm9p
ZCBNZWRpYVN0cmVhbTo6Y29udGV4dERlc3Ryb3llZCgpCiB2b2lkIE1lZGlhU3RyZWFtOjphZGRS
ZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkKIHsKICAgICBBU1NFUlQoc291
cmNlKTsKKyAgICBhZGRSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRl
KHNvdXJjZSkuZ2V0KCkpOworfQorCit2b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVSZW1vdGVTb3Vy
Y2UoTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkKK3sKKyAgICBBU1NFUlQoc291cmNlKTsKICAg
ICBpZiAoZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2s+IHRyYWNrOwotICAgIHN3aXRjaCAoc291cmNlLT50eXBlKCkpIHsKLSAgICBjYXNlIE1l
ZGlhU3RyZWFtU291cmNlOjpBdWRpbzoKLSAgICAgICAgdHJhY2sgPSBBdWRpb1N0cmVhbVRyYWNr
OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKk1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlOjpjcmVhdGUoc291cmNlKSk7Ci0gICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKHRyYWNr
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW86Ci0g
ICAgICAgIHRyYWNrID0gVmlkZW9TdHJlYW1UcmFjazo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksICpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKHNvdXJjZSkpOwotICAg
ICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZCh0cmFjayk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTWVkaWFTdHJlYW1Tb3VyY2U6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICBicmVhazsKKyAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKiB0cmFja3MgPSBn
ZXRUcmFja1ZlY3RvckZvclR5cGUoc291cmNlLT50eXBlKCkpOworCisgICAgaWYgKCF0cmFja3Mp
CisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxpbnQ+IHRyYWNrc1RvUmVtb3ZlOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tzLT5zaXplKCk7ICsraSkgeworICAgICAgICBp
ZiAoKCp0cmFja3MpW2ldLT5zb3VyY2UoKSA9PSBzb3VyY2UpCisgICAgICAgICAgICB0cmFja3NU
b1JlbW92ZS5hcHBlbmQoaSk7CiAgICAgfQotICAgIHRyYWNrLT5hZGRPYnNlcnZlcih0aGlzKTsK
LSAgICBtX2Rlc2NyaXB0b3ItPmFkZFNvdXJjZShzb3VyY2UpOwogCi0gICAgc2NoZWR1bGVEaXNw
YXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0
cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIHRyYWNrKSk7CisgICAgbV9kZXNjcmlwdG9yLT5yZW1v
dmVTb3VyY2Uoc291cmNlKTsKKworICAgIGZvciAoaW50IGkgPSB0cmFja3NUb1JlbW92ZS5zaXpl
KCkgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4g
dHJhY2sgPSAoKnRyYWNrcylbdHJhY2tzVG9SZW1vdmVbaV1dOworICAgICAgICB0cmFjay0+cmVt
b3ZlT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIHRyYWNrcy0+cmVtb3ZlKHRyYWNrc1RvUmVtb3Zl
W2ldKTsKKyAgICAgICAgbV9kZXNjcmlwdG9yLT5yZW1vdmVUcmFjaygmdHJhY2stPnByaXZhdGVU
cmFjaygpKTsKKyAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2Us
IHRyYWNrLnJlbGVhc2UoKSkpOworICAgIH0KIH0KIAotdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3Zl
UmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCit2b2lkIE1lZGlhU3RyZWFt
OjphZGRSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogcHJpdmF0ZVRyYWNrKQog
eworICAgIEFTU0VSVChwcml2YXRlVHJhY2spOwogICAgIGlmIChlbmRlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKiB0cmFja3MgPSAwOwotICAgIHN3
aXRjaCAoc291cmNlLT50eXBlKCkpIHsKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJh
Y2s7CisgICAgc3dpdGNoIChwcml2YXRlVHJhY2stPnNvdXJjZSgpLT50eXBlKCkpIHsKICAgICBj
YXNlIE1lZGlhU3RyZWFtU291cmNlOjpBdWRpbzoKLSAgICAgICAgdHJhY2tzID0gJm1fYXVkaW9U
cmFja3M7CisgICAgICAgIHRyYWNrID0gQXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksICpwcml2YXRlVHJhY2spOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE1lZGlhU3RyZWFtU291cmNlOjpWaWRlbzoKLSAgICAgICAgdHJhY2tzID0gJm1fdmlkZW9U
cmFja3M7CisgICAgICAgIHRyYWNrID0gVmlkZW9TdHJlYW1UcmFjazo6Y3JlYXRlKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksICpwcml2YXRlVHJhY2spOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE1lZGlhU3RyZWFtU291cmNlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgVmVjdG9yPGludD4gdHJhY2tzVG9SZW1v
dmU7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja3MtPnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmICgoKnRyYWNrcylbaV0tPnNvdXJjZSgpID09IHNvdXJjZSkKLSAgICAgICAgICAg
IHRyYWNrc1RvUmVtb3ZlLmFwcGVuZChpKTsKLSAgICB9CisgICAgaWYgKCF0cmFjaykKKyAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9kZXNjcmlwdG9yLT5yZW1vdmVTb3VyY2Uoc291cmNlKTsKKyAg
ICBpZiAoYWRkVHJhY2sodHJhY2spKQorICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVk
aWFTdHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQsIGZh
bHNlLCBmYWxzZSwgdHJhY2spKTsKK30KIAotICAgIGZvciAoaW50IGkgPSB0cmFja3NUb1JlbW92
ZS5zaXplKCkgLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4gdHJhY2sgPSAoKnRyYWNrcylbdHJhY2tzVG9SZW1vdmVbaV1dOwotICAgICAgICB0cmFj
ay0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7Ci0gICAgICAgIHRyYWNrcy0+cmVtb3ZlKHRyYWNrc1Rv
UmVtb3ZlW2ldKTsKK3ZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZVJlbW90ZVRyYWNrKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlKiBwcml2YXRlVHJhY2spCit7CisgICAgQVNTRVJUKHByaXZhdGVUcmFj
ayk7CisgICAgaWYgKGVuZGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPiB0cmFjayA9IGdldFRyYWNrQnlJZChwcml2YXRlVHJhY2stPmlkKCkpOwor
ICAgIGlmIChyZW1vdmVUcmFjayh0cmFjaykpCiAgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVu
dChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3ZldHJhY2tF
dmVudCwgZmFsc2UsIGZhbHNlLCB0cmFjay5yZWxlYXNlKCkpKTsKLSAgICB9CiB9CiAKIHZvaWQg
TWVkaWFTdHJlYW06OnNjaGVkdWxlRGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKQEAgLTM2Miw2ICszNzQsMjMgQEAgVVJMUmVnaXN0cnkmIE1lZGlhU3RyZWFtOjpyZWdpc3Ry
eSgpIGNvbnN0CiAgICAgcmV0dXJuIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCk7CiB9
CiAKK01lZGlhU3RyZWFtVHJhY2tWZWN0b3IqIE1lZGlhU3RyZWFtOjpnZXRUcmFja1ZlY3RvckZv
clR5cGUoTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGUgdHlwZSkKK3sKKyAgICBNZWRpYVN0cmVhbVRy
YWNrVmVjdG9yKiB0cmFja3MgPSBudWxscHRyOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNh
c2UgTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvOgorICAgICAgICB0cmFja3MgPSAmbV9hdWRpb1Ry
YWNrczsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW86
CisgICAgICAgIHRyYWNrcyA9ICZtX3ZpZGVvVHJhY2tzOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIE1lZGlhU3RyZWFtU291cmNlOjpOb25lOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0cmFja3M7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKaW5kZXgg
NDY2ZGI0YmQzYTYwM2FhY2FmMmYyYzFiZTNiOGEyNWNiMDVhOGIwMi4uOGZlMTlkMzhiZDJlODlh
OWMyOTgwY2U4NTI4ZjhhMWQ5ZDU2MmFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtOTcsNiArOTcsMTEgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRW5kKCkgT1ZFUlJJREUgRklOQUw7CiAgICAgdmly
dHVhbCB2b2lkIGFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFIEZJ
TkFMOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3Vy
Y2UqKSBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUmVtb3RlVHJhY2soTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUqKSBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqKSBPVkVSUklERSBGSU5B
TDsKKworICAgIGJvb2wgcmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPik7
CisgICAgYm9vbCBhZGRUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+KTsKIAogICAg
IGJvb2wgaGF2ZVRyYWNrV2l0aFNvdXJjZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPik7
CiAKQEAgLTEwNSw2ICsxMTAsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbG9uZU1lZGlhU3Ry
ZWFtVHJhY2tWZWN0b3IoTWVkaWFTdHJlYW1UcmFja1ZlY3RvciYsIGNvbnN0IE1lZGlhU3RyZWFt
VHJhY2tWZWN0b3ImKTsKIAorICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IqIGdldFRyYWNrVmVj
dG9yRm9yVHlwZShNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZSk7CisKICAgICBSZWZQdHI8TWVkaWFT
dHJlYW1EZXNjcmlwdG9yPiBtX2Rlc2NyaXB0b3I7CiAgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3Rv
ciBtX2F1ZGlvVHJhY2tzOwogICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgbV92aWRlb1RyYWNr
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suY3BwCmluZGV4IDZkZWFiZWE2N2M2OTM5OGY2N2RkM2Q2NjVhYmVjOWNhMjJj
NWI3OTMuLmZiYjJiOTgyNzFjMzI1ZWQ3N2UyMmM0ZTM0ZGM0YjQ3ODJmMTYyNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmNwcApAQCAtNjYsNyArNjYsOCBAQCBNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRy
YWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lZGlhU3RyZWFtVAogfQogCiBN
ZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIG90aGVy
KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KG90aGVyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICA6IFJlZkNvdW50ZWQoKQorICAgICwgQWN0aXZlRE9NT2JqZWN0KG90aGVyLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fcHJpdmF0ZVRyYWNrKCpvdGhlci5wcml2YXRlVHJh
Y2soKS5jbG9uZSgpKQogICAgICwgbV9ldmVudERpc3BhdGNoU2NoZWR1bGVkKGZhbHNlKQogICAg
ICwgbV9zdG9wcGluZ1RyYWNrKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKaW5kZXgg
ZDZhYzY0MmEwN2FlNTg1MTM3NjM3NmZmMDY4N2IwNDVjMjBlZmZlZi4uOTJmOWI2ZDAwYTQzODY5
ZThjNjhlNWNkMjM1M2MxNDMzNTU1OWE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCkBA
IC0xMDcsNiArMTA3LDIyIEBAIHZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpyZW1vdmVSZW1v
dGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkKICAgICAgICAgcmVtb3ZlU291cmNl
KHNvdXJjZSk7CiB9CiAKK3ZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphZGRSZW1vdGVUcmFj
ayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdHJhY2spCit7CisgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudC0+YWRkUmVtb3RlVHJhY2sodHJhY2spOworICAgIGVsc2UKKyAgICAg
ICAgYWRkVHJhY2sodHJhY2spOworfQorCit2b2lkIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6cmVt
b3ZlUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHRyYWNrKQoreworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlbW92ZVJlbW90ZVRyYWNrKHRyYWNrKTsK
KyAgICBlbHNlCisgICAgICAgIHJlbW92ZVRyYWNrKHRyYWNrKTsKK30KKwogTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOjpNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBpZCwgY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKICAgICA6IG1fY2xpZW50KDApCiAgICAgLCBtX2lk
KGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaAppbmRleCA2ZjMwYWE0N2RmMmE5YTBiNGYyMWQwNGFm
NGE2NjQ3ZTVhMTI2OTM1Li5kZDBjNDgxOGE0MTBkY2Y3NmMwOGQ2YTkwMzA2N2M5NDMzZDAyNTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHN0cmVhbURpZEVuZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkUmVt
b3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSopID0gMDsK
IH07CiAKIGNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPE1l
ZGlhU3RyZWFtRGVzY3JpcHRvcj4gewpAQCAtODksNiArOTEsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhZGRUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPik7CiAgICAgdm9p
ZCByZW1vdmVUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPik7CiAKKyAg
ICB2b2lkIGFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKik7CisgICAgdm9p
ZCByZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSopOworCiBwcml2YXRl
OgogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3Qg
U3RyaW5nJiBpZCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+
JiBhdWRpb1ByaXZhdGVUcmFja3MsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU+PiYgdmlkZW9Qcml2YXRlVHJhY2tzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215734</attachid>
            <date>2013-11-01 10:17:56 -0700</date>
            <delta_ts>2013-11-01 11:01:29 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-123477-20131101141754.patch</filename>
            <type>text/plain</type>
            <size>13819</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4NDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNhMmFhODk0NTE4NmNm
YTI3ZWVkNDE0ZGMzMTU0ZTYzOTg4NDQ2Ni4uODIyMzBhZmIzMmE0MmQwYmUzYmI4Y2JjOGQwZDRk
YmVkYTE0NzlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTExLTAxICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIEFkZGluZyBhZGRSZW1vdGVUcmFjayBhbmQgcmVtb3ZlUmVtb3RlVHJhY2sgZnVuY3Rp
b25zIHRvIE1lZGlhU3RyZWFtRGVzY3JpcHRvciBhbmQgTWVkaWFTdHJlYW0KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQ3NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdGhlIGJhY2tlbmQgcmVw
b3J0IHRoYXQgYSByZW1vdGUgdHJhY2sgaGFzIGJlZW4gYWRkZWQgb3IgcmVtb3ZlZCBieSBhIHJl
bW90ZSBwZWVyLCB3ZSBtdXN0IGJlIGFibGUgdG8gYWRkCisgICAgICAgIGl0IHRvIGl0cyBNZWRp
YVN0cmVhbQorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtOjphZGRUcmFjayk6IFNwbGl0dGVkIGluIHR3byBwYXJ0cyB0aGF0IGNhbiBiZSB1c2Vk
IGJ5IG9sZCBhZGRUcmFjayBhbmQgbmV3IGFkZFJlbW90ZVRyYWNrLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW06OnJlbW92ZVRyYWNrKTogU3BsaXR0ZWQgaW4gdHdvIHBhcnRzIHRoYXQg
Y2FuIGJlIHVzZWQgYnkgb2xkIHJlbW92ZVRyYWNrIGFuZCBuZXcKKyAgICAgICAgcmVtb3ZlUmVt
b3RlVHJhY2suCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6YWRkUmVtb3RlU291cmNl
KTogUmV1c2luZyBjb2RlIGluIG5ldyBhZGRUcmFjayBtZXRob2QuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbTo6cmVtb3ZlUmVtb3RlU291cmNlKTogUmVmYWN0b3JlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphZGRSZW1vdGVUcmFjayk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW06OnJlbW92ZVJlbW90ZVRyYWNrKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Z2V0VHJhY2tWZWN0b3JGb3JUeXBlKTogSGVscGVyIG1l
dGhvZCB0aGF0IHJldHVybnMgYSB2ZWN0b3Igb2YgdHJhY2tzIGFjY29yZGluZyB0bworICAgICAg
ICB0cmFjaydzIHR5cGUgKEF1ZGlvIG9yIFZpZGVvKS4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6
TWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3Jp
cHRvcjo6YWRkUmVtb3RlVHJhY2spOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcjo6cmVtb3ZlUmVtb3RlVHJhY2spOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaDoKKwogMjAxMy0xMS0wMSAg
QnJlbmRhbiBMb25nICA8Yi5sb25nQGNhYmxlbGFicy5jb20+CiAKICAgICAgICAgW0dTdHJlYW1l
cl0gU3VwcG9ydCBhdWRpbyBhbmQgdmlkZW8gdHJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDJmZTYyZTBjYjFjOGFl
NmI2OTMwZDI2ZTRiOGIzNDQyODc5YzFlZTIuLmQ3ZTc1Yjg3MzExZDc3ZjMzNjM0NTYwMDJjYTg5
ZDBlNThjNjQ4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uY3BwCkBAIC0xNTIsMjQgKzE1MiwyNiBAQCB2b2lkIE1lZGlhU3RyZWFt
OjphZGRUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRp
b25Db2RlJgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgYWRkVHJhY2socHJwVHJhY2sp
OworfQorCitib29sIE1lZGlhU3RyZWFtOjphZGRUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2s+IHBycFRyYWNrKQoreworICAgIC8vIFRoaXMgaXMgYSBjb21tb24gcGFydCB1c2VkIGJ5
IGFkZFRyYWNrIGNhbGxlZCBieSBKYXZhU2NyaXB0CisgICAgLy8gYW5kIGFkZFJlbW90ZVRyYWNr
IGFuZCBvbmx5IGFkZFJlbW90ZVRyYWNrIG11c3QgZmlyZSBhZGR0cmFjayBldmVudAogICAgIFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9IHBycFRyYWNrOwogICAgIGlmIChnZXRUcmFj
a0J5SWQodHJhY2stPmlkKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHN3aXRjaCAodHJhY2stPnNvdXJjZSgpLT50eXBlKCkpIHsKLSAgICBjYXNlIE1l
ZGlhU3RyZWFtU291cmNlOjpBdWRpbzoKLSAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQodHJh
Y2spOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpWaWRlbzoK
LSAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQodHJhY2spOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpOb25lOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3Iq
IHRyYWNrcyA9IGdldFRyYWNrVmVjdG9yRm9yVHlwZSh0cmFjay0+c291cmNlKCktPnR5cGUoKSk7
CisKKyAgICBpZiAoIXRyYWNrcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgdHJhY2tz
LT5hcHBlbmQodHJhY2spOwogICAgIHRyYWNrLT5hZGRPYnNlcnZlcih0aGlzKTsKLSAgICBtX2Rl
c2NyaXB0b3ItPmFkZFNvdXJjZSh0cmFjay0+c291cmNlKCkpOworICAgIG1fZGVzY3JpcHRvci0+
YWRkVHJhY2soJnRyYWNrLT5wcml2YXRlVHJhY2soKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4gcHJwVHJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTg0LDI4ICsxODYsMjUgQEAgdm9p
ZCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBw
cnBUcmFjaywgRXhjZXB0aW9uQ28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIHJlbW92
ZVRyYWNrKHBycFRyYWNrKTsKK30KKworYm9vbCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaykKK3sKKyAgICAvLyBUaGlzIGlzIGEg
Y29tbW9uIHBhcnQgdXNlZCBieSByZW1vdmVUcmFjayBjYWxsZWQgYnkgSmF2YVNjcmlwdAorICAg
IC8vIGFuZCByZW1vdmVSZW1vdGVUcmFjayBhbmQgb25seSByZW1vdmVSZW1vdGVUcmFjayBtdXN0
IGZpcmUgcmVtb3ZldHJhY2sgZXZlbnQKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJh
Y2sgPSBwcnBUcmFjazsKKyAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKiB0cmFja3MgPSBnZXRU
cmFja1ZlY3RvckZvclR5cGUodHJhY2stPnNvdXJjZSgpLT50eXBlKCkpOwogCi0gICAgc2l6ZV90
IHBvcyA9IG5vdEZvdW5kOwotICAgIHN3aXRjaCAodHJhY2stPnNvdXJjZSgpLT50eXBlKCkpIHsK
LSAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpBdWRpbzoKLSAgICAgICAgcG9zID0gbV9hdWRp
b1RyYWNrcy5maW5kKHRyYWNrKTsKLSAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAg
ICAgICAgIG1fYXVkaW9UcmFja3MucmVtb3ZlKHBvcyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlZpZGVvOgotICAgICAgICBwb3MgPSBtX3ZpZGVvVHJhY2tz
LmZpbmQodHJhY2spOwotICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKQotICAgICAgICAgICAg
bV92aWRlb1RyYWNrcy5yZW1vdmUocG9zKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZTo6Tm9uZToKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KKyAgICBpZiAoIXRyYWNrcykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogCisgICAgc2l6ZV90IHBvcyA9IHRyYWNrcy0+ZmluZCh0cmFjayk7CiAgICAgaWYgKHBvcyA9
PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAg
ICB0cmFja3MtPnJlbW92ZShwb3MpOworICAgIG1fZGVzY3JpcHRvci0+cmVtb3ZlVHJhY2soJnRy
YWNrLT5wcml2YXRlVHJhY2soKSk7CiAgICAgLy8gVGhlcmUgY2FuIGJlIG90aGVyIHRyYWNrcyB1
c2luZyB0aGUgc2FtZSBzb3VyY2UgaW4gdGhlIHNhbWUgTWVkaWFTdHJlYW0sCiAgICAgLy8gbGlr
ZSB3aGVuIE1lZGlhU3RyZWFtVHJhY2s6OmNsb25lKCkgaXMgY2FsbGVkLCBmb3IgaW5zdGFuY2Uu
CiAgICAgLy8gU3BlYyBzYXlzIHRoYXQgYSBzb3VyY2UgY2FuIGJlIHNoYXJlZCwgc28gd2UgbXVz
dCBhc3N1cmUgdGhhdCB0aGVyZSBpcyBubwpAQCAtMjE2LDYgKzIxNSw4IEBAIHZvaWQgTWVkaWFT
dHJlYW06OnJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ss
IEV4Y2VwdGlvbkNvCiAgICAgdHJhY2stPnJlbW92ZU9ic2VydmVyKHRoaXMpOwogICAgIGlmICgh
bV9hdWRpb1RyYWNrcy5zaXplKCkgJiYgIW1fdmlkZW9UcmFja3Muc2l6ZSgpKQogICAgICAgICBz
ZXRFbmRlZCgpOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgTWVkaWFTdHJlYW06Omhh
dmVUcmFja1dpdGhTb3VyY2UoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gc291cmNlKQpA
QCAtMjgwLDYxICsyODEsNjkgQEAgdm9pZCBNZWRpYVN0cmVhbTo6Y29udGV4dERlc3Ryb3llZCgp
CiB2b2lkIE1lZGlhU3RyZWFtOjphZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqIHNv
dXJjZSkKIHsKICAgICBBU1NFUlQoc291cmNlKTsKKyAgICBhZGRSZW1vdGVUcmFjayhNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKHNvdXJjZSkuZ2V0KCkpOworfQorCit2b2lkIE1lZGlh
U3RyZWFtOjpyZW1vdmVSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkKK3sK
KyAgICBBU1NFUlQoc291cmNlKTsKICAgICBpZiAoZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrOwotICAgIHN3aXRjaCAoc291cmNl
LT50eXBlKCkpIHsKLSAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpBdWRpbzoKLSAgICAgICAg
dHJhY2sgPSBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgKk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoc291cmNlKSk7Ci0gICAgICAgIG1f
YXVkaW9UcmFja3MuYXBwZW5kKHRyYWNrKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZTo6VmlkZW86Ci0gICAgICAgIHRyYWNrID0gVmlkZW9TdHJlYW1UcmFjazo6
Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZTo6Y3JlYXRlKHNvdXJjZSkpOwotICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZCh0cmFjayk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6Ok5vbmU6Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKKyAgICBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+PiogdHJhY2tzID0gZ2V0VHJhY2tWZWN0b3JGb3JUeXBlKHNv
dXJjZS0+dHlwZSgpKTsKKworICAgIGlmICghdHJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmb3IgKGludCBpID0gdHJhY2tzLT5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgeworICAgICAg
ICBpZiAoKCp0cmFja3MpW2ldLT5zb3VyY2UoKSAhPSBzb3VyY2UpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSAoKnRyYWNr
cylbaV07CisgICAgICAgIHRyYWNrLT5yZW1vdmVPYnNlcnZlcih0aGlzKTsKKyAgICAgICAgdHJh
Y2tzLT5yZW1vdmUoaSk7CisgICAgICAgIG1fZGVzY3JpcHRvci0+cmVtb3ZlVHJhY2soJnRyYWNr
LT5wcml2YXRlVHJhY2soKSk7CisgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZWRpYVN0
cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCwgZmFs
c2UsIGZhbHNlLCB0cmFjay5yZWxlYXNlKCkpKTsKICAgICB9Ci0gICAgdHJhY2stPmFkZE9ic2Vy
dmVyKHRoaXMpOwotICAgIG1fZGVzY3JpcHRvci0+YWRkU291cmNlKHNvdXJjZSk7CiAKLSAgICBz
Y2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmFkZHRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2spKTsKKyAgICBtX2Rlc2Ny
aXB0b3ItPnJlbW92ZVNvdXJjZShzb3VyY2UpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtOjpyZW1v
dmVSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkKK3ZvaWQgTWVkaWFTdHJl
YW06OmFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBwcml2YXRlVHJhY2sp
CiB7CisgICAgQVNTRVJUKHByaXZhdGVUcmFjayk7CiAgICAgaWYgKGVuZGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IqIHRyYWNrcyA9IDA7Ci0gICAg
c3dpdGNoIChzb3VyY2UtPnR5cGUoKSkgeworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0
cmFjazsKKyAgICBzd2l0Y2ggKHByaXZhdGVUcmFjay0+dHlwZSgpKSB7CiAgICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZTo6QXVkaW86Ci0gICAgICAgIHRyYWNrcyA9ICZtX2F1ZGlvVHJhY2tzOwor
ICAgICAgICB0cmFjayA9IEF1ZGlvU3RyZWFtVHJhY2s6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCAqcHJpdmF0ZVRyYWNrKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZTo6VmlkZW86Ci0gICAgICAgIHRyYWNrcyA9ICZtX3ZpZGVvVHJhY2tzOwor
ICAgICAgICB0cmFjayA9IFZpZGVvU3RyZWFtVHJhY2s6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCAqcHJpdmF0ZVRyYWNrKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAotICAgIFZlY3RvcjxpbnQ+IHRyYWNrc1RvUmVtb3ZlOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tzLT5zaXplKCk7ICsraSkgewotICAgICAgICBp
ZiAoKCp0cmFja3MpW2ldLT5zb3VyY2UoKSA9PSBzb3VyY2UpCi0gICAgICAgICAgICB0cmFja3NU
b1JlbW92ZS5hcHBlbmQoaSk7Ci0gICAgfQorICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVy
bjsKIAotICAgIG1fZGVzY3JpcHRvci0+cmVtb3ZlU291cmNlKHNvdXJjZSk7CisgICAgaWYgKGFk
ZFRyYWNrKHRyYWNrKSkKKyAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFt
VHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50LCBmYWxzZSwgZmFs
c2UsIHRyYWNrKSk7Cit9CiAKLSAgICBmb3IgKGludCBpID0gdHJhY2tzVG9SZW1vdmUuc2l6ZSgp
IC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRy
YWNrID0gKCp0cmFja3MpW3RyYWNrc1RvUmVtb3ZlW2ldXTsKLSAgICAgICAgdHJhY2stPnJlbW92
ZU9ic2VydmVyKHRoaXMpOwotICAgICAgICB0cmFja3MtPnJlbW92ZSh0cmFja3NUb1JlbW92ZVtp
XSk7Cit2b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSogcHJpdmF0ZVRyYWNrKQoreworICAgIEFTU0VSVChwcml2YXRlVHJhY2spOworICAg
IGlmIChlbmRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4gdHJhY2sgPSBnZXRUcmFja0J5SWQocHJpdmF0ZVRyYWNrLT5pZCgpKTsKKyAgICBpZiAo
cmVtb3ZlVHJhY2sodHJhY2spKQogICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFT
dHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQsIGZh
bHNlLCBmYWxzZSwgdHJhY2sucmVsZWFzZSgpKSk7Ci0gICAgfQogfQogCiB2b2lkIE1lZGlhU3Ry
ZWFtOjpzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCkBAIC0z
NjIsNiArMzcxLDIzIEBAIFVSTFJlZ2lzdHJ5JiBNZWRpYVN0cmVhbTo6cmVnaXN0cnkoKSBjb25z
dAogICAgIHJldHVybiBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpOwogfQogCitNZWRp
YVN0cmVhbVRyYWNrVmVjdG9yKiBNZWRpYVN0cmVhbTo6Z2V0VHJhY2tWZWN0b3JGb3JUeXBlKE1l
ZGlhU3RyZWFtU291cmNlOjpUeXBlIHR5cGUpCit7CisgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3Rv
ciogdHJhY2tzID0gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIE1lZGlh
U3RyZWFtU291cmNlOjpBdWRpbzoKKyAgICAgICAgdHJhY2tzID0gJm1fYXVkaW9UcmFja3M7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlZpZGVvOgorICAgICAg
ICB0cmFja3MgPSAmbV92aWRlb1RyYWNrczsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZTo6Tm9uZToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHJhY2tzOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCmluZGV4IDQ2NmRiNGJk
M2E2MDNhYWNhZjJmMmMxYmUzYjhhMjVjYjA1YThiMDIuLjhmZTE5ZDM4YmQyZTg5YTljMjk4MGNl
ODUyOGY4YTFkOWQ1NjJhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmgKQEAgLTk3LDYgKzk3LDExIEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHN0cmVhbURpZEVuZCgpIE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9p
ZCBhZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERSBGSU5BTDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKikgT1ZF
UlJJREUgRklOQUw7CisgICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlKikgT1ZFUlJJREUgRklOQUw7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJl
bW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKikgT1ZFUlJJREUgRklOQUw7CisKKyAg
ICBib29sIHJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4pOworICAgIGJv
b2wgYWRkVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPik7CiAKICAgICBib29sIGhh
dmVUcmFja1dpdGhTb3VyY2UoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4pOwogCkBAIC0x
MDUsNiArMTEwLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xvbmVNZWRpYVN0cmVhbVRyYWNr
VmVjdG9yKE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrVmVj
dG9yJik7CiAKKyAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKiBnZXRUcmFja1ZlY3RvckZvclR5
cGUoTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGUpOworCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtRGVz
Y3JpcHRvcj4gbV9kZXNjcmlwdG9yOwogICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgbV9hdWRp
b1RyYWNrczsKICAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIG1fdmlkZW9UcmFja3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmNwcAppbmRleCA2ZGVhYmVhNjdjNjkzOThmNjdkZDNkNjY1YWJlYzljYTIyYzViNzkzLi5m
YmIyYjk4MjcxYzMyNWVkNzdlMjJjNGUzNGRjNGI0NzgyZjE2Mjc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAK
QEAgLTY2LDcgKzY2LDggQEAgTWVkaWFTdHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0cmVhbVQKIH0KIAogTWVkaWFTdHJl
YW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrJiBvdGhlcikKLSAgICA6
IEFjdGl2ZURPTU9iamVjdChvdGhlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgOiBS
ZWZDb3VudGVkKCkKKyAgICAsIEFjdGl2ZURPTU9iamVjdChvdGhlci5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCiAgICAgLCBtX3ByaXZhdGVUcmFjaygqb3RoZXIucHJpdmF0ZVRyYWNrKCkuY2xv
bmUoKSkKICAgICAsIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZChmYWxzZSkKICAgICAsIG1fc3Rv
cHBpbmdUcmFjayhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCmluZGV4IGQ2YWM2NDJh
MDdhZTU4NTEzNzYzNzZmZjA2ODdiMDQ1YzIwZWZmZWYuLjkyZjliNmQwMGE0Mzg2OWU4YzY4ZTVj
ZDIzNTNjMTQzMzU1NTlhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcApAQCAtMTA3LDYg
KzEwNywyMiBAQCB2b2lkIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6cmVtb3ZlUmVtb3RlU291cmNl
KE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiAgICAgICAgIHJlbW92ZVNvdXJjZShzb3VyY2Up
OwogfQogCit2b2lkIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6YWRkUmVtb3RlVHJhY2soTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUqIHRyYWNrKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
bV9jbGllbnQtPmFkZFJlbW90ZVRyYWNrKHRyYWNrKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFRy
YWNrKHRyYWNrKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVJlbW90
ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB0cmFjaykKK3sKKyAgICBpZiAobV9jbGll
bnQpCisgICAgICAgIG1fY2xpZW50LT5yZW1vdmVSZW1vdGVUcmFjayh0cmFjayk7CisgICAgZWxz
ZQorICAgICAgICByZW1vdmVUcmFjayh0cmFjayk7Cit9CisKIE1lZGlhU3RyZWFtRGVzY3JpcHRv
cjo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IE1lZGlhU3Ry
ZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVj
dG9yJiB2aWRlb1NvdXJjZXMpCiAgICAgOiBtX2NsaWVudCgwKQogICAgICwgbV9pZChpZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmgKaW5kZXggNmYzMGFhNDdkZjJhOWEwYjRmMjFkMDRhZjRhNjY0N2U1
YTEyNjkzNS4uZGQwYzQ4MThhNDEwZGNmNzZjMDhkNmE5MDMwNjdjOTQzM2QwMjU4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1EaWRFbmQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVNvdXJj
ZShNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVtb3Rl
U291cmNlKE1lZGlhU3RyZWFtU291cmNlKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRSZW1v
dGVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqKSA9IDA7CiB9OwogCiBj
bGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVh
bURlc2NyaXB0b3I+IHsKQEAgLTg5LDYgKzkxLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkVHJh
Y2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4pOwogICAgIHZvaWQgcmVtb3Zl
VHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4pOwogCisgICAgdm9pZCBh
ZGRSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSopOworICAgIHZvaWQgcmVtb3Zl
UmVtb3RlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqKTsKKwogcHJpdmF0ZToKICAgICBN
ZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Im
IHZpZGVvU291cmNlcyk7CiAgICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYg
aWQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiYgYXVkaW9Q
cml2YXRlVHJhY2tzLCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
Pj4mIHZpZGVvUHJpdmF0ZVRyYWNrcyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>