<?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>49008</bug_id>
          
          <creation_ts>2010-11-04 10:44:01 -0700</creation_ts>
          <short_desc>Unbounded memory growth for long lived pages with many requests</short_desc>
          <delta_ts>2011-04-26 15:58:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Sam Magnuson">smagnuso</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>bnason</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>thomas</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>304744</commentid>
    <comment_count>0</comment_count>
      <attachid>72960</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-11-04 10:44:01 -0700</bug_when>
    <thetext>Created attachment 72960
Demonstration of unbounded growth

I have a long lived web app that changes images on screen to unique URL&apos;s over a period of time. I have found that the memory grows in an unbounded way (probably not considered a leak due to the fact that the pointers/references to the data is not lost only that its growth is unbounded).

I discussed the issue with Adam Barth with respect to the three places I found such behaviour and it was agreed that I would submit a patch for approval that would bound these references to references that remain in the in-memory cache. In this way you can limit the size of your cache and the reference to the URL&apos;s or resources will be limited as well. 

I have done this with a new class called SubCache (which is a subset of the current global cache). Anything referenced can be inserted into the SubCache (which is referenced only by string) and will be evicted from the SubCache once the Cache no longer references it. I have identified three spots where this kind of unbounded growth can use the SubCache and will submit the three fixes in addition to the new SubCache as separate patches.

I&apos;ve attached a small test case that demonstrates the unbounded growth as well, which can be seen by watching the process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304751</commentid>
    <comment_count>1</comment_count>
      <attachid>72962</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-11-04 10:51:19 -0700</bug_when>
    <thetext>Created attachment 72962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304754</commentid>
    <comment_count>2</comment_count>
      <attachid>72964</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-11-04 10:55:56 -0700</bug_when>
    <thetext>Created attachment 72964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304755</commentid>
    <comment_count>3</comment_count>
      <attachid>72965</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-11-04 10:58:54 -0700</bug_when>
    <thetext>Created attachment 72965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304756</commentid>
    <comment_count>4</comment_count>
      <attachid>72962</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-04 10:58:55 -0700</bug_when>
    <thetext>Comment on attachment 72962
Patch

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

&gt; WebCore/loader/Cache.cpp:802
&gt; +SubCache::SubCache() :  m_cache(cache())

The &quot;: m_cache(cache())&quot; part should be on its own line and indented four spaces.

&gt; WebCore/loader/Cache.cpp:813
&gt; +CachedResource*
&gt; +SubCache::resourceForURL(const String &amp;url) const

The return type should be on the same line as the function declaration.  Also, I don&apos;t see where this function is called.

&gt; WebCore/loader/Cache.cpp:825
&gt; +void
&gt; +SubCache::add(const String &amp;url)
&gt; +{
&gt; +    if (m_cache-&gt;resourceForURL(url)) // It must be in the cache for it to go into the subcache.
&gt; +        m_resources.add(url);
&gt; +}

Where is this function called?

