<?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>44806</bug_id>
          
          <creation_ts>2010-08-27 17:40:08 -0700</creation_ts>
          <short_desc>Use purgeable memory to keep more dead resources in cache</short_desc>
          <delta_ts>2010-09-21 17:52:01 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pratik Solanki">psolanki</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>charles-webkit</cc>
    
    <cc>dacarson</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>psolanki</cc>
    
    <cc>socket.h</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>270849</commentid>
    <comment_count>0</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-08-27 17:40:08 -0700</bug_when>
    <thetext>When we have purgeable memory available, we should be able to hold on to more objects that the dead size limit of the WebCore cache. Since the data is kept in purgeable pages, we can keep the CachedResource objects around until the kernel decides to reclaim the pages. At which point we can delete the cached resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270942</commentid>
    <comment_count>1</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-08-28 00:25:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/8350901&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270946</commentid>
    <comment_count>2</comment_count>
      <attachid>65814</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-08-28 00:37:16 -0700</bug_when>
    <thetext>Created attachment 65814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271100</commentid>
    <comment_count>3</comment_count>
      <attachid>65814</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-28 19:59:30 -0700</bug_when>
    <thetext>Comment on attachment 65814
Patch

Thanks, great to see you taking on this work!

&gt; +    bool wasPurgeable = Cache::markMemoryPurgeableOnEvict() &amp;&amp; resource &amp;&amp; resource-&gt;isPurgeable();

A better name for this function would be shouldMarkMemoryPurgeableOnEviction. The phrase &quot;mark memory purgeable on evict&quot; is not as good, because it sounds like a function that will take action, not return a boolean, and &quot;on evict&quot; is unnecessarily ungrammatical and hence slightly confusing.

&gt; +        // Add the size back since we had subtracted it when we marked the memory
&gt; +        // as purgeable.

I suggest putting this comment all in one line. The line wouldn&apos;t be that long.

&gt; +        int delta = resource-&gt;size();
&gt; +        if (delta)
&gt; +            adjustSize(resource-&gt;hasClients(), delta);

Do we really need the optimization for a resource with a size of zero? Is that a common case that needs to be faster than other cases? I would write:

    adjustSize(resource-&gt;hasClients(), resource-&gt;size());

By the way, if we did need it, I still think that scoping the local variable to the if would be nicer style.

&gt; +                    // Pass false if we had already subtracted the resource size
&gt; +                    // when we marked it as purgeable.

This comment would be better if it explained that passing false means. It&apos;s tantalizingly close to a comment that explains things, but I have to look up the contents of the evict function to understand what this mean. Also, would read better as a single line instead of broken up like this. It wouldn&apos;t be too long.

&gt; +                    // evict the resource since we couldn&apos;t use purgeable
&gt; +                    // memory.

Should capitalize the word &quot;evict&quot; and put this comment all on one line.

&gt; +        if (!resource-&gt;makePurgeable(true))
&gt; +            return false;

Not your fault, but call sites like this are the reason we don’t like

&gt; +        // Subtract from our size totals.
&gt; +        int delta = -static_cast&lt;int&gt;(resource-&gt;size());
&gt; +        if (delta)
&gt; +            adjustSize(resource-&gt;hasClients(), delta);

Is the static_cast here really needed? Why exactly?

I don&apos;t think the comment says anything the code doesn&apos;t already say, so you should omit it.

Same comment as earlier about optimizing the zero size case. Why do we need to optimize that? Is it particularly common?

&gt; +        return true;
&gt; +    }
&gt; +    return false;

I think an early return would be better style than nesting all the code inside the resource-&gt;inCache check.

&gt; +        if (decrementSize) {
&gt; +            // Subtract from our size totals.
&gt; +            int delta = -static_cast&lt;int&gt;(resource-&gt;size());
&gt; +            if (delta)
&gt; +                adjustSize(resource-&gt;hasClients(), delta);
&gt; +        }

Same comments as above again.

&gt; +#if ENABLE(PURGEABLE_MEMORY_MARK_ON_EVICTION)
&gt; +/* With this define enabled, we no longer have an explicit bound on the number
&gt; + * of dead resources. The normal behaviour is that dead resources have their
&gt; + * memory marked as purgeable and as we pruned the dead resources list, we
&gt; + * evicted them from cache and deleted them. We change this behaviour to the
&gt; + * following
&gt; + *
&gt; + * 1. Dead resources in the cache are kept in non-purgeable memory.
&gt; + * 2. When we prune dead resources, instead of freeing them, we mark their
&gt; + *    memory as purgeable and keep the resources until the kernel reclaims the
&gt; + *    purgeable memory.
&gt; + *
&gt; + * By leaving the in-cache dead resources in dirty resident memory, we decrease
&gt; + * the likelyhood of the kernel claiming that memory and forcing us to refetch
&gt; + * the resource (for example when a user presses back).
&gt; + *
&gt; + * And by having an unbounded number of resource objects using purgeable
&gt; + * memory, we can utilize as much memory as is available on the machine. We are
&gt; + * bounded by how much purgeable memory the kernel will alow us to have. We do
&gt; + * delete CachedResource objects - it happens as part of pruneDeadResources if
&gt; + * we notice that the memory used by the resource has been purged by the
&gt; + * kernel. The trade-off here is that the CachedResource object (and its member
&gt; + * variables) itself is allocated in non-purgeable TC-malloc&apos;d memory so we
&gt; + * would see slightly more memory use due to this.
&gt; + */
&gt; +#endif

We use // for comments, not /* */. If your reason to use /* */ is because it&apos;s a long comment and you want to make it easier to edit, that is defeated by putting a * on every line.

It doesn&apos;t make a lot of sense to have a comment inside an #if, so you should find another way to tie it together.

We use US spelling in comments in WebKit, so it should be &quot;behavior&quot; rather than &quot;behaviour&quot;.

The word &quot;utilize&quot; is no better than the word &quot;use&quot;, so please don&apos;t utilize it. ;-)

I believe the word is spelled &quot;likelihood&quot;, not &quot;likelyhood&quot;.

You should also revisit this comment and see if you can say the same thing with fewer words. It&apos;s a little too long for people to read, so not as valuable as a terser comment that says the same thing.


&gt; +#if ENABLE(PURGEABLE_MEMORY_MARK_ON_EVICTION)
&gt; +    static bool markMemoryPurgeableOnEvict() { return true; }
&gt; +#else
&gt; +    static bool markMemoryPurgeableOnEvict() { return false; }
&gt; +#endif

It would be better to have the #if around the body of the function rather than the definition. I suggest moving the function outside the class definition. It can still be inline:

    inline bool Cache::shouldMarkMemoryPurgableOnEviction()
    {
#if /* SUITABLE CONDITION HERE, PERHAPS PLATFORM(IOS) */
        return true;
#else
        return false;
#endif
    }

I&apos;m not sure we should have a special #if for this, given that it&apos;s controlled in exactly one place. It seems that one place could have the suitable #if. But I suppose you can leave that for now. It&apos;s a real shame to have something in Platform.h that really only needs to be in Cache.h, though.

&gt; +    void evict(CachedResource*, bool decrementSize = true);

It&apos;s quite unpleasant to have a boolean argument to this function that tells it to &quot;decrement size&quot;. First of all, it should be &quot;shouldDecrementSize&quot;, but also, that&apos;s too low level a concept for the function argument. It&apos;s just not clear why would you pass false in some cases and true in others? Can&apos;t evict make the decision itself based on looking at resource-&gt;wasPurged()? That would be cleaner. Or the boolean could be &quot;size already removed from cache at purge time&quot;, which would be clearer and easier to set correctly for callers.

&gt; -    if (isSafeToMakePurgeable())
&gt; -        makePurgeable(true);
&gt; +    if (!Cache::markMemoryPurgeableOnEvict()) {
&gt; +        if (isSafeToMakePurgeable())
&gt; +            makePurgeable(true);
&gt; +    }

I think &amp;&amp; would be better here than nesting ifs, but also, can the check go lower level, inside isSafeToMakePurgeable and markPurgeable?

&gt; -        makePurgeable(true);
&gt; +        if (!Cache::markMemoryPurgeableOnEvict())
&gt; +            makePurgeable(true);

Same question.

&gt; -    if (isSafeToMakePurgeable())
&gt; -        makePurgeable(true);
&gt; +    if (!Cache::markMemoryPurgeableOnEvict()) {
&gt; +        if (isSafeToMakePurgeable())
&gt; +            makePurgeable(true);
&gt; +    }

And again.

I&apos;m sure at least some of my suggestions aren&apos;t practical, but at least some of them are good ideas. I&apos;m going to say review+, but I think you may want another round of review after taking at least some of my advice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271316</commentid>
    <comment_count>4</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-08-29 23:46:03 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 65814 [details])

&gt; &gt; +        int delta = resource-&gt;size();
&gt; &gt; +        if (delta)
&gt; &gt; +            adjustSize(resource-&gt;hasClients(), delta);
&gt; 
&gt; Do we really need the optimization for a resource with a size of zero? Is that a common case that needs to be faster than other cases? I would write:
&gt; 
&gt;     adjustSize(resource-&gt;hasClients(), resource-&gt;size());

That part of the code was copied from existing code. It seems to be the pattern in Cache.cpp to test for a non-zero delta before calling adjustSize). Looking at the code though, I don&apos;t see why we need to test for 0. I could change it if you would prefer.
 
&gt; By the way, if we did need it, I still think that scoping the local variable to the if would be nicer style.

Sure I can do that.

&gt; &gt; +        if (!resource-&gt;makePurgeable(true))
&gt; &gt; +            return false;
&gt; 
&gt; Not your fault, but call sites like this are the reason we don’t like

I think you forgot to finish this sentence.

&gt; &gt; +        // Subtract from our size totals.
&gt; &gt; +        int delta = -static_cast&lt;int&gt;(resource-&gt;size());
&gt; &gt; +        if (delta)
&gt; &gt; +            adjustSize(resource-&gt;hasClients(), delta);
&gt; 
&gt; Is the static_cast here really needed? Why exactly?
&gt; 
&gt; I don&apos;t think the comment says anything the code doesn&apos;t already say, so you should omit it.
&gt; 
&gt; Same comment as earlier about optimizing the zero size case. Why do we need to optimize that? Is it particularly common?

This part of the code was copied from evict(). It does the static_cast as well. resource-&gt;size() returns an unsigned int so maybe the cast was added for that reason?

&gt; &gt; +        return true;
&gt; &gt; +    }
&gt; &gt; +    return false;
&gt; 
&gt; I think an early return would be better style than nesting all the code inside the resource-&gt;inCache check.

Hazards of copy-paste code... But you&apos;re right. I&apos;ll fix that.

&gt; &gt; +        if (decrementSize) {
&gt; &gt; +            // Subtract from our size totals.
&gt; &gt; +            int delta = -static_cast&lt;int&gt;(resource-&gt;size());
&gt; &gt; +            if (delta)
&gt; &gt; +                adjustSize(resource-&gt;hasClients(), delta);
&gt; &gt; +        }
&gt; 
&gt; Same comments as above again.
&gt; 
&gt; &gt; +#if ENABLE(PURGEABLE_MEMORY_MARK_ON_EVICTION)
&gt; &gt; +/* With this define enabled, we no longer have an explicit bound on the number
&gt; &gt; + * of dead resources. The normal behaviour is that dead resources have their
&gt; &gt; + * memory marked as purgeable and as we pruned the dead resources list, we
&gt; &gt; + * evicted them from cache and deleted them. We change this behaviour to the
&gt; &gt; + * following
&gt; &gt; + *
&gt; &gt; + * 1. Dead resources in the cache are kept in non-purgeable memory.
&gt; &gt; + * 2. When we prune dead resources, instead of freeing them, we mark their
&gt; &gt; + *    memory as purgeable and keep the resources until the kernel reclaims the
&gt; &gt; + *    purgeable memory.
&gt; &gt; + *
&gt; &gt; + * By leaving the in-cache dead resources in dirty resident memory, we decrease
&gt; &gt; + * the likelyhood of the kernel claiming that memory and forcing us to refetch
&gt; &gt; + * the resource (for example when a user presses back).
&gt; &gt; + *
&gt; &gt; + * And by having an unbounded number of resource objects using purgeable
&gt; &gt; + * memory, we can utilize as much memory as is available on the machine. We are
&gt; &gt; + * bounded by how much purgeable memory the kernel will alow us to have. We do
&gt; &gt; + * delete CachedResource objects - it happens as part of pruneDeadResources if
&gt; &gt; + * we notice that the memory used by the resource has been purged by the
&gt; &gt; + * kernel. The trade-off here is that the CachedResource object (and its member
&gt; &gt; + * variables) itself is allocated in non-purgeable TC-malloc&apos;d memory so we
&gt; &gt; + * would see slightly more memory use due to this.
&gt; &gt; + */
&gt; &gt; +#endif
&gt; 
&gt; We use // for comments, not /* */. If your reason to use /* */ is because it&apos;s a long comment and you want to make it easier to edit, that is defeated by putting a * on every line.

Ok. I can change it to //. /* */ is just a style I like using. I use vim so editing such comments is actually not a problem at all for me :). But I&apos;ll fix it. 

&gt; It doesn&apos;t make a lot of sense to have a comment inside an #if, so you should find another way to tie it together.

It explains what happens when the macro is defined. Sort of like saying, this comment only valid when the #if is 1. Again, something I had seen in other projects and liked. I can just change the comment to say that it only applies when the ENABLE is 1.
 
&gt; We use US spelling in comments in WebKit, so it should be &quot;behavior&quot; rather than &quot;behaviour&quot;.

Sure. I can fix that.

&gt; The word &quot;utilize&quot; is no better than the word &quot;use&quot;, so please don&apos;t utilize it. ;-)

:)
 
&gt; You should also revisit this comment and see if you can say the same thing with fewer words. It&apos;s a little too long for people to read, so not as valuable as a terser comment that says the same thing.

Good point. I&apos;ll try to strip it down to fewer words. 

&gt; &gt; +#if ENABLE(PURGEABLE_MEMORY_MARK_ON_EVICTION)
&gt; &gt; +    static bool markMemoryPurgeableOnEvict() { return true; }
&gt; &gt; +#else
&gt; &gt; +    static bool markMemoryPurgeableOnEvict() { return false; }
&gt; &gt; +#endif
&gt; 
&gt; It would be better to have the #if around the body of the function rather than the definition. I suggest moving the function outside the class definition. It can still be inline:

Ok.

&gt;     inline bool Cache::shouldMarkMemoryPurgableOnEviction()
&gt;     {
&gt; #if /* SUITABLE CONDITION HERE, PERHAPS PLATFORM(IOS) */
&gt;         return true;
&gt; #else
&gt;         return false;
&gt; #endif
&gt;     }
&gt; 
&gt; I&apos;m not sure we should have a special #if for this, given that it&apos;s controlled in exactly one place. It seems that one place could have the suitable #if. But I suppose you can leave that for now. It&apos;s a real shame to have something in Platform.h that really only needs to be in Cache.h, though.

I&apos;ll try to rework this. Seems like it might be possible to remove this from Platform.h and just have it in Cache.h

&gt; &gt; +    void evict(CachedResource*, bool decrementSize = true);
&gt; 
&gt; It&apos;s quite unpleasant to have a boolean argument to this function that tells it to &quot;decrement size&quot;. First of all, it should be &quot;shouldDecrementSize&quot;, but also, that&apos;s too low level a concept for the function argument. It&apos;s just not clear why would you pass false in some cases and true in others? Can&apos;t evict make the decision itself based on looking at resource-&gt;wasPurged()? That would be cleaner. Or the boolean could be &quot;size already removed from cache at purge time&quot;, which would be clearer and easier to set correctly for callers.
&gt; 
&gt; &gt; -    if (isSafeToMakePurgeable())
&gt; &gt; -        makePurgeable(true);
&gt; &gt; +    if (!Cache::markMemoryPurgeableOnEvict()) {
&gt; &gt; +        if (isSafeToMakePurgeable())
&gt; &gt; +            makePurgeable(true);
&gt; &gt; +    }
&gt; 
&gt; I think &amp;&amp; would be better here than nesting ifs, but also, can the check go lower level, inside isSafeToMakePurgeable and markPurgeable?

&amp;&amp; is easy to do. I&apos;ll have to investigate if the check can go lower into makePurgeable(). 

&gt; &gt; -        makePurgeable(true);
&gt; &gt; +        if (!Cache::markMemoryPurgeableOnEvict())
&gt; &gt; +            makePurgeable(true);
&gt; 
&gt; Same question.
&gt; 
&gt; &gt; -    if (isSafeToMakePurgeable())
&gt; &gt; -        makePurgeable(true);
&gt; &gt; +    if (!Cache::markMemoryPurgeableOnEvict()) {
&gt; &gt; +        if (isSafeToMakePurgeable())
&gt; &gt; +            makePurgeable(true);
&gt; &gt; +    }
&gt; 
&gt; And again.
&gt; 
&gt; I&apos;m sure at least some of my suggestions aren&apos;t practical, but at least some of them are good ideas. I&apos;m going to say review+, but I think you may want another round of review after taking at least some of my advice.

I&apos;ll have a new patch up addressing the comments. Thanks a lot for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271702</commentid>
    <comment_count>5</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-08-30 15:33:54 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 65814 [details] [details])

&gt; &gt; Do we really need the optimization for a resource with a size of zero? Is that a common case that needs to be faster than other cases? I would write:
 
&gt; &gt; By the way, if we did need it, I still think that scoping the local variable to the if would be nicer style.

I&apos;m leaving the check for 0 in to be consistent. If we want to get rid of the check, let me know and I can clean up all the call sites in a follow on bug.
 