&gt; WebCore/loader/Cache.h:241
&gt; +class SubCache {

This should be in its own file.  Also, we should think of a more descriptive name.

&gt; WebCore/loader/Cache.h:243
&gt; +public:
&gt; +

No blank line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304757</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-04 10:59:11 -0700</bug_when>
    <thetext>Oh, i see there are more patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304759</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-04 11:01:28 -0700</bug_when>
    <thetext>I appreciate your writing small patches, but I think this would be easier to review as one patch.  It&apos;s easier to understand what&apos;s going on if you can see the implementation and the caller at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304761</commentid>
    <comment_count>7</comment_count>
      <attachid>72967</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-11-04 11:01:32 -0700</bug_when>
    <thetext>Created attachment 72967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304764</commentid>
    <comment_count>8</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-04 11:08:44 -0700</bug_when>
    <thetext>Attachment 72964 did not build on qt:
Build output: http://queues.webkit.org/results/5108011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304767</commentid>
    <comment_count>9</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-04 11:20:59 -0700</bug_when>
    <thetext>Attachment 72967 did not build on qt:
Build output: http://queues.webkit.org/results/5135019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304776</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-04 11:40:02 -0700</bug_when>
    <thetext>Is this a duplicate of bug 31253?

I guess the main question here is how this affects Activity Window and Web Inspector functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304989</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-11-04 16:32:19 -0700</bug_when>
    <thetext>Please combine the patches for a single patch for readability.

There shouldn&apos;t be any unbounded growth. The memory cache has a maximum size which will eventually be reached. At that point unreferenced items will be kicked out. You will fill the cache in any sufficiently long browsing session too so this is nothing particularly alarming. It would be useful to try to recognize resources that are unlikely to be referenced ever again and kick them out early. Doing that well is difficult.

I don&apos;t understand how these patches solve the problem, neither from description nor from looking at the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305144</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-11-04 22:19:24 -0700</bug_when>
    <thetext>Attachment 72967 did not build on win:
Build output: http://queues.webkit.org/results/5285009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305149</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-04 22:30:07 -0700</bug_when>
    <thetext>Attachment 72964 did not build on win:
Build output: http://queues.webkit.org/results/5345006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305158</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-04 23:12:07 -0700</bug_when>
    <thetext>Attachment 72964 did not build on chromium:
Build output: http://queues.webkit.org/results/5294011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305160</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-04 23:20:31 -0700</bug_when>
    <thetext>Attachment 72967 did not build on chromium:
Build output: http://queues.webkit.org/results/5333006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305249</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-05 06:57:22 -0700</bug_when>
    <thetext>Attachment 72964 did not build on gtk:
Build output: http://queues.webkit.org/results/5319011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305257</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-05 07:08:39 -0700</bug_when>
    <thetext>Attachment 72967 did not build on gtk:
Build output: http://queues.webkit.org/results/5248016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305463</commentid>
    <comment_count>18</comment_count>
      <attachid>73102</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-11-05 12:44:38 -0700</bug_when>
    <thetext>Created attachment 73102
merge</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305464</commentid>
    <comment_count>19</comment_count>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-11-05 12:48:42 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Please combine the patches for a single patch for readability.
&gt; 

Ok. I thought it might be nice to have the subcache mods in separate patches to discuss the merit of using the data structure in each place but I&apos;ll merge together into a single patch for this review.

&gt; There shouldn&apos;t be any unbounded growth. The memory cache has a maximum size which will eventually be reached. At that point unreferenced items will be kicked out. You will fill the cache in any sufficiently long browsing session too so this is nothing particularly alarming. It would be useful to try to recognize resources that are unlikely to be referenced ever again and kick them out early. Doing that well is difficult.
&gt; 

This doesn&apos;t really augment the in-memory cache. This is to add a datastructure (called SubCache at the moment) which is a subset of the in-memory cache. It only references them by keyname (url) and when they get evicted from the global in-memory cache they fall out of the SubCache. WebKit has the pattern in a number of places to remember a set of url&apos;s (a HashSet) that it has seen before and the growth of that map is unbounded. In my tests I have a number of unique url&apos;s that each get book-kept and thus the memory continues to grow. Using the SubCache caps those to only things in the Cache which at least leaves a single place to tune memory requirements.

&gt; I don&apos;t understand how these patches solve the problem, neither from description nor from looking at the code.

Hopefully this is more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305606</commentid>
    <comment_count>20</comment_count>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-11-05 16:04:07 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Is this a duplicate of bug 31253?
&gt; 

It might be, however I believe 31253&apos;s patch is only attempting to address the m_documentResources in CachedResourceLoader.cpp (nee DocLoader.cpp). The patch I&apos;ve attached here address that as well as the two &quot;known&quot; URL HashSet (one in CacheResourceLoader.cpp one in DocumentLoader.cpp).

&gt; I guess the main question here is how this affects Activity Window and Web Inspector functionality.

I tested with the Inspector and a very very small cache and it seems to work as expected. It looks like the Inspector is not using the table that used to live in DocumentLoader.cpp anymore (in fact InspectorResource.cpp is been removed in lieu of InspectorResourceAgent.cpp in trunk).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305728</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-05 22:09:42 -0700</bug_when>
    <thetext>Who is using the set in DocumentLoader?  Maybe it&apos;s orphaned?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305764</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-05 23:47:31 -0700</bug_when>
    <thetext>Activity window, Web Archives and Mac API, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307434</commentid>
    <comment_count>23</comment_count>
      <attachid>73509</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-11-10 10:58:29 -0800</bug_when>
    <thetext>Created attachment 73509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307436</commentid>
    <comment_count>24</comment_count>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-11-10 10:59:25 -0800</bug_when>
    <thetext>I redid the patch due to the Cache-&gt;MemoryCache rename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335629</commentid>
    <comment_count>25</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-01-17 19:07:03 -0800</bug_when>
    <thetext>Progresses here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335668</commentid>
    <comment_count>26</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-17 23:09:20 -0800</bug_when>
    <thetext>Let me dump Web Inspector assumptions here:

- When inspector is opened, it traverses Frame tree and collects frame resources using CachedResourceLoaders (cachedResourceLoader()-&gt;allCachedResources() calls).
- Once opened, it updates this tree of resources to keep it up-to-date based on the network events.
- At any time user wants to see the resource content, we either use frameLoader-&gt;documentLoader()-&gt;mainResourceData() (for main resource) or use its CachedResourceLoader again.

It is important for us to show the entire tree of resources to the user. Aggressive clearing of the cachedresourceloader will probably regress our functionality. Worst case we should mark CachedResources as &quot;emptied&quot; in order to re-create the resource tree structure properly. Unfortunately there are no tests that would regress, but if we make the wipe threshold configurable, it would not be hard to come up with one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392895</commentid>
    <comment_count>27</comment_count>
      <attachid>73509</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-26 15:57:58 -0700</bug_when>
    <thetext>Comment on attachment 73509
Patch

This does not appear to be a big problem in practice.  It&apos;s unclear whether the added complexity from this patch is justified by the benefits.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>72960</attachid>
            <date>2010-11-04 10:44:01 -0700</date>
            <delta_ts>2010-11-04 10:44:01 -0700</delta_ts>
            <desc>Demonstration of unbounded growth</desc>
            <filename>image-cycle-innerhtml.html</filename>
            <type>text/html</type>
            <size>1698</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4NCgk8dGl0bGU+U2ltcGxlIEltYWdlIFRlc3Q8L3RpdGxlPg0KCTxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyIgbWVkaWE9InNjcmVlbiI+DQoJICAgIGJvZHkgew0KCSAgICAgICAgYmFja2dyb3VuZDog
IzAwMDsNCgkgICAgfQ0KCSAgICANCiAgICAgICAgI2ltYWdlLXF1ZXVlIGRpdiwNCiAgICAgICAg
I2ltYWdlLXF1ZXVlIGRpdiBpbWcgew0KICAgICAgICAgICAgZGlzcGxheTogaW5saW5lOw0KICAg
ICAgICAgICAgd2lkdGg6IDMyMHB4Ow0KICAgICAgICAgICAgaGVpZ2h0OiAyNDBweDsNCiAgICAg
ICAgfQ0KICAgICAgICANCiAgICAgICAgI2NvdW50ZXIgew0KICAgICAgICAJY29sb3I6IHdoaXRl
Ow0KICAgICAgICAJZm9udDogMTZweCBzYW5zLXNlcmlmOw0KICAgICAgICAJbWFyZ2luLXRvcDog
MjRweDsNCiAgICAgICAgCW1hcmdpbi1sZWZ0OiA4cHg7DQogICAgICAgIH0NCgk8L3N0eWxlPg0K
PC9oZWFkPg0KDQo8Ym9keSBvbmxvYWQ9InRlc3QoKSI+DQogICAgPGRpdiBpZD0iaW1hZ2UtcXVl
dWUiIG9ubW91c2Vkb3duPSJzdG9wKCkiPg0KICAgICAgICA8ZGl2IGlkPSJpbWFnZS1wb29sLTAi
PjwvZGl2Pg0KICAgICAgICA8ZGl2IGlkPSJpbWFnZS1wb29sLTEiPjwvZGl2Pg0KICAgIDwvZGl2
Pg0KCTxkaXYgaWQ9ImNvdW50ZXIiPg0KCTwvZGl2Pg0KCQ0KPHNjcmlwdD4NCgl2YXIgc3RvcHBl
ZCA9IGZhbHNlOw0KCXZhciB0b2dnbGUgPSB0cnVlOw0KICAgIHZhciBjb3VudGVyID0gMDsNCiAg
ICB2YXIgY291bnRlckVsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb3VudGVyIik7DQog
ICAgdmFyIGltZzFFbHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2UtcG9vbC0wIik7
DQogICAgdmFyIGltZzJFbHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2UtcG9vbC0x
Iik7DQogICAgdmFyIGltYWdlRGF0YSA9IFsNCiAgICAgICAgICAiaHR0cDovL21lbWJlcnMuaG9t
ZS5ubC95b3VyZGVza3RvcC9oaWdocmVzb2x1dGlvbi8xMS5qcGc/Zm9vPWJhciIsDQogICAgICAg
ICAgImh0dHA6Ly9tZW1iZXJzLmhvbWUubmwveW91cmRlc2t0b3AvaGlnaHJlc29sdXRpb24vMTAu
anBnP2Zvbz1iYXIiDQogICAgICAgIF07DQoNCglmdW5jdGlvbiBzdG9wKCkNCgl7DQoJCXN0b3Bw
ZWQgPSB0cnVlOw0KCX0NCgkNCglmdW5jdGlvbiB0ZXN0KCkNCgl7DQoJCWlmICghc3RvcHBlZCkN
CgkgICAgICAgCXNldFRpbWVvdXQoc3dhcCwgMjApOw0KCX0NCgkNCglmdW5jdGlvbiBzd2FwKCkN
Cgl7DQoJCXRvZ2dsZSA9ICF0b2dnbGU7DQoNCgkJdmFyIHVybDEgPSBpbWFnZURhdGFbdG9nZ2xl
ID8gMCA6IDFdOw0KCQl2YXIgdXJsMiA9IGltYWdlRGF0YVt0b2dnbGUgPyAxIDogMF07DQoNCgkJ
dmFyIHRpbWUgPSAnJnRpbWU9JyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7DQoJCWltZzFFbHQu
aW5uZXJIVE1MID0gJzxpbWcgc3JjPSInICsgdXJsMSArIHRpbWUgKyAnIj4nOw0KCQlpbWcyRWx0
LmlubmVySFRNTCA9ICc8aW1nIHNyYz0iJyArIHVybDIgKyB0aW1lICsgJyI+JzsNCg0KICAgIAlj
b3VudGVyRWx0LmlubmVyVGV4dCA9ICsrY291bnRlcjsNCg0KICAgICAgIAlzZXRUaW1lb3V0KHRl
c3QsIDIwKTsNCgl9DQoNCjwvc2NyaXB0Pg0KPC9ib2R5Pg0KPC9odG1sPg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72962</attachid>
            <date>2010-11-04 10:51:19 -0700</date>
            <delta_ts>2010-11-05 12:44:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49008-20101104105508.patch</filename>
            <type>text/plain</type>
            <size>5694</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTA4NzczYjc2Njk2Y2Q1MjY2NWVhMGQyZDMzYTgzODlmODBiNTc4Ny4uN2E3NzJkYmIyNjQ1ODZm
N2IwYjcyZTVlYjQ0MDgwMzBhODEyZGY4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0xMS0wNCAgU2Ft
IE1hZ251c29uICA8c21hZ251c29uQG5ldGZsaXguY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTdWJDYWNoZSB0byBjb250cm9sIHVuYm91
bmRlZCBtZW1vcnkgZ3Jvd3RoIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDkwMDgKKworICAgICAgICAqIGxvYWRlci9DYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZTo6ZXZpY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmFkZFN1
YkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZW1vdmVTdWJDYWNoZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJDYWNoZTo6U3ViQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
Q2FjaGU6On5TdWJDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJDYWNoZTo6cmVzb3VyY2VG
b3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6U3ViQ2FjaGU6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpTdWJDYWNoZTo6YWxsUmVzb3VyY2VzKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN1YkNhY2hlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
Q2FjaGU6OmNvbnRhaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YkNhY2hlOjpyZW1vdmUpOgor
CiAyMDEwLTExLTAyICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRl
ci9DYWNoZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAKaW5kZXggN2RjOGEzMjUwZTYz
ZjY0ZDcwYjIwZjdjNTI5NTRjNzExZDM4MzY2Zi4uOTc1NjJlOTU1YjFiODUzZTA4YmQ4ZDJmOTQw
YTQ1NjhkMmJiNzc4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCisrKyBi
L1dlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcApAQCAtNDQ0LDYgKzQ0NCwxMCBAQCB2b2lkIENhY2hl
OjpldmljdChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgLy8gVGhlIHJlc291cmNlIG1h
eSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWVvbmUgb3RoZXIgdGhhbiBvdXIgY2Fs
bGVyLAogICAgIC8vIHdobyBuZWVkZWQgYSBmcmVzaCBjb3B5IGZvciBhIHJlbG9hZC4gU2VlIDxo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ3OSNjNj4uCiAgICAgaWYg
KHJlc291cmNlLT5pbkNhY2hlKCkpIHsKKyAgICAgICAgSGFzaFNldDxTdWJDYWNoZSo+OjppdGVy
YXRvciBlbmQgPSBtX3N1YkNhY2hlcy5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFN1YkNh
Y2hlKj46Oml0ZXJhdG9yIGl0ID0gbV9zdWJDYWNoZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQorICAgICAgICAgICAgKCppdCktPnJlbW92ZShyZXNvdXJjZSk7CisKICAgICAgICAgLy8gUmVt
b3ZlIGZyb20gdGhlIHJlc291cmNlIG1hcC4KICAgICAgICAgbV9yZXNvdXJjZXMucmVtb3ZlKHJl
c291cmNlLT51cmwoKSk7CiAgICAgICAgIHJlc291cmNlLT5zZXRJbkNhY2hlKGZhbHNlKTsKQEAg
LTQ2NCw2ICs0NjgsMTYgQEAgdm9pZCBDYWNoZTo6ZXZpY3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlKQogICAgICAgICBkZWxldGUgcmVzb3VyY2U7CiB9CiAKK3ZvaWQgQ2FjaGU6OmFkZFN1YkNh
Y2hlKFN1YkNhY2hlKiBzdWJDYWNoZSkKK3sKKyAgICBtX3N1YkNhY2hlcy5hZGQoc3ViQ2FjaGUp
OworfQorCit2b2lkIENhY2hlOjpyZW1vdmVTdWJDYWNoZShTdWJDYWNoZSogc3ViQ2FjaGUpCit7
CisgICAgbV9zdWJDYWNoZXMucmVtb3ZlKHN1YkNhY2hlKTsKK30KKwogdm9pZCBDYWNoZTo6YWRk
Q2FjaGVkUmVzb3VyY2VMb2FkZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNl
TG9hZGVyKQogewogICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXJzLmFkZChjYWNoZWRSZXNvdXJj
ZUxvYWRlcik7CkBAIC03ODUsNCArNzk5LDM5IEBAIHZvaWQgQ2FjaGU6OmR1bXBMUlVMaXN0cyhi
b29sIGluY2x1ZGVMaXZlKSBjb25zdAogfQogI2VuZGlmCiAKK1N1YkNhY2hlOjpTdWJDYWNoZSgp
IDogIG1fY2FjaGUoY2FjaGUoKSkKK3sKKyAgICBtX2NhY2hlLT5hZGRTdWJDYWNoZSh0aGlzKTsK
K30KKworU3ViQ2FjaGU6On5TdWJDYWNoZSgpCit7CisgICAgbV9jYWNoZS0+cmVtb3ZlU3ViQ2Fj
aGUodGhpcyk7Cit9CisKK0NhY2hlZFJlc291cmNlKgorU3ViQ2FjaGU6OnJlc291cmNlRm9yVVJM
KGNvbnN0IFN0cmluZyAmdXJsKSBjb25zdAoreworICAgIGlmICghY29udGFpbnModXJsKSkgLy8g
SWYgaXQgaXNuJ3QgaW4gdGhlIHN1YmNhY2hlIHRoZW4gd2UgZG9uJ3QgZ28gdG8gdGhlIGNhY2hl
IGZvciB0aGUgcmVzb3VyY2UuCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2NhY2hl
LT5yZXNvdXJjZUZvclVSTCh1cmwpOworfQorCit2b2lkCitTdWJDYWNoZTo6YWRkKGNvbnN0IFN0
cmluZyAmdXJsKQoreworICAgIGlmIChtX2NhY2hlLT5yZXNvdXJjZUZvclVSTCh1cmwpKSAvLyBJ
dCBtdXN0IGJlIGluIHRoZSBjYWNoZSBmb3IgaXQgdG8gZ28gaW50byB0aGUgc3ViY2FjaGUuCisg
ICAgICAgIG1fcmVzb3VyY2VzLmFkZCh1cmwpOworfQorCitTdWJDYWNoZTo6UmVzb3VyY2VNYXAK
K1N1YkNhY2hlOjphbGxSZXNvdXJjZXMoKSBjb25zdAoreworICAgIFN1YkNhY2hlOjpSZXNvdXJj
ZU1hcCByZXN1bHQ7CisgICAgSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBt
X3Jlc291cmNlcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHJl
c3VsdC5zZXQoKCppdCksIG1fY2FjaGUtPnJlc291cmNlRm9yVVJMKCgqaXQpKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvQ2FjaGUuaCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlLmgKaW5kZXggMTRkZGMy
MTdlZmRhZTZhMTE5YTVlYWUzMzQ0NTA2YWY0MTdiMzViMS4uZDdjM2E3MWJkNzQ1ODE0NzlkMThj
NWUwZjAxOTUxODcxOTc1MTZiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaAor
KysgYi9XZWJDb3JlL2xvYWRlci9DYWNoZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCisjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgImxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zOCw2ICszOSw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSAgewogCiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0Owor
Y2xhc3MgU3ViQ2FjaGU7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291
cmNlTG9hZGVyOwogY2xhc3MgS1VSTDsKQEAgLTE0OCw2ICsxNTAsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGRDYWNoZWRSZXNvdXJjZUxvYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogICAg
IHZvaWQgcmVtb3ZlQ2FjaGVkUmVzb3VyY2VMb2FkZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKTsK
IAorICAgIHZvaWQgYWRkU3ViQ2FjaGUoU3ViQ2FjaGUqKTsKKyAgICB2b2lkIHJlbW92ZVN1YkNh
Y2hlKFN1YkNhY2hlKik7CisKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2VGb3JVUkwoY29u
c3QgU3RyaW5nJik7CiAKICAgICAvLyBDYWxscyB0byBwdXQgdGhlIGNhY2hlZCByZXNvdXJjZSBp
bnRvIGFuZCBvdXQgb2YgTFJVIGxpc3RzLgpAQCAtMTkxLDYgKzE5Niw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBNZW1iZXIgdmFyaWFibGVzLgogICAgIEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXIqPiBtX2NhY2hlZFJlc291cmNlTG9hZGVyczsKKyAgICBIYXNoU2V0PFN1YkNhY2hlKj4gbV9z
dWJDYWNoZXM7CiAgICAgTG9hZGVyIG1fbG9hZGVyOwogCiAgICAgYm9vbCBtX2Rpc2FibGVkOyAg
Ly8gV2hldGhlciBvciBub3QgdGhlIGNhY2hlIGlzIGVuYWJsZWQuCkBAIC0yMjcsNiArMjMzLDM1
IEBAIGlubGluZSBib29sIENhY2hlOjpzaG91bGRNYWtlUmVzb3VyY2VQdXJnZWFibGVPbkV2aWN0
aW9uKCkKICNlbmRpZgogfQogCisvLyBBIFN1YkNhY2hlIGlzIGEgc3Vic2V0IG9mIHRoZSBjdXJy
ZW50IGdsb2JhbCBDYWNoZS4gSXQgbWF5IG5vdCBjb250YWluIGFsbCB0aGUgZGF0YSBpbiB0aGUg
Y2FjaGUgYnV0IGl0IHdpbGwgbm90IGhvbGQgYSByZWZlcmVuY2UgdG8gaXRlbXMKKy8vIGluIHRo
ZSBjYWNoZSBzbyB3aGVuIGV2aWN0aW9uIGhhcHBlbnMgdGhleSB3aWxsIGdldCBjdWxsZWQgZnJv
bSBhbnkgb3V0c3RhbmRpbmcgU3ViQ2FjaGUocykuIFRoZSBpbnRlbnRpb24gaGVyZSBpcyB0byB1
c2UgU3ViQ2FjaGUgYXMgYQorLy8gcmVmZXJlbmNlIHRvIFVSTCdzIHNlZW4gcHJldmlvdXNseSAo
b3IgbGlzdCBvZiBhbGwgcmVzb3VyY2VzIGluIGEgZG9jdW1lbnQpLCBidXQgb25jZSBhbiBlbnRp
dHkgaXMgZXhwaXJlZCBmcm9tIHRoZSBDYWNoZSBpdCB3aWxsIG5vdCBjb250aW51ZSB0bworLy8g
YmUgcmVmZXJlbmNlZCAoZWl0aGVyIGJ5IHJlc291cmNlIG9yIFVSTCkgZWxzZXdoZXJlLgorCitj
bGFzcyBTdWJDYWNoZSB7CitwdWJsaWM6CisKKyAgICBTdWJDYWNoZSgpOworICAgIH5TdWJDYWNo
ZSgpOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+ID4gUmVzb3VyY2VNYXA7CisgICAgUmVzb3VyY2VNYXAgYWxsUmVzb3Vy
Y2VzKCkgY29uc3Q7CisKKyAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcgJnVybCk7CisgICAgaW5s
aW5lIHZvaWQgYWRkKENhY2hlZFJlc291cmNlICpyZXNvdXJjZSkgeyBhZGQocmVzb3VyY2UtPnVy
bCgpKTsgfQorCisgICAgaW5saW5lIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nICZ1cmwpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VzLmNvbnRhaW5zKHVybCk7IH0KKworICAgIENhY2hlZFJl
c291cmNlKiByZXNvdXJjZUZvclVSTChjb25zdCBTdHJpbmcgJnVybCkgY29uc3Q7CisKKyAgICBp
bmxpbmUgdm9pZCByZW1vdmUoY29uc3QgU3RyaW5nICZ1cmwpIHsgbV9yZXNvdXJjZXMucmVtb3Zl
KHVybCk7IH0KKyAgICBpbmxpbmUgdm9pZCByZW1vdmUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
KSB7IHJlbW92ZShyZXNvdXJjZS0+dXJsKCkpOyB9CisKKyBwcml2YXRlOgorCisgICAgSGFzaFNl
dDxTdHJpbmc+IG1fcmVzb3VyY2VzOworICAgIENhY2hlICptX2NhY2hlOworfTsKIC8vIEZ1bmN0
aW9uIHRvIG9idGFpbiB0aGUgZ2xvYmFsIGNhY2hlLgogQ2FjaGUqIGNhY2hlKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72964</attachid>
            <date>2010-11-04 10:55:56 -0700</date>
            <delta_ts>2010-11-05 12:44:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49008-20101104105946.patch</filename>
            <type>text/plain</type>
            <size>6831</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2E3NzJkYmIyNjQ1ODZmN2IwYjcyZTVlYjQ0MDgwMzBhODEyZGY4Yi4uODcwMTQ1NmNkYmVkZGU2
ZWRjYTM2Zjk3ZjMyMDBhYTYyZjY2NGRhOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwyNCBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIENoYW5nZSB0aGUgbV9kb2N1bWVudFJl
c291cmNlcyB0byBiZSBhIHN1YmNhY2hlIHJhdGhlciB0aGFuIGFuIHVuYm91bmRlZCBtYXAgb2Yg
Y2FjaGVkIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDkwMDgKKworICAgICAgICAqIGxvYWRlci9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6fkNhY2hlZFJlc291
cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNl
dEF1dG9Mb2FkSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
OjpyZW1vdmVDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FjaGVk
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmFsbENh
Y2hlZFJlc291cmNlcyk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCk6CisKKzIwMTAtMTEt
MDQgIFNhbSBNYWdudXNvbiAgPHNtYWdudXNvbkBuZXRmbGl4LmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBBZGQgU3ViQ2FjaGUgdG8gY29udHJv
bCB1bmJvdW5kZWQgbWVtb3J5IGdyb3d0aCAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ5MDA4CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCBjZTlkYzJiNzk4Nzc2ODA4MmMwMTA3MWQyMmU0NGY5OWMzZTc4NzA3Li5i
Njk0YWZlZDNjNTAwM2QzMzY1NTg0YmVjNWJmZmFjNmQ5YmUxYTJlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02Nyw4ICs2NywxMCBAQCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6fkNhY2hlZFJlc291cmNlTG9hZGVyKCkKICAgICAgICAgbV9jYWNoZS0+bG9hZGVy
KCktPmNhbmNlbFJlcXVlc3RzKHRoaXMpOwogCiAgICAgY2xlYXJQcmVsb2FkcygpOwotICAgIERv
Y3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZW5k
KCk7Ci0gICAgZm9yIChEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9jdW1l
bnRSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorCisgICAgU3ViQ2FjaGU6OlJl
c291cmNlTWFwIHJlc291cmNlcyA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuYWxsUmVzb3VyY2VzKCk7
CisgICAgU3ViQ2FjaGU6OlJlc291cmNlTWFwOjppdGVyYXRvciBlbmQgPSByZXNvdXJjZXMuZW5k
KCk7CisgICAgZm9yIChTdWJDYWNoZTo6UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gcmVzb3Vy
Y2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgaXQtPnNlY29uZC0+c2V0Q2Fj
aGVkUmVzb3VyY2VMb2FkZXIoMCk7CiAgICAgbV9jYWNoZS0+cmVtb3ZlQ2FjaGVkUmVzb3VyY2VM
b2FkZXIodGhpcyk7CiAKQEAgLTI1MywxMSArMjU1LDkgQEAgQ2FjaGVkUmVzb3VyY2UqIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlw
ZSwKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoY2FjaGUoKS0+ZGlzYWJsZWQoKSkgewot
ICAgICAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9jdW1lbnRSZXNv
dXJjZXMuZmluZChmdWxsVVJMLnN0cmluZygpKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpdCAh
PSBtX2RvY3VtZW50UmVzb3VyY2VzLmVuZCgpKSB7Ci0gICAgICAgICAgICBpdC0+c2Vjb25kLT5z
ZXRDYWNoZWRSZXNvdXJjZUxvYWRlcigwKTsKLSAgICAgICAgICAgIG1fZG9jdW1lbnRSZXNvdXJj
ZXMucmVtb3ZlKGl0KTsKKyAgICAgICAgaWYgKENhY2hlZFJlc291cmNlICpyZXNvdXJjZSA9IG1f
ZG9jdW1lbnRSZXNvdXJjZXMucmVzb3VyY2VGb3JVUkwodXJsKSkgeworICAgICAgICAgICAgcmVz
b3VyY2UtPnNldENhY2hlZFJlc291cmNlTG9hZGVyKDApOworICAgICAgICAgICAgbV9kb2N1bWVu
dFJlc291cmNlcy5yZW1vdmUocmVzb3VyY2UpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNzAs
NyArMjcwLDcgQEAgQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwKICAgICAgICAgaWYgKGZ1bGxVUkwg
IT0gcmVzb3VyY2UtPnVybCgpICYmICFjYW5SZXF1ZXN0KHR5cGUsIEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCByZXNvdXJjZS0+dXJsKCkpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAg
IG1fZG9jdW1lbnRSZXNvdXJjZXMuc2V0KHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UpOworICAg
ICAgICBtX2RvY3VtZW50UmVzb3VyY2VzLmFkZChyZXNvdXJjZSk7CiAgICAgICAgIGNoZWNrQ2Fj
aGVPYmplY3RTdGF0dXMocmVzb3VyY2UpOwogICAgIH0KICAgICByZXR1cm4gcmVzb3VyY2U7CkBA
IC0zMDYsOCArMzA2LDkgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJ
bWFnZXMoYm9vbCBlbmFibGUpCiAgICAgaWYgKCFtX2F1dG9Mb2FkSW1hZ2VzKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBlbmQgPSBtX2RvY3Vt
ZW50UmVzb3VyY2VzLmVuZCgpOwotICAgIGZvciAoRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0
b3IgaXQgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgIFN1YkNhY2hlOjpSZXNvdXJjZU1hcCByZXNvdXJjZXMgPSBtX2RvY3VtZW50UmVzb3VyY2Vz
LmFsbFJlc291cmNlcygpOworICAgIFN1YkNhY2hlOjpSZXNvdXJjZU1hcDo6aXRlcmF0b3IgZW5k
ID0gcmVzb3VyY2VzLmVuZCgpOworICAgIGZvciAoU3ViQ2FjaGU6OlJlc291cmNlTWFwOjppdGVy
YXRvciBpdCA9IHJlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAg
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgaWYg
KHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UpIHsKICAg
ICAgICAgICAgIENhY2hlZEltYWdlKiBpbWFnZSA9IGNvbnN0X2Nhc3Q8Q2FjaGVkSW1hZ2UqPihz
dGF0aWNfY2FzdDxjb25zdCBDYWNoZWRJbWFnZSo+KHJlc291cmNlKSk7CkBAIC0zMjYsMTEgKzMy
NywxMCBAQCBDYWNoZVBvbGljeSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FjaGVQb2xpY3koKSBj
b25zdAogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlKSBjb25zdAogewogI2lmbmRlZiBOREVCVUcKLSAgICBEb2N1
bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZmluZChy
ZXNvdXJjZS0+dXJsKCkpOwotICAgIGlmIChpdCAhPSBtX2RvY3VtZW50UmVzb3VyY2VzLmVuZCgp
KQotICAgICAgICBBU1NFUlQoaXQtPnNlY29uZC5nZXQoKSA9PSByZXNvdXJjZSk7CisgICAgaWYg
KENhY2hlZFJlc291cmNlICp0bXAgPSBtX2RvY3VtZW50UmVzb3VyY2VzLnJlc291cmNlRm9yVVJM
KHJlc291cmNlLT51cmwoKSkpCisgICAgICAgIEFTU0VSVCh0bXAgPT0gcmVzb3VyY2UpOwogI2Vu
ZGlmCi0gICAgbV9kb2N1bWVudFJlc291cmNlcy5yZW1vdmUocmVzb3VyY2UtPnVybCgpKTsKKyAg
ICBtX2RvY3VtZW50UmVzb3VyY2VzLnJlbW92ZShyZXNvdXJjZSk7CiB9CiAKIHZvaWQgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnNldExvYWRJblByb2dyZXNzKGJvb2wgbG9hZCkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9XZWJDb3JlL2xvYWRlci9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IDAyZTk4M2IxYThiZmViNDc5MWRlYzQxOTEzYTA2
NWJmYzU1MTkyOGEuLmU3ZjAxYzc4NWJjNGRmOGYzZTA5ZjQ0MzAxY2EzMDgxOGI4NmJkYzQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2lm
bmRlZiBDYWNoZWRSZXNvdXJjZUxvYWRlcl9oCiAjZGVmaW5lIENhY2hlZFJlc291cmNlTG9hZGVy
X2gKIAorI2luY2x1ZGUgIkNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlUG9saWN5Lmgi
CkBAIC03MSwxMCArNzIsMTAgQEAgcHVibGljOgogICAgIC8vIExvZ3MgYW4gYWNjZXNzIGRlbmll
ZCBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIGZvciB0aGUgc3BlY2lmaWVkIFVSTC4KICAgICB2b2lk
IHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0OwogCi0gICAg
Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdCB7
IHJldHVybiBtX2RvY3VtZW50UmVzb3VyY2VzLmdldCh1cmwpLmdldCgpOyB9CisgICAgQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdCB7IHJldHVy
biBtX2RvY3VtZW50UmVzb3VyY2VzLnJlc291cmNlRm9yVVJMKHVybCk7IH0KICAgICAKLSAgICB0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJj
ZT4gPiBEb2N1bWVudFJlc291cmNlTWFwOwotICAgIGNvbnN0IERvY3VtZW50UmVzb3VyY2VNYXAm
IGFsbENhY2hlZFJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRSZXNvdXJjZXM7
IH0KKyAgICB0eXBlZGVmIFN1YkNhY2hlOjpSZXNvdXJjZU1hcCBEb2N1bWVudFJlc291cmNlTWFw
OworICAgIERvY3VtZW50UmVzb3VyY2VNYXAgYWxsQ2FjaGVkUmVzb3VyY2VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9kb2N1bWVudFJlc291cmNlcy5hbGxSZXNvdXJjZXMoKTsgfQogCiAgICAgYm9vbCBh
dXRvTG9hZEltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b0xvYWRJbWFnZXM7IH0KICAgICB2
b2lkIHNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wpOwpAQCAtMTExLDcgKzExMiw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgQ2FjaGUqIG1fY2FjaGU7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVsb2Fk
ZWRVUkxzOwotICAgIG11dGFibGUgRG9jdW1lbnRSZXNvdXJjZU1hcCBtX2RvY3VtZW50UmVzb3Vy
Y2VzOworICAgIG11dGFibGUgU3ViQ2FjaGUgbV9kb2N1bWVudFJlc291cmNlczsKICAgICBEb2N1
bWVudCogbV9kb2M7CiAgICAgCiAgICAgaW50IG1fcmVxdWVzdENvdW50OwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2Fk
ZXIuY3BwCmluZGV4IDk0YTIxYTQ5Y2E4NzVmMTJmZTgyYTc4YTM3YWQwNWQ4YmEyYzBmNzEuLjZl
NmUyZjU4ZWQwZDY4MzkxN2U2M2JhNjQzZWEzYWI1YWFjMTg4NTYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxl
bWVudCgpCiAgICAgICAgICAgICBuZXdJbWFnZSA9IG5ldyBDYWNoZWRJbWFnZShzb3VyY2VVUkko
YXR0cikpOwogICAgICAgICAgICAgbmV3SW1hZ2UtPnNldExvYWRpbmcodHJ1ZSk7CiAgICAgICAg
ICAgICBuZXdJbWFnZS0+c2V0Q2FjaGVkUmVzb3VyY2VMb2FkZXIoZG9jdW1lbnQtPmNhY2hlZFJl
c291cmNlTG9hZGVyKCkpOwotICAgICAgICAgICAgZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCktPm1fZG9jdW1lbnRSZXNvdXJjZXMuc2V0KG5ld0ltYWdlLT51cmwoKSwgbmV3SW1hZ2Up
OworICAgICAgICAgICAgZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPm1fZG9jdW1l
bnRSZXNvdXJjZXMuYWRkKG5ld0ltYWdlKTsKICAgICAgICAgICAgIGRvY3VtZW50LT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhhdXRvTG9hZE90aGVySW1hZ2VzKTsK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuZXdJbWFnZSA9IGRvY3VtZW50LT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0SW1hZ2Uoc291cmNlVVJJKGF0dHIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72965</attachid>
            <date>2010-11-04 10:58:54 -0700</date>
            <delta_ts>2010-11-05 12:44:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49008-20101104110243.patch</filename>
            <type>text/plain</type>
            <size>1228</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODcwMTQ1NmNkYmVkZGU2ZWRjYTM2Zjk3ZjMyMDBhYTYyZjY2NGRhOC4uY2U2NTBiZmNhNzU5M2Qw
OGY1YzNmZDdkZmExOGNhZGUxYTQ3NzhlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxNSBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIENoYW5nZSB0aGUgbV9yZWxvYWRlZFVS
THMgdG8gYmUgYSBzdWJjYWNoZSByYXRoZXIgdGhhbiBhbiB1bmJvdW5kZWQgIHNldCBvZiBzdHJp
bmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTAw
OAorCisgICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisKKzIwMTAtMTEt
MDQgIFNhbSBNYWdudXNvbiAgPHNtYWdudXNvbkBuZXRmbGl4LmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBDaGFuZ2UgdGhlIG1fZG9jdW1lbnRS
ZXNvdXJjZXMgdG8gYmUgYSBzdWJjYWNoZSByYXRoZXIgdGhhbiBhbiB1bmJvdW5kZWQgbWFwIG9m
IGNhY2hlZCByZXNvdXJjZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5MDA4CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291
cmNlTG9hZGVyLmggYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4
IGU3ZjAxYzc4NWJjNGRmOGYzZTA5ZjQ0MzAxY2EzMDgxOGI4NmJkYzQuLmM2MjY1NjU3MzkzNTU3
NDdjMTBjMDg0MmQ1OWM4Y2EwODRiOThmNWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaApAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5SZXF1ZXN0
KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBLVVJMJik7CiAgICAgCiAgICAgQ2FjaGUqIG1f
Y2FjaGU7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fcmVsb2FkZWRVUkxzOworICAgIFN1YkNhY2hl
IG1fcmVsb2FkZWRVUkxzOwogICAgIG11dGFibGUgU3ViQ2FjaGUgbV9kb2N1bWVudFJlc291cmNl
czsKICAgICBEb2N1bWVudCogbV9kb2M7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72967</attachid>
            <date>2010-11-04 11:01:32 -0700</date>
            <delta_ts>2010-11-05 12:44:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49008-20101104110522.patch</filename>
            <type>text/plain</type>
            <size>1532</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2U2NTBiZmNhNzU5M2QwOGY1YzNmZDdkZmExOGNhZGUxYTQ3NzhlOC4uNmJmMjAwZDkzMTQ0M2Jh
NDI2YWRkZWE1MGI5ZWIxOWRmZTJiYmZkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxNSBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIENoYW5nZSB0aGUgbV9yZXNvdXJjZXND
bGllbnRLbm93c0Fib3V0IHRvIGEgc3ViY2FjaGUgcmF0aGVyIHRoYW4gYW4gdW5ib3VuZGVkIHNl
dCBvZiBzdHJpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00OTAwOAorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisKKzIwMTAt
MTEtMDQgIFNhbSBNYWdudXNvbiAgPHNtYWdudXNvbkBuZXRmbGl4LmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBDaGFuZ2UgdGhlIG1fcmVsb2Fk
ZWRVUkxzIHRvIGJlIGEgc3ViY2FjaGUgcmF0aGVyIHRoYW4gYW4gdW5ib3VuZGVkICBzZXQgb2Yg
c3RyaW5ncwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDkwMDgKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZTFmNzVlZGUxNGNiYTc2MGFkYzdm
ZGUzNWNlMTZkMjFjY2FhMjAyMi4uMWJiNTg0OThlZGJmMDU1NmI0OTFkYjg0ZTJiN2NiMTUyYTU4
YTY0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVm
IERvY3VtZW50TG9hZGVyX2gKICNkZWZpbmUgRG9jdW1lbnRMb2FkZXJfaAogCisjaW5jbHVkZSAi
Q2FjaGUuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRUaW1pbmcuaCIKICNpbmNsdWRlICJOYXZp
Z2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgpAQCAtMzAyLDcgKzMw
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgT3duUHRyPEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKIAotICAgICAgICBIYXNoU2V0PFN0
cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OworICAgICAgICBTdWJDYWNoZSBtX3Jl
c291cmNlc0NsaWVudEtub3dzQWJvdXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVzb3Vy
Y2VzTG9hZGVkRnJvbU1lbW9yeUNhY2hlRm9yQ2xpZW50Tm90aWZpY2F0aW9uOwogICAgICAgICAK
ICAgICAgICAgU3RyaW5nIG1fY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73102</attachid>
            <date>2010-11-05 12:44:38 -0700</date>
            <delta_ts>2010-11-10 10:58:25 -0800</delta_ts>
            <desc>merge</desc>
            <filename>bug-49008-20101105124835.patch</filename>
            <type>text/plain</type>
            <size>12710</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmEzMjc2MDU4NDUzNjc1YTQyM2ZlYmJmYmVlNTY3MzRlMDY1OGJkNS4uOWQ1MmIxMzY4MzIxMmE5
MGM2ZjkzZWU2M2VjMjY4MmU3ODhkMWFlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTI4LDYgKzI4LDMzIEBACiAgICAgICAgIChXZWJD
b3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YWRkSW5saW5lU3R5bGVJZk5lZWRlZCk6CiAgICAgICAg
ICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oOgogCisyMDEwLTExLTA0ICBTYW0gTWFnbnVz
b24gIDxzbWFnbnVzb25AbmV0ZmxpeC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIFN1YkNhY2hlIHRvIGNvbnRyb2wgdW5ib3VuZGVkIG1l
bW9yeSBncm93dGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ5MDA4CisKKyAgICAgICAgVGhlIFN1YkNhY2hlIHJlZmxlY3RzIGVsZW1lbnRzIHRoYXQg
YXJlIGluIHRoZSBjYWNoZSBhbmQgcmVmZXJlbmNlZAorICAgICAgICBieSBVUkwuIFRoZSBhY3R1
YWwgcmVzb3VyY2UgaXMgbm90IHJlZmVyZW5jZWQgYW5kIHRodXMgd2hlbiB0aGUKKyAgICAgICAg
Q2FjaGUgZXZpY3RzIHRoZSBvYmplY3QgdGhlbiB0aGUgU3ViQ2FjaGUgd2lsbCBpbiB0dXJuIGV2
aWN0CisgICAgICAgIGl0LiBUaGlzIHdheSBhbGwgU3ViQ2FjaGVzIGFyZSBib3VuZCB0byB0aGUg
c2FtZSBzaXplIGFzIHRoZSBpbgorICAgICAgICBtZW1vcnkgQ2FjaGUuCisKKyAgICAgICAgKiBs
b2FkZXIvQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OmV2aWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlOjphZGRTdWJDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZTo6cmVtb3ZlU3ViQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U3ViQ2FjaGU6OlN1YkNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YkNhY2hlOjp+U3ViQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3ViQ2FjaGU6OnJlc291cmNlRm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YkNh
Y2hlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U3ViQ2FjaGU6OmFsbFJlc291cmNlcyk6Cisg
ICAgICAgICogbG9hZGVyL0NhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJDYWNoZTo6YWRk
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YkNhY2hlOjpjb250YWlucyk6CisgICAgICAgIChXZWJD
b3JlOjpTdWJDYWNoZTo6cmVtb3ZlKToKKwogMjAxMC0xMS0wNCAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hl
LmNwcAppbmRleCA3ZGM4YTMyNTBlNjNmNjRkNzBiMjBmN2M1Mjk1NGM3MTFkMzgzNjZmLi5lYzUx
YWFmNzFjZDEwODliYmFkMzhkMmU1ZTk3ODg5ZGNhNTUyY2NiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2xvYWRlci9DYWNoZS5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCkBAIC00NDQs
NiArNDQ0LDEwIEBAIHZvaWQgQ2FjaGU6OmV2aWN0KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkK
ICAgICAvLyBUaGUgcmVzb3VyY2UgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgYnkgc29t
ZW9uZSBvdGhlciB0aGFuIG91ciBjYWxsZXIsCiAgICAgLy8gd2hvIG5lZWRlZCBhIGZyZXNoIGNv
cHkgZm9yIGEgcmVsb2FkLiBTZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDc5I2M2Pi4KICAgICBpZiAocmVzb3VyY2UtPmluQ2FjaGUoKSkgeworICAgICAgICBI
YXNoU2V0PFN1YkNhY2hlKj46Oml0ZXJhdG9yIGVuZCA9IG1fc3ViQ2FjaGVzLmVuZCgpOworICAg
ICAgICBmb3IgKEhhc2hTZXQ8U3ViQ2FjaGUqPjo6aXRlcmF0b3IgaXQgPSBtX3N1YkNhY2hlcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICAoKml0KS0+cmVtb3ZlKHJlc291
cmNlKTsKKwogICAgICAgICAvLyBSZW1vdmUgZnJvbSB0aGUgcmVzb3VyY2UgbWFwLgogICAgICAg
ICBtX3Jlc291cmNlcy5yZW1vdmUocmVzb3VyY2UtPnVybCgpKTsKICAgICAgICAgcmVzb3VyY2Ut
PnNldEluQ2FjaGUoZmFsc2UpOwpAQCAtNDY0LDYgKzQ2OCwxNiBAQCB2b2lkIENhY2hlOjpldmlj
dChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgICAgIGRlbGV0ZSByZXNvdXJjZTsKIH0K
IAordm9pZCBDYWNoZTo6YWRkU3ViQ2FjaGUoU3ViQ2FjaGUqIHN1YkNhY2hlKQoreworICAgIG1f
c3ViQ2FjaGVzLmFkZChzdWJDYWNoZSk7Cit9CisKK3ZvaWQgQ2FjaGU6OnJlbW92ZVN1YkNhY2hl
KFN1YkNhY2hlKiBzdWJDYWNoZSkKK3sKKyAgICBtX3N1YkNhY2hlcy5yZW1vdmUoc3ViQ2FjaGUp
OworfQorCiB2b2lkIENhY2hlOjphZGRDYWNoZWRSZXNvdXJjZUxvYWRlcihDYWNoZWRSZXNvdXJj
ZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgbV9jYWNoZWRSZXNvdXJjZUxv
YWRlcnMuYWRkKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKQEAgLTc4NSw0ICs3OTksMzggQEAgdm9p
ZCBDYWNoZTo6ZHVtcExSVUxpc3RzKGJvb2wgaW5jbHVkZUxpdmUpIGNvbnN0CiB9CiAjZW5kaWYK
IAorU3ViQ2FjaGU6OlN1YkNhY2hlKCkKKyAgICA6ICBtX2NhY2hlKGNhY2hlKCkpCit7CisgICAg
bV9jYWNoZS0+YWRkU3ViQ2FjaGUodGhpcyk7Cit9CisKK1N1YkNhY2hlOjp+U3ViQ2FjaGUoKQor
eworICAgIG1fY2FjaGUtPnJlbW92ZVN1YkNhY2hlKHRoaXMpOworfQorCitDYWNoZWRSZXNvdXJj
ZSogU3ViQ2FjaGU6OnJlc291cmNlRm9yVVJMKGNvbnN0IFN0cmluZyAmdXJsKSBjb25zdAorewor
ICAgIGlmICghY29udGFpbnModXJsKSkgLy8gSWYgaXQgaXNuJ3QgaW4gdGhlIHN1YmNhY2hlIHRo
ZW4gd2UgZG9uJ3QgZ28gdG8gdGhlIGNhY2hlIGZvciB0aGUgcmVzb3VyY2UuCisgICAgICAgIHJl
dHVybiAwOworICAgIHJldHVybiBtX2NhY2hlLT5yZXNvdXJjZUZvclVSTCh1cmwpOworfQorCit2
b2lkIFN1YkNhY2hlOjphZGQoY29uc3QgU3RyaW5nICZ1cmwpCit7CisgICAgaWYgKG1fY2FjaGUt
PnJlc291cmNlRm9yVVJMKHVybCkpIC8vIEl0IG11c3QgYmUgaW4gdGhlIGNhY2hlIGZvciBpdCB0
byBnbyBpbnRvIHRoZSBzdWJjYWNoZS4KKyAgICAgICAgbV9yZXNvdXJjZXMuYWRkKHVybCk7Cit9
CisKK1N1YkNhY2hlOjpSZXNvdXJjZU1hcAorU3ViQ2FjaGU6OmFsbFJlc291cmNlcygpIGNvbnN0
Cit7CisgICAgU3ViQ2FjaGU6OlJlc291cmNlTWFwIHJlc3VsdDsKKyAgICBIYXNoU2V0PFN0cmlu
Zz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmVzb3VyY2VzLmVuZCgpOworICAgIGZvciAoSGFz
aFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKKyAgICAgICAgcmVzdWx0LnNldCgoKml0KSwgbV9jYWNoZS0+cmVzb3Vy
Y2VGb3JVUkwoKCppdCkpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZS5oIGIvV2ViQ29yZS9s
b2FkZXIvQ2FjaGUuaAppbmRleCAxNGRkYzIxN2VmZGFlNmExMTlhNWVhZTMzNDQ1MDZhZjQxN2Iz
NWIxLi5kN2MzYTcxYmQ3NDU4MTQ3OWQxOGM1ZTBmMDE5NTE4NzE5NzUxNmIxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2xvYWRlci9DYWNoZS5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlLmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlUG9saWN5LmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAibG9hZGVyLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KQEAgLTM4LDYgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlICB7CiAKIGNs
YXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CitjbGFzcyBTdWJDYWNoZTsKIGNsYXNzIENhY2hlZFJl
c291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBLVVJMOwpAQCAtMTQ4
LDYgKzE1MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlTG9hZGVyKENh
Y2hlZFJlc291cmNlTG9hZGVyKik7CiAgICAgdm9pZCByZW1vdmVDYWNoZWRSZXNvdXJjZUxvYWRl
cihDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogCisgICAgdm9pZCBhZGRTdWJDYWNoZShTdWJDYWNo
ZSopOworICAgIHZvaWQgcmVtb3ZlU3ViQ2FjaGUoU3ViQ2FjaGUqKTsKKwogICAgIENhY2hlZFJl
c291cmNlKiByZXNvdXJjZUZvclVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIENhbGxzIHRv
IHB1dCB0aGUgY2FjaGVkIHJlc291cmNlIGludG8gYW5kIG91dCBvZiBMUlUgbGlzdHMuCkBAIC0x
OTEsNiArMTk2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lbWJlciB2YXJpYWJsZXMuCiAgICAg
SGFzaFNldDxDYWNoZWRSZXNvdXJjZUxvYWRlcio+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXJzOwor
ICAgIEhhc2hTZXQ8U3ViQ2FjaGUqPiBtX3N1YkNhY2hlczsKICAgICBMb2FkZXIgbV9sb2FkZXI7
CiAKICAgICBib29sIG1fZGlzYWJsZWQ7ICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgY2FjaGUgaXMg
ZW5hYmxlZC4KQEAgLTIyNyw2ICsyMzMsMzUgQEAgaW5saW5lIGJvb2wgQ2FjaGU6OnNob3VsZE1h
a2VSZXNvdXJjZVB1cmdlYWJsZU9uRXZpY3Rpb24oKQogI2VuZGlmCiB9CiAKKy8vIEEgU3ViQ2Fj
aGUgaXMgYSBzdWJzZXQgb2YgdGhlIGN1cnJlbnQgZ2xvYmFsIENhY2hlLiBJdCBtYXkgbm90IGNv
bnRhaW4gYWxsIHRoZSBkYXRhIGluIHRoZSBjYWNoZSBidXQgaXQgd2lsbCBub3QgaG9sZCBhIHJl
ZmVyZW5jZSB0byBpdGVtcworLy8gaW4gdGhlIGNhY2hlIHNvIHdoZW4gZXZpY3Rpb24gaGFwcGVu
cyB0aGV5IHdpbGwgZ2V0IGN1bGxlZCBmcm9tIGFueSBvdXRzdGFuZGluZyBTdWJDYWNoZShzKS4g
VGhlIGludGVudGlvbiBoZXJlIGlzIHRvIHVzZSBTdWJDYWNoZSBhcyBhCisvLyByZWZlcmVuY2Ug
dG8gVVJMJ3Mgc2VlbiBwcmV2aW91c2x5IChvciBsaXN0IG9mIGFsbCByZXNvdXJjZXMgaW4gYSBk
b2N1bWVudCksIGJ1dCBvbmNlIGFuIGVudGl0eSBpcyBleHBpcmVkIGZyb20gdGhlIENhY2hlIGl0
IHdpbGwgbm90IGNvbnRpbnVlIHRvCisvLyBiZSByZWZlcmVuY2VkIChlaXRoZXIgYnkgcmVzb3Vy
Y2Ugb3IgVVJMKSBlbHNld2hlcmUuCisKK2NsYXNzIFN1YkNhY2hlIHsKK3B1YmxpYzoKKworICAg
IFN1YkNhY2hlKCk7CisgICAgflN1YkNhY2hlKCk7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gPiBSZXNvdXJjZU1hcDsK
KyAgICBSZXNvdXJjZU1hcCBhbGxSZXNvdXJjZXMoKSBjb25zdDsKKworICAgIHZvaWQgYWRkKGNv
bnN0IFN0cmluZyAmdXJsKTsKKyAgICBpbmxpbmUgdm9pZCBhZGQoQ2FjaGVkUmVzb3VyY2UgKnJl
c291cmNlKSB7IGFkZChyZXNvdXJjZS0+dXJsKCkpOyB9CisKKyAgICBpbmxpbmUgYm9vbCBjb250
YWlucyhjb25zdCBTdHJpbmcgJnVybCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZXMuY29udGFp
bnModXJsKTsgfQorCisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlRm9yVVJMKGNvbnN0IFN0
cmluZyAmdXJsKSBjb25zdDsKKworICAgIGlubGluZSB2b2lkIHJlbW92ZShjb25zdCBTdHJpbmcg
JnVybCkgeyBtX3Jlc291cmNlcy5yZW1vdmUodXJsKTsgfQorICAgIGlubGluZSB2b2lkIHJlbW92
ZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpIHsgcmVtb3ZlKHJlc291cmNlLT51cmwoKSk7IH0K
KworIHByaXZhdGU6CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXNvdXJjZXM7CisgICAgQ2Fj
aGUgKm1fY2FjaGU7Cit9OwogLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBnbG9iYWwgY2FjaGUu
CiBDYWNoZSogY2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IGNlOWRjMmI3OTg3NzY4MDgyYzAxMDcxZDIyZTQ0Zjk5YzNlNzg3MDcuLmI2OTRhZmVk
M2M1MDAzZDMzNjU1ODRiZWM1YmZmYWM2ZDliZTFhMmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9h
ZGVyL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTY3LDggKzY3LDEwIEBAIENhY2hlZFJlc291cmNlTG9hZGVy
Ojp+Q2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogICAgICAgICBtX2NhY2hlLT5sb2FkZXIoKS0+Y2Fu
Y2VsUmVxdWVzdHModGhpcyk7CiAKICAgICBjbGVhclByZWxvYWRzKCk7Ci0gICAgRG9jdW1lbnRS
ZXNvdXJjZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9kb2N1bWVudFJlc291cmNlcy5lbmQoKTsKLSAg
ICBmb3IgKERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudFJlc291
cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisKKyAgICBTdWJDYWNoZTo6UmVzb3VyY2VN
YXAgcmVzb3VyY2VzID0gbV9kb2N1bWVudFJlc291cmNlcy5hbGxSZXNvdXJjZXMoKTsKKyAgICBT
dWJDYWNoZTo6UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IHJlc291cmNlcy5lbmQoKTsKKyAg
ICBmb3IgKFN1YkNhY2hlOjpSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSByZXNvdXJjZXMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBpdC0+c2Vjb25kLT5zZXRDYWNoZWRSZXNv
dXJjZUxvYWRlcigwKTsKICAgICBtX2NhY2hlLT5yZW1vdmVDYWNoZWRSZXNvdXJjZUxvYWRlcih0
aGlzKTsKIApAQCAtMjUzLDExICsyNTUsOSBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLAogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIGlmIChjYWNoZSgpLT5kaXNhYmxlZCgpKSB7Ci0gICAgICAg
IERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudFJlc291cmNlcy5m
aW5kKGZ1bGxVUkwuc3RyaW5nKCkpOwotICAgICAgICAKLSAgICAgICAgaWYgKGl0ICE9IG1fZG9j
dW1lbnRSZXNvdXJjZXMuZW5kKCkpIHsKLSAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldENhY2hl
ZFJlc291cmNlTG9hZGVyKDApOwotICAgICAgICAgICAgbV9kb2N1bWVudFJlc291cmNlcy5yZW1v
dmUoaXQpOworICAgICAgICBpZiAoQ2FjaGVkUmVzb3VyY2UgKnJlc291cmNlID0gbV9kb2N1bWVu
dFJlc291cmNlcy5yZXNvdXJjZUZvclVSTCh1cmwpKSB7CisgICAgICAgICAgICByZXNvdXJjZS0+
c2V0Q2FjaGVkUmVzb3VyY2VMb2FkZXIoMCk7CisgICAgICAgICAgICBtX2RvY3VtZW50UmVzb3Vy
Y2VzLnJlbW92ZShyZXNvdXJjZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI3MCw3ICsyNzAs
NyBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLAogICAgICAgICBpZiAoZnVsbFVSTCAhPSByZXNv
dXJjZS0+dXJsKCkgJiYgIWNhblJlcXVlc3QodHlwZSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHJl
c291cmNlLT51cmwoKSkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgbV9kb2N1
bWVudFJlc291cmNlcy5zZXQocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZSk7CisgICAgICAgIG1f
ZG9jdW1lbnRSZXNvdXJjZXMuYWRkKHJlc291cmNlKTsKICAgICAgICAgY2hlY2tDYWNoZU9iamVj
dFN0YXR1cyhyZXNvdXJjZSk7CiAgICAgfQogICAgIHJldHVybiByZXNvdXJjZTsKQEAgLTMwNiw4
ICszMDYsOSBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdlcyhi
b29sIGVuYWJsZSkKICAgICBpZiAoIW1fYXV0b0xvYWRJbWFnZXMpCiAgICAgICAgIHJldHVybjsK
IAotICAgIERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fZG9jdW1lbnRSZXNv
dXJjZXMuZW5kKCk7Ci0gICAgZm9yIChEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9
IG1fZG9jdW1lbnRSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgU3Vi
Q2FjaGU6OlJlc291cmNlTWFwIHJlc291cmNlcyA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuYWxsUmVz
b3VyY2VzKCk7CisgICAgU3ViQ2FjaGU6OlJlc291cmNlTWFwOjppdGVyYXRvciBlbmQgPSByZXNv
dXJjZXMuZW5kKCk7CisgICAgZm9yIChTdWJDYWNoZTo6UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0
ID0gcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBpZiAocmVzb3Vy
Y2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSkgewogICAgICAgICAg
ICAgQ2FjaGVkSW1hZ2UqIGltYWdlID0gY29uc3RfY2FzdDxDYWNoZWRJbWFnZSo+KHN0YXRpY19j
YXN0PGNvbnN0IENhY2hlZEltYWdlKj4ocmVzb3VyY2UpKTsKQEAgLTMyNiwxMSArMzI3LDEwIEBA
IENhY2hlUG9saWN5IENhY2hlZFJlc291cmNlTG9hZGVyOjpjYWNoZVBvbGljeSgpIGNvbnN0CiB2
b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UpIGNvbnN0CiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIERvY3VtZW50UmVz
b3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudFJlc291cmNlcy5maW5kKHJlc291cmNl
LT51cmwoKSk7Ci0gICAgaWYgKGl0ICE9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZW5kKCkpCi0gICAg
ICAgIEFTU0VSVChpdC0+c2Vjb25kLmdldCgpID09IHJlc291cmNlKTsKKyAgICBpZiAoQ2FjaGVk
UmVzb3VyY2UgKnRtcCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMucmVzb3VyY2VGb3JVUkwocmVzb3Vy
Y2UtPnVybCgpKSkKKyAgICAgICAgQVNTRVJUKHRtcCA9PSByZXNvdXJjZSk7CiAjZW5kaWYKLSAg
ICBtX2RvY3VtZW50UmVzb3VyY2VzLnJlbW92ZShyZXNvdXJjZS0+dXJsKCkpOworICAgIG1fZG9j
dW1lbnRSZXNvdXJjZXMucmVtb3ZlKHJlc291cmNlKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6c2V0TG9hZEluUHJvZ3Jlc3MoYm9vbCBsb2FkKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJl
c291cmNlTG9hZGVyLmgKaW5kZXggMDJlOTgzYjFhOGJmZWI0NzkxZGVjNDE5MTNhMDY1YmZjNTUx
OTI4YS4uYzYyNjU2NTczOTM1NTc0N2MxMGMwODQyZDU5YzhjYTA4NGI5OGY1YiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xv
YWRlci9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENh
Y2hlZFJlc291cmNlTG9hZGVyX2gKICNkZWZpbmUgQ2FjaGVkUmVzb3VyY2VMb2FkZXJfaAogCisj
aW5jbHVkZSAiQ2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVQb2xpY3kuaCIKQEAgLTcx
LDEwICs3MiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gTG9ncyBhbiBhY2Nlc3MgZGVuaWVkIG1lc3Nh
Z2UgdG8gdGhlIGNvbnNvbGUgZm9yIHRoZSBzcGVjaWZpZWQgVVJMLgogICAgIHZvaWQgcHJpbnRB
Y2Nlc3NEZW5pZWRNZXNzYWdlKGNvbnN0IEtVUkwmIHVybCkgY29uc3Q7CiAKLSAgICBDYWNoZWRS
ZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJu
IG1fZG9jdW1lbnRSZXNvdXJjZXMuZ2V0KHVybCkuZ2V0KCk7IH0KKyAgICBDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fZG9j
dW1lbnRSZXNvdXJjZXMucmVzb3VyY2VGb3JVUkwodXJsKTsgfQogICAgIAotICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiA+IERv
Y3VtZW50UmVzb3VyY2VNYXA7Ci0gICAgY29uc3QgRG9jdW1lbnRSZXNvdXJjZU1hcCYgYWxsQ2Fj
aGVkUmVzb3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFJlc291cmNlczsgfQorICAg
IHR5cGVkZWYgU3ViQ2FjaGU6OlJlc291cmNlTWFwIERvY3VtZW50UmVzb3VyY2VNYXA7CisgICAg
RG9jdW1lbnRSZXNvdXJjZU1hcCBhbGxDYWNoZWRSZXNvdXJjZXMoKSBjb25zdCB7IHJldHVybiBt
X2RvY3VtZW50UmVzb3VyY2VzLmFsbFJlc291cmNlcygpOyB9CiAKICAgICBib29sIGF1dG9Mb2Fk
SW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvTG9hZEltYWdlczsgfQogICAgIHZvaWQgc2V0
QXV0b0xvYWRJbWFnZXMoYm9vbCk7CkBAIC0xMTAsOCArMTExLDggQEAgcHJpdmF0ZToKICAgICBi
b29sIGNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwmKTsKICAgICAK
ICAgICBDYWNoZSogbV9jYWNoZTsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9yZWxvYWRlZFVSTHM7
Ci0gICAgbXV0YWJsZSBEb2N1bWVudFJlc291cmNlTWFwIG1fZG9jdW1lbnRSZXNvdXJjZXM7Cisg
ICAgU3ViQ2FjaGUgbV9yZWxvYWRlZFVSTHM7CisgICAgbXV0YWJsZSBTdWJDYWNoZSBtX2RvY3Vt
ZW50UmVzb3VyY2VzOwogICAgIERvY3VtZW50KiBtX2RvYzsKICAgICAKICAgICBpbnQgbV9yZXF1
ZXN0Q291bnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBlMWY3NWVkZTE0Y2JhNzYwYWRj
N2ZkZTM1Y2UxNmQyMWNjYWEyMDIyLi4xYmI1ODQ5OGVkYmYwNTU2YjQ5MWRiODRlMmI3Y2IxNTJh
NThhNjQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBi
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZm5k
ZWYgRG9jdW1lbnRMb2FkZXJfaAogI2RlZmluZSBEb2N1bWVudExvYWRlcl9oCiAKKyNpbmNsdWRl
ICJDYWNoZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZFRpbWluZy5oIgogI2luY2x1ZGUgIk5h
dmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCkBAIC0zMDIsNyAr
MzAzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBPd25QdHI8QXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogCi0gICAgICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CisgICAgICAgIFN1YkNhY2hlIG1f
cmVzb3VyY2VzQ2xpZW50S25vd3NBYm91dDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbV9yZXNv
dXJjZXNMb2FkZWRGcm9tTWVtb3J5Q2FjaGVGb3JDbGllbnROb3RpZmljYXRpb247CiAgICAgICAg
IAogICAgICAgICBTdHJpbmcgbV9jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAKaW5kZXggOTRhMjFhNDljYTg3NWYxMmZlODJhNzhhMzdhZDA1ZDhiYTJj
MGY3MS4uNmU2ZTJmNThlZDBkNjgzOTE3ZTYzYmE2NDNlYTNhYjVhYWMxODg1NiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0lt
YWdlTG9hZGVyLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0
ZUZyb21FbGVtZW50KCkKICAgICAgICAgICAgIG5ld0ltYWdlID0gbmV3IENhY2hlZEltYWdlKHNv
dXJjZVVSSShhdHRyKSk7CiAgICAgICAgICAgICBuZXdJbWFnZS0+c2V0TG9hZGluZyh0cnVlKTsK
ICAgICAgICAgICAgIG5ld0ltYWdlLT5zZXRDYWNoZWRSZXNvdXJjZUxvYWRlcihkb2N1bWVudC0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSk7Ci0gICAgICAgICAgICBkb2N1bWVudC0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS0+bV9kb2N1bWVudFJlc291cmNlcy5zZXQobmV3SW1hZ2UtPnVybCgpLCBu
ZXdJbWFnZSk7CisgICAgICAgICAgICBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+
bV9kb2N1bWVudFJlc291cmNlcy5hZGQobmV3SW1hZ2UpOwogICAgICAgICAgICAgZG9jdW1lbnQt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKGF1dG9Mb2FkT3RoZXJJ
bWFnZXMpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG5ld0ltYWdlID0gZG9jdW1lbnQt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RJbWFnZShzb3VyY2VVUkkoYXR0cikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73509</attachid>
            <date>2010-11-10 10:58:29 -0800</date>
            <delta_ts>2011-04-26 15:57:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49008-20101110110305.patch</filename>
            <type>text/plain</type>
            <size>13443</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2IxODlkNzc2YTJkZmU2ZmY3Yjg2ZTViNDk3ZmQ3ZDQ0NDkzMDQ3Yi4uYjg0ZDc4MzUxMTg3MzI3
YzY0MDk1YjhkMjBkMDZjODU3ZDIyMjA2ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIxMjgsNiArMjEyOCwzMyBAQAogICAgICAgICAo
V2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFkZElubGluZVN0eWxlSWZOZWVkZWQpOgogICAg
ICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaDoKIAorMjAxMC0xMS0wNCAgU2FtIE1h
Z251c29uICA8c21hZ251c29uQG5ldGZsaXguY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBNZW1vcnlDYWNoZVN1YnNldCB0byBjb250cm9s
IHVuYm91bmRlZCBtZW1vcnkgZ3Jvd3RoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTAwOAorCisgICAgICAgIFRoZSBNZW1vcnlDYWNoZVN1YnNldCBy
ZWZsZWN0cyBlbGVtZW50cyB0aGF0IGFyZSBpbiB0aGUgY2FjaGUgYW5kIHJlZmVyZW5jZWQKKyAg
ICAgICAgYnkgVVJMLiBUaGUgYWN0dWFsIHJlc291cmNlIGlzIG5vdCByZWZlcmVuY2VkIGFuZCB0
aHVzIHdoZW4gdGhlCisgICAgICAgIE1lbW9yeUNhY2hlIGV2aWN0cyB0aGUgb2JqZWN0IHRoZW4g
dGhlIE1lbW9yeUNhY2hlU3Vic2V0IHdpbGwgaW4gdHVybiBldmljdAorICAgICAgICBpdC4gVGhp
cyB3YXkgYWxsIE1lbW9yeUNhY2hlU3Vic2V0IGFyZSBib3VuZCB0byB0aGUgc2FtZSBzaXplIGFz
IHRoZSBpbgorICAgICAgICBtZW1vcnkgTWVtZW1vcnlDYWNoZS4KKworICAgICAgICAqIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
ZXZpY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmFkZENhY2hlU3Vic2V0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVDYWNoZVN1YnNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZVN1YnNldDo6TWVtb3J5Q2FjaGVTdWJzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGVTdWJzZXQ6On5NZW1vcnlDYWNoZVN1YnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZVN1YnNldDo6cmVzb3VyY2VGb3JVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGVTdWJzZXQ6OmFkZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDYWNoZVN1YnNldDo6YWxsUmVzb3VyY2VzKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlU3Vic2V0Ojph
ZGQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGVTdWJzZXQ6OmNvbnRhaW5zKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlU3Vic2V0OjpyZW1vdmUpOgorCiAyMDEwLTExLTA0
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZTFmNzVlZGUxNGNi
YTc2MGFkYzdmZGUzNWNlMTZkMjFjY2FhMjAyMi4uODRhYTcwZTQ2YjcxNzdkNjNjOTQ3OTliM2Yy
NzIzZDViMDNiOTZiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaWZuZGVmIERvY3VtZW50TG9hZGVyX2gKICNkZWZpbmUgRG9jdW1lbnRMb2FkZXJfaAogCisj
aW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRUaW1pbmcuaCIK
ICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5o
IgpAQCAtMzAyLDcgKzMwMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgT3duUHRy
PEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsK
ICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKIAotICAg
ICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OworICAgICAg
ICBNZW1vcnlDYWNoZVN1YnNldCBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CiAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IG1fcmVzb3VyY2VzTG9hZGVkRnJvbU1lbW9yeUNhY2hlRm9yQ2xpZW50
Tm90aWZpY2F0aW9uOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIG1fY2xpZW50UmVkaXJlY3RT
b3VyY2VGb3JIaXN0b3J5OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIu
Y3BwIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDk0YTIxYTQ5Y2E4NzVm
MTJmZTgyYTc4YTM3YWQwNWQ4YmEyYzBmNzEuLjZlNmUyZjU4ZWQwZDY4MzkxN2U2M2JhNjQzZWEz
YWI1YWFjMTg4NTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAor
KysgYi9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAgICBuZXdJbWFn
ZSA9IG5ldyBDYWNoZWRJbWFnZShzb3VyY2VVUkkoYXR0cikpOwogICAgICAgICAgICAgbmV3SW1h
Z2UtPnNldExvYWRpbmcodHJ1ZSk7CiAgICAgICAgICAgICBuZXdJbWFnZS0+c2V0Q2FjaGVkUmVz
b3VyY2VMb2FkZXIoZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpOwotICAgICAgICAg
ICAgZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPm1fZG9jdW1lbnRSZXNvdXJjZXMu
c2V0KG5ld0ltYWdlLT51cmwoKSwgbmV3SW1hZ2UpOworICAgICAgICAgICAgZG9jdW1lbnQtPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCktPm1fZG9jdW1lbnRSZXNvdXJjZXMuYWRkKG5ld0ltYWdlKTsK
ICAgICAgICAgICAgIGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9h
ZEltYWdlcyhhdXRvTG9hZE90aGVySW1hZ2VzKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBuZXdJbWFnZSA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0SW1h
Z2Uoc291cmNlVVJJKGF0dHIpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAppbmRleCAzZDQyNDRjMGE5NzIyNTIxNWU1ZDFhNjNiYjRmZDFlZDI1Mjdh
NWY0Li4wY2Q0YjcwMjE3MDY3ZGZmNjY3YmM0NDQzMDA1YmZmNGZmY2M5MjFhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02Nyw4ICs2Nywx
MCBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6fkNhY2hlZFJlc291cmNlTG9hZGVyKCkKICAgICAg
ICAgbV9jYWNoZS0+bG9hZGVyKCktPmNhbmNlbFJlcXVlc3RzKHRoaXMpOwogCiAgICAgY2xlYXJQ
cmVsb2FkcygpOwotICAgIERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fZG9j
dW1lbnRSZXNvdXJjZXMuZW5kKCk7Ci0gICAgZm9yIChEb2N1bWVudFJlc291cmNlTWFwOjppdGVy
YXRvciBpdCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQor
CisgICAgTWVtb3J5Q2FjaGVTdWJzZXQ6OlJlc291cmNlTWFwIHJlc291cmNlcyA9IG1fZG9jdW1l
bnRSZXNvdXJjZXMuYWxsUmVzb3VyY2VzKCk7CisgICAgTWVtb3J5Q2FjaGVTdWJzZXQ6OlJlc291
cmNlTWFwOjppdGVyYXRvciBlbmQgPSByZXNvdXJjZXMuZW5kKCk7CisgICAgZm9yIChNZW1vcnlD
YWNoZVN1YnNldDo6UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gcmVzb3VyY2VzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgaXQtPnNlY29uZC0+c2V0Q2FjaGVkUmVzb3VyY2VM
b2FkZXIoMCk7CiAgICAgbV9jYWNoZS0+cmVtb3ZlQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhpcyk7
CiAKQEAgLTI1MywxMSArMjU1LDkgQEAgQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICBpZiAoY2FjaGUoKS0+ZGlzYWJsZWQoKSkgewotICAgICAgICBEb2N1
bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZmluZChm
dWxsVVJMLnN0cmluZygpKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpdCAhPSBtX2RvY3VtZW50
UmVzb3VyY2VzLmVuZCgpKSB7Ci0gICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRDYWNoZWRSZXNv
dXJjZUxvYWRlcigwKTsKLSAgICAgICAgICAgIG1fZG9jdW1lbnRSZXNvdXJjZXMucmVtb3ZlKGl0
KTsKKyAgICAgICAgaWYgKENhY2hlZFJlc291cmNlICpyZXNvdXJjZSA9IG1fZG9jdW1lbnRSZXNv
dXJjZXMucmVzb3VyY2VGb3JVUkwodXJsKSkgeworICAgICAgICAgICAgcmVzb3VyY2UtPnNldENh
Y2hlZFJlc291cmNlTG9hZGVyKDApOworICAgICAgICAgICAgbV9kb2N1bWVudFJlc291cmNlcy5y
ZW1vdmUocmVzb3VyY2UpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNzAsNyArMjcwLDcgQEAg
Q2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwKICAgICAgICAgaWYgKGZ1bGxVUkwgIT0gcmVzb3VyY2Ut
PnVybCgpICYmICFjYW5SZXF1ZXN0KHR5cGUsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByZXNvdXJj
ZS0+dXJsKCkpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIG1fZG9jdW1lbnRS
ZXNvdXJjZXMuc2V0KHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UpOworICAgICAgICBtX2RvY3Vt
ZW50UmVzb3VyY2VzLmFkZChyZXNvdXJjZSk7CiAgICAgICAgIGNoZWNrQ2FjaGVPYmplY3RTdGF0
dXMocmVzb3VyY2UpOwogICAgIH0KICAgICByZXR1cm4gcmVzb3VyY2U7CkBAIC0zMDYsOCArMzA2
LDkgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFnZXMoYm9vbCBl
bmFibGUpCiAgICAgaWYgKCFtX2F1dG9Mb2FkSW1hZ2VzKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBlbmQgPSBtX2RvY3VtZW50UmVzb3VyY2Vz
LmVuZCgpOwotICAgIGZvciAoRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2Rv
Y3VtZW50UmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIE1lbW9yeUNh
Y2hlU3Vic2V0OjpSZXNvdXJjZU1hcCByZXNvdXJjZXMgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmFs
bFJlc291cmNlcygpOworICAgIE1lbW9yeUNhY2hlU3Vic2V0OjpSZXNvdXJjZU1hcDo6aXRlcmF0
b3IgZW5kID0gcmVzb3VyY2VzLmVuZCgpOworICAgIGZvciAoTWVtb3J5Q2FjaGVTdWJzZXQ6OlJl
c291cmNlTWFwOjppdGVyYXRvciBpdCA9IHJlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gaXQtPnNlY29uZC5nZXQo
KTsKICAgICAgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2UpIHsKICAgICAgICAgICAgIENhY2hlZEltYWdlKiBpbWFnZSA9IGNvbnN0X2Nhc3Q8
Q2FjaGVkSW1hZ2UqPihzdGF0aWNfY2FzdDxjb25zdCBDYWNoZWRJbWFnZSo+KHJlc291cmNlKSk7
CkBAIC0zMjYsMTEgKzMyNywxMCBAQCBDYWNoZVBvbGljeSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
Y2FjaGVQb2xpY3koKSBjb25zdAogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVtb3ZlQ2Fj
aGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKSBjb25zdAogewogI2lmbmRlZiBO
REVCVUcKLSAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9jdW1lbnRS
ZXNvdXJjZXMuZmluZChyZXNvdXJjZS0+dXJsKCkpOwotICAgIGlmIChpdCAhPSBtX2RvY3VtZW50
UmVzb3VyY2VzLmVuZCgpKQotICAgICAgICBBU1NFUlQoaXQtPnNlY29uZC5nZXQoKSA9PSByZXNv
dXJjZSk7CisgICAgaWYgKENhY2hlZFJlc291cmNlICp0bXAgPSBtX2RvY3VtZW50UmVzb3VyY2Vz
LnJlc291cmNlRm9yVVJMKHJlc291cmNlLT51cmwoKSkpCisgICAgICAgIEFTU0VSVCh0bXAgPT0g
cmVzb3VyY2UpOwogI2VuZGlmCi0gICAgbV9kb2N1bWVudFJlc291cmNlcy5yZW1vdmUocmVzb3Vy
Y2UtPnVybCgpKTsKKyAgICBtX2RvY3VtZW50UmVzb3VyY2VzLnJlbW92ZShyZXNvdXJjZSk7CiB9
CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldExvYWRJblByb2dyZXNzKGJvb2wgbG9h
ZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmggYi9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYz
NzFhMGVlNGM5Y2UzMjU2ZmY4ZjU4NjFlMjJmNmI5ZmUzYzc5N2QuLjllNjJlMWYxZGRhZWYxNjNj
YWVhYTljYmFmZDY1NmYyOWMyOWY1ZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcl9oCiAjZGVmaW5lIENhY2hlZFJlc291cmNlTG9hZGVyX2gKIAorI2luY2x1ZGUgIk1l
bW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlUG9saWN5LmgiCkBAIC03MSwxMCAr
NzIsMTAgQEAgcHVibGljOgogICAgIC8vIExvZ3MgYW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRv
IHRoZSBjb25zb2xlIGZvciB0aGUgc3BlY2lmaWVkIFVSTC4KICAgICB2b2lkIHByaW50QWNjZXNz
RGVuaWVkTWVzc2FnZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0OwogCi0gICAgQ2FjaGVkUmVzb3Vy
Y2UqIGNhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdCB7IHJldHVybiBtX2Rv
Y3VtZW50UmVzb3VyY2VzLmdldCh1cmwpLmdldCgpOyB9CisgICAgQ2FjaGVkUmVzb3VyY2UqIGNh
Y2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50
UmVzb3VyY2VzLnJlc291cmNlRm9yVVJMKHVybCk7IH0KICAgICAKLSAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gPiBEb2N1bWVu
dFJlc291cmNlTWFwOwotICAgIGNvbnN0IERvY3VtZW50UmVzb3VyY2VNYXAmIGFsbENhY2hlZFJl
c291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRSZXNvdXJjZXM7IH0KKyAgICB0eXBl
ZGVmIE1lbW9yeUNhY2hlU3Vic2V0OjpSZXNvdXJjZU1hcCBEb2N1bWVudFJlc291cmNlTWFwOwor
ICAgIERvY3VtZW50UmVzb3VyY2VNYXAgYWxsQ2FjaGVkUmVzb3VyY2VzKCkgY29uc3QgeyByZXR1
cm4gbV9kb2N1bWVudFJlc291cmNlcy5hbGxSZXNvdXJjZXMoKTsgfQogCiAgICAgYm9vbCBhdXRv
TG9hZEltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b0xvYWRJbWFnZXM7IH0KICAgICB2b2lk
IHNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wpOwpAQCAtMTEwLDggKzExMSw4IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBLVVJMJik7CiAg
ICAgCiAgICAgTWVtb3J5Q2FjaGUqIG1fY2FjaGU7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fcmVs
b2FkZWRVUkxzOwotICAgIG11dGFibGUgRG9jdW1lbnRSZXNvdXJjZU1hcCBtX2RvY3VtZW50UmVz
b3VyY2VzOworICAgIE1lbW9yeUNhY2hlU3Vic2V0IG1fcmVsb2FkZWRVUkxzOworICAgIG11dGFi
bGUgTWVtb3J5Q2FjaGVTdWJzZXQgbV9kb2N1bWVudFJlc291cmNlczsKICAgICBEb2N1bWVudCog
bV9kb2N1bWVudDsKICAgICAKICAgICBpbnQgbV9yZXF1ZXN0Q291bnQ7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggMjVhZjc3NGUxYzZmMzk3YmEzMjg3ODNkMDM0MmE5NTU1
Y2Y5ZTYyMC4uNDE3OGQ3OTY2MjVjZDczOWMxMzU3NDVjMTdmOWE5YWM0MDg5OTg0MCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNDQ0LDYgKzQ0NCwxMCBAQCB2b2lkIE1l
bW9yeUNhY2hlOjpldmljdChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgLy8gVGhlIHJl
c291cmNlIG1heSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWVvbmUgb3RoZXIgdGhh
biBvdXIgY2FsbGVyLAogICAgIC8vIHdobyBuZWVkZWQgYSBmcmVzaCBjb3B5IGZvciBhIHJlbG9h
ZC4gU2VlIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ3OSNjNj4u
CiAgICAgaWYgKHJlc291cmNlLT5pbkNhY2hlKCkpIHsKKyAgICAgICAgSGFzaFNldDxNZW1vcnlD
YWNoZVN1YnNldCo+OjppdGVyYXRvciBlbmQgPSBtX3N1YkNhY2hlcy5lbmQoKTsKKyAgICAgICAg
Zm9yIChIYXNoU2V0PE1lbW9yeUNhY2hlU3Vic2V0Kj46Oml0ZXJhdG9yIGl0ID0gbV9zdWJDYWNo
ZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgKCppdCktPnJlbW92ZShy
ZXNvdXJjZSk7CisKICAgICAgICAgLy8gUmVtb3ZlIGZyb20gdGhlIHJlc291cmNlIG1hcC4KICAg
ICAgICAgbV9yZXNvdXJjZXMucmVtb3ZlKHJlc291cmNlLT51cmwoKSk7CiAgICAgICAgIHJlc291
cmNlLT5zZXRJbkNhY2hlKGZhbHNlKTsKQEAgLTQ2NCw2ICs0NjgsMTYgQEAgdm9pZCBNZW1vcnlD
YWNoZTo6ZXZpY3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgICAgICBkZWxldGUgcmVz
b3VyY2U7CiB9CiAKK3ZvaWQgTWVtb3J5Q2FjaGU6OmFkZENhY2hlU3Vic2V0KE1lbW9yeUNhY2hl
U3Vic2V0KiBzdWJDYWNoZSkKK3sKKyAgICBtX3N1YkNhY2hlcy5hZGQoc3ViQ2FjaGUpOworfQor
Cit2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVDYWNoZVN1YnNldChNZW1vcnlDYWNoZVN1YnNldCog
c3ViQ2FjaGUpCit7CisgICAgbV9zdWJDYWNoZXMucmVtb3ZlKHN1YkNhY2hlKTsKK30KKwogdm9p
ZCBNZW1vcnlDYWNoZTo6YWRkQ2FjaGVkUmVzb3VyY2VMb2FkZXIoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKQogewogICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXJz
LmFkZChjYWNoZWRSZXNvdXJjZUxvYWRlcik7CkBAIC03ODUsNCArNzk5LDM4IEBAIHZvaWQgTWVt
b3J5Q2FjaGU6OmR1bXBMUlVMaXN0cyhib29sIGluY2x1ZGVMaXZlKSBjb25zdAogfQogI2VuZGlm
CiAKK01lbW9yeUNhY2hlU3Vic2V0OjpNZW1vcnlDYWNoZVN1YnNldCgpCisgICAgOiAgbV9jYWNo
ZShjYWNoZSgpKQoreworICAgIG1fY2FjaGUtPmFkZENhY2hlU3Vic2V0KHRoaXMpOworfQorCitN
ZW1vcnlDYWNoZVN1YnNldDo6fk1lbW9yeUNhY2hlU3Vic2V0KCkKK3sKKyAgICBtX2NhY2hlLT5y
ZW1vdmVDYWNoZVN1YnNldCh0aGlzKTsKK30KKworQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hl
U3Vic2V0OjpyZXNvdXJjZUZvclVSTChjb25zdCBTdHJpbmcgJnVybCkgY29uc3QKK3sKKyAgICBp
ZiAoIWNvbnRhaW5zKHVybCkpIC8vIElmIGl0IGlzbid0IGluIHRoZSBzdWJjYWNoZSB0aGVuIHdl
IGRvbid0IGdvIHRvIHRoZSBjYWNoZSBmb3IgdGhlIHJlc291cmNlLgorICAgICAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbV9jYWNoZS0+cmVzb3VyY2VGb3JVUkwodXJsKTsKK30KKwordm9pZCBN
ZW1vcnlDYWNoZVN1YnNldDo6YWRkKGNvbnN0IFN0cmluZyAmdXJsKQoreworICAgIGlmIChtX2Nh
Y2hlLT5yZXNvdXJjZUZvclVSTCh1cmwpKSAvLyBJdCBtdXN0IGJlIGluIHRoZSBjYWNoZSBmb3Ig
aXQgdG8gZ28gaW50byB0aGUgc3ViY2FjaGUuCisgICAgICAgIG1fcmVzb3VyY2VzLmFkZCh1cmwp
OworfQorCitNZW1vcnlDYWNoZVN1YnNldDo6UmVzb3VyY2VNYXAKK01lbW9yeUNhY2hlU3Vic2V0
OjphbGxSZXNvdXJjZXMoKSBjb25zdAoreworICAgIE1lbW9yeUNhY2hlU3Vic2V0OjpSZXNvdXJj
ZU1hcCByZXN1bHQ7CisgICAgSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBt
X3Jlc291cmNlcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHJl
c3VsdC5zZXQoKCppdCksIG1fY2FjaGUtPnJlc291cmNlRm9yVVJMKCgqaXQpKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmgKaW5kZXggYmYwZjMyYzNkY2UyY2U1ZDRmMjczYmIwMzhjNGY2YzQ0NDA0NjNh
OS4uMDA4NWMxOTY2MGIzYjE3M2M2MzU2YzUwOGFjYzQyODg2NDY5ODQ0MyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDYWNoZVBv
bGljeS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgImxv
YWRlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zOCw2ICszOSw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSAgewogCiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OworY2xhc3MgTWVt
b3J5Q2FjaGVTdWJzZXQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291
cmNlTG9hZGVyOwogY2xhc3MgS1VSTDsKQEAgLTE0OCw2ICsxNTAsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGRDYWNoZWRSZXNvdXJjZUxvYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogICAg
IHZvaWQgcmVtb3ZlQ2FjaGVkUmVzb3VyY2VMb2FkZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKTsK
IAorICAgIHZvaWQgYWRkQ2FjaGVTdWJzZXQoTWVtb3J5Q2FjaGVTdWJzZXQqKTsKKyAgICB2b2lk
IHJlbW92ZUNhY2hlU3Vic2V0KE1lbW9yeUNhY2hlU3Vic2V0Kik7CisKICAgICBDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2VGb3JVUkwoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBDYWxscyB0byBw
dXQgdGhlIGNhY2hlZCByZXNvdXJjZSBpbnRvIGFuZCBvdXQgb2YgTFJVIGxpc3RzLgpAQCAtMTkx
LDYgKzE5Niw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZW1iZXIgdmFyaWFibGVzLgogICAgIEhh
c2hTZXQ8Q2FjaGVkUmVzb3VyY2VMb2FkZXIqPiBtX2NhY2hlZFJlc291cmNlTG9hZGVyczsKKyAg
ICBIYXNoU2V0PE1lbW9yeUNhY2hlU3Vic2V0Kj4gbV9zdWJDYWNoZXM7CiAgICAgTG9hZGVyIG1f
bG9hZGVyOwogCiAgICAgYm9vbCBtX2Rpc2FibGVkOyAgLy8gV2hldGhlciBvciBub3QgdGhlIGNh
Y2hlIGlzIGVuYWJsZWQuCkBAIC0yMjcsNiArMjMzLDM1IEBAIGlubGluZSBib29sIE1lbW9yeUNh
Y2hlOjpzaG91bGRNYWtlUmVzb3VyY2VQdXJnZWFibGVPbkV2aWN0aW9uKCkKICNlbmRpZgogfQog
CisvLyBBIE1lbW9yeUNhY2hlU3Vic2V0IGlzIGEgc3Vic2V0IG9mIHRoZSBjdXJyZW50IGdsb2Jh
bCBNZW1vcnlDYWNoZS4gSXQgbWF5IG5vdCBjb250YWluIGFsbCB0aGUgZGF0YSBpbiB0aGUgY2Fj
aGUgYnV0IGl0IHdpbGwgbm90IGhvbGQgYSByZWZlcmVuY2UgdG8gaXRlbXMKKy8vIGluIHRoZSBj
YWNoZSBzbyB3aGVuIGV2aWN0aW9uIGhhcHBlbnMgdGhleSB3aWxsIGdldCBjdWxsZWQgZnJvbSBh
bnkgb3V0c3RhbmRpbmcgTWVtb3J5Q2FjaGVTdWJzZXQocykuIFRoZSBpbnRlbnRpb24gaGVyZSBp
cyB0byB1c2UgTWVtb3J5Q2FjaGVTdWJzZXQgYXMgYQorLy8gcmVmZXJlbmNlIHRvIFVSTCdzIHNl
ZW4gcHJldmlvdXNseSAob3IgbGlzdCBvZiBhbGwgcmVzb3VyY2VzIGluIGEgZG9jdW1lbnQpLCBi
dXQgb25jZSBhbiBlbnRpdHkgaXMgZXhwaXJlZCBmcm9tIHRoZSBDYWNoZSBpdCB3aWxsIG5vdCBj
b250aW51ZSB0bworLy8gYmUgcmVmZXJlbmNlZCAoZWl0aGVyIGJ5IHJlc291cmNlIG9yIFVSTCkg
ZWxzZXdoZXJlLgorCitjbGFzcyBNZW1vcnlDYWNoZVN1YnNldCB7CitwdWJsaWM6CisKKyAgICBN
ZW1vcnlDYWNoZVN1YnNldCgpOworICAgIH5NZW1vcnlDYWNoZVN1YnNldCgpOworCisgICAgdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
ID4gUmVzb3VyY2VNYXA7CisgICAgUmVzb3VyY2VNYXAgYWxsUmVzb3VyY2VzKCkgY29uc3Q7CisK
KyAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcgJnVybCk7CisgICAgaW5saW5lIHZvaWQgYWRkKENh
Y2hlZFJlc291cmNlICpyZXNvdXJjZSkgeyBhZGQocmVzb3VyY2UtPnVybCgpKTsgfQorCisgICAg
aW5saW5lIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nICZ1cmwpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VzLmNvbnRhaW5zKHVybCk7IH0KKworICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZUZvclVSTChjb25zdCBTdHJpbmcgJnVybCkgY29uc3Q7CisKKyAgICBpbmxpbmUgdm9pZCByZW1v
dmUoY29uc3QgU3RyaW5nICZ1cmwpIHsgbV9yZXNvdXJjZXMucmVtb3ZlKHVybCk7IH0KKyAgICBp
bmxpbmUgdm9pZCByZW1vdmUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKSB7IHJlbW92ZShyZXNv
dXJjZS0+dXJsKCkpOyB9CisKKyBwcml2YXRlOgorCisgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVz
b3VyY2VzOworICAgIE1lbW9yeUNhY2hlICptX2NhY2hlOworfTsKIC8vIEZ1bmN0aW9uIHRvIG9i
dGFpbiB0aGUgZ2xvYmFsIGNhY2hlLgogTWVtb3J5Q2FjaGUqIGNhY2hlKCk7CiAK
</data>
<flag name="review"
          id="63951"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>