&gt; &gt; Is the static_cast here really needed? Why exactly?
&gt; This part of the code was copied from evict(). It does the static_cast as well. resource-&gt;size() returns an unsigned int so maybe the cast was added for that reason?

Leaving the static_cast in as well since resource-&gt;size() returns unsigned.
  
&gt; &gt; &gt; -    if (isSafeToMakePurgeable())
&gt; &gt; &gt; -        makePurgeable(true);
&gt; &gt; &gt; +    if (!Cache::markMemoryPurgeableOnEvict()) {
&gt; &gt; &gt; +        if (isSafeToMakePurgeable())
&gt; &gt; &gt; +            makePurgeable(true);
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; I think &amp;&amp; would be better here than nesting ifs, but also, can the check go lower level, inside isSafeToMakePurgeable and markPurgeable?
&gt; 
&gt; &amp;&amp; is easy to do. I&apos;ll have to investigate if the check can go lower into makePurgeable(). 

It didn&apos;t look straightforward to move the check down to makePurgeable() so I&apos;m leaving it where it is right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271703</commentid>
    <comment_count>6</comment_count>
      <attachid>65971</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-08-30 15:34:50 -0700</bug_when>
    <thetext>Created attachment 65971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271707</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-30 15:46:31 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; Do we really need the optimization for a resource with a size of zero? Is that a common case that needs to be faster than other cases?
&gt; 
&gt; I&apos;m leaving the check for 0 in to be consistent. If we want to get rid of the check, let me know and I can clean up all the call sites in a follow on bug.

Yes, I think we should get rid of the check.

&gt; &gt; &gt; Is the static_cast here really needed? Why exactly?
&gt; &gt; This part of the code was copied from evict(). It does the static_cast as well. resource-&gt;size() returns an unsigned int so maybe the cast was added for that reason?
&gt; 
&gt; Leaving the static_cast in as well since resource-&gt;size() returns unsigned.

That’s not a good reason.

We can use a &quot;-&quot; with an unsigned. The extra cast doesn’t do anything helpful; just makes the code harder to read. It’s not good to copy that mistake from the other code.

&gt; &gt; &gt; &gt; -    if (isSafeToMakePurgeable())
&gt; &gt; &gt; &gt; -        makePurgeable(true);
&gt; &gt; &gt; &gt; +    if (!Cache::markMemoryPurgeableOnEvict()) {
&gt; &gt; &gt; &gt; +        if (isSafeToMakePurgeable())
&gt; &gt; &gt; &gt; +            makePurgeable(true);
&gt; &gt; &gt; &gt; +    }
&gt; &gt; &gt; 
&gt; &gt; &gt; I think &amp;&amp; would be better here than nesting ifs, but also, can the check go lower level, inside isSafeToMakePurgeable and markPurgeable?
&gt; &gt; 
&gt; &gt; &amp;&amp; is easy to do. I&apos;ll have to investigate if the check can go lower into makePurgeable(). 
&gt; 
&gt; It didn&apos;t look straightforward to move the check down to makePurgeable() so I&apos;m leaving it where it is right now.

You don’t say anything concrete about why it didn’t look straightforward. It’s unfortunate to have checks in multiple places and wonder if we forgot one of the call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271739</commentid>
    <comment_count>8</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-08-30 16:27:41 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; Yes, I think we should get rid of the check.

Ok.
 
&gt; That’s not a good reason.
&gt; 
&gt; We can use a &quot;-&quot; with an unsigned. The extra cast doesn’t do anything helpful; just makes the code harder to read. It’s not good to copy that mistake from the other code.

Ok. Changed.
 
&gt; &gt; It didn&apos;t look straightforward to move the check down to makePurgeable() so I&apos;m leaving it where it is right now.
&gt; 
&gt; You don’t say anything concrete about why it didn’t look straightforward. It’s unfortunate to have checks in multiple places and wonder if we forgot one of the call sites.

Mainly because CachedResource::makePurgeable() gets called from Cache class as well and it needs to do its work when called from there. So I can&apos;t just have makePurgeable() look at the flag and decide what to do. I need to look at the caller as well. Which is why the check is at the call site. How can I design this better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271751</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-08-30 16:38:06 -0700</bug_when>
    <thetext>I suppose it is better to track purgeable and in memory data consumption separately to make the code more clear.
https://bugs.webkit.org/show_bug.cgi?id=44878</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271763</commentid>
    <comment_count>10</comment_count>
      <attachid>65979</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-08-30 16:51:44 -0700</bug_when>
    <thetext>Created attachment 65979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271926</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-30 21:53:49 -0700</bug_when>
    <thetext>Attachment 65979 did not build on win:
Build output: http://queues.webkit.org/results/3828169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281894</commentid>
    <comment_count>12</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-09-20 16:28:35 -0700</bug_when>
    <thetext>I was on vacation and just got back. I&apos;m not sure why the Windows bot failed and the error log is quite unhelpful. I am updating the patch to latest webkit sources and asking for review again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281898</commentid>
    <comment_count>13</comment_count>
      <attachid>68154</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-09-20 16:30:38 -0700</bug_when>
    <thetext>Created attachment 68154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282147</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-21 01:32:39 -0700</bug_when>
    <thetext>Attachment 68154 did not build on win:
Build output: http://queues.webkit.org/results/4092022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282513</commentid>
    <comment_count>15</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-09-21 13:17:32 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Attachment 68154 [details] did not build on win:
&gt; Build output: http://queues.webkit.org/results/4092022

Very odd. I have no idea why my patch failed to build on windows and the output is not at all useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282526</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-21 13:38:17 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Very odd. I have no idea why my patch failed to build on windows and the output is not at all useful.

Yes, the Early Warning System uses the free version of Microsoft’s development tools, which don’t put errors where we can see them. In some cases people just land the patches and then fix the failure as seen on the bots, which have the non-free versions and so we can see the errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282613</commentid>
    <comment_count>17</comment_count>
      <attachid>68154</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-09-21 16:22:27 -0700</bug_when>
    <thetext>Comment on attachment 68154
Patch

r=me

I&apos;d recommend landing and watching the Windows buildbot to get real build output. Should be easy enough to fix right away, but if it&apos;s not, we can always roll out and try again later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282618</commentid>
    <comment_count>18</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-09-21 16:27:01 -0700</bug_when>
    <thetext>Thanks for the review Geoff. I&apos;ll keep an eye on the Windows buildbot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282703</commentid>
    <comment_count>19</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-09-21 17:46:31 -0700</bug_when>
    <thetext>Committed revision 67998.

Committed revision 67996.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282706</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-21 17:52:01 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67996 might have broken GTK Linux 32-bit Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/67994
http://trac.webkit.org/changeset/67995
http://trac.webkit.org/changeset/67996</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65814</attachid>
            <date>2010-08-28 00:37:16 -0700</date>
            <delta_ts>2010-08-30 15:34:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44806-20100828003714.patch</filename>
            <type>text/plain</type>
            <size>14270</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzNGI2YzEzZmY1ZjVlZjVhOTgxNDgwNDc0YTI0OTI5MzIwOGI2YmM2Li40
OTc1MjliY2YzNDMzOWJhODI4ZWY4YTkxMmJmMGU2MGQ2N2JkZTE3IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTAtMDgtMjggIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBwdXJnZWFibGUgbWVtb3J5IHRvIGtlZXAgbW9yZSBkZWFkIHJlc291cmNlcyBpbiBjYWNoZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ4MDYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNTA5MDE+CisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0u
aDogTmV3IGRlZmluZSB0byBlbmFibGUgdGhpcyBjb2RlLgorCiAyMDEwLTA4LTI3ICBDaGFvLXlp
bmcgRnUgIDxmdUBtaXBzLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4K
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvSmF2YVNjcmlwdENv
cmUvd3RmL1BsYXRmb3JtLmgKaW5kZXggMmYyNzQ4NTVlOTBhMDQxMGUxMTk0NmFlZTM4Yjc5NWYz
Nzk4ZGIxNS4uOTgzYjkyYmI4YmU2NmRlMzczOTA0ZjQwYzM4NzBmYWQzNDc0MWM0YyAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmgKQEAgLTg1Niw2ICs4NTYsMTAgQEAKICNkZWZpbmUgRU5BQkxFX05FVFND
QVBFX1BMVUdJTl9BUEkgMQogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfUFVSR0VBQkxF
X01FTU9SWV9NQVJLX09OX0VWSUNUSU9OKQorI2RlZmluZSBFTkFCTEVfUFVSR0VBQkxFX01FTU9S
WV9NQVJLX09OX0VWSUNUSU9OIDAKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoV1RGX1VTRV9QTFVH
SU5fSE9TVF9QUk9DRVNTKQogI2RlZmluZSBXVEZfVVNFX1BMVUdJTl9IT1NUX1BST0NFU1MgMAog
I2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGM3MDE3YjIyYmM2ZmYxMjRjZjhhZTdkYzE1ZDE4YmI5N2U1MmU2YzkuLjRiNjA1OTli
MWUyMGU0YWQ4MjBkOTNlZmYyNzNiMDMxZDJhMWQ2NjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTAtMDgt
MjggIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBwdXJnZWFibGUgbWVtb3J5IHRv
IGtlZXAgbW9yZSBkZWFkIHJlc291cmNlcyBpbiBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ4MDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzgzNTA5MDE+CisKKyAgICAgICAgVGhpcyBjaGFuZ2VzIHRoZSBiZWhhdmlvdXIgb2YgZGVhZCBy
ZXNvdXJjZXMgaW4gdGhlIFdlYkNvcmUgY2FjaGUuCisgICAgICAgIFByZXZpb3VzbHksIGRlYWQg
cmVzb3VyY2VzIGhhZCB0aGVpciBtZW1vcnkgbWFya2VkIGFzIHB1cmdlYWJsZSBhbmQgYXMgd2UK
KyAgICAgICAgcHJ1bmVkIHRoZSBkZWFkIHJlc291cmNlcyBsaXN0LCB3ZSBldmljdGVkIHRoZW0g
ZnJvbSBjYWNoZSBhbmQgZGVsZXRlZAorICAgICAgICB0aGVtLiBXZSBjaGFuZ2UgdGhpcyBiZWhh
dmlvdXIgdG8gdGhlIGZvbGxvd2luZworCisgICAgICAgIDEuIERlYWQgcmVzb3VyY2VzIGluIHRo
ZSBjYWNoZSBhcmUga2VwdCBpbiBub24tcHVyZ2VhYmxlIG1lbW9yeQorICAgICAgICAyLiBXaGVu
IHdlIHBydW5lIGRlYWQgcmVzb3VyY2VzLCBpbnN0ZWFkIG9mIGZyZWVpbmcgdGhlbSwgd2UgbWFy
ayB0aGVpcgorICAgICAgICBtZW1vcnkgYXMgcHVyZ2VhYmxlIGFuZCBrZWVwIHRoZSByZXNvdXJj
ZXMgdW50aWwgdGhlIGtlcm5lbCByZWNsYWltcworICAgICAgICB0aGUgcHVyZ2VhYmxlIG1lbW9y
eS4KKworICAgICAgICBCeSBsZWF2aW5nIHRoZSBpbi1jYWNoZSBkZWFkIHJlc291cmNlcyBpbiBk
aXJ0eSByZXNpZGVudCBtZW1vcnksIHdlCisgICAgICAgIGRlY3JlYXNlIHRoZSBsaWtlbHlob29k
IG9mIHRoZSBrZXJuZWwgY2xhaW1pbmcgdGhhdCBtZW1vcnkgYW5kIGZvcmNpbmcKKyAgICAgICAg
dXMgdG8gcmVmZXRjaCB0aGUgcmVzb3VyY2UgKGZvciBleGFtcGxlIHdoZW4gYSB1c2VyIHByZXNz
ZXMgYmFjaykuCisKKyAgICAgICAgQW5kIGJ5IGhhdmluZyBhbiB1bmJvdW5kZWQgbnVtYmVyIG9m
IHJlc291cmNlIG9iamVjdHMgdXNpbmcgcHVyZ2VhYmxlCisgICAgICAgIG1lbW9yeSwgd2UgY2Fu
IHV0aWxpemUgYXMgbXVjaCBtZW1vcnkgYXMgaXMgYXZhaWxhYmxlIG9uIHRoZSBtYWNoaW5lLgor
ICAgICAgICBXZSBhcmUgYm91bmRlZCBieSBob3cgbXVjaCBwdXJnZWFibGUgbWVtb3J5IHRoZSBr
ZXJuZWwgd2lsbCBhbG93IHVzIHRvCisgICAgICAgIGhhdmUuIFRoZSB0cmFkZS1vZmYgaXMgdGhh
dCB0aGUgQ2FjaGVkUmVzb3VyY2Ugb2JqZWN0IChhbmQgaXRzIG1lbWJlcgorICAgICAgICB2YXJp
YWJsZXMpIGl0c2VsZiBpcyBhbGxvY2F0ZWQgaW4gbm9uLXB1cmdlYWJsZSBUQy1tYWxsb2MnZCBt
ZW1vcnkgc28KKyAgICAgICAgd2Ugd291bGQgc2VlIHNsaWdodGx5IG1vcmUgbWVtb3J5IHVzZSBk
dWUgdG8gdGhpcy4KKworICAgICAgICAqIGxvYWRlci9DYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZTo6cmVzb3VyY2VGb3JVUkwpOiBBZGp1c3Qgc2l6ZXMgYXBwcm9wcmlhdGVseSBp
ZiB3ZSBtYWRlCisgICAgICAgIHJlc291cmNlIG1lbW9yeSBub24tcHVyZ2VhYmxlLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGU6OnBydW5lRGVhZFJlc291cmNlcyk6IFdoZW4gcmVtb3ZpbmcgZGVh
ZCByZXNvdXJjZXMsIHRyeQorICAgICAgICBmaXJzdCB0byBtYXJrIHRoZWlyIG1lbW9yeSBhcyBw
dXJnZWFibGUuIElmIG5vdCwgZXZpY3QgdGhlIHJlc291cmNlLgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGU6Om1ha2VSZXNvdXJjZVB1cmdlYWJsZSk6IEFkZGVkLiBUcnkgdG8gbWFyayByZXNvdXJj
ZQorICAgICAgICBtZW1vcnkgYXMgcHVyZ2VhYmxlLiBJZiBzdWNjZXNzZnVsLCBhZGp1c3QgdGhl
IHNpemVzIHNvIHRoYXQgd2UgZG9uJ3QKKyAgICAgICAgZmFjdG9yIHRoaXMgcmVzb3VyY2VzIHNp
emUgaW4gdGhlIENhY2hlIHNpemUgY2FsY3VsYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZTo6ZXZpY3QpOiBFeHRyYSBmbGFnIHRvIHRoaXMgbWV0aG9kIHRvIGluZGljYXRlIGlmIHRoZQor
ICAgICAgICBzaXplcyBuZWVkIHRvIGJlIGFkanVzdGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGU6OmR1bXBMUlVMaXN0cyk6IEV4dHJhIGRlYnVnIGxvZ2dpbmcuCisgICAgICAgICogbG9hZGVy
L0NhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6bWFya01lbW9yeVB1cmdlYWJsZU9u
RXZpY3QpOiBBZGRlZC4gSW5kaWNhdGVzIGlmIHRoZQorICAgICAgICBuZXcgYmVoYXZpb3VyIGlz
IGVuYWJsZWQuCisgICAgICAgICogbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6YWxsQ2xpZW50c1JlbW92ZWQpOiBE
byBub3QgbWFyayBtZW1vcnkKKyAgICAgICAgYXMgcHVyZ2VhYmxlLiBUaGUgQ2FjaGUgY2xhc3Mg
dGFrZXMgY2FyZSBvZiB0aGlzLgorICAgICAgICAqIGxvYWRlci9DYWNoZWRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKTogRGl0dG8u
CisgICAgICAgICogbG9hZGVyL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRTY3JpcHQ6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6IERpdHRvLgorCiAyMDEwLTA4LTI3ICBQ
YXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZS5j
cHAgYi9XZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAKaW5kZXggY2I1MzZlMmU1ZWNhM2M5MGFhOWFk
NDIxOGZlMzg4NTc5MDBkYTM0NC4uNTdiNWFiYWQyODI2MzQyMDEwNWE0YmQzY2VjNzY4YTAzZjIz
MmU2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCisrKyBiL1dlYkNvcmUv
bG9hZGVyL0NhY2hlLmNwcApAQCAtMjM5LDExICsyMzksMTkgQEAgdm9pZCBDYWNoZTo6cmV2YWxp
ZGF0aW9uRmFpbGVkKENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRpbmdSZXNvdXJjZSkKIENhY2hl
ZFJlc291cmNlKiBDYWNoZTo6cmVzb3VyY2VGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAg
ICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbV9yZXNvdXJjZXMuZ2V0KHVybCk7CisgICAg
Ym9vbCB3YXNQdXJnZWFibGUgPSBDYWNoZTo6bWFya01lbW9yeVB1cmdlYWJsZU9uRXZpY3QoKSAm
JiByZXNvdXJjZSAmJiByZXNvdXJjZS0+aXNQdXJnZWFibGUoKTsKICAgICBpZiAocmVzb3VyY2Ug
JiYgIXJlc291cmNlLT5tYWtlUHVyZ2VhYmxlKGZhbHNlKSkgewogICAgICAgICBBU1NFUlQoIXJl
c291cmNlLT5oYXNDbGllbnRzKCkpOwogICAgICAgICBldmljdChyZXNvdXJjZSk7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KKyAgICBpZiAod2FzUHVyZ2VhYmxlKSB7CisgICAgICAgIC8vIEFk
ZCB0aGUgc2l6ZSBiYWNrIHNpbmNlIHdlIGhhZCBzdWJ0cmFjdGVkIGl0IHdoZW4gd2UgbWFya2Vk
IHRoZSBtZW1vcnkKKyAgICAgICAgLy8gYXMgcHVyZ2VhYmxlLgorICAgICAgICBpbnQgZGVsdGEg
PSByZXNvdXJjZS0+c2l6ZSgpOworICAgICAgICBpZiAoZGVsdGEpCisgICAgICAgICAgICBhZGp1
c3RTaXplKHJlc291cmNlLT5oYXNDbGllbnRzKCksIGRlbHRhKTsKKyAgICB9CiAgICAgcmV0dXJu
IHJlc291cmNlOwogfQogCkBAIC0zMjcsNyArMzM1LDkgQEAgdm9pZCBDYWNoZTo6cHJ1bmVEZWFk
UmVzb3VyY2VzKCkKICAgICAgICAgICAgICAgICBpZiAoY3VycmVudC0+d2FzUHVyZ2VkKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFjdXJyZW50LT5oYXNDbGllbnRzKCkpOwogICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoIWN1cnJlbnQtPmlzUHJlbG9hZGVkKCkpOwotICAgICAg
ICAgICAgICAgICAgICBldmljdChjdXJyZW50KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gUGFz
cyBmYWxzZSBpZiB3ZSBoYWQgYWxyZWFkeSBzdWJ0cmFjdGVkIHRoZSByZXNvdXJjZSBzaXplCisg
ICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gd2UgbWFya2VkIGl0IGFzIHB1cmdlYWJsZS4KKyAg
ICAgICAgICAgICAgICAgICAgZXZpY3QoY3VycmVudCwgIUNhY2hlOjptYXJrTWVtb3J5UHVyZ2Vh
YmxlT25FdmljdCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY3VycmVu
dCA9IHByZXY7CiAgICAgICAgICAgICB9CkBAIC0zNjQsNyArMzc0LDEyIEBAIHZvaWQgQ2FjaGU6
OnBydW5lRGVhZFJlc291cmNlcygpCiAgICAgICAgIHdoaWxlIChjdXJyZW50KSB7CiAgICAgICAg
ICAgICBDYWNoZWRSZXNvdXJjZSogcHJldiA9IGN1cnJlbnQtPm1fcHJldkluQWxsUmVzb3VyY2Vz
TGlzdDsKICAgICAgICAgICAgIGlmICghY3VycmVudC0+aGFzQ2xpZW50cygpICYmICFjdXJyZW50
LT5pc1ByZWxvYWRlZCgpICYmICFjdXJyZW50LT5pc0NhY2hlVmFsaWRhdG9yKCkpIHsKLSAgICAg
ICAgICAgICAgICBldmljdChjdXJyZW50KTsKKyAgICAgICAgICAgICAgICBpZiAoIW1ha2VSZXNv
dXJjZVB1cmdlYWJsZShjdXJyZW50KSkgeworICAgICAgICAgICAgICAgICAgICAvLyBldmljdCB0
aGUgcmVzb3VyY2Ugc2luY2Ugd2UgY291bGRuJ3QgdXNlIHB1cmdlYWJsZQorICAgICAgICAgICAg
ICAgICAgICAvLyBtZW1vcnkuCisgICAgICAgICAgICAgICAgICAgIGV2aWN0KGN1cnJlbnQpOwor
ICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIC8vIElmIGV2aWN0KCkgY2F1c2Vk
IHBydW5lRGVhZFJlc291cmNlcygpIHRvIGJlIHJlLWVudGVyZWQsIGJhaWwgb3V0LiBUaGlzIGNh
biBoYXBwZW4gd2hlbiByZW1vdmluZyBhbgogICAgICAgICAgICAgICAgIC8vIFNWRyBDYWNoZWRJ
bWFnZSB0aGF0IGhhcyBzdWJyZXNvdXJjZXMuCiAgICAgICAgICAgICAgICAgaWYgKCFtX2luUHJ1
bmVEZWFkUmVzb3VyY2VzKQpAQCAtMzk4LDcgKzQxMywyOCBAQCB2b2lkIENhY2hlOjpzZXRDYXBh
Y2l0aWVzKHVuc2lnbmVkIG1pbkRlYWRCeXRlcywgdW5zaWduZWQgbWF4RGVhZEJ5dGVzLCB1bnNp
Z25lZAogICAgIHBydW5lKCk7CiB9CiAKLXZvaWQgQ2FjaGU6OmV2aWN0KENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSkKK2Jvb2wgQ2FjaGU6Om1ha2VSZXNvdXJjZVB1cmdlYWJsZShDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UpCit7CisgICAgaWYgKCFDYWNoZTo6bWFya01lbW9yeVB1cmdlYWJsZU9u
RXZpY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHJlc291cmNlLT5pbkNh
Y2hlKCkpIHsKKyAgICAgICAgaWYgKCFyZXNvdXJjZS0+aXNTYWZlVG9NYWtlUHVyZ2VhYmxlKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKCFyZXNvdXJjZS0+bWFr
ZVB1cmdlYWJsZSh0cnVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAv
LyBTdWJ0cmFjdCBmcm9tIG91ciBzaXplIHRvdGFscy4KKyAgICAgICAgaW50IGRlbHRhID0gLXN0
YXRpY19jYXN0PGludD4ocmVzb3VyY2UtPnNpemUoKSk7CisgICAgICAgIGlmIChkZWx0YSkKKyAg
ICAgICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0NsaWVudHMoKSwgZGVsdGEpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENh
Y2hlOjpldmljdChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGJvb2wgZGVjcmVtZW50U2l6ZSkK
IHsKICAgICAvLyBUaGUgcmVzb3VyY2UgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgYnkg
c29tZW9uZSBvdGhlciB0aGFuIG91ciBjYWxsZXIsCiAgICAgLy8gd2hvIG5lZWRlZCBhIGZyZXNo
IGNvcHkgZm9yIGEgcmVsb2FkLiBTZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNDc5I2M2Pi4KQEAgLTQxMSwxMCArNDQ3LDEyIEBAIHZvaWQgQ2FjaGU6OmV2aWN0
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICAgICAgcmVtb3ZlRnJvbUxSVUxpc3QocmVz
b3VyY2UpOwogICAgICAgICByZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KHJlc291
cmNlKTsKIAotICAgICAgICAvLyBTdWJ0cmFjdCBmcm9tIG91ciBzaXplIHRvdGFscy4KLSAgICAg
ICAgaW50IGRlbHRhID0gLXN0YXRpY19jYXN0PGludD4ocmVzb3VyY2UtPnNpemUoKSk7Ci0gICAg
ICAgIGlmIChkZWx0YSkKLSAgICAgICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0NsaWVu
dHMoKSwgZGVsdGEpOworICAgICAgICBpZiAoZGVjcmVtZW50U2l6ZSkgeworICAgICAgICAgICAg
Ly8gU3VidHJhY3QgZnJvbSBvdXIgc2l6ZSB0b3RhbHMuCisgICAgICAgICAgICBpbnQgZGVsdGEg
PSAtc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGlmIChk
ZWx0YSkKKyAgICAgICAgICAgICAgICBhZGp1c3RTaXplKHJlc291cmNlLT5oYXNDbGllbnRzKCks
IGRlbHRhKTsKKyAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlQobV9yZXNvdXJj
ZXMuZ2V0KHJlc291cmNlLT51cmwoKSkgIT0gcmVzb3VyY2UpOwogCkBAIC03MjYsNyArNzY0LDcg
QEAgdm9pZCBDYWNoZTo6ZHVtcFN0YXRzKCkKIAogdm9pZCBDYWNoZTo6ZHVtcExSVUxpc3RzKGJv
b2wgaW5jbHVkZUxpdmUpIGNvbnN0CiB7Ci0gICAgcHJpbnRmKCJMUlUtU1AgbGlzdHMgaW4gZXZp
Y3Rpb24gb3JkZXIgKEtpbG9ieXRlcyBkZWNvZGVkLCBLaWxvYnl0ZXMgZW5jb2RlZCwgQWNjZXNz
IGNvdW50LCBSZWZlcmVuY2VkKTpcbiIpOworICAgIHByaW50ZigiTFJVLVNQIGxpc3RzIGluIGV2
aWN0aW9uIG9yZGVyIChLaWxvYnl0ZXMgZGVjb2RlZCwgS2lsb2J5dGVzIGVuY29kZWQsIEFjY2Vz
cyBjb3VudCwgUmVmZXJlbmNlZCwgaXNQdXJnZWFibGUsIHdhc1B1cmdlZCk6XG4iKTsKIAogICAg
IGludCBzaXplID0gbV9hbGxSZXNvdXJjZXMuc2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSBzaXpl
IC0gMTsgaSA+PSAwOyBpLS0pIHsKQEAgLTczNSw3ICs3NzMsOCBAQCB2b2lkIENhY2hlOjpkdW1w
TFJVTGlzdHMoYm9vbCBpbmNsdWRlTGl2ZSkgY29uc3QKICAgICAgICAgd2hpbGUgKGN1cnJlbnQp
IHsKICAgICAgICAgICAgIENhY2hlZFJlc291cmNlKiBwcmV2ID0gY3VycmVudC0+bV9wcmV2SW5B
bGxSZXNvdXJjZXNMaXN0OwogICAgICAgICAgICAgaWYgKGluY2x1ZGVMaXZlIHx8ICFjdXJyZW50
LT5oYXNDbGllbnRzKCkpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIoJS4xZkssICUuMWZLLCAl
dUEsICVkUik7ICIsIGN1cnJlbnQtPmRlY29kZWRTaXplKCkgLyAxMDI0LjBmLCAoY3VycmVudC0+
ZW5jb2RlZFNpemUoKSArIGN1cnJlbnQtPm92ZXJoZWFkU2l6ZSgpKSAvIDEwMjQuMGYsIGN1cnJl
bnQtPmFjY2Vzc0NvdW50KCksIGN1cnJlbnQtPmhhc0NsaWVudHMoKSk7CisgICAgICAgICAgICAg
ICAgcHJpbnRmKCIoJS4xZkssICUuMWZLLCAldUEsICVkUiwgJWQsICVkKTsgIiwgY3VycmVudC0+
ZGVjb2RlZFNpemUoKSAvIDEwMjQuMGYsIChjdXJyZW50LT5lbmNvZGVkU2l6ZSgpICsgY3VycmVu
dC0+b3ZlcmhlYWRTaXplKCkpIC8gMTAyNC4wZiwgY3VycmVudC0+YWNjZXNzQ291bnQoKSwgY3Vy
cmVudC0+aGFzQ2xpZW50cygpLCBjdXJyZW50LT5pc1B1cmdlYWJsZSgpLCBjdXJyZW50LT53YXNQ
dXJnZWQoKSk7CisKICAgICAgICAgICAgIGN1cnJlbnQgPSBwcmV2OwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaCBiL1dlYkNvcmUvbG9hZGVyL0Nh
Y2hlLmgKaW5kZXggNzYzZjFmMzYyYTZkOGUzZjE4MjM1ZWE4MTkyNjRkNzdmOTVkNDg1YS4uNDU5
Nzc1Nzc1NDY2MjI0MzZiMzNiMjMzMTE3OGY2OTljMTVlMzk0ZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9sb2FkZXIvQ2FjaGUuaAorKysgYi9XZWJDb3JlL2xvYWRlci9DYWNoZS5oCkBAIC01NSw2ICs1
NSwzMyBAQCBjbGFzcyBLVVJMOwogLy8gLS0tLS0tLXwtLS0tLSsrKysrKysrKysrKysrK3wKIC8v
IC0tLS0tLS18LS0tLS0rKysrKysrKysrKysrKyt8KysrKysKIAorI2lmIEVOQUJMRShQVVJHRUFC
TEVfTUVNT1JZX01BUktfT05fRVZJQ1RJT04pCisvKiBXaXRoIHRoaXMgZGVmaW5lIGVuYWJsZWQs
IHdlIG5vIGxvbmdlciBoYXZlIGFuIGV4cGxpY2l0IGJvdW5kIG9uIHRoZSBudW1iZXIKKyAqIG9m
IGRlYWQgcmVzb3VyY2VzLiBUaGUgbm9ybWFsIGJlaGF2aW91ciBpcyB0aGF0IGRlYWQgcmVzb3Vy
Y2VzIGhhdmUgdGhlaXIKKyAqIG1lbW9yeSBtYXJrZWQgYXMgcHVyZ2VhYmxlIGFuZCBhcyB3ZSBw
cnVuZWQgdGhlIGRlYWQgcmVzb3VyY2VzIGxpc3QsIHdlCisgKiBldmljdGVkIHRoZW0gZnJvbSBj
YWNoZSBhbmQgZGVsZXRlZCB0aGVtLiBXZSBjaGFuZ2UgdGhpcyBiZWhhdmlvdXIgdG8gdGhlCisg
KiBmb2xsb3dpbmcKKyAqCisgKiAxLiBEZWFkIHJlc291cmNlcyBpbiB0aGUgY2FjaGUgYXJlIGtl
cHQgaW4gbm9uLXB1cmdlYWJsZSBtZW1vcnkuCisgKiAyLiBXaGVuIHdlIHBydW5lIGRlYWQgcmVz
b3VyY2VzLCBpbnN0ZWFkIG9mIGZyZWVpbmcgdGhlbSwgd2UgbWFyayB0aGVpcgorICogICAgbWVt
b3J5IGFzIHB1cmdlYWJsZSBhbmQga2VlcCB0aGUgcmVzb3VyY2VzIHVudGlsIHRoZSBrZXJuZWwg
cmVjbGFpbXMgdGhlCisgKiAgICBwdXJnZWFibGUgbWVtb3J5LgorICoKKyAqIEJ5IGxlYXZpbmcg
dGhlIGluLWNhY2hlIGRlYWQgcmVzb3VyY2VzIGluIGRpcnR5IHJlc2lkZW50IG1lbW9yeSwgd2Ug
ZGVjcmVhc2UKKyAqIHRoZSBsaWtlbHlob29kIG9mIHRoZSBrZXJuZWwgY2xhaW1pbmcgdGhhdCBt
ZW1vcnkgYW5kIGZvcmNpbmcgdXMgdG8gcmVmZXRjaAorICogdGhlIHJlc291cmNlIChmb3IgZXhh
bXBsZSB3aGVuIGEgdXNlciBwcmVzc2VzIGJhY2spLgorICoKKyAqIEFuZCBieSBoYXZpbmcgYW4g
dW5ib3VuZGVkIG51bWJlciBvZiByZXNvdXJjZSBvYmplY3RzIHVzaW5nIHB1cmdlYWJsZQorICog
bWVtb3J5LCB3ZSBjYW4gdXRpbGl6ZSBhcyBtdWNoIG1lbW9yeSBhcyBpcyBhdmFpbGFibGUgb24g
dGhlIG1hY2hpbmUuIFdlIGFyZQorICogYm91bmRlZCBieSBob3cgbXVjaCBwdXJnZWFibGUgbWVt
b3J5IHRoZSBrZXJuZWwgd2lsbCBhbG93IHVzIHRvIGhhdmUuIFdlIGRvCisgKiBkZWxldGUgQ2Fj
aGVkUmVzb3VyY2Ugb2JqZWN0cyAtIGl0IGhhcHBlbnMgYXMgcGFydCBvZiBwcnVuZURlYWRSZXNv
dXJjZXMgaWYKKyAqIHdlIG5vdGljZSB0aGF0IHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgcmVzb3Vy
Y2UgaGFzIGJlZW4gcHVyZ2VkIGJ5IHRoZQorICoga2VybmVsLiBUaGUgdHJhZGUtb2ZmIGhlcmUg
aXMgdGhhdCB0aGUgQ2FjaGVkUmVzb3VyY2Ugb2JqZWN0IChhbmQgaXRzIG1lbWJlcgorICogdmFy
aWFibGVzKSBpdHNlbGYgaXMgYWxsb2NhdGVkIGluIG5vbi1wdXJnZWFibGUgVEMtbWFsbG9jJ2Qg
bWVtb3J5IHNvIHdlCisgKiB3b3VsZCBzZWUgc2xpZ2h0bHkgbW9yZSBtZW1vcnkgdXNlIGR1ZSB0
byB0aGlzLgorICovCisjZW5kaWYKKwogY2xhc3MgQ2FjaGUgOiBwdWJsaWMgTm9uY29weWFibGUg
ewogcHVibGljOgogICAgIGZyaWVuZCBDYWNoZSogY2FjaGUoKTsKQEAgLTE0OCw2ICsxNzUsMTIg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkVG9MaXZlUmVzb3VyY2VzU2l6ZShDYWNoZWRSZXNvdXJj
ZSopOwogICAgIHZvaWQgcmVtb3ZlRnJvbUxpdmVSZXNvdXJjZXNTaXplKENhY2hlZFJlc291cmNl
Kik7CiAKKyNpZiBFTkFCTEUoUFVSR0VBQkxFX01FTU9SWV9NQVJLX09OX0VWSUNUSU9OKQorICAg
IHN0YXRpYyBib29sIG1hcmtNZW1vcnlQdXJnZWFibGVPbkV2aWN0KCkgeyByZXR1cm4gdHJ1ZTsg
fQorI2Vsc2UKKyAgICBzdGF0aWMgYm9vbCBtYXJrTWVtb3J5UHVyZ2VhYmxlT25FdmljdCgpIHsg
cmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAgIC8vIEZ1bmN0aW9uIHRvIGNvbGxlY3QgY2Fj
aGUgc3RhdGlzdGljcyBmb3IgdGhlIGNhY2hlcyB3aW5kb3cgaW4gdGhlIFNhZmFyaSBEZWJ1ZyBt
ZW51LgogICAgIFN0YXRpc3RpY3MgZ2V0U3RhdGlzdGljcygpOwogCkBAIC0xNjgsNyArMjAxLDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBydW5lRGVhZFJlc291cmNlcygpOyAvLyBGbHVzaCBkZWNv
ZGVkIGFuZCBlbmNvZGVkIGRhdGEgZnJvbSByZXNvdXJjZXMgbm90IHJlZmVyZW5jZWQgYnkgV2Vi
IHBhZ2VzLgogICAgIHZvaWQgcHJ1bmVMaXZlUmVzb3VyY2VzKCk7IC8vIEZsdXNoIGRlY29kZWQg
ZGF0YSBmcm9tIHJlc291cmNlcyBzdGlsbCByZWZlcmVuY2VkIGJ5IFdlYiBwYWdlcy4KIAotICAg
IHZvaWQgZXZpY3QoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICBib29sIG1ha2VSZXNvdXJjZVB1cmdl
YWJsZShDYWNoZWRSZXNvdXJjZSopOworCisgICAgdm9pZCBldmljdChDYWNoZWRSZXNvdXJjZSos
IGJvb2wgZGVjcmVtZW50U2l6ZSA9IHRydWUpOwogCiAgICAgLy8gTWVtYmVyIHZhcmlhYmxlcy4K
ICAgICBIYXNoU2V0PERvY0xvYWRlcio+IG1fZG9jTG9hZGVyczsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNzg2NmVmZGU5MDc5NmRkNDQyMmEzZGU0OTZjYWY4YzY4
ZDZmYzQ5NC4uNTAyN2E4MDI1ZTlhODI0OTExNWU4OGMxZTE3MGI5YTczMzhmZGJmNSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvV2ViQ29y
ZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCiAKKyNpbmNs
dWRlICJDYWNoZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5o
IgpAQCAtNTgsOCArNTksMTAgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQgKmMpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
YWxsQ2xpZW50c1JlbW92ZWQoKQogewotICAgIGlmIChpc1NhZmVUb01ha2VQdXJnZWFibGUoKSkK
LSAgICAgICAgbWFrZVB1cmdlYWJsZSh0cnVlKTsKKyAgICBpZiAoIUNhY2hlOjptYXJrTWVtb3J5
UHVyZ2VhYmxlT25FdmljdCgpKSB7CisgICAgICAgIGlmIChpc1NhZmVUb01ha2VQdXJnZWFibGUo
KSkKKyAgICAgICAgICAgIG1ha2VQdXJnZWFibGUodHJ1ZSk7CisgICAgfQogfQogCiB2b2lkIENh
Y2hlZENTU1N0eWxlU2hlZXQ6OnNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYgY2hzKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2Fj
aGVkSW1hZ2UuY3BwCmluZGV4IDlhZThkMjAwYjlmNTg5YTUzYjg0NGVkOWYyMzNhMDQ3ODA3YWY2
NGEuLjZkYWJiYmNlODZjNDFmZjI0NTdmNmU3MDJhYzQ2MWY5YWUyOGMxMmQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9DYWNo
ZWRJbWFnZS5jcHAKQEAgLTMzMSw3ICszMzEsOCBAQCB2b2lkIENhY2hlZEltYWdlOjpkZXN0cm95
RGVjb2RlZERhdGEoKQogICAgICAgICAvLyBJbnZva2luZyBhZGRDbGllbnQoKSB3aWxsIHJlY29u
c3RydWN0IHRoZSBpbWFnZSBvYmplY3QuCiAgICAgICAgIG1faW1hZ2UgPSAwOwogICAgICAgICBz
ZXREZWNvZGVkU2l6ZSgwKTsKLSAgICAgICAgbWFrZVB1cmdlYWJsZSh0cnVlKTsKKyAgICAgICAg
aWYgKCFDYWNoZTo6bWFya01lbW9yeVB1cmdlYWJsZU9uRXZpY3QoKSkKKyAgICAgICAgICAgIG1h
a2VQdXJnZWFibGUodHJ1ZSk7CiAgICAgfSBlbHNlIGlmIChtX2ltYWdlICYmICFlcnJvck9jY3Vy
cmVkKCkpCiAgICAgICAgIG1faW1hZ2UtPmRlc3Ryb3lEZWNvZGVkRGF0YSgpOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcCBiL1dlYkNvcmUvbG9hZGVyL0Nh
Y2hlZFNjcmlwdC5jcHAKaW5kZXggNTg4OTVkNjE1ODEzMjdiMmJhMjJjOThiNjU3ZWUzYjg3OGU5
NWRmMy4uMDhhOTFjNWRiZjk0MmM3ZTU5OWViZjYyMGE2OTBmODI2MDQ3ODRmZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9D
YWNoZWRTY3JpcHQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAKKyNpbmNsdWRlICJDYWNoZS5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTExMCw4ICsxMTEsMTAgQEAg
dm9pZCBDYWNoZWRTY3JpcHQ6OmRlc3Ryb3lEZWNvZGVkRGF0YSgpCiB7CiAgICAgbV9zY3JpcHQg
PSBTdHJpbmcoKTsKICAgICBzZXREZWNvZGVkU2l6ZSgwKTsKLSAgICBpZiAoaXNTYWZlVG9NYWtl
UHVyZ2VhYmxlKCkpCi0gICAgICAgIG1ha2VQdXJnZWFibGUodHJ1ZSk7CisgICAgaWYgKCFDYWNo
ZTo6bWFya01lbW9yeVB1cmdlYWJsZU9uRXZpY3QoKSkgeworICAgICAgICBpZiAoaXNTYWZlVG9N
YWtlUHVyZ2VhYmxlKCkpCisgICAgICAgICAgICBtYWtlUHVyZ2VhYmxlKHRydWUpOworICAgIH0K
IH0KIAogdm9pZCBDYWNoZWRTY3JpcHQ6OmRlY29kZWREYXRhRGVsZXRpb25UaW1lckZpcmVkKFRp
bWVyPENhY2hlZFNjcmlwdD4qKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65971</attachid>
            <date>2010-08-30 15:34:50 -0700</date>
            <delta_ts>2010-08-30 16:51:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44806-20100830153449.patch</filename>
            <type>text/plain</type>
            <size>11374</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzcwMTdiMjJiYzZmZjEyNGNmOGFlN2RjMTVkMThiYjk3ZTUyZTZjOS4uNWRkMzA5ZmIwMWI0MGQx
ZTkyM2ZhYzUzODlkYjYxNmM4YmQzNDRjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wOC0zMCAgUHJh
dGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHB1cmdlYWJsZSBtZW1vcnkgdG8ga2VlcCBt
b3JlIGRlYWQgcmVzb3VyY2VzIGluIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NDgwNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM1MDkw
MT4KKworICAgICAgICBUaGlzIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIGRlYWQgcmVzb3VyY2Vz
IGluIHRoZSBXZWJDb3JlIGNhY2hlIHRvIGJlIHRoZSBmb2xsb3dpbmcgaWYKKyAgICAgICAgc2hv
dWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpIHJldHVybnMgdHJ1ZS4KKworICAg
ICAgICAxLiBEZWFkIHJlc291cmNlcyBpbiB0aGUgY2FjaGUgYXJlIGtlcHQgaW4gbm9uLXB1cmdl
YWJsZSBtZW1vcnkuCisgICAgICAgIDIuIFdoZW4gd2UgcHJ1bmUgZGVhZCByZXNvdXJjZXMsIGlu
c3RlYWQgb2YgZnJlZWluZyB0aGVtLCB3ZSBtYXJrIHRoZWlyIG1lbW9yeSBhcyBwdXJnZWFibGUK
KyAgICAgICAgYW5kIGtlZXAgdGhlIHJlc291cmNlcyB1bnRpbCB0aGUga2VybmVsIHJlY2xhaW1z
IHRoZSBwdXJnZWFibGUgbWVtb3J5LgorCisgICAgICAgIEJ5IGxlYXZpbmcgdGhlIGluLWNhY2hl
IGRlYWQgcmVzb3VyY2VzIGluIGRpcnR5IHJlc2lkZW50IG1lbW9yeSwgd2UgZGVjcmVhc2UgdGhl
IGxpa2VsaWhvb2QKKyAgICAgICAgb2YgdGhlIGtlcm5lbCBjbGFpbWluZyB0aGF0IG1lbW9yeSBh
bmQgZm9yY2luZyB1cyB0byByZWZldGNoIHRoZSByZXNvdXJjZSAoZm9yIGV4YW1wbGUgd2hlbgor
ICAgICAgICBhIHVzZXIgcHJlc3NlcyBiYWNrKS4KKworICAgICAgICBBbmQgYnkgaGF2aW5nIGFu
IHVuYm91bmRlZCBudW1iZXIgb2YgcmVzb3VyY2Ugb2JqZWN0cyB1c2luZyBwdXJnZWFibGUgbWVt
b3J5LCB3ZSBjYW4gdXNlCisgICAgICAgIGFzIG11Y2ggbWVtb3J5IGFzIGlzIGF2YWlsYWJsZSBv
biB0aGUgbWFjaGluZS4gVGhlIHRyYWRlLW9mZiBpcyB0aGF0IHRoZSBDYWNoZWRSZXNvdXJjZQor
ICAgICAgICBvYmplY3QgKGFuZCBpdHMgbWVtYmVyIHZhcmlhYmxlcykgYXJlIGFsbG9jYXRlZCBp
biBub24tcHVyZ2VhYmxlIFRDLW1hbGxvYydkIG1lbW9yeSBzbworICAgICAgICB3ZSB3b3VsZCBz
ZWUgc2xpZ2h0bHkgbW9yZSBtZW1vcnkgdXNlIGR1ZSB0byB0aGlzLgorCisgICAgICAgICogbG9h
ZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZXNvdXJjZUZvclVSTCk6
IEFkanVzdCBzaXplcyBhcHByb3ByaWF0ZWx5IGlmIHdlIG1hZGUgcmVzb3VyY2UgbWVtb3J5Cisg
ICAgICAgIG5vbi1wdXJnZWFibGUuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cHJ1bmVEZWFk
UmVzb3VyY2VzKTogV2hlbiByZW1vdmluZyBkZWFkIHJlc291cmNlcywgdHJ5IGZpcnN0IHRvIG1h
cmsgdGhlaXIKKyAgICAgICAgbWVtb3J5IGFzIHB1cmdlYWJsZS4gSWYgbm90LCBldmljdCB0aGUg
cmVzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6bWFrZVJlc291cmNlUHVyZ2VhYmxl
KTogQWRkZWQuIFRyeSB0byBtYXJrIHJlc291cmNlCisgICAgICAgIG1lbW9yeSBhcyBwdXJnZWFi
bGUuIElmIHN1Y2Nlc3NmdWwsIGFkanVzdCB0aGUgc2l6ZXMgc28gdGhhdCB3ZSBkb24ndAorICAg
ICAgICBmYWN0b3IgdGhpcyByZXNvdXJjZXMgc2l6ZSBpbiB0aGUgQ2FjaGUgc2l6ZSBjYWxjdWxh
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpldmljdCk6IERvbid0IGRlY3JlbWVudCBz
aXplIGlmIHdlIGFscmVhZHkgZGlkIGl0IGluIG1ha2VSZXNvdXJjZVB1cmdlYWJsZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlOjpkdW1wTFJVTGlzdHMpOiBFeHRyYSBkZWJ1ZyBsb2dnaW5nLgor
ICAgICAgICAqIGxvYWRlci9DYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnNob3Vs
ZE1ha2VSZXNvdXJjZVB1cmdlYWJsZU9uRXZpY3Rpb24pOiBBZGRlZC4gSW5kaWNhdGVzIGlmIHRo
ZSBuZXcKKyAgICAgICAgYmVoYXZpb3VyIGlzIGVuYWJsZWQuCisgICAgICAgICogbG9hZGVyL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVT
aGVldDo6YWxsQ2xpZW50c1JlbW92ZWQpOiBEbyBub3QgbWFyayBtZW1vcnkgYXMgcHVyZ2VhYmxl
LiBUaGUKKyAgICAgICAgQ2FjaGUgY2xhc3MgdGFrZXMgY2FyZSBvZiB0aGlzLgorICAgICAgICAq
IGxvYWRlci9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
ZGVzdHJveURlY29kZWREYXRhKTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0NhY2hlZFNjcmlw
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmRlc3Ryb3lEZWNvZGVkRGF0
YSk6IERpdHRvLgorCiAyMDEwLTA4LTI3ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAK
aW5kZXggY2I1MzZlMmU1ZWNhM2M5MGFhOWFkNDIxOGZlMzg4NTc5MDBkYTM0NC4uOTBkZTU5NjU3
MTJlOGMyMDdjMzgzMzg4YjQyZThlZWE5NGE5ZmNjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGUuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcApAQCAtMjM5LDExICsy
MzksMTUgQEAgdm9pZCBDYWNoZTo6cmV2YWxpZGF0aW9uRmFpbGVkKENhY2hlZFJlc291cmNlKiBy
ZXZhbGlkYXRpbmdSZXNvdXJjZSkKIENhY2hlZFJlc291cmNlKiBDYWNoZTo6cmVzb3VyY2VGb3JV
UkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0g
bV9yZXNvdXJjZXMuZ2V0KHVybCk7CisgICAgYm9vbCB3YXNQdXJnZWFibGUgPSBDYWNoZTo6c2hv
dWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpICYmIHJlc291cmNlICYmIHJlc291
cmNlLT5pc1B1cmdlYWJsZSgpOwogICAgIGlmIChyZXNvdXJjZSAmJiAhcmVzb3VyY2UtPm1ha2VQ
dXJnZWFibGUoZmFsc2UpKSB7CiAgICAgICAgIEFTU0VSVCghcmVzb3VyY2UtPmhhc0NsaWVudHMo
KSk7CiAgICAgICAgIGV2aWN0KHJlc291cmNlKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQor
ICAgIC8vIEFkZCB0aGUgc2l6ZSBiYWNrIHNpbmNlIHdlIGhhZCBzdWJ0cmFjdGVkIGl0IHdoZW4g
d2UgbWFya2VkIHRoZSBtZW1vcnkgYXMgcHVyZ2VhYmxlLgorICAgIGlmICh3YXNQdXJnZWFibGUp
CisgICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0NsaWVudHMoKSwgcmVzb3VyY2UtPnNp
emUoKSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQogCkBAIC0zNjQsNyArMzY4LDkgQEAgdm9p
ZCBDYWNoZTo6cHJ1bmVEZWFkUmVzb3VyY2VzKCkKICAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHsK
ICAgICAgICAgICAgIENhY2hlZFJlc291cmNlKiBwcmV2ID0gY3VycmVudC0+bV9wcmV2SW5BbGxS
ZXNvdXJjZXNMaXN0OwogICAgICAgICAgICAgaWYgKCFjdXJyZW50LT5oYXNDbGllbnRzKCkgJiYg
IWN1cnJlbnQtPmlzUHJlbG9hZGVkKCkgJiYgIWN1cnJlbnQtPmlzQ2FjaGVWYWxpZGF0b3IoKSkg
ewotICAgICAgICAgICAgICAgIGV2aWN0KGN1cnJlbnQpOworICAgICAgICAgICAgICAgIGlmICgh
bWFrZVJlc291cmNlUHVyZ2VhYmxlKGN1cnJlbnQpKQorICAgICAgICAgICAgICAgICAgICBldmlj
dChjdXJyZW50KTsKKwogICAgICAgICAgICAgICAgIC8vIElmIGV2aWN0KCkgY2F1c2VkIHBydW5l
RGVhZFJlc291cmNlcygpIHRvIGJlIHJlLWVudGVyZWQsIGJhaWwgb3V0LiBUaGlzIGNhbiBoYXBw
ZW4gd2hlbiByZW1vdmluZyBhbgogICAgICAgICAgICAgICAgIC8vIFNWRyBDYWNoZWRJbWFnZSB0
aGF0IGhhcyBzdWJyZXNvdXJjZXMuCiAgICAgICAgICAgICAgICAgaWYgKCFtX2luUHJ1bmVEZWFk
UmVzb3VyY2VzKQpAQCAtMzk4LDYgKzQwNCwyNiBAQCB2b2lkIENhY2hlOjpzZXRDYXBhY2l0aWVz
KHVuc2lnbmVkIG1pbkRlYWRCeXRlcywgdW5zaWduZWQgbWF4RGVhZEJ5dGVzLCB1bnNpZ25lZAog
ICAgIHBydW5lKCk7CiB9CiAKK2Jvb2wgQ2FjaGU6Om1ha2VSZXNvdXJjZVB1cmdlYWJsZShDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgaWYgKCFDYWNoZTo6c2hvdWxkTWFrZVJlc291
cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoIXJlc291cmNlLT5pbkNhY2hlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghcmVzb3VyY2UtPmlzU2FmZVRvTWFrZVB1cmdlYWJsZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIXJlc291cmNlLT5tYWtlUHVyZ2VhYmxlKHRydWUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaW50IGRlbHRhID0gLXN0YXRpY19jYXN0PGludD4ocmVz
b3VyY2UtPnNpemUoKSkpCisgICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0NsaWVudHMo
KSwgZGVsdGEpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQ2FjaGU6OmV2aWN0KENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICAvLyBUaGUgcmVzb3VyY2UgbWF5IGhhdmUg
YWxyZWFkeSBiZWVuIHJlbW92ZWQgYnkgc29tZW9uZSBvdGhlciB0aGFuIG91ciBjYWxsZXIsCkBA
IC00MTEsMTAgKzQzNywxMiBAQCB2b2lkIENhY2hlOjpldmljdChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCiAgICAgICAgIHJlbW92ZUZyb21MUlVMaXN0KHJlc291cmNlKTsKICAgICAgICAgcmVt
b3ZlRnJvbUxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdChyZXNvdXJjZSk7CiAKLSAgICAgICAgLy8g
U3VidHJhY3QgZnJvbSBvdXIgc2l6ZSB0b3RhbHMuCi0gICAgICAgIGludCBkZWx0YSA9IC1zdGF0
aWNfY2FzdDxpbnQ+KHJlc291cmNlLT5zaXplKCkpOwotICAgICAgICBpZiAoZGVsdGEpCi0gICAg
ICAgICAgICBhZGp1c3RTaXplKHJlc291cmNlLT5oYXNDbGllbnRzKCksIGRlbHRhKTsKKyAgICAg
ICAgLy8gSWYgdGhlIHJlc291cmNlIHdhcyBwdXJnZWQsIGl0IG1lYW5zIHdlIGhhZCBhbHJlYWR5
IGRlY3JlbWVudGVkIHRoZSBzaXplIHdoZW4gd2UgbWFkZSB0aGUKKyAgICAgICAgLy8gcmVzb3Vy
Y2UgcHVyZ2VhYmxlIGluIG1ha2VSZXNvdXJjZVB1cmdlYWJsZSgpLgorICAgICAgICBpZiAoIUNh
Y2hlOjpzaG91bGRNYWtlUmVzb3VyY2VQdXJnZWFibGVPbkV2aWN0aW9uKCkgfHwgIXJlc291cmNl
LT53YXNQdXJnZWQoKSkgeworICAgICAgICAgICAgaWYgKGludCBkZWx0YSA9IC1zdGF0aWNfY2Fz
dDxpbnQ+KHJlc291cmNlLT5zaXplKCkpKQorICAgICAgICAgICAgICAgIGFkanVzdFNpemUocmVz
b3VyY2UtPmhhc0NsaWVudHMoKSwgZGVsdGEpOworICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAg
ICAgIEFTU0VSVChtX3Jlc291cmNlcy5nZXQocmVzb3VyY2UtPnVybCgpKSAhPSByZXNvdXJjZSk7
CiAKQEAgLTcyNiw3ICs3NTQsNyBAQCB2b2lkIENhY2hlOjpkdW1wU3RhdHMoKQogCiB2b2lkIENh
Y2hlOjpkdW1wTFJVTGlzdHMoYm9vbCBpbmNsdWRlTGl2ZSkgY29uc3QKIHsKLSAgICBwcmludGYo
IkxSVS1TUCBsaXN0cyBpbiBldmljdGlvbiBvcmRlciAoS2lsb2J5dGVzIGRlY29kZWQsIEtpbG9i
eXRlcyBlbmNvZGVkLCBBY2Nlc3MgY291bnQsIFJlZmVyZW5jZWQpOlxuIik7CisgICAgcHJpbnRm
KCJMUlUtU1AgbGlzdHMgaW4gZXZpY3Rpb24gb3JkZXIgKEtpbG9ieXRlcyBkZWNvZGVkLCBLaWxv
Ynl0ZXMgZW5jb2RlZCwgQWNjZXNzIGNvdW50LCBSZWZlcmVuY2VkLCBpc1B1cmdlYWJsZSwgd2Fz
UHVyZ2VkKTpcbiIpOwogCiAgICAgaW50IHNpemUgPSBtX2FsbFJlc291cmNlcy5zaXplKCk7CiAg
ICAgZm9yIChpbnQgaSA9IHNpemUgLSAxOyBpID49IDA7IGktLSkgewpAQCAtNzM1LDcgKzc2Myw4
IEBAIHZvaWQgQ2FjaGU6OmR1bXBMUlVMaXN0cyhib29sIGluY2x1ZGVMaXZlKSBjb25zdAogICAg
ICAgICB3aGlsZSAoY3VycmVudCkgewogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHByZXYg
PSBjdXJyZW50LT5tX3ByZXZJbkFsbFJlc291cmNlc0xpc3Q7CiAgICAgICAgICAgICBpZiAoaW5j
bHVkZUxpdmUgfHwgIWN1cnJlbnQtPmhhc0NsaWVudHMoKSkKLSAgICAgICAgICAgICAgICBwcmlu
dGYoIiglLjFmSywgJS4xZkssICV1QSwgJWRSKTsgIiwgY3VycmVudC0+ZGVjb2RlZFNpemUoKSAv
IDEwMjQuMGYsIChjdXJyZW50LT5lbmNvZGVkU2l6ZSgpICsgY3VycmVudC0+b3ZlcmhlYWRTaXpl
KCkpIC8gMTAyNC4wZiwgY3VycmVudC0+YWNjZXNzQ291bnQoKSwgY3VycmVudC0+aGFzQ2xpZW50
cygpKTsKKyAgICAgICAgICAgICAgICBwcmludGYoIiglLjFmSywgJS4xZkssICV1QSwgJWRSLCAl
ZCwgJWQpOyAiLCBjdXJyZW50LT5kZWNvZGVkU2l6ZSgpIC8gMTAyNC4wZiwgKGN1cnJlbnQtPmVu
Y29kZWRTaXplKCkgKyBjdXJyZW50LT5vdmVyaGVhZFNpemUoKSkgLyAxMDI0LjBmLCBjdXJyZW50
LT5hY2Nlc3NDb3VudCgpLCBjdXJyZW50LT5oYXNDbGllbnRzKCksIGN1cnJlbnQtPmlzUHVyZ2Vh
YmxlKCksIGN1cnJlbnQtPndhc1B1cmdlZCgpKTsKKwogICAgICAgICAgICAgY3VycmVudCA9IHBy
ZXY7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZS5o
IGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaAppbmRleCA3NjNmMWYzNjJhNmQ4ZTNmMTgyMzVlYTgx
OTI2NGQ3N2Y5NWQ0ODVhLi4wZTgxNWE0NjhhMGNjYzk2ZWMwNjgyNGZlYWY0ODM5MTA3MGFkNWM0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9DYWNoZS5oCisrKyBiL1dlYkNvcmUvbG9hZGVy
L0NhY2hlLmgKQEAgLTU1LDYgKzU1LDIyIEBAIGNsYXNzIEtVUkw7CiAvLyAtLS0tLS0tfC0tLS0t
KysrKysrKysrKysrKysrfAogLy8gLS0tLS0tLXwtLS0tLSsrKysrKysrKysrKysrK3wrKysrKwog
CisvLyBUaGUgYmVoYXZpb3Igb2YgdGhlIGNhY2hlIGNoYW5nZXMgaW4gdGhlIGZvbGxvd2luZyB3
YXkgaWYgc2hvdWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbgorLy8gcmV0dXJucyB0
cnVlLgorLy8KKy8vIDEuIERlYWQgcmVzb3VyY2VzIGluIHRoZSBjYWNoZSBhcmUga2VwdCBpbiBu
b24tcHVyZ2VhYmxlIG1lbW9yeS4KKy8vIDIuIFdoZW4gd2UgcHJ1bmUgZGVhZCByZXNvdXJjZXMs
IGluc3RlYWQgb2YgZnJlZWluZyB0aGVtLCB3ZSBtYXJrIHRoZWlyIG1lbW9yeSBhcyBwdXJnZWFi
bGUgYW5kCisvLyAgICBrZWVwIHRoZSByZXNvdXJjZXMgdW50aWwgdGhlIGtlcm5lbCByZWNsYWlt
cyB0aGUgcHVyZ2VhYmxlIG1lbW9yeS4KKy8vCisvLyBCeSBsZWF2aW5nIHRoZSBpbi1jYWNoZSBk
ZWFkIHJlc291cmNlcyBpbiBkaXJ0eSByZXNpZGVudCBtZW1vcnksIHdlIGRlY3JlYXNlIHRoZSBs
aWtlbGlob29kIG9mCisvLyB0aGUga2VybmVsIGNsYWltaW5nIHRoYXQgbWVtb3J5IGFuZCBmb3Jj
aW5nIHVzIHRvIHJlZmV0Y2ggdGhlIHJlc291cmNlIChmb3IgZXhhbXBsZSB3aGVuIGEgdXNlcgor
Ly8gcHJlc3NlcyBiYWNrKS4KKy8vCisvLyBBbmQgYnkgaGF2aW5nIGFuIHVuYm91bmRlZCBudW1i
ZXIgb2YgcmVzb3VyY2Ugb2JqZWN0cyB1c2luZyBwdXJnZWFibGUgbWVtb3J5LCB3ZSBjYW4gdXNl
IGFzIG11Y2gKKy8vIG1lbW9yeSBhcyBpcyBhdmFpbGFibGUgb24gdGhlIG1hY2hpbmUuIFRoZSB0
cmFkZS1vZmYgaGVyZSBpcyB0aGF0IHRoZSBDYWNoZWRSZXNvdXJjZSBvYmplY3QgKGFuZAorLy8g
aXRzIG1lbWJlciB2YXJpYWJsZXMpIGFyZSBhbGxvY2F0ZWQgaW4gbm9uLXB1cmdlYWJsZSBUQy1t
YWxsb2MnZCBtZW1vcnkgc28gd2Ugd291bGQgc2VlIHNsaWdodGx5CisvLyBtb3JlIG1lbW9yeSB1
c2UgZHVlIHRvIHRoaXMuCisKIGNsYXNzIENhY2hlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1
YmxpYzoKICAgICBmcmllbmQgQ2FjaGUqIGNhY2hlKCk7CkBAIC0xNDgsNiArMTY0LDggQEAgcHVi
bGljOgogICAgIHZvaWQgYWRkVG9MaXZlUmVzb3VyY2VzU2l6ZShDYWNoZWRSZXNvdXJjZSopOwog
ICAgIHZvaWQgcmVtb3ZlRnJvbUxpdmVSZXNvdXJjZXNTaXplKENhY2hlZFJlc291cmNlKik7CiAK
KyAgICBzdGF0aWMgYm9vbCBzaG91bGRNYWtlUmVzb3VyY2VQdXJnZWFibGVPbkV2aWN0aW9uKCk7
CisKICAgICAvLyBGdW5jdGlvbiB0byBjb2xsZWN0IGNhY2hlIHN0YXRpc3RpY3MgZm9yIHRoZSBj
YWNoZXMgd2luZG93IGluIHRoZSBTYWZhcmkgRGVidWcgbWVudS4KICAgICBTdGF0aXN0aWNzIGdl
dFN0YXRpc3RpY3MoKTsKIApAQCAtMTY4LDYgKzE4Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
cnVuZURlYWRSZXNvdXJjZXMoKTsgLy8gRmx1c2ggZGVjb2RlZCBhbmQgZW5jb2RlZCBkYXRhIGZy
b20gcmVzb3VyY2VzIG5vdCByZWZlcmVuY2VkIGJ5IFdlYiBwYWdlcy4KICAgICB2b2lkIHBydW5l
TGl2ZVJlc291cmNlcygpOyAvLyBGbHVzaCBkZWNvZGVkIGRhdGEgZnJvbSByZXNvdXJjZXMgc3Rp
bGwgcmVmZXJlbmNlZCBieSBXZWIgcGFnZXMuCiAKKyAgICBib29sIG1ha2VSZXNvdXJjZVB1cmdl
YWJsZShDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgZXZpY3QoQ2FjaGVkUmVzb3VyY2UqKTsK
IAogICAgIC8vIE1lbWJlciB2YXJpYWJsZXMuCkBAIC0xOTksNiArMjE4LDE1IEBAIHByaXZhdGU6
CiAgICAgSGFzaE1hcDxTdHJpbmcsIENhY2hlZFJlc291cmNlKj4gbV9yZXNvdXJjZXM7CiB9Owog
CitpbmxpbmUgYm9vbCBDYWNoZTo6c2hvdWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlv
bigpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBnbG9i
YWwgY2FjaGUuCiBDYWNoZSogY2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcAppbmRleCA3ODY2ZWZkZTkwNzk2ZGQ0NDIyYTNkZTQ5NmNhZjhjNjhkNmZjNDk0Li44
NzdjZDFkZTFmOGEwOWEwMmY1OTA1OGEzMTJmYzU4ZGRlNDZmNDI3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkNhY2hlZENTU1N0eWxlU2hlZXQuaCIKIAorI2luY2x1ZGUgIkNhY2hl
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCkBAIC01OCw3
ICs1OSw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJl
c291cmNlQ2xpZW50ICpjKQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmFsbENsaWVudHNS
ZW1vdmVkKCkKIHsKLSAgICBpZiAoaXNTYWZlVG9NYWtlUHVyZ2VhYmxlKCkpCisgICAgaWYgKCFD
YWNoZTo6c2hvdWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpICYmIGlzU2FmZVRv
TWFrZVB1cmdlYWJsZSgpKQogICAgICAgICBtYWtlUHVyZ2VhYmxlKHRydWUpOwogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9D
YWNoZWRJbWFnZS5jcHAKaW5kZXggOWFlOGQyMDBiOWY1ODlhNTNiODQ0ZWQ5ZjIzM2EwNDc4MDdh
ZjY0YS4uNjk2ZTExZWExOWZkODllODJlYzU4NzRkZjFiNTY1NzUwMDBiNTY3NCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0Nh
Y2hlZEltYWdlLmNwcApAQCAtMzMxLDcgKzMzMSw4IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmRlc3Ry
b3lEZWNvZGVkRGF0YSgpCiAgICAgICAgIC8vIEludm9raW5nIGFkZENsaWVudCgpIHdpbGwgcmVj
b25zdHJ1Y3QgdGhlIGltYWdlIG9iamVjdC4KICAgICAgICAgbV9pbWFnZSA9IDA7CiAgICAgICAg
IHNldERlY29kZWRTaXplKDApOwotICAgICAgICBtYWtlUHVyZ2VhYmxlKHRydWUpOworICAgICAg
ICBpZiAoIUNhY2hlOjpzaG91bGRNYWtlUmVzb3VyY2VQdXJnZWFibGVPbkV2aWN0aW9uKCkpCisg
ICAgICAgICAgICBtYWtlUHVyZ2VhYmxlKHRydWUpOwogICAgIH0gZWxzZSBpZiAobV9pbWFnZSAm
JiAhZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICBtX2ltYWdlLT5kZXN0cm95RGVjb2RlZERhdGEo
KTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5jcHAgYi9XZWJD
b3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDU4ODk1ZDYxNTgxMzI3YjJiYTIyYzk4
YjY1N2VlM2I4NzhlOTVkZjMuLjE4OTg0Mzg4NDMzYWMwMmQwNzhiYjg2ODU3NjVkYWYwZWZiZTk4
NzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgogCisjaW5jbHVkZSAiQ2FjaGUu
aCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC0xMTAs
NyArMTExLDcgQEAgdm9pZCBDYWNoZWRTY3JpcHQ6OmRlc3Ryb3lEZWNvZGVkRGF0YSgpCiB7CiAg
ICAgbV9zY3JpcHQgPSBTdHJpbmcoKTsKICAgICBzZXREZWNvZGVkU2l6ZSgwKTsKLSAgICBpZiAo
aXNTYWZlVG9NYWtlUHVyZ2VhYmxlKCkpCisgICAgaWYgKCFDYWNoZTo6c2hvdWxkTWFrZVJlc291
cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpICYmIGlzU2FmZVRvTWFrZVB1cmdlYWJsZSgpKQogICAg
ICAgICBtYWtlUHVyZ2VhYmxlKHRydWUpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65979</attachid>
            <date>2010-08-30 16:51:44 -0700</date>
            <delta_ts>2010-09-20 16:30:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44806-20100830165143.patch</filename>
            <type>text/plain</type>
            <size>11253</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzcwMTdiMjJiYzZmZjEyNGNmOGFlN2RjMTVkMThiYjk3ZTUyZTZjOS4uNWRkMzA5ZmIwMWI0MGQx
ZTkyM2ZhYzUzODlkYjYxNmM4YmQzNDRjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wOC0zMCAgUHJh
dGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHB1cmdlYWJsZSBtZW1vcnkgdG8ga2VlcCBt
b3JlIGRlYWQgcmVzb3VyY2VzIGluIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NDgwNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM1MDkw
MT4KKworICAgICAgICBUaGlzIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIGRlYWQgcmVzb3VyY2Vz
IGluIHRoZSBXZWJDb3JlIGNhY2hlIHRvIGJlIHRoZSBmb2xsb3dpbmcgaWYKKyAgICAgICAgc2hv
dWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpIHJldHVybnMgdHJ1ZS4KKworICAg
ICAgICAxLiBEZWFkIHJlc291cmNlcyBpbiB0aGUgY2FjaGUgYXJlIGtlcHQgaW4gbm9uLXB1cmdl
YWJsZSBtZW1vcnkuCisgICAgICAgIDIuIFdoZW4gd2UgcHJ1bmUgZGVhZCByZXNvdXJjZXMsIGlu
c3RlYWQgb2YgZnJlZWluZyB0aGVtLCB3ZSBtYXJrIHRoZWlyIG1lbW9yeSBhcyBwdXJnZWFibGUK
KyAgICAgICAgYW5kIGtlZXAgdGhlIHJlc291cmNlcyB1bnRpbCB0aGUga2VybmVsIHJlY2xhaW1z
IHRoZSBwdXJnZWFibGUgbWVtb3J5LgorCisgICAgICAgIEJ5IGxlYXZpbmcgdGhlIGluLWNhY2hl
IGRlYWQgcmVzb3VyY2VzIGluIGRpcnR5IHJlc2lkZW50IG1lbW9yeSwgd2UgZGVjcmVhc2UgdGhl
IGxpa2VsaWhvb2QKKyAgICAgICAgb2YgdGhlIGtlcm5lbCBjbGFpbWluZyB0aGF0IG1lbW9yeSBh
bmQgZm9yY2luZyB1cyB0byByZWZldGNoIHRoZSByZXNvdXJjZSAoZm9yIGV4YW1wbGUgd2hlbgor
ICAgICAgICBhIHVzZXIgcHJlc3NlcyBiYWNrKS4KKworICAgICAgICBBbmQgYnkgaGF2aW5nIGFu
IHVuYm91bmRlZCBudW1iZXIgb2YgcmVzb3VyY2Ugb2JqZWN0cyB1c2luZyBwdXJnZWFibGUgbWVt
b3J5LCB3ZSBjYW4gdXNlCisgICAgICAgIGFzIG11Y2ggbWVtb3J5IGFzIGlzIGF2YWlsYWJsZSBv
biB0aGUgbWFjaGluZS4gVGhlIHRyYWRlLW9mZiBpcyB0aGF0IHRoZSBDYWNoZWRSZXNvdXJjZQor
ICAgICAgICBvYmplY3QgKGFuZCBpdHMgbWVtYmVyIHZhcmlhYmxlcykgYXJlIGFsbG9jYXRlZCBp
biBub24tcHVyZ2VhYmxlIFRDLW1hbGxvYydkIG1lbW9yeSBzbworICAgICAgICB3ZSB3b3VsZCBz
ZWUgc2xpZ2h0bHkgbW9yZSBtZW1vcnkgdXNlIGR1ZSB0byB0aGlzLgorCisgICAgICAgICogbG9h
ZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZXNvdXJjZUZvclVSTCk6
IEFkanVzdCBzaXplcyBhcHByb3ByaWF0ZWx5IGlmIHdlIG1hZGUgcmVzb3VyY2UgbWVtb3J5Cisg
ICAgICAgIG5vbi1wdXJnZWFibGUuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cHJ1bmVEZWFk
UmVzb3VyY2VzKTogV2hlbiByZW1vdmluZyBkZWFkIHJlc291cmNlcywgdHJ5IGZpcnN0IHRvIG1h
cmsgdGhlaXIKKyAgICAgICAgbWVtb3J5IGFzIHB1cmdlYWJsZS4gSWYgbm90LCBldmljdCB0aGUg
cmVzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6bWFrZVJlc291cmNlUHVyZ2VhYmxl
KTogQWRkZWQuIFRyeSB0byBtYXJrIHJlc291cmNlCisgICAgICAgIG1lbW9yeSBhcyBwdXJnZWFi
bGUuIElmIHN1Y2Nlc3NmdWwsIGFkanVzdCB0aGUgc2l6ZXMgc28gdGhhdCB3ZSBkb24ndAorICAg
ICAgICBmYWN0b3IgdGhpcyByZXNvdXJjZXMgc2l6ZSBpbiB0aGUgQ2FjaGUgc2l6ZSBjYWxjdWxh
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpldmljdCk6IERvbid0IGRlY3JlbWVudCBz
aXplIGlmIHdlIGFscmVhZHkgZGlkIGl0IGluIG1ha2VSZXNvdXJjZVB1cmdlYWJsZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlOjpkdW1wTFJVTGlzdHMpOiBFeHRyYSBkZWJ1ZyBsb2dnaW5nLgor
ICAgICAgICAqIGxvYWRlci9DYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnNob3Vs
ZE1ha2VSZXNvdXJjZVB1cmdlYWJsZU9uRXZpY3Rpb24pOiBBZGRlZC4gSW5kaWNhdGVzIGlmIHRo
ZSBuZXcKKyAgICAgICAgYmVoYXZpb3VyIGlzIGVuYWJsZWQuCisgICAgICAgICogbG9hZGVyL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVT
aGVldDo6YWxsQ2xpZW50c1JlbW92ZWQpOiBEbyBub3QgbWFyayBtZW1vcnkgYXMgcHVyZ2VhYmxl
LiBUaGUKKyAgICAgICAgQ2FjaGUgY2xhc3MgdGFrZXMgY2FyZSBvZiB0aGlzLgorICAgICAgICAq
IGxvYWRlci9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
ZGVzdHJveURlY29kZWREYXRhKTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0NhY2hlZFNjcmlw
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmRlc3Ryb3lEZWNvZGVkRGF0
YSk6IERpdHRvLgorCiAyMDEwLTA4LTI3ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAK
aW5kZXggY2I1MzZlMmU1ZWNhM2M5MGFhOWFkNDIxOGZlMzg4NTc5MDBkYTM0NC4uOWE1MmQ5YjJj
NzE4ZTAyNWU0MDg2MzVhZjEyN2M3YWVlZjA3NGNjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGUuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcApAQCAtMjM5LDExICsy
MzksMTUgQEAgdm9pZCBDYWNoZTo6cmV2YWxpZGF0aW9uRmFpbGVkKENhY2hlZFJlc291cmNlKiBy
ZXZhbGlkYXRpbmdSZXNvdXJjZSkKIENhY2hlZFJlc291cmNlKiBDYWNoZTo6cmVzb3VyY2VGb3JV
UkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0g
bV9yZXNvdXJjZXMuZ2V0KHVybCk7CisgICAgYm9vbCB3YXNQdXJnZWFibGUgPSBDYWNoZTo6c2hv
dWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpICYmIHJlc291cmNlICYmIHJlc291
cmNlLT5pc1B1cmdlYWJsZSgpOwogICAgIGlmIChyZXNvdXJjZSAmJiAhcmVzb3VyY2UtPm1ha2VQ
dXJnZWFibGUoZmFsc2UpKSB7CiAgICAgICAgIEFTU0VSVCghcmVzb3VyY2UtPmhhc0NsaWVudHMo
KSk7CiAgICAgICAgIGV2aWN0KHJlc291cmNlKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQor
ICAgIC8vIEFkZCB0aGUgc2l6ZSBiYWNrIHNpbmNlIHdlIGhhZCBzdWJ0cmFjdGVkIGl0IHdoZW4g
d2UgbWFya2VkIHRoZSBtZW1vcnkgYXMgcHVyZ2VhYmxlLgorICAgIGlmICh3YXNQdXJnZWFibGUp
CisgICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0NsaWVudHMoKSwgcmVzb3VyY2UtPnNp
emUoKSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQogCkBAIC0zNjQsNyArMzY4LDkgQEAgdm9p
ZCBDYWNoZTo6cHJ1bmVEZWFkUmVzb3VyY2VzKCkKICAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHsK
ICAgICAgICAgICAgIENhY2hlZFJlc291cmNlKiBwcmV2ID0gY3VycmVudC0+bV9wcmV2SW5BbGxS
ZXNvdXJjZXNMaXN0OwogICAgICAgICAgICAgaWYgKCFjdXJyZW50LT5oYXNDbGllbnRzKCkgJiYg
IWN1cnJlbnQtPmlzUHJlbG9hZGVkKCkgJiYgIWN1cnJlbnQtPmlzQ2FjaGVWYWxpZGF0b3IoKSkg
ewotICAgICAgICAgICAgICAgIGV2aWN0KGN1cnJlbnQpOworICAgICAgICAgICAgICAgIGlmICgh
bWFrZVJlc291cmNlUHVyZ2VhYmxlKGN1cnJlbnQpKQorICAgICAgICAgICAgICAgICAgICBldmlj
dChjdXJyZW50KTsKKwogICAgICAgICAgICAgICAgIC8vIElmIGV2aWN0KCkgY2F1c2VkIHBydW5l
RGVhZFJlc291cmNlcygpIHRvIGJlIHJlLWVudGVyZWQsIGJhaWwgb3V0LiBUaGlzIGNhbiBoYXBw
ZW4gd2hlbiByZW1vdmluZyBhbgogICAgICAgICAgICAgICAgIC8vIFNWRyBDYWNoZWRJbWFnZSB0
aGF0IGhhcyBzdWJyZXNvdXJjZXMuCiAgICAgICAgICAgICAgICAgaWYgKCFtX2luUHJ1bmVEZWFk
UmVzb3VyY2VzKQpAQCAtMzk4LDYgKzQwNCwyNSBAQCB2b2lkIENhY2hlOjpzZXRDYXBhY2l0aWVz
KHVuc2lnbmVkIG1pbkRlYWRCeXRlcywgdW5zaWduZWQgbWF4RGVhZEJ5dGVzLCB1bnNpZ25lZAog
ICAgIHBydW5lKCk7CiB9CiAKK2Jvb2wgQ2FjaGU6Om1ha2VSZXNvdXJjZVB1cmdlYWJsZShDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgaWYgKCFDYWNoZTo6c2hvdWxkTWFrZVJlc291
cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoIXJlc291cmNlLT5pbkNhY2hlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghcmVzb3VyY2UtPmlzU2FmZVRvTWFrZVB1cmdlYWJsZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIXJlc291cmNlLT5tYWtlUHVyZ2VhYmxlKHRydWUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhZGp1c3RTaXplKHJlc291cmNlLT5oYXNDbGllbnRzKCksIC1y
ZXNvdXJjZS0+c2l6ZSgpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIENhY2hlOjpl
dmljdChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB7CiAgICAgLy8gVGhlIHJlc291cmNlIG1h
eSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWVvbmUgb3RoZXIgdGhhbiBvdXIgY2Fs
bGVyLApAQCAtNDExLDEwICs0MzYsMTAgQEAgdm9pZCBDYWNoZTo6ZXZpY3QoQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlKQogICAgICAgICByZW1vdmVGcm9tTFJVTGlzdChyZXNvdXJjZSk7CiAgICAg
ICAgIHJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QocmVzb3VyY2UpOwogCi0gICAg
ICAgIC8vIFN1YnRyYWN0IGZyb20gb3VyIHNpemUgdG90YWxzLgotICAgICAgICBpbnQgZGVsdGEg
PSAtc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZS0+c2l6ZSgpKTsKLSAgICAgICAgaWYgKGRlbHRh
KQotICAgICAgICAgICAgYWRqdXN0U2l6ZShyZXNvdXJjZS0+aGFzQ2xpZW50cygpLCBkZWx0YSk7
CisgICAgICAgIC8vIElmIHRoZSByZXNvdXJjZSB3YXMgcHVyZ2VkLCBpdCBtZWFucyB3ZSBoYWQg
YWxyZWFkeSBkZWNyZW1lbnRlZCB0aGUgc2l6ZSB3aGVuIHdlIG1hZGUgdGhlCisgICAgICAgIC8v
IHJlc291cmNlIHB1cmdlYWJsZSBpbiBtYWtlUmVzb3VyY2VQdXJnZWFibGUoKS4KKyAgICAgICAg
aWYgKCFDYWNoZTo6c2hvdWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpIHx8ICFy
ZXNvdXJjZS0+d2FzUHVyZ2VkKCkpCisgICAgICAgICAgICBhZGp1c3RTaXplKHJlc291cmNlLT5o
YXNDbGllbnRzKCksIC1yZXNvdXJjZS0+c2l6ZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNT
RVJUKG1fcmVzb3VyY2VzLmdldChyZXNvdXJjZS0+dXJsKCkpICE9IHJlc291cmNlKTsKIApAQCAt
NzI2LDcgKzc1MSw3IEBAIHZvaWQgQ2FjaGU6OmR1bXBTdGF0cygpCiAKIHZvaWQgQ2FjaGU6OmR1
bXBMUlVMaXN0cyhib29sIGluY2x1ZGVMaXZlKSBjb25zdAogewotICAgIHByaW50ZigiTFJVLVNQ
IGxpc3RzIGluIGV2aWN0aW9uIG9yZGVyIChLaWxvYnl0ZXMgZGVjb2RlZCwgS2lsb2J5dGVzIGVu
Y29kZWQsIEFjY2VzcyBjb3VudCwgUmVmZXJlbmNlZCk6XG4iKTsKKyAgICBwcmludGYoIkxSVS1T
UCBsaXN0cyBpbiBldmljdGlvbiBvcmRlciAoS2lsb2J5dGVzIGRlY29kZWQsIEtpbG9ieXRlcyBl
bmNvZGVkLCBBY2Nlc3MgY291bnQsIFJlZmVyZW5jZWQsIGlzUHVyZ2VhYmxlLCB3YXNQdXJnZWQp
OlxuIik7CiAKICAgICBpbnQgc2l6ZSA9IG1fYWxsUmVzb3VyY2VzLnNpemUoKTsKICAgICBmb3Ig
KGludCBpID0gc2l6ZSAtIDE7IGkgPj0gMDsgaS0tKSB7CkBAIC03MzUsNyArNzYwLDggQEAgdm9p
ZCBDYWNoZTo6ZHVtcExSVUxpc3RzKGJvb2wgaW5jbHVkZUxpdmUpIGNvbnN0CiAgICAgICAgIHdo
aWxlIChjdXJyZW50KSB7CiAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogcHJldiA9IGN1cnJl
bnQtPm1fcHJldkluQWxsUmVzb3VyY2VzTGlzdDsKICAgICAgICAgICAgIGlmIChpbmNsdWRlTGl2
ZSB8fCAhY3VycmVudC0+aGFzQ2xpZW50cygpKQotICAgICAgICAgICAgICAgIHByaW50ZigiKCUu
MWZLLCAlLjFmSywgJXVBLCAlZFIpOyAiLCBjdXJyZW50LT5kZWNvZGVkU2l6ZSgpIC8gMTAyNC4w
ZiwgKGN1cnJlbnQtPmVuY29kZWRTaXplKCkgKyBjdXJyZW50LT5vdmVyaGVhZFNpemUoKSkgLyAx
MDI0LjBmLCBjdXJyZW50LT5hY2Nlc3NDb3VudCgpLCBjdXJyZW50LT5oYXNDbGllbnRzKCkpOwor
ICAgICAgICAgICAgICAgIHByaW50ZigiKCUuMWZLLCAlLjFmSywgJXVBLCAlZFIsICVkLCAlZCk7
ICIsIGN1cnJlbnQtPmRlY29kZWRTaXplKCkgLyAxMDI0LjBmLCAoY3VycmVudC0+ZW5jb2RlZFNp
emUoKSArIGN1cnJlbnQtPm92ZXJoZWFkU2l6ZSgpKSAvIDEwMjQuMGYsIGN1cnJlbnQtPmFjY2Vz
c0NvdW50KCksIGN1cnJlbnQtPmhhc0NsaWVudHMoKSwgY3VycmVudC0+aXNQdXJnZWFibGUoKSwg
Y3VycmVudC0+d2FzUHVyZ2VkKCkpOworCiAgICAgICAgICAgICBjdXJyZW50ID0gcHJldjsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlLmggYi9XZWJD
b3JlL2xvYWRlci9DYWNoZS5oCmluZGV4IDc2M2YxZjM2MmE2ZDhlM2YxODIzNWVhODE5MjY0ZDc3
Zjk1ZDQ4NWEuLjBlODE1YTQ2OGEwY2NjOTZlYzA2ODI0ZmVhZjQ4MzkxMDcwYWQ1YzQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGUu
aApAQCAtNTUsNiArNTUsMjIgQEAgY2xhc3MgS1VSTDsKIC8vIC0tLS0tLS18LS0tLS0rKysrKysr
KysrKysrKyt8CiAvLyAtLS0tLS0tfC0tLS0tKysrKysrKysrKysrKysrfCsrKysrCiAKKy8vIFRo
ZSBiZWhhdmlvciBvZiB0aGUgY2FjaGUgY2hhbmdlcyBpbiB0aGUgZm9sbG93aW5nIHdheSBpZiBz
aG91bGRNYWtlUmVzb3VyY2VQdXJnZWFibGVPbkV2aWN0aW9uCisvLyByZXR1cm5zIHRydWUuCisv
LworLy8gMS4gRGVhZCByZXNvdXJjZXMgaW4gdGhlIGNhY2hlIGFyZSBrZXB0IGluIG5vbi1wdXJn
ZWFibGUgbWVtb3J5LgorLy8gMi4gV2hlbiB3ZSBwcnVuZSBkZWFkIHJlc291cmNlcywgaW5zdGVh
ZCBvZiBmcmVlaW5nIHRoZW0sIHdlIG1hcmsgdGhlaXIgbWVtb3J5IGFzIHB1cmdlYWJsZSBhbmQK
Ky8vICAgIGtlZXAgdGhlIHJlc291cmNlcyB1bnRpbCB0aGUga2VybmVsIHJlY2xhaW1zIHRoZSBw
dXJnZWFibGUgbWVtb3J5LgorLy8KKy8vIEJ5IGxlYXZpbmcgdGhlIGluLWNhY2hlIGRlYWQgcmVz
b3VyY2VzIGluIGRpcnR5IHJlc2lkZW50IG1lbW9yeSwgd2UgZGVjcmVhc2UgdGhlIGxpa2VsaWhv
b2Qgb2YKKy8vIHRoZSBrZXJuZWwgY2xhaW1pbmcgdGhhdCBtZW1vcnkgYW5kIGZvcmNpbmcgdXMg
dG8gcmVmZXRjaCB0aGUgcmVzb3VyY2UgKGZvciBleGFtcGxlIHdoZW4gYSB1c2VyCisvLyBwcmVz
c2VzIGJhY2spLgorLy8KKy8vIEFuZCBieSBoYXZpbmcgYW4gdW5ib3VuZGVkIG51bWJlciBvZiBy
ZXNvdXJjZSBvYmplY3RzIHVzaW5nIHB1cmdlYWJsZSBtZW1vcnksIHdlIGNhbiB1c2UgYXMgbXVj
aAorLy8gbWVtb3J5IGFzIGlzIGF2YWlsYWJsZSBvbiB0aGUgbWFjaGluZS4gVGhlIHRyYWRlLW9m
ZiBoZXJlIGlzIHRoYXQgdGhlIENhY2hlZFJlc291cmNlIG9iamVjdCAoYW5kCisvLyBpdHMgbWVt
YmVyIHZhcmlhYmxlcykgYXJlIGFsbG9jYXRlZCBpbiBub24tcHVyZ2VhYmxlIFRDLW1hbGxvYydk
IG1lbW9yeSBzbyB3ZSB3b3VsZCBzZWUgc2xpZ2h0bHkKKy8vIG1vcmUgbWVtb3J5IHVzZSBkdWUg
dG8gdGhpcy4KKwogY2xhc3MgQ2FjaGUgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgog
ICAgIGZyaWVuZCBDYWNoZSogY2FjaGUoKTsKQEAgLTE0OCw2ICsxNjQsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRUb0xpdmVSZXNvdXJjZXNTaXplKENhY2hlZFJlc291cmNlKik7CiAgICAgdm9p
ZCByZW1vdmVGcm9tTGl2ZVJlc291cmNlc1NpemUoQ2FjaGVkUmVzb3VyY2UqKTsKIAorICAgIHN0
YXRpYyBib29sIHNob3VsZE1ha2VSZXNvdXJjZVB1cmdlYWJsZU9uRXZpY3Rpb24oKTsKKwogICAg
IC8vIEZ1bmN0aW9uIHRvIGNvbGxlY3QgY2FjaGUgc3RhdGlzdGljcyBmb3IgdGhlIGNhY2hlcyB3
aW5kb3cgaW4gdGhlIFNhZmFyaSBEZWJ1ZyBtZW51LgogICAgIFN0YXRpc3RpY3MgZ2V0U3RhdGlz
dGljcygpOwogCkBAIC0xNjgsNiArMTg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBydW5lRGVh
ZFJlc291cmNlcygpOyAvLyBGbHVzaCBkZWNvZGVkIGFuZCBlbmNvZGVkIGRhdGEgZnJvbSByZXNv
dXJjZXMgbm90IHJlZmVyZW5jZWQgYnkgV2ViIHBhZ2VzLgogICAgIHZvaWQgcHJ1bmVMaXZlUmVz
b3VyY2VzKCk7IC8vIEZsdXNoIGRlY29kZWQgZGF0YSBmcm9tIHJlc291cmNlcyBzdGlsbCByZWZl
cmVuY2VkIGJ5IFdlYiBwYWdlcy4KIAorICAgIGJvb2wgbWFrZVJlc291cmNlUHVyZ2VhYmxlKENh
Y2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBldmljdChDYWNoZWRSZXNvdXJjZSopOwogCiAgICAg
Ly8gTWVtYmVyIHZhcmlhYmxlcy4KQEAgLTE5OSw2ICsyMTgsMTUgQEAgcHJpdmF0ZToKICAgICBI
YXNoTWFwPFN0cmluZywgQ2FjaGVkUmVzb3VyY2UqPiBtX3Jlc291cmNlczsKIH07CiAKK2lubGlu
ZSBib29sIENhY2hlOjpzaG91bGRNYWtlUmVzb3VyY2VQdXJnZWFibGVPbkV2aWN0aW9uKCkKK3sK
KyNpZiBQTEFURk9STShJT1MpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorfQorCiAvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBjYWNo
ZS4KIENhY2hlKiBjYWNoZSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CmluZGV4IDc4NjZlZmRlOTA3OTZkZDQ0MjJhM2RlNDk2Y2FmOGM2OGQ2ZmM0OTQuLjg3N2NkMWRl
MWY4YTA5YTAyZjU5MDU4YTMxMmZjNThkZGU0NmY0MjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9h
ZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgogCisjaW5jbHVkZSAiQ2FjaGUuaCIKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKQEAgLTU4LDcgKzU5LDcg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQgKmMpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6YWxsQ2xpZW50c1JlbW92ZWQo
KQogewotICAgIGlmIChpc1NhZmVUb01ha2VQdXJnZWFibGUoKSkKKyAgICBpZiAoIUNhY2hlOjpz
aG91bGRNYWtlUmVzb3VyY2VQdXJnZWFibGVPbkV2aWN0aW9uKCkgJiYgaXNTYWZlVG9NYWtlUHVy
Z2VhYmxlKCkpCiAgICAgICAgIG1ha2VQdXJnZWFibGUodHJ1ZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZElt
YWdlLmNwcAppbmRleCA5YWU4ZDIwMGI5ZjU4OWE1M2I4NDRlZDlmMjMzYTA0NzgwN2FmNjRhLi42
OTZlMTFlYTE5ZmQ4OWU4MmVjNTg3NGRmMWI1NjU3NTAwMGI1Njc0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9DYWNoZWRJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1h
Z2UuY3BwCkBAIC0zMzEsNyArMzMxLDggQEAgdm9pZCBDYWNoZWRJbWFnZTo6ZGVzdHJveURlY29k
ZWREYXRhKCkKICAgICAgICAgLy8gSW52b2tpbmcgYWRkQ2xpZW50KCkgd2lsbCByZWNvbnN0cnVj
dCB0aGUgaW1hZ2Ugb2JqZWN0LgogICAgICAgICBtX2ltYWdlID0gMDsKICAgICAgICAgc2V0RGVj
b2RlZFNpemUoMCk7Ci0gICAgICAgIG1ha2VQdXJnZWFibGUodHJ1ZSk7CisgICAgICAgIGlmICgh
Q2FjaGU6OnNob3VsZE1ha2VSZXNvdXJjZVB1cmdlYWJsZU9uRXZpY3Rpb24oKSkKKyAgICAgICAg
ICAgIG1ha2VQdXJnZWFibGUodHJ1ZSk7CiAgICAgfSBlbHNlIGlmIChtX2ltYWdlICYmICFlcnJv
ck9jY3VycmVkKCkpCiAgICAgICAgIG1faW1hZ2UtPmRlc3Ryb3lEZWNvZGVkRGF0YSgpOwogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcCBiL1dlYkNvcmUvbG9h
ZGVyL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNTg4OTVkNjE1ODEzMjdiMmJhMjJjOThiNjU3ZWUz
Yjg3OGU5NWRmMy4uMTg5ODQzODg0MzNhYzAyZDA3OGJiODY4NTc2NWRhZjBlZmJlOTg3MyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9XZWJDb3JlL2xv
YWRlci9DYWNoZWRTY3JpcHQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAKKyNpbmNsdWRlICJDYWNoZS5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTExMCw3ICsxMTEs
NyBAQCB2b2lkIENhY2hlZFNjcmlwdDo6ZGVzdHJveURlY29kZWREYXRhKCkKIHsKICAgICBtX3Nj
cmlwdCA9IFN0cmluZygpOwogICAgIHNldERlY29kZWRTaXplKDApOwotICAgIGlmIChpc1NhZmVU
b01ha2VQdXJnZWFibGUoKSkKKyAgICBpZiAoIUNhY2hlOjpzaG91bGRNYWtlUmVzb3VyY2VQdXJn
ZWFibGVPbkV2aWN0aW9uKCkgJiYgaXNTYWZlVG9NYWtlUHVyZ2VhYmxlKCkpCiAgICAgICAgIG1h
a2VQdXJnZWFibGUodHJ1ZSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68154</attachid>
            <date>2010-09-20 16:30:38 -0700</date>
            <delta_ts>2010-09-21 16:50:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44806-20100920163037.patch</filename>
            <type>text/plain</type>
            <size>11243</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzFlOWYxMDdlOWI5YjJlMWY3ZWVhNDhhNWI4NGFlYzJkYTQ5ZjUzMi4uY2EwYmE3MDEwNDVkNDY2
YzY1ODY0ODQ3NWFjZDZjMjYyYTc5ZmI2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wOC0zMCAgUHJh
dGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHB1cmdlYWJsZSBtZW1vcnkgdG8ga2VlcCBt
b3JlIGRlYWQgcmVzb3VyY2VzIGluIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NDgwNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM1MDkw
MT4KKworICAgICAgICBUaGlzIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIGRlYWQgcmVzb3VyY2Vz
IGluIHRoZSBXZWJDb3JlIGNhY2hlIHRvIGJlIHRoZSBmb2xsb3dpbmcgaWYKKyAgICAgICAgc2hv
dWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpIHJldHVybnMgdHJ1ZS4KKworICAg
ICAgICAxLiBEZWFkIHJlc291cmNlcyBpbiB0aGUgY2FjaGUgYXJlIGtlcHQgaW4gbm9uLXB1cmdl
YWJsZSBtZW1vcnkuCisgICAgICAgIDIuIFdoZW4gd2UgcHJ1bmUgZGVhZCByZXNvdXJjZXMsIGlu
c3RlYWQgb2YgZnJlZWluZyB0aGVtLCB3ZSBtYXJrIHRoZWlyIG1lbW9yeSBhcyBwdXJnZWFibGUK
KyAgICAgICAgYW5kIGtlZXAgdGhlIHJlc291cmNlcyB1bnRpbCB0aGUga2VybmVsIHJlY2xhaW1z
IHRoZSBwdXJnZWFibGUgbWVtb3J5LgorCisgICAgICAgIEJ5IGxlYXZpbmcgdGhlIGluLWNhY2hl
IGRlYWQgcmVzb3VyY2VzIGluIGRpcnR5IHJlc2lkZW50IG1lbW9yeSwgd2UgZGVjcmVhc2UgdGhl
IGxpa2VsaWhvb2QKKyAgICAgICAgb2YgdGhlIGtlcm5lbCBjbGFpbWluZyB0aGF0IG1lbW9yeSBh
bmQgZm9yY2luZyB1cyB0byByZWZldGNoIHRoZSByZXNvdXJjZSAoZm9yIGV4YW1wbGUgd2hlbgor
ICAgICAgICBhIHVzZXIgcHJlc3NlcyBiYWNrKS4KKworICAgICAgICBBbmQgYnkgaGF2aW5nIGFu
IHVuYm91bmRlZCBudW1iZXIgb2YgcmVzb3VyY2Ugb2JqZWN0cyB1c2luZyBwdXJnZWFibGUgbWVt
b3J5LCB3ZSBjYW4gdXNlCisgICAgICAgIGFzIG11Y2ggbWVtb3J5IGFzIGlzIGF2YWlsYWJsZSBv
biB0aGUgbWFjaGluZS4gVGhlIHRyYWRlLW9mZiBpcyB0aGF0IHRoZSBDYWNoZWRSZXNvdXJjZQor
ICAgICAgICBvYmplY3QgKGFuZCBpdHMgbWVtYmVyIHZhcmlhYmxlcykgYXJlIGFsbG9jYXRlZCBp
biBub24tcHVyZ2VhYmxlIFRDLW1hbGxvYydkIG1lbW9yeSBzbworICAgICAgICB3ZSB3b3VsZCBz
ZWUgc2xpZ2h0bHkgbW9yZSBtZW1vcnkgdXNlIGR1ZSB0byB0aGlzLgorCisgICAgICAgICogbG9h
ZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZXNvdXJjZUZvclVSTCk6
IEFkanVzdCBzaXplcyBhcHByb3ByaWF0ZWx5IGlmIHdlIG1hZGUgcmVzb3VyY2UgbWVtb3J5Cisg
ICAgICAgIG5vbi1wdXJnZWFibGUuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cHJ1bmVEZWFk
UmVzb3VyY2VzKTogV2hlbiByZW1vdmluZyBkZWFkIHJlc291cmNlcywgdHJ5IGZpcnN0IHRvIG1h
cmsgdGhlaXIKKyAgICAgICAgbWVtb3J5IGFzIHB1cmdlYWJsZS4gSWYgbm90LCBldmljdCB0aGUg
cmVzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6bWFrZVJlc291cmNlUHVyZ2VhYmxl
KTogQWRkZWQuIFRyeSB0byBtYXJrIHJlc291cmNlCisgICAgICAgIG1lbW9yeSBhcyBwdXJnZWFi
bGUuIElmIHN1Y2Nlc3NmdWwsIGFkanVzdCB0aGUgc2l6ZXMgc28gdGhhdCB3ZSBkb24ndAorICAg
ICAgICBmYWN0b3IgdGhpcyByZXNvdXJjZXMgc2l6ZSBpbiB0aGUgQ2FjaGUgc2l6ZSBjYWxjdWxh
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpldmljdCk6IERvbid0IGRlY3JlbWVudCBz
aXplIGlmIHdlIGFscmVhZHkgZGlkIGl0IGluIG1ha2VSZXNvdXJjZVB1cmdlYWJsZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlOjpkdW1wTFJVTGlzdHMpOiBFeHRyYSBkZWJ1ZyBsb2dnaW5nLgor
ICAgICAgICAqIGxvYWRlci9DYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnNob3Vs
ZE1ha2VSZXNvdXJjZVB1cmdlYWJsZU9uRXZpY3Rpb24pOiBBZGRlZC4gSW5kaWNhdGVzIGlmIHRo
ZSBuZXcKKyAgICAgICAgYmVoYXZpb3VyIGlzIGVuYWJsZWQuCisgICAgICAgICogbG9hZGVyL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVT
aGVldDo6YWxsQ2xpZW50c1JlbW92ZWQpOiBEbyBub3QgbWFyayBtZW1vcnkgYXMgcHVyZ2VhYmxl
LiBUaGUKKyAgICAgICAgQ2FjaGUgY2xhc3MgdGFrZXMgY2FyZSBvZiB0aGlzLgorICAgICAgICAq
IGxvYWRlci9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
ZGVzdHJveURlY29kZWREYXRhKTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0NhY2hlZFNjcmlw
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmRlc3Ryb3lEZWNvZGVkRGF0
YSk6IERpdHRvLgorCiAyMDEwLTA5LTIwICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL0NhY2hlLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAppbmRleCBkYmNl
YzAwYTEzNmY2NmJiN2QzMzRjODU0MDgzNTViMzZiMDY1NmQ2Li42NDdkZmFjNjQwOTAxNWY1ZDg5
ZDZiODQ2MDk4ZjZlZjA4ZmE0Y2E1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9DYWNoZS5j
cHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCkBAIC0yMzgsMTEgKzIzOCwxNSBAQCB2
b2lkIENhY2hlOjpyZXZhbGlkYXRpb25GYWlsZWQoQ2FjaGVkUmVzb3VyY2UqIHJldmFsaWRhdGlu
Z1Jlc291cmNlKQogQ2FjaGVkUmVzb3VyY2UqIENhY2hlOjpyZXNvdXJjZUZvclVSTChjb25zdCBT
dHJpbmcmIHVybCkKIHsKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtX3Jlc291cmNl
cy5nZXQodXJsKTsKKyAgICBib29sIHdhc1B1cmdlYWJsZSA9IENhY2hlOjpzaG91bGRNYWtlUmVz
b3VyY2VQdXJnZWFibGVPbkV2aWN0aW9uKCkgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2UtPmlzUHVy
Z2VhYmxlKCk7CiAgICAgaWYgKHJlc291cmNlICYmICFyZXNvdXJjZS0+bWFrZVB1cmdlYWJsZShm
YWxzZSkpIHsKICAgICAgICAgQVNTRVJUKCFyZXNvdXJjZS0+aGFzQ2xpZW50cygpKTsKICAgICAg
ICAgZXZpY3QocmVzb3VyY2UpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgLy8gQWRk
IHRoZSBzaXplIGJhY2sgc2luY2Ugd2UgaGFkIHN1YnRyYWN0ZWQgaXQgd2hlbiB3ZSBtYXJrZWQg
dGhlIG1lbW9yeSBhcyBwdXJnZWFibGUuCisgICAgaWYgKHdhc1B1cmdlYWJsZSkKKyAgICAgICAg
YWRqdXN0U2l6ZShyZXNvdXJjZS0+aGFzQ2xpZW50cygpLCByZXNvdXJjZS0+c2l6ZSgpKTsKICAg
ICByZXR1cm4gcmVzb3VyY2U7CiB9CiAKQEAgLTM2Myw3ICszNjcsOSBAQCB2b2lkIENhY2hlOjpw
cnVuZURlYWRSZXNvdXJjZXMoKQogICAgICAgICB3aGlsZSAoY3VycmVudCkgewogICAgICAgICAg
ICAgQ2FjaGVkUmVzb3VyY2UqIHByZXYgPSBjdXJyZW50LT5tX3ByZXZJbkFsbFJlc291cmNlc0xp
c3Q7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnQtPmhhc0NsaWVudHMoKSAmJiAhY3VycmVudC0+
aXNQcmVsb2FkZWQoKSAmJiAhY3VycmVudC0+aXNDYWNoZVZhbGlkYXRvcigpKSB7Ci0gICAgICAg
ICAgICAgICAgZXZpY3QoY3VycmVudCk7CisgICAgICAgICAgICAgICAgaWYgKCFtYWtlUmVzb3Vy
Y2VQdXJnZWFibGUoY3VycmVudCkpCisgICAgICAgICAgICAgICAgICAgIGV2aWN0KGN1cnJlbnQp
OworCiAgICAgICAgICAgICAgICAgLy8gSWYgZXZpY3QoKSBjYXVzZWQgcHJ1bmVEZWFkUmVzb3Vy
Y2VzKCkgdG8gYmUgcmUtZW50ZXJlZCwgYmFpbCBvdXQuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHJl
bW92aW5nIGFuCiAgICAgICAgICAgICAgICAgLy8gU1ZHIENhY2hlZEltYWdlIHRoYXQgaGFzIHN1
YnJlc291cmNlcy4KICAgICAgICAgICAgICAgICBpZiAoIW1faW5QcnVuZURlYWRSZXNvdXJjZXMp
CkBAIC0zOTcsNiArNDAzLDI1IEBAIHZvaWQgQ2FjaGU6OnNldENhcGFjaXRpZXModW5zaWduZWQg
bWluRGVhZEJ5dGVzLCB1bnNpZ25lZCBtYXhEZWFkQnl0ZXMsIHVuc2lnbmVkCiAgICAgcHJ1bmUo
KTsKIH0KIAorYm9vbCBDYWNoZTo6bWFrZVJlc291cmNlUHVyZ2VhYmxlKENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSkKK3sKKyAgICBpZiAoIUNhY2hlOjpzaG91bGRNYWtlUmVzb3VyY2VQdXJnZWFi
bGVPbkV2aWN0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghcmVzb3Vy
Y2UtPmluQ2FjaGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFyZXNvdXJj
ZS0+aXNTYWZlVG9NYWtlUHVyZ2VhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghcmVzb3VyY2UtPm1ha2VQdXJnZWFibGUodHJ1ZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0NsaWVudHMoKSwgLXJlc291cmNlLT5z
aXplKCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQ2FjaGU6OmV2aWN0KENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICAvLyBUaGUgcmVzb3VyY2UgbWF5IGhhdmUgYWxy
ZWFkeSBiZWVuIHJlbW92ZWQgYnkgc29tZW9uZSBvdGhlciB0aGFuIG91ciBjYWxsZXIsCkBAIC00
MTAsMTAgKzQzNSwxMCBAQCB2b2lkIENhY2hlOjpldmljdChDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UpCiAgICAgICAgIHJlbW92ZUZyb21MUlVMaXN0KHJlc291cmNlKTsKICAgICAgICAgcmVtb3Zl
RnJvbUxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdChyZXNvdXJjZSk7CiAKLSAgICAgICAgLy8gU3Vi
dHJhY3QgZnJvbSBvdXIgc2l6ZSB0b3RhbHMuCi0gICAgICAgIGludCBkZWx0YSA9IC1zdGF0aWNf
Y2FzdDxpbnQ+KHJlc291cmNlLT5zaXplKCkpOwotICAgICAgICBpZiAoZGVsdGEpCi0gICAgICAg
ICAgICBhZGp1c3RTaXplKHJlc291cmNlLT5oYXNDbGllbnRzKCksIGRlbHRhKTsKKyAgICAgICAg
Ly8gSWYgdGhlIHJlc291cmNlIHdhcyBwdXJnZWQsIGl0IG1lYW5zIHdlIGhhZCBhbHJlYWR5IGRl
Y3JlbWVudGVkIHRoZSBzaXplIHdoZW4gd2UgbWFkZSB0aGUKKyAgICAgICAgLy8gcmVzb3VyY2Ug
cHVyZ2VhYmxlIGluIG1ha2VSZXNvdXJjZVB1cmdlYWJsZSgpLgorICAgICAgICBpZiAoIUNhY2hl
OjpzaG91bGRNYWtlUmVzb3VyY2VQdXJnZWFibGVPbkV2aWN0aW9uKCkgfHwgIXJlc291cmNlLT53
YXNQdXJnZWQoKSkKKyAgICAgICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0NsaWVudHMo
KSwgLXJlc291cmNlLT5zaXplKCkpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlQobV9yZXNv
dXJjZXMuZ2V0KHJlc291cmNlLT51cmwoKSkgIT0gcmVzb3VyY2UpOwogCkBAIC03MjUsNyArNzUw
LDcgQEAgdm9pZCBDYWNoZTo6ZHVtcFN0YXRzKCkKIAogdm9pZCBDYWNoZTo6ZHVtcExSVUxpc3Rz
KGJvb2wgaW5jbHVkZUxpdmUpIGNvbnN0CiB7Ci0gICAgcHJpbnRmKCJMUlUtU1AgbGlzdHMgaW4g
ZXZpY3Rpb24gb3JkZXIgKEtpbG9ieXRlcyBkZWNvZGVkLCBLaWxvYnl0ZXMgZW5jb2RlZCwgQWNj
ZXNzIGNvdW50LCBSZWZlcmVuY2VkKTpcbiIpOworICAgIHByaW50ZigiTFJVLVNQIGxpc3RzIGlu
IGV2aWN0aW9uIG9yZGVyIChLaWxvYnl0ZXMgZGVjb2RlZCwgS2lsb2J5dGVzIGVuY29kZWQsIEFj
Y2VzcyBjb3VudCwgUmVmZXJlbmNlZCwgaXNQdXJnZWFibGUsIHdhc1B1cmdlZCk6XG4iKTsKIAog
ICAgIGludCBzaXplID0gbV9hbGxSZXNvdXJjZXMuc2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSBz
aXplIC0gMTsgaSA+PSAwOyBpLS0pIHsKQEAgLTczNCw3ICs3NTksOCBAQCB2b2lkIENhY2hlOjpk
dW1wTFJVTGlzdHMoYm9vbCBpbmNsdWRlTGl2ZSkgY29uc3QKICAgICAgICAgd2hpbGUgKGN1cnJl
bnQpIHsKICAgICAgICAgICAgIENhY2hlZFJlc291cmNlKiBwcmV2ID0gY3VycmVudC0+bV9wcmV2
SW5BbGxSZXNvdXJjZXNMaXN0OwogICAgICAgICAgICAgaWYgKGluY2x1ZGVMaXZlIHx8ICFjdXJy
ZW50LT5oYXNDbGllbnRzKCkpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIoJS4xZkssICUuMWZL
LCAldUEsICVkUik7ICIsIGN1cnJlbnQtPmRlY29kZWRTaXplKCkgLyAxMDI0LjBmLCAoY3VycmVu
dC0+ZW5jb2RlZFNpemUoKSArIGN1cnJlbnQtPm92ZXJoZWFkU2l6ZSgpKSAvIDEwMjQuMGYsIGN1
cnJlbnQtPmFjY2Vzc0NvdW50KCksIGN1cnJlbnQtPmhhc0NsaWVudHMoKSk7CisgICAgICAgICAg
ICAgICAgcHJpbnRmKCIoJS4xZkssICUuMWZLLCAldUEsICVkUiwgJWQsICVkKTsgIiwgY3VycmVu
dC0+ZGVjb2RlZFNpemUoKSAvIDEwMjQuMGYsIChjdXJyZW50LT5lbmNvZGVkU2l6ZSgpICsgY3Vy
cmVudC0+b3ZlcmhlYWRTaXplKCkpIC8gMTAyNC4wZiwgY3VycmVudC0+YWNjZXNzQ291bnQoKSwg
Y3VycmVudC0+aGFzQ2xpZW50cygpLCBjdXJyZW50LT5pc1B1cmdlYWJsZSgpLCBjdXJyZW50LT53
YXNQdXJnZWQoKSk7CisKICAgICAgICAgICAgIGN1cnJlbnQgPSBwcmV2OwogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaCBiL1dlYkNvcmUvbG9hZGVy
L0NhY2hlLmgKaW5kZXggNTc0MzY5Njk3MjVlNDU3OWU0MjJkMzFlMjYzODI1Mjg0ZGNjYTU4NC4u
MTRkZGMyMTdlZmRhZTZhMTE5YTVlYWUzMzQ0NTA2YWY0MTdiMzViMSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9sb2FkZXIvQ2FjaGUuaAorKysgYi9XZWJDb3JlL2xvYWRlci9DYWNoZS5oCkBAIC01NSw2
ICs1NSwyMiBAQCBjbGFzcyBLVVJMOwogLy8gLS0tLS0tLXwtLS0tLSsrKysrKysrKysrKysrK3wK
IC8vIC0tLS0tLS18LS0tLS0rKysrKysrKysrKysrKyt8KysrKysKIAorLy8gVGhlIGJlaGF2aW9y
IG9mIHRoZSBjYWNoZSBjaGFuZ2VzIGluIHRoZSBmb2xsb3dpbmcgd2F5IGlmIHNob3VsZE1ha2VS
ZXNvdXJjZVB1cmdlYWJsZU9uRXZpY3Rpb24KKy8vIHJldHVybnMgdHJ1ZS4KKy8vCisvLyAxLiBE
ZWFkIHJlc291cmNlcyBpbiB0aGUgY2FjaGUgYXJlIGtlcHQgaW4gbm9uLXB1cmdlYWJsZSBtZW1v
cnkuCisvLyAyLiBXaGVuIHdlIHBydW5lIGRlYWQgcmVzb3VyY2VzLCBpbnN0ZWFkIG9mIGZyZWVp
bmcgdGhlbSwgd2UgbWFyayB0aGVpciBtZW1vcnkgYXMgcHVyZ2VhYmxlIGFuZAorLy8gICAga2Vl
cCB0aGUgcmVzb3VyY2VzIHVudGlsIHRoZSBrZXJuZWwgcmVjbGFpbXMgdGhlIHB1cmdlYWJsZSBt
ZW1vcnkuCisvLworLy8gQnkgbGVhdmluZyB0aGUgaW4tY2FjaGUgZGVhZCByZXNvdXJjZXMgaW4g
ZGlydHkgcmVzaWRlbnQgbWVtb3J5LCB3ZSBkZWNyZWFzZSB0aGUgbGlrZWxpaG9vZCBvZgorLy8g
dGhlIGtlcm5lbCBjbGFpbWluZyB0aGF0IG1lbW9yeSBhbmQgZm9yY2luZyB1cyB0byByZWZldGNo
IHRoZSByZXNvdXJjZSAoZm9yIGV4YW1wbGUgd2hlbiBhIHVzZXIKKy8vIHByZXNzZXMgYmFjayku
CisvLworLy8gQW5kIGJ5IGhhdmluZyBhbiB1bmJvdW5kZWQgbnVtYmVyIG9mIHJlc291cmNlIG9i
amVjdHMgdXNpbmcgcHVyZ2VhYmxlIG1lbW9yeSwgd2UgY2FuIHVzZSBhcyBtdWNoCisvLyBtZW1v
cnkgYXMgaXMgYXZhaWxhYmxlIG9uIHRoZSBtYWNoaW5lLiBUaGUgdHJhZGUtb2ZmIGhlcmUgaXMg
dGhhdCB0aGUgQ2FjaGVkUmVzb3VyY2Ugb2JqZWN0IChhbmQKKy8vIGl0cyBtZW1iZXIgdmFyaWFi
bGVzKSBhcmUgYWxsb2NhdGVkIGluIG5vbi1wdXJnZWFibGUgVEMtbWFsbG9jJ2QgbWVtb3J5IHNv
IHdlIHdvdWxkIHNlZSBzbGlnaHRseQorLy8gbW9yZSBtZW1vcnkgdXNlIGR1ZSB0byB0aGlzLgor
CiBjbGFzcyBDYWNoZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgZnJpZW5k
IENhY2hlKiBjYWNoZSgpOwpAQCAtMTQ4LDYgKzE2NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFk
ZFRvTGl2ZVJlc291cmNlc1NpemUoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIHJlbW92ZUZy
b21MaXZlUmVzb3VyY2VzU2l6ZShDYWNoZWRSZXNvdXJjZSopOwogCisgICAgc3RhdGljIGJvb2wg
c2hvdWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpOworCiAgICAgLy8gRnVuY3Rp
b24gdG8gY29sbGVjdCBjYWNoZSBzdGF0aXN0aWNzIGZvciB0aGUgY2FjaGVzIHdpbmRvdyBpbiB0
aGUgU2FmYXJpIERlYnVnIG1lbnUuCiAgICAgU3RhdGlzdGljcyBnZXRTdGF0aXN0aWNzKCk7CiAK
QEAgLTE2OCw2ICsxODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJ1bmVEZWFkUmVzb3VyY2Vz
KCk7IC8vIEZsdXNoIGRlY29kZWQgYW5kIGVuY29kZWQgZGF0YSBmcm9tIHJlc291cmNlcyBub3Qg
cmVmZXJlbmNlZCBieSBXZWIgcGFnZXMuCiAgICAgdm9pZCBwcnVuZUxpdmVSZXNvdXJjZXMoKTsg
Ly8gRmx1c2ggZGVjb2RlZCBkYXRhIGZyb20gcmVzb3VyY2VzIHN0aWxsIHJlZmVyZW5jZWQgYnkg
V2ViIHBhZ2VzLgogCisgICAgYm9vbCBtYWtlUmVzb3VyY2VQdXJnZWFibGUoQ2FjaGVkUmVzb3Vy
Y2UqKTsKICAgICB2b2lkIGV2aWN0KENhY2hlZFJlc291cmNlKik7CiAKICAgICAvLyBNZW1iZXIg
dmFyaWFibGVzLgpAQCAtMTk5LDYgKzIxOCwxNSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3Ry
aW5nLCBDYWNoZWRSZXNvdXJjZSo+IG1fcmVzb3VyY2VzOwogfTsKIAoraW5saW5lIGJvb2wgQ2Fj
aGU6OnNob3VsZE1ha2VSZXNvdXJjZVB1cmdlYWJsZU9uRXZpY3Rpb24oKQoreworI2lmIFBMQVRG
T1JNKElPUykKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCit9CisKIC8vIEZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgZ2xvYmFsIGNhY2hlLgogQ2FjaGUq
IGNhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNzg2
NmVmZGU5MDc5NmRkNDQyMmEzZGU0OTZjYWY4YzY4ZDZmYzQ5NC4uODc3Y2QxZGUxZjhhMDlhMDJm
NTkwNThhMzEyZmM1OGRkZTQ2ZjQyNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
YWNoZWRDU1NTdHlsZVNoZWV0LmgiCiAKKyNpbmNsdWRlICJDYWNoZS5oIgogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxr
ZXIuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgpAQCAtNTgsNyArNTksNyBAQCB2b2lkIENh
Y2hlZENTU1N0eWxlU2hlZXQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCAqYykK
IAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjphbGxDbGllbnRzUmVtb3ZlZCgpCiB7Ci0gICAg
aWYgKGlzU2FmZVRvTWFrZVB1cmdlYWJsZSgpKQorICAgIGlmICghQ2FjaGU6OnNob3VsZE1ha2VS
ZXNvdXJjZVB1cmdlYWJsZU9uRXZpY3Rpb24oKSAmJiBpc1NhZmVUb01ha2VQdXJnZWFibGUoKSkK
ICAgICAgICAgbWFrZVB1cmdlYWJsZSh0cnVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9s
b2FkZXIvQ2FjaGVkSW1hZ2UuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCmlu
ZGV4IDIwMmYzMmMyYzNhZWFiYTMwZWJiNzI0ODYzYWM0MDJiMTczY2NhZDMuLjJjMThmMzU5MTFl
NjU0MjYyZjllN2NmNmFjMmY4MWFhODYwMWNiNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVy
L0NhY2hlZEltYWdlLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5jcHAKQEAg
LTMzMSw3ICszMzEsOCBAQCB2b2lkIENhY2hlZEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoKQog
ICAgICAgICAvLyBJbnZva2luZyBhZGRDbGllbnQoKSB3aWxsIHJlY29uc3RydWN0IHRoZSBpbWFn
ZSBvYmplY3QuCiAgICAgICAgIG1faW1hZ2UgPSAwOwogICAgICAgICBzZXREZWNvZGVkU2l6ZSgw
KTsKLSAgICAgICAgbWFrZVB1cmdlYWJsZSh0cnVlKTsKKyAgICAgICAgaWYgKCFDYWNoZTo6c2hv
dWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpKQorICAgICAgICAgICAgbWFrZVB1
cmdlYWJsZSh0cnVlKTsKICAgICB9IGVsc2UgaWYgKG1faW1hZ2UgJiYgIWVycm9yT2NjdXJyZWQo
KSkKICAgICAgICAgbV9pbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKCk7CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVk
U2NyaXB0LmNwcAppbmRleCA1ODg5NWQ2MTU4MTMyN2IyYmEyMmM5OGI2NTdlZTNiODc4ZTk1ZGYz
Li4xODk4NDM4ODQzM2FjMDJkMDc4YmI4Njg1NzY1ZGFmMGVmYmU5ODczIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hl
ZFNjcmlwdC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDYWNoZWRTY3JpcHQuaCIKIAorI2luY2x1ZGUgIkNhY2hlLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtl
ci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtMTEwLDcgKzExMSw3IEBAIHZvaWQg
Q2FjaGVkU2NyaXB0OjpkZXN0cm95RGVjb2RlZERhdGEoKQogewogICAgIG1fc2NyaXB0ID0gU3Ry
aW5nKCk7CiAgICAgc2V0RGVjb2RlZFNpemUoMCk7Ci0gICAgaWYgKGlzU2FmZVRvTWFrZVB1cmdl
YWJsZSgpKQorICAgIGlmICghQ2FjaGU6OnNob3VsZE1ha2VSZXNvdXJjZVB1cmdlYWJsZU9uRXZp
Y3Rpb24oKSAmJiBpc1NhZmVUb01ha2VQdXJnZWFibGUoKSkKICAgICAgICAgbWFrZVB1cmdlYWJs
ZSh0cnVlKTsKIH0KIAo=
</data>
<flag name="review"
          id="57630"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>