<?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>70810</bug_id>
          
          <creation_ts>2011-10-25 04:45:44 -0700</creation_ts>
          <short_desc>nameNodeListCache should be invalidated when name attribute changes/modified.</short_desc>
          <delta_ts>2011-12-12 14:57:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74028</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Arko Saha">arko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adamk</cc>
    
    <cc>ap</cc>
    
    <cc>arv</cc>
    
    <cc>darin</cc>
    
    <cc>mitz</cc>
    
    <cc>rafaelw</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>489957</commentid>
    <comment_count>0</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-10-25 04:45:44 -0700</bug_when>
    <thetext>m_nameNodeListCache is not getting invalidated when name attribute of an element changes/modified.
Attached test page for the issue:

actual result: 
This is a simple div-1
This is a simple div-2
FAIL!!! 

expected result:
This is a simple div-1
This is a simple div-2
PASS!!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489958</commentid>
    <comment_count>1</comment_count>
      <attachid>112318</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-10-25 04:46:40 -0700</bug_when>
    <thetext>Created attachment 112318
Simple test-page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489963</commentid>
    <comment_count>2</comment_count>
      <attachid>112321</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-10-25 04:58:27 -0700</bug_when>
    <thetext>Created attachment 112321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490152</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-25 11:06:41 -0700</bug_when>
    <thetext>Could you please check how this affects DOM performance on Dromaeo?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490721</commentid>
    <comment_count>4</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-10-26 03:51:17 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Could you please check how this affects DOM performance on Dromaeo?

Without the patch: http://dromaeo.com/?id=153672 - 1074.13runs/s (Total)
With the patch: http://dromaeo.com/?id=153677 - 1073.77runs/s (Total)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490923</commentid>
    <comment_count>5</comment_count>
      <attachid>112321</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-26 09:29:57 -0700</bug_when>
    <thetext>Comment on attachment 112321
Patch

Something seems wrong here.

The notifyNodeListsAttributeChanged call should be made from Node::dispatchSubtreeModifiedEvent() - there is even a comment saying that it&apos;s there to handle the name attribute. Why doesn&apos;t that work? Is DOMSubtreeModified event broken, too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491118</commentid>
    <comment_count>6</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-10-26 12:59:38 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 112321 [details])
&gt; Something seems wrong here.
&gt; 
&gt; The notifyNodeListsAttributeChanged call should be made from Node::dispatchSubtreeModifiedEvent() - there is even a comment saying that it&apos;s there to handle the name attribute. Why doesn&apos;t that work? Is DOMSubtreeModified event broken, too?

Currently DOMSubtreeModified is not getting fired in case of name attribute.

After debugging class attributes behavior below is my observation :
When classAttr changes it calls classAttributeChanged() from StyledElement::parseMappedAttribute().
Now classAttributeChanged() invokes dispatchSubtreeModifiedEvent() which internally sends DOMSubtreeModified event and calls Node::notifyNodeListsAttributeChanged() to invalidate m_classNodeListCache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491155</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-26 13:38:48 -0700</bug_when>
    <thetext>Hmm, I can&apos;t easily tell if the fix is in the right place, deferring to other reviewers. There is a lot of fishy stuff going on - an first of all, the existing code in Node::dispatchSubtreeModifiedEvent() seems misplaced. A function that&apos;s named to dispatch an unimportant deprecated event shouldn&apos;t be doing super important work like flushing caches!

Interestingly, if the element doesn&apos;t have a name attribute yet, DOMSubtreeModified gets dispatched through NamedNodeMap::addAttribute(). And adding class attribute results in two DOMSubtreeModified events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491157</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-26 13:40:16 -0700</bug_when>
    <thetext>For reference, the code in Node::dispatchSubtreeModifiedEvent() was added in &lt;http://trac.webkit.org/changeset/9990&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492410</commentid>
    <comment_count>9</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-10-28 06:26:18 -0700</bug_when>
    <thetext>After investigating more, following are the observations:

When we do: element.className = &apos;myClass&apos;;

If the element doesn&apos;t have a content attribute &quot;class&quot; specified, then it fires two DOMSubTreeMidified events. If specified then it fires only one event.

1. In Element::setAttribute() if element doesn&apos;t have a content attribute &quot;class&quot; present, then it calls NamedNodeMap::addAttribute() which fires the first DOMSubTreeMidified event. And second event is fired from StyledElement::classAttributeChanged().

2. Now if the element has a content attribute &quot;class&quot; present, then Element::setAttribute() calls setValue() to update the value of the old &quot;class&quot; attribute. And only one DOMSubTreeMidified gets fired from StyledElement::classAttributeChanged().

In the case of &quot;name&quot; attribute DOMSubTreeMidified event is fired only if element doesn&apos;t have a content attribute &quot;name&quot; specified.

So, we should not send the DOMSubTreeMidified event from StyledElement::classAttributeChanged(). Rather we need to send the event irrespective of &quot;adding attribute&quot; or &quot;updating attribute&apos;s value&quot;.
This will fix both class and name attribute issue. Please let me know your comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492412</commentid>
    <comment_count>10</comment_count>
      <attachid>112854</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-10-28 06:28:28 -0700</bug_when>
    <thetext>Created attachment 112854
Simple test-page for class attr issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492414</commentid>
    <comment_count>11</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-10-28 06:34:33 -0700</bug_when>
    <thetext>For reference, the code for sending DOMSubTreeMidified event from StyledElement::classAttributeChanged() was add in http://trac.webkit.org/changeset/37800</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512000</commentid>
    <comment_count>12</comment_count>
      <attachid>112321</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-30 12:20:05 -0800</bug_when>
    <thetext>Comment on attachment 112321
Patch

This test case only covers the &lt;div&gt; element. The patch will work for that element, but not for the &lt;a&gt;, &lt;applet&gt;, &lt;embed&gt;, &lt;frame&gt;, &lt;form&gt;, &lt;iframe&gt;, &lt;img&gt;, &lt;map&gt;, &lt;meta&gt;, &lt;object&gt;, or &lt;param&gt; element, for example, due to code in those classes’ parseMappedAttribute functions that does not call through to the base class parseMappedAttribute function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516386</commentid>
    <comment_count>13</comment_count>
      <attachid>112321</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-06 17:06:30 -0800</bug_when>
    <thetext>Comment on attachment 112321
Patch

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

&gt; Source/WebCore/html/HTMLElement.cpp:205
&gt; +    } else if (attr-&gt;name() == nameAttr) {
&gt; +        notifyNodeListsAttributeChanged();

We should be doing this where enqueueAttributesMutationRecord is called in Element::setAttribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516774</commentid>
    <comment_count>14</comment_count>
      <attachid>118239</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-12-07 11:24:37 -0800</bug_when>
    <thetext>Created attachment 118239
Updated patch

Incorporating review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516900</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-07 13:54:03 -0800</bug_when>
    <thetext>So... it seems like we have a bug in Node::notifyLocalNodeListsAttributeChanged:
    if (!isAttributeNode())
        data-&gt;nodeLists()-&gt;invalidateCachesThatDependOnAttributes();
    else
        data-&gt;nodeLists()-&gt;invalidateCaches();

We should be clearing name/label cache when the node is NOT attribute node, not clearing when it&apos;s not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516934</commentid>
    <comment_count>16</comment_count>
      <attachid>118239</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-07 14:43:14 -0800</bug_when>
    <thetext>Comment on attachment 118239
Updated patch

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

&gt; Source/WebCore/dom/Element.cpp:652
&gt; +    if (old &amp;&amp; old-&gt;name() == nameAttr)
&gt; +        notifyNodeListsAttributeChanged();

This does not look right. Responses to changes to specific attributes do not normally belong in this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517072</commentid>
    <comment_count>17</comment_count>
      <attachid>112321</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-07 18:23:26 -0800</bug_when>
    <thetext>Comment on attachment 112321
Patch

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

&gt;&gt; Source/WebCore/html/HTMLElement.cpp:205
&gt;&gt; +        notifyNodeListsAttributeChanged();
&gt; 
&gt; We should be doing this where enqueueAttributesMutationRecord is called in Element::setAttribute.

Upon more investigation, calling notifyNodeListsAttributeChanged() here seems fine. Sorry to lead you to a wrong direction :( This is similar to how we end up calling notifyNodeListsAttributeChanged in StyledElement::classAttributeChanged via dispatchSubtreeModifiedEvent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518330</commentid>
    <comment_count>18</comment_count>
      <attachid>118594</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-12-09 10:29:27 -0800</bug_when>
    <thetext>Created attachment 118594
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518331</commentid>
    <comment_count>19</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-12-09 10:32:46 -0800</bug_when>
    <thetext>Calling invalidateNodeListsCacheAfterAttributeChanged() from HTMLElement::parseMappedAttribute() to invalidate NodeListCache.
Also did the change for the &lt;a&gt;, &lt;applet&gt;, &lt;embed&gt;, &lt;frame&gt;, &lt;form&gt;, &lt;iframe&gt;, &lt;img&gt;, &lt;map&gt;, &lt;meta&gt;, &lt;object&gt;, or &lt;param&gt; element as code in those classes parseMappedAttribute functions that does not call through to the base class i.e, HTMLElement parseMappedAttribute() function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518341</commentid>
    <comment_count>20</comment_count>
      <attachid>118594</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-09 10:49:21 -0800</bug_when>
    <thetext>Comment on attachment 118594
Updated patch

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

&gt; LayoutTests/fast/dom/getelementsbyname-invalidation-cache.html:32
&gt; +    shouldBeTrue(&quot;document.getElementsByName(&apos;fullname&apos;).length != oldLength&quot;);

You could create a function like createElement() that takes a tag name and returned the element. That way, shouldBeTrue will include the tag name and you don&apos;t need to add extra lines by debug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518361</commentid>
    <comment_count>21</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-12-09 11:39:58 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 118594 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118594&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/dom/getelementsbyname-invalidation-cache.html:32
&gt; &gt; +    shouldBeTrue(&quot;document.getElementsByName(&apos;fullname&apos;).length != oldLength&quot;);
&gt; 
&gt; You could create a function like createElement() that takes a tag name and returned the element. That way, shouldBeTrue will include the tag name and you don&apos;t need to add extra lines by debug.

I am facing some problem here.
Suppose, getElement(tagName) is the function which return me the element based on the tag name. 
Now when we do shouldBeTrue(&quot;getElement(); document.getElementsByName(&apos;fullname&apos;).length != oldLength&quot;) it gives &quot;PASS getElement(); document.getElementsByName(&apos;fullname&apos;).length != oldLength is true&quot; in the expected output rather giving me the actual tag name in the expected result.

Can you please correct me if I am missing something here. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518368</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-09 11:44:56 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Suppose, getElement(tagName) is the function which return me the element based on the tag name. 
&gt; Now when we do shouldBeTrue(&quot;getElement(); document.getElementsByName(&apos;fullname&apos;).length != oldLength&quot;) it gives &quot;PASS getElement(); document.getElementsByName(&apos;fullname&apos;).length != oldLength is true&quot; in the expected output rather giving me the actual tag name in the expected result.
&gt; 
&gt; Can you please correct me if I am missing something here. Thanks.

The correct way to write this is more like this:

    shouldBe(&quot;getElement(); document.getElementsByName(&apos;&quot; + fullname + &quot;&apos;).length&quot;, &quot;oldLength&quot;)

There are other refinements you can make too, but that&apos;s the basic pattern that works well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518385</commentid>
    <comment_count>23</comment_count>
      <attachid>118594</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-09 12:11:31 -0800</bug_when>
    <thetext>Comment on attachment 118594
Updated patch

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

&gt;&gt;&gt; LayoutTests/fast/dom/getelementsbyname-invalidation-cache.html:32
&gt;&gt;&gt; +    shouldBeTrue(&quot;document.getElementsByName(&apos;fullname&apos;).length != oldLength&quot;);
&gt;&gt; 
&gt;&gt; You could create a function like createElement() that takes a tag name and returned the element. That way, shouldBeTrue will include the tag name and you don&apos;t need to add extra lines by debug.
&gt; 
&gt; I am facing some problem here.
&gt; Suppose, getElement(tagName) is the function which return me the element based on the tag name. 
&gt; Now when we do shouldBeTrue(&quot;getElement(); document.getElementsByName(&apos;fullname&apos;).length != oldLength&quot;) it gives &quot;PASS getElement(); document.getElementsByName(&apos;fullname&apos;).length != oldLength is true&quot; in the expected output rather giving me the actual tag name in the expected result.
&gt; 
&gt; Can you please correct me if I am missing something here. Thanks.

You can do:
shouldBeTrue(&quot;CreateTwoElements(&apos;&quot; + tagName + &quot;); document.getElementsByName(&apos;fullname&apos;).length&quot;, &quot;2&quot;);
shouldBeTrue(&quot;document.querySelector(&quot;&apos; + tagName + &apos;&quot;); document.getElementsByName(&apos;fullname&apos;).length&quot;, &quot;1&quot;);
// Remove those two elements here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518404</commentid>
    <comment_count>24</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-12-09 12:34:26 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 118594 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118594&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; LayoutTests/fast/dom/getelementsbyname-invalidation-cache.html:32
&gt; &gt;&gt;&gt; +    shouldBeTrue(&quot;document.getElementsByName(&apos;fullname&apos;).length != oldLength&quot;);
&gt; &gt;&gt; 
&gt; &gt;&gt; You could create a function like createElement() that takes a tag name and returned the element. That way, shouldBeTrue will include the tag name and you don&apos;t need to add extra lines by debug.
&gt; &gt; 
&gt; &gt; I am facing some problem here.
&gt; &gt; Suppose, getElement(tagName) is the function which return me the element based on the tag name. 
&gt; &gt; Now when we do shouldBeTrue(&quot;getElement(); document.getElementsByName(&apos;fullname&apos;).length != oldLength&quot;) it gives &quot;PASS getElement(); document.getElementsByName(&apos;fullname&apos;).length != oldLength is true&quot; in the expected output rather giving me the actual tag name in the expected result.
&gt; &gt; 
&gt; &gt; Can you please correct me if I am missing something here. Thanks.
&gt; 
&gt; You can do:
&gt; shouldBeTrue(&quot;CreateTwoElements(&apos;&quot; + tagName + &quot;); document.getElementsByName(&apos;fullname&apos;).length&quot;, &quot;2&quot;);
&gt; shouldBeTrue(&quot;document.querySelector(&quot;&apos; + tagName + &apos;&quot;); document.getElementsByName(&apos;fullname&apos;).length&quot;, &quot;1&quot;);
&gt; // Remove those two elements here.

Darin/Ryosuke thanks for the help. I will upload the modified patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518410</commentid>
    <comment_count>25</comment_count>
      <attachid>118615</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-12-09 12:43:31 -0800</bug_when>
    <thetext>Created attachment 118615
Updated patch

Incorporating review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518412</commentid>
    <comment_count>26</comment_count>
      <attachid>118615</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-09 12:45:00 -0800</bug_when>
    <thetext>Comment on attachment 118615
Updated patch

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

&gt; LayoutTests/fast/dom/getelementsbyname-invalidation-cache.html:34
&gt; +    oldLength = document.getElementsByName(&apos;fullname&apos;).length;

We don&apos;t need this variable anymore, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518416</commentid>
    <comment_count>27</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-12-09 12:47:38 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 118615 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118615&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/dom/getelementsbyname-invalidation-cache.html:34
&gt; &gt; +    oldLength = document.getElementsByName(&apos;fullname&apos;).length;
&gt; 
&gt; We don&apos;t need this variable anymore, right?

Yes you are right. I will remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518420</commentid>
    <comment_count>28</comment_count>
      <attachid>118617</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-12-09 12:51:06 -0800</bug_when>
    <thetext>Created attachment 118617
Updated patch

Removed oldLength variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518425</commentid>
    <comment_count>29</comment_count>
      <attachid>118617</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-09 12:53:28 -0800</bug_when>
    <thetext>Comment on attachment 118617
Updated patch

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

&gt; LayoutTests/fast/dom/getelementsbyname-invalidation-cache.html:35
&gt; +    document.getElementById(&apos;testElement&apos;).setAttribute(&apos;name&apos;, &apos;changed-name&apos;);
&gt; +    shouldBe(&quot;document.querySelector(&apos;&quot; + tagName + &quot;&apos;); document.getElementsByName(&apos;fullname&apos;).length&quot;, &quot;1&quot;);

Wait... what&apos;s the point of querySelector here? You should be doing document.querySelector(&apos;&quot; + tagName + &quot;&apos;).setAttribute(&apos;name&apos;, &apos;changed-name&apos;) here instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518427</commentid>
    <comment_count>30</comment_count>
      <attachid>118617</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-09 12:54:22 -0800</bug_when>
    <thetext>Comment on attachment 118617
Updated patch

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

&gt; LayoutTests/fast/dom/getelementsbyname-invalidation-cache.html:27
&gt; +    element1 = createElement(tagName, { id: &apos;testElement&apos;, name: &apos;fullname&apos;});

Once you do that, you don&apos;t even need to add id here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518443</commentid>
    <comment_count>31</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-12-09 13:19:39 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 118617 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118617&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/dom/getelementsbyname-invalidation-cache.html:27
&gt; &gt; +    element1 = createElement(tagName, { id: &apos;testElement&apos;, name: &apos;fullname&apos;});
&gt; 
&gt; Once you do that, you don&apos;t even need to add id here.

After doing this change test case for div is failing.
PASS createTwoElements(&apos;div&apos;); document.getElementsByName(&apos;fullname&apos;).length is 2
FAIL document.querySelector(&apos;div&apos;).setAttribute(&apos;name&apos;, &apos;changed-name&apos;); document.getElementsByName(&apos;fullname&apos;).length should be 1. Was 2.

I am not sure what could be the reason behind it. Also observed the same behavior in case of class attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518463</commentid>
    <comment_count>32</comment_count>
      <attachid>118617</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-09 13:40:03 -0800</bug_when>
    <thetext>Comment on attachment 118617
Updated patch

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

&gt;&gt;&gt; LayoutTests/fast/dom/getelementsbyname-invalidation-cache.html:27

&gt;&gt; 
&gt;&gt; Once you do that, you don&apos;t even need to add id here.
&gt; 
&gt; After doing this change test case for div is failing.
&gt; PASS createTwoElements(&apos;div&apos;); document.getElementsByName(&apos;fullname&apos;).length is 2
&gt; FAIL document.querySelector(&apos;div&apos;).setAttribute(&apos;name&apos;, &apos;changed-name&apos;); document.getElementsByName(&apos;fullname&apos;).length should be 1. Was 2.
&gt; 
&gt; I am not sure what could be the reason behind it. Also observed the same behavior in case of class attribute.

Is parseMappedAttribute called when you set the attribute before getElementsByName is called?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518503</commentid>
    <comment_count>33</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-12-09 14:16:29 -0800</bug_when>
    <thetext>&gt; &gt; I am not sure what could be the reason behind it. Also observed the same behavior in case of class attribute.
&gt; 
&gt; Is parseMappedAttribute called when you set the attribute before getElementsByName is called?

Yes. parseMappedAttribute() is called when we set attribute before getElementsByName().
I analyzed further, if we don&apos;t use js-test-pre.js script then it is working as expected. It causing some issue when we use shouldBe() function or add &lt;div id=&quot;console&quot;&gt;&lt;/div&gt; in the test page. I have tested this with a small page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518504</commentid>
    <comment_count>34</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-09 14:18:26 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; Yes. parseMappedAttribute() is called when we set attribute before getElementsByName().
&gt; I analyzed further, if we don&apos;t use js-test-pre.js script then it is working as expected. It causing some issue when we use shouldBe() function or add &lt;div id=&quot;console&quot;&gt;&lt;/div&gt; in the test page. I have tested this with a small page.

That seems odd. We probably have some bug there. We&apos;re probably not clearing cache properly in some edge cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518559</commentid>
    <comment_count>35</comment_count>
      <attachid>118649</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-12-09 15:02:35 -0800</bug_when>
    <thetext>Created attachment 118649
Updated patch

Incorporated review comments.
Use section element instead of div, as js-test-pre.js inserts div#console in the test page, which is the main reason for failing div test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518724</commentid>
    <comment_count>36</comment_count>
      <attachid>118649</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-09 18:30:07 -0800</bug_when>
    <thetext>Comment on attachment 118649
Updated patch

Clearing flags on attachment: 118649

Committed r102511: &lt;http://trac.webkit.org/changeset/102511&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518725</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-09 18:30:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519520</commentid>
    <comment_count>38</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-12 14:54:40 -0800</bug_when>
    <thetext>Someone really ought to follow this up with a patch that refactors so that these functions call through to the base class instead of having a copy of the logic from the base class in every derived class. As many as possible, at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519528</commentid>
    <comment_count>39</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-12 14:57:23 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; Someone really ought to follow this up with a patch that refactors so that these functions call through to the base class instead of having a copy of the logic from the base class in every derived class. As many as possible, at least.

I was going through the code with Adam (Klein) this afternoon in regards to their mutation observer API and I think we&apos;ve figured out the root of this bug. The issue appears to be that Attr::setValue isn&apos;t calling Attr:childrenChanged.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>112318</attachid>
            <date>2011-10-25 04:46:40 -0700</date>
            <delta_ts>2011-10-25 04:46:40 -0700</delta_ts>
            <desc>Simple test-page</desc>
            <filename>test-case.html</filename>
            <type>text/html</type>
            <size>490</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8ZGl2IG5hbWU9ImZ1bGxuYW1lIiBpZD0idGVzdC1kaXYiPlRoaXMgaXMg
YSBzaW1wbGUgZGl2LTE8L2Rpdj4KPGRpdiBuYW1lPSJmdWxsbmFtZSI+VGhpcyBpcyBhIHNpbXBs
ZSBkaXYtMjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp2YXIgbGVuID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoOwp2YXIgZWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0LWRpdicpOwplbGVtZW50LnNldEF0dHJp
YnV0ZSgnbmFtZScsICdjaGFuZ2VkLW5hbWUnKTsKdmFyIG5ld19sZW4gPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGg7CmlmIChuZXdfbGVuID09IGxlbikKICAg
IGRvY3VtZW50LndyaXRlKCJGQUlMISEhIik7CmVsc2UKICAgIGRvY3VtZW50LndyaXRlKCJQQVNT
ISEhIik7Cjwvc2NyaXB0PgoKPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112321</attachid>
            <date>2011-10-25 04:58:27 -0700</date>
            <delta_ts>2011-12-07 18:23:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch_70810.diff</filename>
            <type>text/plain</type>
            <size>3649</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MzMyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTAtMjUgIEFya28gU2Fo
YSAgPGFya29AbW90b3JvbGEuY29tPgorCisgICAgICAgIE5hbWVOb2RlTGlzdENhY2hlIHNob3Vs
ZCBiZSBpbnZhbGlkYXRlIHdoZW4gbmFtZSBhdHRyaWJ1dGUgY2hhbmdlcy9tb2RpZmllZC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODEwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9k
b20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLmh0bWwKKworICAgICAgICAq
IGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKToKKwogMjAxMS0xMC0yMSAgTmF0IER1Y2EgIDxuZHVjYUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSb3V0ZSBDb25zb2xlOjp0aW1lIGFuZCBD
b25zb2xlOjp0aW1lRW5kIHRvIHRyYWNlX2V2ZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAkocmV2aXNpb24gOTgzMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDYgKzIwMSw4IEBAIHZvaWQgSFRNTEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEEKICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5
KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25lKTsKICAgICAg
ICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpCiAgICAgICAg
ICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NW
YWx1ZU5vbmUpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7Cisg
ICAgICAgIG5vdGlmeU5vZGVMaXN0c0F0dHJpYnV0ZUNoYW5nZWQoKTsKICNpZiBFTkFCTEUoTUlD
Uk9EQVRBKQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGl0ZW1wcm9wQXR0cikgewog
ICAgICAgICBzZXRJdGVtUHJvcChhdHRyLT52YWx1ZSgpKTsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4
MzMyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTEtMTAtMjUgIEFya28gU2FoYSAgPGFya29AbW90b3JvbGEuY29tPgorCisgICAg
ICAgIE5hbWVOb2RlTGlzdENhY2hlIHNob3VsZCBiZSBpbnZhbGlkYXRlIHdoZW4gbmFtZSBhdHRy
aWJ1dGUgY2hhbmdlcy9tb2RpZmllZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTcwODEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9nZXRlbGVtZW50c2J5bmFtZS1pbnZhbGlkYXRpb24t
Y2FjaGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRlbGVtZW50
c2J5bmFtZS1pbnZhbGlkYXRpb24tY2FjaGUuaHRtbDogQWRkZWQuCisKIDIwMTEtMTAtMjUgIFpv
bHRhbiBBcnZhaSAgPHphcnZhaUBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XSBSZW1v
dmUgZnJvbSBTa2lwcGVkIGxpc3QuIFRlc3QgcGFzc2VzOiBmYXN0L3RyYW5zZm9ybXMvc2Nyb2xs
SW50b1ZpZXctdHJhbnNmb3JtZWQuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0
ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRlbGVtZW50c2J5bmFtZS1pbnZhbGlkYXRpb24t
Y2FjaGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3IEBACitUaGlzIHRlc3QgY2FzZSBlbnN1cmVzIHRoYXQgbmFtZU5v
ZGVMaXN0Q2FjaGUgc2hvdWxkIGJlIGludmFsaWRhdGUgd2hlbiBuYW1lIGF0dHJpYnV0ZSBjaGFu
Z2VzLgorCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0
aCAhPSBsZW5ndGggaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnlu
YW1lLWludmFsaWRhdGlvbi1jYWNoZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL2dldGVsZW1lbnRzYnluYW1lLWludmFsaWRhdGlvbi1jYWNoZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0
aW9uLWNhY2hlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgY2FzZSBl
bnN1cmVzIHRoYXQgbmFtZU5vZGVMaXN0Q2FjaGUgc2hvdWxkIGJlIGludmFsaWRhdGUgd2hlbiBu
YW1lIGF0dHJpYnV0ZSBjaGFuZ2VzLjwvcD4KKzxkaXYgbmFtZT0iZnVsbG5hbWUiIGlkPSJkaXYx
Ij48L2Rpdj4KKzxkaXYgbmFtZT0iZnVsbG5hbWUiPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgordmFyIGxlbmd0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1l
KCdmdWxsbmFtZScpLmxlbmd0aDsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXYxJykuc2V0
QXR0cmlidXRlKCduYW1lJywgJ2NoYW5nZWQtbmFtZScpOworc2hvdWxkQmVUcnVlKCJkb2N1bWVu
dC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggIT0gbGVuZ3RoIik7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>
<flag name="review"
          id="110382"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>112854</attachid>
            <date>2011-10-28 06:28:28 -0700</date>
            <delta_ts>2011-10-28 06:28:28 -0700</delta_ts>
            <desc>Simple test-page for class attr issue</desc>
            <filename>test-case-001.html</filename>
            <type>text/html</type>
            <size>397</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8ZGl2IGlkPSJ0ZXN0LWRpdiI+VGhpcyBkaXYgZG9lc24ndCBoYXZlIGEg
Y29udGVudCBhdHRyaWJ1dGUgImNsYXNzIiBzcGVjaWZpZWQuPC9kaXY+CjxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KCmZ1bmN0aW9uIE9uU3VidHJlZU1vZGlmaWVkICgpIHsKICAgIGFs
ZXJ0ICgiRE9NU3VidHJlZU1vZGlmaWVkIGV2ZW50IGZpcmVkIik7Cn0KCnZhciBlbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QtZGl2Jyk7CmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lciAoJ0RPTVN1YnRyZWVNb2RpZmllZCcsIE9uU3VidHJlZU1vZGlmaWVkLCBmYWxzZSk7CmVs
ZW1lbnQuY2xhc3NOYW1lID0gJ215Y2xhc3MnOwo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118239</attachid>
            <date>2011-12-07 11:24:37 -0800</date>
            <delta_ts>2011-12-09 10:29:27 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_70810.diff</filename>
            <type>text/plain</type>
            <size>5529</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjI1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTEyLTA3ICAgQXJrbyBT
YWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmFtZU5vZGVMaXN0Q2FjaGUgc2hv
dWxkIGJlIGludmFsaWRhdGVkIHdoZW4gbmFtZSBhdHRyaWJ1dGUgY2hhbmdlcy9tb2RpZmllZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODEwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFz
dC9kb20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLmh0bWwKKworICAgICAg
ICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJp
YnV0ZSk6CisKIDIwMTEtMTItMDcgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFR1cm4gb24gbW92ZSBjYXJldCBieSB3b3JkIHZpc3VhbGx5IGZvciBXaW5kb3dzIHBs
YXRmb3JtLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTAyMjMzKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDgsNiAr
NjQ4LDkgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljUwogCiAgICAg
ZG9jdW1lbnQoKS0+aW5jRE9NVHJlZVZlcnNpb24oKTsKIAorICAgIGlmIChvbGQgJiYgb2xkLT5u
YW1lKCkgPT0gbmFtZUF0dHIpCisgICAgICAgIG5vdGlmeU5vZGVMaXN0c0F0dHJpYnV0ZUNoYW5n
ZWQoKTsKKwogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgLy8gVGhlIGNhbGwg
dG8gYXR0cmlidXRlQ2hhbmdlZCBiZWxvdyBtYXkgZGlzcGF0Y2ggRE9NU3VidHJlZU1vZGlmaWVk
LCBzbyBpdCdzIGltcG9ydGFudCB0byBlbnF1ZXVlIGEgTXV0YXRpb25SZWNvcmQgbm93LgogICAg
IGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEwMjI1NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTEyLTA3ICAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CisK
KyAgICAgICAgTmFtZU5vZGVMaXN0Q2FjaGUgc2hvdWxkIGJlIGludmFsaWRhdGVkIHdoZW4gbmFt
ZSBhdHRyaWJ1dGUgY2hhbmdlcy9tb2RpZmllZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9nZXRlbGVtZW50c2J5bmFtZS1pbnZhbGlk
YXRpb24tY2FjaGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRl
bGVtZW50c2J5bmFtZS1pbnZhbGlkYXRpb24tY2FjaGUuaHRtbDogQWRkZWQuCisKIDIwMTEtMTIt
MDcgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFR1cm4gb24gbW92
ZSBjYXJldCBieSB3b3JkIHZpc3VhbGx5IGZvciB3aW5kb3dzIHBsYXRmb3JtLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRlbGVtZW50
c2J5bmFtZS1pbnZhbGlkYXRpb24tY2FjaGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAorVGhpcyB0ZXN0IGNh
c2UgZW5zdXJlcyB0aGF0IG5hbWVOb2RlTGlzdENhY2hlIHNob3VsZCBiZSBpbnZhbGlkYXRlIHdo
ZW4gbmFtZSBhdHRyaWJ1dGUgY2hhbmdlcy4KKworVGVzdGluZyBlbGVtZW50OiBhCitQQVNTIGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCAhPSBvbGRMZW5ndGgg
aXMgdHJ1ZQorCitUZXN0aW5nIGVsZW1lbnQ6IGFwcGxldAorUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggIT0gb2xkTGVuZ3RoIGlzIHRydWUKKworVGVz
dGluZyBlbGVtZW50OiBlbWJlZAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVs
bG5hbWUnKS5sZW5ndGggIT0gb2xkTGVuZ3RoIGlzIHRydWUKKworVGVzdGluZyBlbGVtZW50OiBk
aXYKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoICE9
IG9sZExlbmd0aCBpcyB0cnVlCisKK1Rlc3RpbmcgZWxlbWVudDogZnJhbWUKK1BBU1MgZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoICE9IG9sZExlbmd0aCBpcyB0
cnVlCisKK1Rlc3RpbmcgZWxlbWVudDogZm9ybQorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5
TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggIT0gb2xkTGVuZ3RoIGlzIHRydWUKKworVGVzdGluZyBl
bGVtZW50OiBpZnJhbWUKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1l
JykubGVuZ3RoICE9IG9sZExlbmd0aCBpcyB0cnVlCisKK1Rlc3RpbmcgZWxlbWVudDogaW1nCitQ
QVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCAhPSBvbGRM
ZW5ndGggaXMgdHJ1ZQorCitUZXN0aW5nIGVsZW1lbnQ6IG1hcAorUEFTUyBkb2N1bWVudC5nZXRF
bGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggIT0gb2xkTGVuZ3RoIGlzIHRydWUKKwor
VGVzdGluZyBlbGVtZW50OiBtZXRhCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdm
dWxsbmFtZScpLmxlbmd0aCAhPSBvbGRMZW5ndGggaXMgdHJ1ZQorCitUZXN0aW5nIGVsZW1lbnQ6
IG9iamVjdAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5n
dGggIT0gb2xkTGVuZ3RoIGlzIHRydWUKKworVGVzdGluZyBlbGVtZW50OiBwYXJhbQorUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggIT0gb2xkTGVuZ3Ro
IGlzIHRydWUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnluYW1lLWludmFs
aWRhdGlvbi1jYWNoZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dl
dGVsZW1lbnRzYnluYW1lLWludmFsaWRhdGlvbi1jYWNoZS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hl
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgY2FzZSBlbnN1cmVzIHRo
YXQgbmFtZU5vZGVMaXN0Q2FjaGUgc2hvdWxkIGJlIGludmFsaWRhdGUgd2hlbiBuYW1lIGF0dHJp
YnV0ZSBjaGFuZ2VzLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3Zh
ciBvbGRMZW5ndGg7CisKK2Z1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodHlwZSwgcHJvcGVydGllcykK
K3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodHlwZSk7CisKKyAg
ICBmb3IgKHZhciBpIGluIHByb3BlcnRpZXMpCisgICAgICBpZiAocHJvcGVydGllcy5oYXNPd25Q
cm9wZXJ0eShpKSkKKyAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoaSxwcm9wZXJ0aWVzW2ld
KTsKKworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgcmV0dXJu
IGVsZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QodHlwZSkKK3sKKyAgICBkZWJ1ZygnVGVz
dGluZyBlbGVtZW50OiAnICsgdHlwZSk7CisgICAgdmFyIGVsZW1lbnQxID0gY3JlYXRlRWxlbWVu
dCh0eXBlLCB7IGlkOiAndGVzdEVsZW1lbnQnLCBuYW1lOiAnZnVsbG5hbWUnfSk7CisgICAgdmFy
IGVsZW1lbnQyID0gY3JlYXRlRWxlbWVudCh0eXBlLCB7IG5hbWU6ICdmdWxsbmFtZSd9KTsKKyAg
ICBvbGRMZW5ndGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5n
dGg7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdEVsZW1lbnQnKS5zZXRBdHRy
aWJ1dGUoJ25hbWUnLCAnY2hhbmdlZC1uYW1lJyk7CisgICAgc2hvdWxkQmVUcnVlKCJkb2N1bWVu
dC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggIT0gb2xkTGVuZ3RoIik7Cisg
ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50MSk7CisgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChlbGVtZW50Mik7Cit9CisKK3J1blRlc3QoJ2EnKTsKK2RlYnVnKCcnKTsK
K3J1blRlc3QoJ2FwcGxldCcpOworZGVidWcoJycpOworcnVuVGVzdCgnZW1iZWQnKTsKK2RlYnVn
KCcnKTsKK3J1blRlc3QoJ2RpdicpOworZGVidWcoJycpOworcnVuVGVzdCgnZnJhbWUnKTsKK2Rl
YnVnKCcnKTsKK3J1blRlc3QoJ2Zvcm0nKTsKK2RlYnVnKCcnKTsKK3J1blRlc3QoJ2lmcmFtZScp
OworZGVidWcoJycpOworcnVuVGVzdCgnaW1nJyk7CitkZWJ1ZygnJyk7CitydW5UZXN0KCdtYXAn
KTsKK2RlYnVnKCcnKTsKK3J1blRlc3QoJ21ldGEnKTsKK2RlYnVnKCcnKTsKK3J1blRlc3QoJ29i
amVjdCcpOworZGVidWcoJycpOworcnVuVGVzdCgncGFyYW0nKTsKK2RlYnVnKCcnKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118594</attachid>
            <date>2011-12-09 10:29:27 -0800</date>
            <delta_ts>2011-12-09 12:43:31 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_70810.diff</filename>
            <type>text/plain</type>
            <size>13363</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDExLTEyLTA5ICAgQXJrbyBT
YWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmFtZU5vZGVMaXN0Q2FjaGUgc2hv
dWxkIGJlIGludmFsaWRhdGVkIHdoZW4gbmFtZSBhdHRyaWJ1dGUgY2hhbmdlcy9tb2RpZmllZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODEwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFz
dC9kb20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLmh0bWwKKworICAgICAg
ICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFu
Y2hvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxB
cHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRN
TE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPYmplY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRt
bC9IVE1MUGFyYW1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJhbUVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKwogMjAxMS0xMi0wOCAgSm9jZWx5biBUdXJjb3R0
ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIEluc3BlY3RvcjogRG9u
J3QgdHJhbnNsYXRlIHRoZSBjb250ZXh0IHdoZW4gcmVuZGVyaW5nIHRoZSBoaWdobGlnaHRzIG9u
IGEgdGlsZWQgbGF5ZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTAyNDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw4ICsyMjEsOSBAQCB2b2lkIEhU
TUxBbmNob3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgICAgICAgICAgYXR0ci0+
c2V0VmFsdWUobnVsbEF0b20pOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIgfHwKLSAgICAgICAgICAgICBhdHRyLT5uYW1l
KCkgPT0gdGl0bGVBdHRyKSB7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0
dHIpIHsKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFu
Z2VkKCk7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdGl0bGVBdHRyKSB7CiAgICAg
ICAgIC8vIERvIG5vdGhpbmcuCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcmVsQXR0
cikKICAgICAgICAgc2V0UmVsKGF0dHItPnZhbHVlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDEwMjQ1MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2
ICs2NCw3IEBAIHZvaWQgSFRNTEFwcGxldEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICAg
ICAgICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7CiAgICAgICAgIH0KICAgICAg
ICAgbV9uYW1lID0gbmV3TmFtZTsKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0
ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChpc0lkQXR0cmlidXRlTmFtZShh
dHRyLT5uYW1lKCkpKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQgPSBhdHRy
LT52YWx1ZSgpOwogICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRN
TERvY3VtZW50KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxMDI0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw4IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKEEKICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3Bl
cnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25lKTsKICAgICAgICAgfSBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpCiAgICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NWYWx1ZU5vbmUpOworICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7CisgICAgICAgIGludmFsaWRh
dGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwogI2lmIEVOQUJMRShNSUNS
T0RBVEEpCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaXRlbXByb3BBdHRyKSB7CiAg
ICAgICAgIHNldEl0ZW1Qcm9wKGF0dHItPnZhbHVlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDI0NTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiAr
MTE4LDcgQEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgICAg
ICAgICAgZG9jdW1lbnQtPmFkZE5hbWVkSXRlbSh2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAg
bV9uYW1lID0gdmFsdWU7CisgICAgICAgIGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0
cmlidXRlQ2hhbmdlZCgpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwMjQ1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkyLDYgKzM5
Miw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnUKICAgICAgICAg
ICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAg
bV9uYW1lID0gbmV3TmFtZTsKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJB
dHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiAxMDI0NTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQx
LDYgKzE0MSw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXQKICAg
ICAgICAgbV9mcmFtZU5hbWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IG5hbWVBdHRyKSB7CiAgICAgICAgIG1fZnJhbWVOYW1lID0gYXR0ci0+dmFsdWUo
KTsKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2Vk
KCk7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgdGhpcyBk
b2Vzbid0IGFjdHVhbGx5IGNoYW5nZSB0aGUgZnJhbWUncyBuYW1lLgogICAgICAgICAvLyBGSVhN
RTogSWYgd2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIHRoaXMgZG9lc24ndCBjaGVjayBmb3IgZnJh
bWUgbmFtZQogICAgICAgICAvLyBjb25mbGljdHMgYW5kIGdlbmVyYXRlIGEgdW5pcXVlIGZyYW1l
IG5hbWUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAko
cmV2aXNpb24gMTAyNDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgdm9pZCBIVE1MSUZyYW1lRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZEV4dHJhTmFt
ZWRJdGVtKG5ld05hbWUpOwogICAgICAgICB9CiAgICAgICAgIG1fbmFtZSA9IG5ld05hbWU7Cisg
ICAgICAgIGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwog
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZyYW1lYm9yZGVyQXR0cikgewogICAgICAg
ICAvLyBGcmFtZSBib3JkZXIgZG9lc24ndCByZWFsbHkgbWF0Y2ggdGhlIEhUTUw0IHNwZWMgZGVm
aW5pdGlvbiBmb3IgaWZyYW1lcy4gIEl0IHNpbXBseSBhZGRzCiAgICAgICAgIC8vIGEgcHJlc2Vu
dGF0aW9uYWwgaGludCB0aGF0IHRoZSBib3JkZXIgc2hvdWxkIGJlIG9mZiBpZiBzZXQgdG8gemVy
by4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNp
b24gMTAyNDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obmV3
TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9uYW1lID0gbmV3TmFtZTsKKyAgICAgICAgaW52
YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgfSBlbHNl
IGlmIChpc0lkQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpKSB7CiAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3SWQgPSBhdHRyLT52YWx1ZSgpOwogICAgICAgICBpZiAoaW5Eb2N1bWVu
dCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDI0NTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzEx
OSw5IEBAIHZvaWQgSFRNTE1hcEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICAgICAg
bV9uYW1lID0gZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSA/IG1hcE5hbWUubG93ZXIoKSA6
IG1hcE5hbWU7CiAgICAgICAgIGlmIChpbkRvY3VtZW50KCkpCiAgICAgICAgICAgICB0cmVlU2Nv
cGUoKS0+YWRkSW1hZ2VNYXAodGhpcyk7CisKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IG5hbWVB
dHRyKQorICAgICAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVD
aGFuZ2VkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZXRhRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwMjQ1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDks
NyBAQCB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGNvbnRlbnRBdHRyKQogICAgICAgICBwcm9jZXNzKCk7CiAgICAg
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7Ci0gICAgICAgIC8vIERvIG5vdGhp
bmcuCisgICAgICAgIGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdl
ZCgpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmNwcAkocmV2aXNpb24gMTAyNDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsNyBAQCB2b2lkIEhUTUxP
YmplY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRk
TmFtZWRJdGVtKG5ld05hbWUpOwogICAgICAgICB9CiAgICAgICAgIG1fbmFtZSA9IG5ld05hbWU7
CisgICAgICAgIGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgp
OwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlckF0dHIpCiAgICAgICAgIGFw
cGx5Qm9yZGVyQXR0cmlidXRlKGF0dHIpOwogICAgIGVsc2UgaWYgKGlzSWRBdHRyaWJ1dGVOYW1l
KGF0dHItPm5hbWUoKSkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVt
ZW50LmNwcAkocmV2aXNpb24gMTAyNDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFy
YW1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCB2b2lkIEhUTUxQ
YXJhbUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgICAgIG1fbmFtZSA9IGF0dHItPnZh
bHVlKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsKICAgICAg
ICAgbV9uYW1lID0gYXR0ci0+dmFsdWUoKTsKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0Nh
Y2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gdmFsdWVBdHRyKSB7CiAgICAgICAgIG1fdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIH0g
ZWxzZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTAyNDU4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMDkgICBBcmtvIFNhaGEg
IDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBOYW1lTm9kZUxpc3RDYWNoZSBzaG91bGQg
YmUgaW52YWxpZGF0ZWQgd2hlbiBuYW1lIGF0dHJpYnV0ZSBjaGFuZ2VzL21vZGlmaWVkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4MTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL2dl
dGVsZW1lbnRzYnluYW1lLWludmFsaWRhdGlvbi1jYWNoZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL2dldGVsZW1lbnRzYnluYW1lLWludmFsaWRhdGlvbi1jYWNoZS5o
dG1sOiBBZGRlZC4KKwogMjAxMS0xMi0wOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXBkYXRlIHRlc3RfZXhwZWN0YXRpb25zLnR4dCB0byBt
YXRjaCB0aGUgYm90cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnlu
YW1lLWludmFsaWRhdGlvbi1jYWNoZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRz
YnluYW1lLWludmFsaWRhdGlvbi1jYWNoZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDIgQEAKK1RoaXMgdGVzdCBjYXNlIGVuc3VyZXMgdGhhdCBuYW1lTm9kZUxpc3RDYWNo
ZSBzaG91bGQgYmUgaW52YWxpZGF0ZSB3aGVuIG5hbWUgYXR0cmlidXRlIGNoYW5nZXMuCisKK1Rl
c3RpbmcgZWxlbWVudDogYQorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5h
bWUnKS5sZW5ndGggIT0gb2xkTGVuZ3RoIGlzIHRydWUKKworVGVzdGluZyBlbGVtZW50OiBhcHBs
ZXQKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoICE9
IG9sZExlbmd0aCBpcyB0cnVlCisKK1Rlc3RpbmcgZWxlbWVudDogZW1iZWQKK1BBU1MgZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoICE9IG9sZExlbmd0aCBpcyB0
cnVlCisKK1Rlc3RpbmcgZWxlbWVudDogZGl2CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlO
YW1lKCdmdWxsbmFtZScpLmxlbmd0aCAhPSBvbGRMZW5ndGggaXMgdHJ1ZQorCitUZXN0aW5nIGVs
ZW1lbnQ6IGZyYW1lCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScp
Lmxlbmd0aCAhPSBvbGRMZW5ndGggaXMgdHJ1ZQorCitUZXN0aW5nIGVsZW1lbnQ6IGZvcm0KK1BB
U1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoICE9IG9sZExl
bmd0aCBpcyB0cnVlCisKK1Rlc3RpbmcgZWxlbWVudDogaWZyYW1lCitQQVNTIGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCAhPSBvbGRMZW5ndGggaXMgdHJ1ZQor
CitUZXN0aW5nIGVsZW1lbnQ6IGltZworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgn
ZnVsbG5hbWUnKS5sZW5ndGggIT0gb2xkTGVuZ3RoIGlzIHRydWUKKworVGVzdGluZyBlbGVtZW50
OiBtYXAKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3Ro
ICE9IG9sZExlbmd0aCBpcyB0cnVlCisKK1Rlc3RpbmcgZWxlbWVudDogbWV0YQorUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggIT0gb2xkTGVuZ3RoIGlz
IHRydWUKKworVGVzdGluZyBlbGVtZW50OiBvYmplY3QKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoICE9IG9sZExlbmd0aCBpcyB0cnVlCisKK1Rlc3Rp
bmcgZWxlbWVudDogcGFyYW0KK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxu
YW1lJykubGVuZ3RoICE9IG9sZExlbmd0aCBpcyB0cnVlCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9nZXRlbGVtZW50c2J5bmFtZS1pbnZhbGlkYXRpb24tY2FjaGUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRlbGVtZW50c2J5bmFtZS1pbnZhbGlkYXRpb24tY2Fj
aGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRz
YnluYW1lLWludmFsaWRhdGlvbi1jYWNoZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+
VGhpcyB0ZXN0IGNhc2UgZW5zdXJlcyB0aGF0IG5hbWVOb2RlTGlzdENhY2hlIHNob3VsZCBiZSBp
bnZhbGlkYXRlIHdoZW4gbmFtZSBhdHRyaWJ1dGUgY2hhbmdlcy48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgb2xkTGVuZ3RoOworCitmdW5jdGlvbiBjcmVhdGVF
bGVtZW50KHR5cGUsIHByb3BlcnRpZXMpCit7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KHR5cGUpOworCisgICAgZm9yICh2YXIgaSBpbiBwcm9wZXJ0aWVzKQorICAg
ICAgaWYgKHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoaSkpCisgICAgICAgIGVsZW1lbnQuc2V0
QXR0cmlidXRlKGkscHJvcGVydGllc1tpXSk7CisKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGVsZW1lbnQpOworICAgIHJldHVybiBlbGVtZW50OworfQorCitmdW5jdGlvbiBydW5UZXN0
KHR5cGUpCit7CisgICAgZGVidWcoJ1Rlc3RpbmcgZWxlbWVudDogJyArIHR5cGUpOworICAgIHZh
ciBlbGVtZW50MSA9IGNyZWF0ZUVsZW1lbnQodHlwZSwgeyBpZDogJ3Rlc3RFbGVtZW50JywgbmFt
ZTogJ2Z1bGxuYW1lJ30pOworICAgIHZhciBlbGVtZW50MiA9IGNyZWF0ZUVsZW1lbnQodHlwZSwg
eyBuYW1lOiAnZnVsbG5hbWUnfSk7CisgICAgb2xkTGVuZ3RoID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Rlc3RFbGVtZW50Jykuc2V0QXR0cmlidXRlKCduYW1lJywgJ2NoYW5nZWQtbmFtZScpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJyku
bGVuZ3RoICE9IG9sZExlbmd0aCIpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxl
bWVudDEpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudDIpOworfQorCity
dW5UZXN0KCdhJyk7CitkZWJ1ZygnJyk7CitydW5UZXN0KCdhcHBsZXQnKTsKK2RlYnVnKCcnKTsK
K3J1blRlc3QoJ2VtYmVkJyk7CitkZWJ1ZygnJyk7CitydW5UZXN0KCdkaXYnKTsKK2RlYnVnKCcn
KTsKK3J1blRlc3QoJ2ZyYW1lJyk7CitkZWJ1ZygnJyk7CitydW5UZXN0KCdmb3JtJyk7CitkZWJ1
ZygnJyk7CitydW5UZXN0KCdpZnJhbWUnKTsKK2RlYnVnKCcnKTsKK3J1blRlc3QoJ2ltZycpOwor
ZGVidWcoJycpOworcnVuVGVzdCgnbWFwJyk7CitkZWJ1ZygnJyk7CitydW5UZXN0KCdtZXRhJyk7
CitkZWJ1ZygnJyk7CitydW5UZXN0KCdvYmplY3QnKTsKK2RlYnVnKCcnKTsKK3J1blRlc3QoJ3Bh
cmFtJyk7CitkZWJ1ZygnJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="118392"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118615</attachid>
            <date>2011-12-09 12:43:31 -0800</date>
            <delta_ts>2011-12-09 12:51:06 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_70810.diff</filename>
            <type>text/plain</type>
            <size>14276</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDExLTEyLTA5ICAgQXJrbyBT
YWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmFtZU5vZGVMaXN0Q2FjaGUgc2hv
dWxkIGJlIGludmFsaWRhdGVkIHdoZW4gbmFtZSBhdHRyaWJ1dGUgY2hhbmdlcy9tb2RpZmllZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODEwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFz
dC9kb20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLmh0bWwKKworICAgICAg
ICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFu
Y2hvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxB
cHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRN
TE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPYmplY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRt
bC9IVE1MUGFyYW1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJhbUVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKwogMjAxMS0xMi0wOSAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBkdXBsaWNhdGUgYW5pbWF0
aW9uIGl2YXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAkocmV2aXNpb24gMTAyNDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw4ICsyMjEsOSBAQCB2b2lkIEhUTUxBbmNo
b3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgICAgICAgICAgYXR0ci0+c2V0VmFs
dWUobnVsbEF0b20pOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIgfHwKLSAgICAgICAgICAgICBhdHRyLT5uYW1lKCkgPT0g
dGl0bGVBdHRyKSB7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsK
KyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7
CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdGl0bGVBdHRyKSB7CiAgICAgICAgIC8v
IERvIG5vdGhpbmcuCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcmVsQXR0cikKICAg
ICAgICAgc2V0UmVsKGF0dHItPnZhbHVlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDEwMjQ1MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3
IEBAIHZvaWQgSFRNTEFwcGxldEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICAgICAgICAg
IGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9u
YW1lID0gbmV3TmFtZTsKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRy
aWJ1dGVDaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChpc0lkQXR0cmlidXRlTmFtZShhdHRyLT5u
YW1lKCkpKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQgPSBhdHRyLT52YWx1
ZSgpOwogICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3Vt
ZW50KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
MDI0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjEwLDYgKzIxMCw4IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKEEKICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Vi
a2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25lKTsKICAgICAgICAgfSBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpCiAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShh
dHRyLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NWYWx1ZU5vbmUpOworICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7CisgICAgICAgIGludmFsaWRhdGVOb2Rl
TGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwogI2lmIEVOQUJMRShNSUNST0RBVEEp
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaXRlbXByb3BBdHRyKSB7CiAgICAgICAg
IHNldEl0ZW1Qcm9wKGF0dHItPnZhbHVlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDI0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDcg
QEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgICAgICAgICAg
ZG9jdW1lbnQtPmFkZE5hbWVkSXRlbSh2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9uYW1l
ID0gdmFsdWU7CisgICAgICAgIGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRl
Q2hhbmdlZCgpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwMjQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkyLDYgKzM5Miw3IEBA
IHZvaWQgSFRNTEZvcm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnUKICAgICAgICAgICAgIGRv
Y3VtZW50LT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9uYW1l
ID0gbmV3TmFtZTsKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1
dGVDaGFuZ2VkKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiAxMDI0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0
MSw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXQKICAgICAgICAg
bV9mcmFtZU5hbWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IG5hbWVBdHRyKSB7CiAgICAgICAgIG1fZnJhbWVOYW1lID0gYXR0ci0+dmFsdWUoKTsKKyAg
ICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgdGhpcyBkb2Vzbid0
IGFjdHVhbGx5IGNoYW5nZSB0aGUgZnJhbWUncyBuYW1lLgogICAgICAgICAvLyBGSVhNRTogSWYg
d2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIHRoaXMgZG9lc24ndCBjaGVjayBmb3IgZnJhbWUgbmFt
ZQogICAgICAgICAvLyBjb25mbGljdHMgYW5kIGdlbmVyYXRlIGEgdW5pcXVlIGZyYW1lIG5hbWUu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkocmV2aXNp
b24gMTAyNDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZEV4dHJhTmFtZWRJdGVt
KG5ld05hbWUpOwogICAgICAgICB9CiAgICAgICAgIG1fbmFtZSA9IG5ld05hbWU7CisgICAgICAg
IGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIH0g
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZyYW1lYm9yZGVyQXR0cikgewogICAgICAgICAvLyBG
cmFtZSBib3JkZXIgZG9lc24ndCByZWFsbHkgbWF0Y2ggdGhlIEhUTUw0IHNwZWMgZGVmaW5pdGlv
biBmb3IgaWZyYW1lcy4gIEl0IHNpbXBseSBhZGRzCiAgICAgICAgIC8vIGEgcHJlc2VudGF0aW9u
YWwgaGludCB0aGF0IHRoZSBib3JkZXIgc2hvdWxkIGJlIG9mZiBpZiBzZXQgdG8gemVyby4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTAy
NDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWIKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7
CiAgICAgICAgIH0KICAgICAgICAgbV9uYW1lID0gbmV3TmFtZTsKKyAgICAgICAgaW52YWxpZGF0
ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChp
c0lkQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3SWQgPSBhdHRyLT52YWx1ZSgpOwogICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYm
IGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1hcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1hcEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDI0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNYXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSw5IEBA
IHZvaWQgSFRNTE1hcEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICAgICAgbV9uYW1l
ID0gZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSA/IG1hcE5hbWUubG93ZXIoKSA6IG1hcE5h
bWU7CiAgICAgICAgIGlmIChpbkRvY3VtZW50KCkpCiAgICAgICAgICAgICB0cmVlU2NvcGUoKS0+
YWRkSW1hZ2VNYXAodGhpcyk7CisKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IG5hbWVBdHRyKQor
ICAgICAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2Vk
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1ldGFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZXRhRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwMjQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCB2
b2lkIEhUTUxNZXRhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGNvbnRlbnRBdHRyKQogICAgICAgICBwcm9jZXNzKCk7CiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7Ci0gICAgICAgIC8vIERvIG5vdGhpbmcuCisg
ICAgICAgIGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwog
ICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0
cik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAko
cmV2aXNpb24gMTAyNDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsNyBAQCB2b2lkIEhUTUxPYmplY3RF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJ
dGVtKG5ld05hbWUpOwogICAgICAgICB9CiAgICAgICAgIG1fbmFtZSA9IG5ld05hbWU7CisgICAg
ICAgIGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlckF0dHIpCiAgICAgICAgIGFwcGx5Qm9y
ZGVyQXR0cmlidXRlKGF0dHIpOwogICAgIGVsc2UgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0dHIt
Pm5hbWUoKSkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNw
cAkocmV2aXNpb24gMTAyNDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCB2b2lkIEhUTUxQYXJhbUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgICAgIG1fbmFtZSA9IGF0dHItPnZhbHVlKCk7
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsKICAgICAgICAgbV9u
YW1lID0gYXR0ci0+dmFsdWUoKTsKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0
ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdmFs
dWVBdHRyKSB7CiAgICAgICAgIG1fdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIH0gZWxzZQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMTAyNDY1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMDkgICBBcmtvIFNhaGEgIDxhcmtv
QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBOYW1lTm9kZUxpc3RDYWNoZSBzaG91bGQgYmUgaW52
YWxpZGF0ZWQgd2hlbiBuYW1lIGF0dHJpYnV0ZSBjaGFuZ2VzL21vZGlmaWVkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL2dldGVsZW1l
bnRzYnluYW1lLWludmFsaWRhdGlvbi1jYWNoZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL2dldGVsZW1lbnRzYnluYW1lLWludmFsaWRhdGlvbi1jYWNoZS5odG1sOiBB
ZGRlZC4KKwogMjAxMS0xMi0wOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFRyeSB0byBkZWZsYWtlIGEgcmVwYWludCB0ZXN0IG9uIENocm9taXVtLiAgSXQgbG9v
a3MgbGlrZSB3ZSdyZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieW5h
bWUtaW52YWxpZGF0aW9uLWNhY2hlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nZXRlbGVtZW50c2J5bmFtZS1pbnZhbGlkYXRpb24tY2FjaGUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNi
eW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MiBAQAorVGhpcyB0ZXN0IGNhc2UgZW5zdXJlcyB0aGF0IG5hbWVOb2RlTGlzdENhY2hl
IHNob3VsZCBiZSBpbnZhbGlkYXRlIHdoZW4gbmFtZSBhdHRyaWJ1dGUgY2hhbmdlcy4KKworUEFT
UyBjcmVhdGVUd29FbGVtZW50cygnYScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVs
bG5hbWUnKS5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhJyk7IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAxCisKK1BBU1Mg
Y3JlYXRlVHdvRWxlbWVudHMoJ2FwcGxldCcpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgn
ZnVsbG5hbWUnKS5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhcHBs
ZXQnKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDEK
KworUEFTUyBjcmVhdGVUd29FbGVtZW50cygnZW1iZWQnKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDIKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignZW1iZWQnKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3Ro
IGlzIDEKKworUEFTUyBjcmVhdGVUd29FbGVtZW50cygnZGl2Jyk7IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ2RpdicpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5n
dGggaXMgMQorCitQQVNTIGNyZWF0ZVR3b0VsZW1lbnRzKCdmcmFtZScpOyBkb2N1bWVudC5nZXRF
bGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCdmcmFtZScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUn
KS5sZW5ndGggaXMgMQorCitQQVNTIGNyZWF0ZVR3b0VsZW1lbnRzKCdmb3JtJyk7IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ2Zvcm0nKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxu
YW1lJykubGVuZ3RoIGlzIDEKKworUEFTUyBjcmVhdGVUd29FbGVtZW50cygnaWZyYW1lJyk7IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAyCitQQVNTIGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFt
ZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMgMQorCitQQVNTIGNyZWF0ZVR3b0VsZW1lbnRzKCdpbWcn
KTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDIKK1BB
U1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW1nJyk7IGRvY3VtZW50LmdldEVsZW1lbnRzQnlO
YW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAxCisKK1BBU1MgY3JlYXRlVHdvRWxlbWVudHMoJ21h
cCcpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMgMgor
UEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtYXAnKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDEKKworUEFTUyBjcmVhdGVUd29FbGVtZW50cygn
bWV0YScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMg
MgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZXRhJyk7IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAxCisKK1BBU1MgY3JlYXRlVHdvRWxlbWVu
dHMoJ29iamVjdCcpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5n
dGggaXMgMgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdvYmplY3QnKTsgZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDEKKworUEFTUyBjcmVhdGVU
d29FbGVtZW50cygncGFyYW0nKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1l
JykubGVuZ3RoIGlzIDIKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigncGFyYW0nKTsgZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDEKKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnluYW1lLWludmFsaWRhdGlvbi1jYWNoZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnluYW1lLWlu
dmFsaWRhdGlvbi1jYWNoZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgY2FzZSBlbnN1cmVzIHRoYXQgbmFtZU5vZGVMaXN0Q2Fj
aGUgc2hvdWxkIGJlIGludmFsaWRhdGUgd2hlbiBuYW1lIGF0dHJpYnV0ZSBjaGFuZ2VzLjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBvbGRMZW5ndGg7Cit2YXIg
ZWxlbWVudDE7Cit2YXIgZWxlbWVudDI7CisKK2Z1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodHlwZSwg
cHJvcGVydGllcykKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
dHlwZSk7CisKKyAgICBmb3IgKHZhciBpIGluIHByb3BlcnRpZXMpCisgICAgICBpZiAocHJvcGVy
dGllcy5oYXNPd25Qcm9wZXJ0eShpKSkKKyAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoaSxw
cm9wZXJ0aWVzW2ldKTsKKworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7
CisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVR3b0VsZW1lbnRzKHRh
Z05hbWUpCit7CisgICAgZWxlbWVudDEgPSBjcmVhdGVFbGVtZW50KHRhZ05hbWUsIHsgaWQ6ICd0
ZXN0RWxlbWVudCcsIG5hbWU6ICdmdWxsbmFtZSd9KTsKKyAgICBlbGVtZW50MiA9IGNyZWF0ZUVs
ZW1lbnQodGFnTmFtZSwgeyBuYW1lOiAnZnVsbG5hbWUnfSk7Cit9CisKK2Z1bmN0aW9uIHJ1blRl
c3QodGFnTmFtZSkKK3sKKyAgICBvbGRMZW5ndGggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFt
ZSgnZnVsbG5hbWUnKS5sZW5ndGg7CisgICAgc2hvdWxkQmUoImNyZWF0ZVR3b0VsZW1lbnRzKCci
ICsgdGFnTmFtZSArICInKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJyku
bGVuZ3RoIiwgIjIiKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdEVsZW1lbnQn
KS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnY2hhbmdlZC1uYW1lJyk7CisgICAgc2hvdWxkQmUoImRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyIgKyB0YWdOYW1lICsgIicpOyBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGgiLCAiMSIpOworICAgIGRvY3VtZW50LmJvZHku
cmVtb3ZlQ2hpbGQoZWxlbWVudDEpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxl
bWVudDIpOworICAgIGRlYnVnKCcnKTsKK30KKworcnVuVGVzdCgnYScpOworcnVuVGVzdCgnYXBw
bGV0Jyk7CitydW5UZXN0KCdlbWJlZCcpOworcnVuVGVzdCgnZGl2Jyk7CitydW5UZXN0KCdmcmFt
ZScpOworcnVuVGVzdCgnZm9ybScpOworcnVuVGVzdCgnaWZyYW1lJyk7CitydW5UZXN0KCdpbWcn
KTsKK3J1blRlc3QoJ21hcCcpOworcnVuVGVzdCgnbWV0YScpOworcnVuVGVzdCgnb2JqZWN0Jyk7
CitydW5UZXN0KCdwYXJhbScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118617</attachid>
            <date>2011-12-09 12:51:06 -0800</date>
            <delta_ts>2011-12-09 15:02:35 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_70810.diff</filename>
            <type>text/plain</type>
            <size>14196</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDExLTEyLTA5ICAgQXJrbyBT
YWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmFtZU5vZGVMaXN0Q2FjaGUgc2hv
dWxkIGJlIGludmFsaWRhdGVkIHdoZW4gbmFtZSBhdHRyaWJ1dGUgY2hhbmdlcy9tb2RpZmllZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODEwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFz
dC9kb20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLmh0bWwKKworICAgICAg
ICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFu
Y2hvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxB
cHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRN
TE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPYmplY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRt
bC9IVE1MUGFyYW1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJhbUVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKwogMjAxMS0xMi0wOSAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBkdXBsaWNhdGUgYW5pbWF0
aW9uIGl2YXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAkocmV2aXNpb24gMTAyNDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw4ICsyMjEsOSBAQCB2b2lkIEhUTUxBbmNo
b3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgICAgICAgICAgYXR0ci0+c2V0VmFs
dWUobnVsbEF0b20pOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIgfHwKLSAgICAgICAgICAgICBhdHRyLT5uYW1lKCkgPT0g
dGl0bGVBdHRyKSB7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsK
KyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7
CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdGl0bGVBdHRyKSB7CiAgICAgICAgIC8v
IERvIG5vdGhpbmcuCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcmVsQXR0cikKICAg
ICAgICAgc2V0UmVsKGF0dHItPnZhbHVlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDEwMjQ1MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3
IEBAIHZvaWQgSFRNTEFwcGxldEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICAgICAgICAg
IGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9u
YW1lID0gbmV3TmFtZTsKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRy
aWJ1dGVDaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChpc0lkQXR0cmlidXRlTmFtZShhdHRyLT5u
YW1lKCkpKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQgPSBhdHRyLT52YWx1
ZSgpOwogICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3Vt
ZW50KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
MDI0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjEwLDYgKzIxMCw4IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKEEKICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Vi
a2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25lKTsKICAgICAgICAgfSBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpCiAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShh
dHRyLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NWYWx1ZU5vbmUpOworICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7CisgICAgICAgIGludmFsaWRhdGVOb2Rl
TGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwogI2lmIEVOQUJMRShNSUNST0RBVEEp
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaXRlbXByb3BBdHRyKSB7CiAgICAgICAg
IHNldEl0ZW1Qcm9wKGF0dHItPnZhbHVlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDI0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDcg
QEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgICAgICAgICAg
ZG9jdW1lbnQtPmFkZE5hbWVkSXRlbSh2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9uYW1l
ID0gdmFsdWU7CisgICAgICAgIGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRl
Q2hhbmdlZCgpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwMjQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkyLDYgKzM5Miw3IEBA
IHZvaWQgSFRNTEZvcm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnUKICAgICAgICAgICAgIGRv
Y3VtZW50LT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9uYW1l
ID0gbmV3TmFtZTsKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1
dGVDaGFuZ2VkKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiAxMDI0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0
MSw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXQKICAgICAgICAg
bV9mcmFtZU5hbWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IG5hbWVBdHRyKSB7CiAgICAgICAgIG1fZnJhbWVOYW1lID0gYXR0ci0+dmFsdWUoKTsKKyAg
ICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgdGhpcyBkb2Vzbid0
IGFjdHVhbGx5IGNoYW5nZSB0aGUgZnJhbWUncyBuYW1lLgogICAgICAgICAvLyBGSVhNRTogSWYg
d2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIHRoaXMgZG9lc24ndCBjaGVjayBmb3IgZnJhbWUgbmFt
ZQogICAgICAgICAvLyBjb25mbGljdHMgYW5kIGdlbmVyYXRlIGEgdW5pcXVlIGZyYW1lIG5hbWUu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkocmV2aXNp
b24gMTAyNDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZEV4dHJhTmFtZWRJdGVt
KG5ld05hbWUpOwogICAgICAgICB9CiAgICAgICAgIG1fbmFtZSA9IG5ld05hbWU7CisgICAgICAg
IGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIH0g
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZyYW1lYm9yZGVyQXR0cikgewogICAgICAgICAvLyBG
cmFtZSBib3JkZXIgZG9lc24ndCByZWFsbHkgbWF0Y2ggdGhlIEhUTUw0IHNwZWMgZGVmaW5pdGlv
biBmb3IgaWZyYW1lcy4gIEl0IHNpbXBseSBhZGRzCiAgICAgICAgIC8vIGEgcHJlc2VudGF0aW9u
YWwgaGludCB0aGF0IHRoZSBib3JkZXIgc2hvdWxkIGJlIG9mZiBpZiBzZXQgdG8gemVyby4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTAy
NDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWIKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7
CiAgICAgICAgIH0KICAgICAgICAgbV9uYW1lID0gbmV3TmFtZTsKKyAgICAgICAgaW52YWxpZGF0
ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChp
c0lkQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3SWQgPSBhdHRyLT52YWx1ZSgpOwogICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYm
IGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1hcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1hcEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDI0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNYXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSw5IEBA
IHZvaWQgSFRNTE1hcEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICAgICAgbV9uYW1l
ID0gZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSA/IG1hcE5hbWUubG93ZXIoKSA6IG1hcE5h
bWU7CiAgICAgICAgIGlmIChpbkRvY3VtZW50KCkpCiAgICAgICAgICAgICB0cmVlU2NvcGUoKS0+
YWRkSW1hZ2VNYXAodGhpcyk7CisKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IG5hbWVBdHRyKQor
ICAgICAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2Vk
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1ldGFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZXRhRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwMjQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCB2
b2lkIEhUTUxNZXRhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGNvbnRlbnRBdHRyKQogICAgICAgICBwcm9jZXNzKCk7CiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7Ci0gICAgICAgIC8vIERvIG5vdGhpbmcuCisg
ICAgICAgIGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwog
ICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0
cik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAko
cmV2aXNpb24gMTAyNDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsNyBAQCB2b2lkIEhUTUxPYmplY3RF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJ
dGVtKG5ld05hbWUpOwogICAgICAgICB9CiAgICAgICAgIG1fbmFtZSA9IG5ld05hbWU7CisgICAg
ICAgIGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlckF0dHIpCiAgICAgICAgIGFwcGx5Qm9y
ZGVyQXR0cmlidXRlKGF0dHIpOwogICAgIGVsc2UgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0dHIt
Pm5hbWUoKSkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNw
cAkocmV2aXNpb24gMTAyNDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCB2b2lkIEhUTUxQYXJhbUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgICAgIG1fbmFtZSA9IGF0dHItPnZhbHVlKCk7
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsKICAgICAgICAgbV9u
YW1lID0gYXR0ci0+dmFsdWUoKTsKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0
ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdmFs
dWVBdHRyKSB7CiAgICAgICAgIG1fdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIH0gZWxzZQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMTAyNDY1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMDkgICBBcmtvIFNhaGEgIDxhcmtv
QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBOYW1lTm9kZUxpc3RDYWNoZSBzaG91bGQgYmUgaW52
YWxpZGF0ZWQgd2hlbiBuYW1lIGF0dHJpYnV0ZSBjaGFuZ2VzL21vZGlmaWVkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL2dldGVsZW1l
bnRzYnluYW1lLWludmFsaWRhdGlvbi1jYWNoZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL2dldGVsZW1lbnRzYnluYW1lLWludmFsaWRhdGlvbi1jYWNoZS5odG1sOiBB
ZGRlZC4KKwogMjAxMS0xMi0wOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFRyeSB0byBkZWZsYWtlIGEgcmVwYWludCB0ZXN0IG9uIENocm9taXVtLiAgSXQgbG9v
a3MgbGlrZSB3ZSdyZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieW5h
bWUtaW52YWxpZGF0aW9uLWNhY2hlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nZXRlbGVtZW50c2J5bmFtZS1pbnZhbGlkYXRpb24tY2FjaGUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNi
eW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MiBAQAorVGhpcyB0ZXN0IGNhc2UgZW5zdXJlcyB0aGF0IG5hbWVOb2RlTGlzdENhY2hl
IHNob3VsZCBiZSBpbnZhbGlkYXRlIHdoZW4gbmFtZSBhdHRyaWJ1dGUgY2hhbmdlcy4KKworUEFT
UyBjcmVhdGVUd29FbGVtZW50cygnYScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVs
bG5hbWUnKS5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhJyk7IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAxCisKK1BBU1Mg
Y3JlYXRlVHdvRWxlbWVudHMoJ2FwcGxldCcpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgn
ZnVsbG5hbWUnKS5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhcHBs
ZXQnKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDEK
KworUEFTUyBjcmVhdGVUd29FbGVtZW50cygnZW1iZWQnKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDIKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignZW1iZWQnKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3Ro
IGlzIDEKKworUEFTUyBjcmVhdGVUd29FbGVtZW50cygnZGl2Jyk7IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ2RpdicpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5n
dGggaXMgMQorCitQQVNTIGNyZWF0ZVR3b0VsZW1lbnRzKCdmcmFtZScpOyBkb2N1bWVudC5nZXRF
bGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCdmcmFtZScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUn
KS5sZW5ndGggaXMgMQorCitQQVNTIGNyZWF0ZVR3b0VsZW1lbnRzKCdmb3JtJyk7IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ2Zvcm0nKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxu
YW1lJykubGVuZ3RoIGlzIDEKKworUEFTUyBjcmVhdGVUd29FbGVtZW50cygnaWZyYW1lJyk7IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAyCitQQVNTIGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFt
ZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMgMQorCitQQVNTIGNyZWF0ZVR3b0VsZW1lbnRzKCdpbWcn
KTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDIKK1BB
U1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW1nJyk7IGRvY3VtZW50LmdldEVsZW1lbnRzQnlO
YW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAxCisKK1BBU1MgY3JlYXRlVHdvRWxlbWVudHMoJ21h
cCcpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMgMgor
UEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtYXAnKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDEKKworUEFTUyBjcmVhdGVUd29FbGVtZW50cygn
bWV0YScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMg
MgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZXRhJyk7IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAxCisKK1BBU1MgY3JlYXRlVHdvRWxlbWVu
dHMoJ29iamVjdCcpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5n
dGggaXMgMgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdvYmplY3QnKTsgZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDEKKworUEFTUyBjcmVhdGVU
d29FbGVtZW50cygncGFyYW0nKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1l
JykubGVuZ3RoIGlzIDIKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigncGFyYW0nKTsgZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDEKKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnluYW1lLWludmFsaWRhdGlvbi1jYWNoZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnluYW1lLWlu
dmFsaWRhdGlvbi1jYWNoZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgY2FzZSBlbnN1cmVzIHRoYXQgbmFtZU5vZGVMaXN0Q2Fj
aGUgc2hvdWxkIGJlIGludmFsaWRhdGUgd2hlbiBuYW1lIGF0dHJpYnV0ZSBjaGFuZ2VzLjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBlbGVtZW50MTsKK3ZhciBl
bGVtZW50MjsKKworZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0eXBlLCBwcm9wZXJ0aWVzKQorewor
ICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0eXBlKTsKKworICAgIGZv
ciAodmFyIGkgaW4gcHJvcGVydGllcykKKyAgICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3Bl
cnR5KGkpKQorICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShpLHByb3BlcnRpZXNbaV0pOwor
CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICByZXR1cm4gZWxl
bWVudDsKK30KKworZnVuY3Rpb24gY3JlYXRlVHdvRWxlbWVudHModGFnTmFtZSkKK3sKKyAgICBl
bGVtZW50MSA9IGNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgeyBpZDogJ3Rlc3RFbGVtZW50JywgbmFt
ZTogJ2Z1bGxuYW1lJ30pOworICAgIGVsZW1lbnQyID0gY3JlYXRlRWxlbWVudCh0YWdOYW1lLCB7
IG5hbWU6ICdmdWxsbmFtZSd9KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCh0YWdOYW1lKQorewor
ICAgIHNob3VsZEJlKCJjcmVhdGVUd29FbGVtZW50cygnIiArIHRhZ05hbWUgKyAiJyk7IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCIsICIyIik7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RFbGVtZW50Jykuc2V0QXR0cmlidXRlKCduYW1lJywg
J2NoYW5nZWQtbmFtZScpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCci
ICsgdGFnTmFtZSArICInKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJyku
bGVuZ3RoIiwgIjEiKTsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnQxKTsK
KyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnQyKTsKKyAgICBkZWJ1ZygnJyk7
Cit9CisKK3J1blRlc3QoJ2EnKTsKK3J1blRlc3QoJ2FwcGxldCcpOworcnVuVGVzdCgnZW1iZWQn
KTsKK3J1blRlc3QoJ2RpdicpOworcnVuVGVzdCgnZnJhbWUnKTsKK3J1blRlc3QoJ2Zvcm0nKTsK
K3J1blRlc3QoJ2lmcmFtZScpOworcnVuVGVzdCgnaW1nJyk7CitydW5UZXN0KCdtYXAnKTsKK3J1
blRlc3QoJ21ldGEnKTsKK3J1blRlc3QoJ29iamVjdCcpOworcnVuVGVzdCgncGFyYW0nKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>
<flag name="review"
          id="118413"
          type_id="1"
          status="-"
          setter="rniwa"
    />
    <flag name="commit-queue"
          id="118414"
          type_id="3"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118649</attachid>
            <date>2011-12-09 15:02:35 -0800</date>
            <delta_ts>2011-12-09 18:30:07 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_70810.diff</filename>
            <type>text/plain</type>
            <size>14631</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjQ3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDExLTEyLTA5ICAgQXJrbyBT
YWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTmFtZU5vZGVMaXN0Q2FjaGUgc2hv
dWxkIGJlIGludmFsaWRhdGVkIHdoZW4gbmFtZSBhdHRyaWJ1dGUgY2hhbmdlcy9tb2RpZmllZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODEwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFz
dC9kb20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLmh0bWwKKworICAgICAg
ICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFu
Y2hvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxB
cHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RW1iZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRN
TE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPYmplY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRt
bC9IVE1MUGFyYW1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJhbUVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKwogMjAxMS0xMi0wOSAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdGhlICJpcyBjdXJyZW50bHkg
ZHJhd2luZyBpbnRvIGxheWVyIiBmbGFnIG91dCBpbnRvIFNjcm9sbGJhclRoZW1lTWFjCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTAy
NDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyMSw4ICsyMjEsOSBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpCiAgICAgICAgICAgICAgICAgYXR0ci0+c2V0VmFsdWUobnVsbEF0b20pOwog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
bmFtZUF0dHIgfHwKLSAgICAgICAgICAgICBhdHRyLT5uYW1lKCkgPT0gdGl0bGVBdHRyKSB7Cisg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsKKyAgICAgICAgaW52YWxp
ZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CisgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gdGl0bGVBdHRyKSB7CiAgICAgICAgIC8vIERvIG5vdGhpbmcuCiAg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcmVsQXR0cikKICAgICAgICAgc2V0UmVsKGF0
dHItPnZhbHVlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDEwMjQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxl
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIHZvaWQgSFRNTEFw
cGxldEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRO
YW1lZEl0ZW0obmV3TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9uYW1lID0gbmV3TmFtZTsK
KyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7
CiAgICAgfSBlbHNlIGlmIChpc0lkQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpKSB7CiAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQgPSBhdHRyLT52YWx1ZSgpOwogICAgICAgICBp
ZiAoaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDI0NTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYg
KzIxMCw4IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEEKICAgICAg
ICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwg
Q1NTVmFsdWVOb25lKTsKICAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1
ZSwgImZhbHNlIikpCiAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJEcmFnLCBDU1NWYWx1ZU5vbmUpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IG5hbWVBdHRyKSB7CisgICAgICAgIGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVy
QXR0cmlidXRlQ2hhbmdlZCgpOwogI2lmIEVOQUJMRShNSUNST0RBVEEpCiAgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gaXRlbXByb3BBdHRyKSB7CiAgICAgICAgIHNldEl0ZW1Qcm9wKGF0
dHItPnZhbHVlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMDI0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDcgQEAgdm9pZCBIVE1MRW1i
ZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE5h
bWVkSXRlbSh2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9uYW1lID0gdmFsdWU7CisgICAg
ICAgIGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwogICAg
IH0gZWxzZQogICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShhdHRyKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAJKHJldmlzaW9uIDEwMjQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkyLDYgKzM5Miw3IEBAIHZvaWQgSFRNTEZvcm1F
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnUKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGROYW1l
ZEl0ZW0obmV3TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9uYW1lID0gbmV3TmFtZTsKKyAg
ICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
Y3BwCShyZXZpc2lvbiAxMDI0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIHZvaWQgSFRN
TEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXQKICAgICAgICAgbV9mcmFtZU5hbWUgPSBh
dHRyLT52YWx1ZSgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7
CiAgICAgICAgIG1fZnJhbWVOYW1lID0gYXR0ci0+dmFsdWUoKTsKKyAgICAgICAgaW52YWxpZGF0
ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgICAgIC8vIEZJWE1F
OiBJZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgdGhpcyBkb2Vzbid0IGFjdHVhbGx5IGNoYW5n
ZSB0aGUgZnJhbWUncyBuYW1lLgogICAgICAgICAvLyBGSVhNRTogSWYgd2UgYXJlIGFscmVhZHkg
YXR0YWNoZWQsIHRoaXMgZG9lc24ndCBjaGVjayBmb3IgZnJhbWUgbmFtZQogICAgICAgICAvLyBj
b25mbGljdHMgYW5kIGdlbmVyYXRlIGEgdW5pcXVlIGZyYW1lIG5hbWUuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkocmV2aXNpb24gMTAyNDUxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg0LDYgKzg0LDcgQEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZEV4dHJhTmFtZWRJdGVtKG5ld05hbWUpOwogICAg
ICAgICB9CiAgICAgICAgIG1fbmFtZSA9IG5ld05hbWU7CisgICAgICAgIGludmFsaWRhdGVOb2Rl
TGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGZyYW1lYm9yZGVyQXR0cikgewogICAgICAgICAvLyBGcmFtZSBib3JkZXIgZG9l
c24ndCByZWFsbHkgbWF0Y2ggdGhlIEhUTUw0IHNwZWMgZGVmaW5pdGlvbiBmb3IgaWZyYW1lcy4g
IEl0IHNpbXBseSBhZGRzCiAgICAgICAgIC8vIGEgcHJlc2VudGF0aW9uYWwgaGludCB0aGF0IHRo
ZSBib3JkZXIgc2hvdWxkIGJlIG9mZiBpZiBzZXQgdG8gemVyby4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTAyNDUxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQx
LDYgKzE0MSw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAg
ICAgICAgICAgIGRvY3VtZW50LT5hZGROYW1lZEl0ZW0obmV3TmFtZSk7CiAgICAgICAgIH0KICAg
ICAgICAgbV9uYW1lID0gbmV3TmFtZTsKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hl
QWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChpc0lkQXR0cmlidXRlTmFt
ZShhdHRyLT5uYW1lKCkpKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SWQgPSBh
dHRyLT52YWx1ZSgpOwogICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlz
SFRNTERvY3VtZW50KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMDI0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSw5IEBAIHZvaWQgSFRNTE1hcEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICAgICAgbV9uYW1lID0gZG9jdW1lbnQoKS0+
aXNIVE1MRG9jdW1lbnQoKSA/IG1hcE5hbWUubG93ZXIoKSA6IG1hcE5hbWU7CiAgICAgICAgIGlm
IChpbkRvY3VtZW50KCkpCiAgICAgICAgICAgICB0cmVlU2NvcGUoKS0+YWRkSW1hZ2VNYXAodGhp
cyk7CisKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IG5hbWVBdHRyKQorICAgICAgICAgICAgaW52
YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5j
cHAJKHJldmlzaW9uIDEwMjQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCB2b2lkIEhUTUxNZXRhRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNv
bnRlbnRBdHRyKQogICAgICAgICBwcm9jZXNzKCk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IG5hbWVBdHRyKSB7Ci0gICAgICAgIC8vIERvIG5vdGhpbmcuCisgICAgICAgIGludmFsaWRh
dGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIH0gZWxzZQogICAg
ICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTAyNDUx
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMiw2ICsxMjIsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkTmFtZWRJdGVtKG5ld05hbWUpOwog
ICAgICAgICB9CiAgICAgICAgIG1fbmFtZSA9IG5ld05hbWU7CisgICAgICAgIGludmFsaWRhdGVO
b2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGJvcmRlckF0dHIpCiAgICAgICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRlKGF0
dHIpOwogICAgIGVsc2UgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSkpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcAkocmV2aXNpb24gMTAy
NDUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCB2b2lkIEhUTUxQYXJhbUVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmliCiAgICAgICAgIG1fbmFtZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsKICAgICAgICAgbV9uYW1lID0gYXR0ci0+dmFs
dWUoKTsKKyAgICAgICAgaW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFu
Z2VkKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdmFsdWVBdHRyKSB7CiAgICAg
ICAgIG1fdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIH0gZWxzZQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTAyNDc3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMTItMDkgICBBcmtvIFNhaGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4K
KworICAgICAgICBOYW1lTm9kZUxpc3RDYWNoZSBzaG91bGQgYmUgaW52YWxpZGF0ZWQgd2hlbiBu
YW1lIGF0dHJpYnV0ZSBjaGFuZ2VzL21vZGlmaWVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA4MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL2dldGVsZW1lbnRzYnluYW1lLWludmFs
aWRhdGlvbi1jYWNoZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dl
dGVsZW1lbnRzYnluYW1lLWludmFsaWRhdGlvbi1jYWNoZS5odG1sOiBBZGRlZC4KKwogMjAxMS0x
Mi0wOSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbTXV0YXRp
b25PYnNlcnZlcnNdIEFkZCB0ZXN0IGZvciBkZWxpdmVyLWF0LWVuZC1vZi10YXNrIHNlbWFudGlj
cwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0
aW9uLWNhY2hlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9nZXRlbGVtZW50c2J5bmFtZS1pbnZhbGlkYXRpb24tY2FjaGUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxp
ZGF0aW9uLWNhY2hlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAor
VGhpcyB0ZXN0IGNhc2UgZW5zdXJlcyB0aGF0IG5hbWVOb2RlTGlzdENhY2hlIHNob3VsZCBiZSBp
bnZhbGlkYXRlIHdoZW4gbmFtZSBhdHRyaWJ1dGUgY2hhbmdlcy4KKworUEFTUyBjcmVhdGVUd29F
bGVtZW50cygnYScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5n
dGggaXMgMgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhJykuc2V0QXR0cmlidXRlKCdu
YW1lJywgJ2NoYW5nZWQtbmFtZScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5h
bWUnKS5sZW5ndGggaXMgMQorCitQQVNTIGNyZWF0ZVR3b0VsZW1lbnRzKCdhcHBsZXQnKTsgZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDIKK1BBU1MgZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignYXBwbGV0Jykuc2V0QXR0cmlidXRlKCduYW1lJywgJ2NoYW5n
ZWQtbmFtZScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGgg
aXMgMQorCitQQVNTIGNyZWF0ZVR3b0VsZW1lbnRzKCdlbWJlZCcpOyBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCdlbWJlZCcpLnNldEF0dHJpYnV0ZSgnbmFtZScsICdjaGFuZ2VkLW5hbWUnKTsgZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDEKKworUEFTUyBj
cmVhdGVUd29FbGVtZW50cygnc2VjdGlvbicpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgn
ZnVsbG5hbWUnKS5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzZWN0
aW9uJykuc2V0QXR0cmlidXRlKCduYW1lJywgJ2NoYW5nZWQtbmFtZScpOyBkb2N1bWVudC5nZXRF
bGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMgMQorCitQQVNTIGNyZWF0ZVR3b0Vs
ZW1lbnRzKCdmcmFtZScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5s
ZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmcmFtZScpLnNldEF0dHJp
YnV0ZSgnbmFtZScsICdjaGFuZ2VkLW5hbWUnKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUo
J2Z1bGxuYW1lJykubGVuZ3RoIGlzIDEKKworUEFTUyBjcmVhdGVUd29FbGVtZW50cygnZm9ybScp
OyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMgMgorUEFT
UyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmb3JtJykuc2V0QXR0cmlidXRlKCduYW1lJywgJ2No
YW5nZWQtbmFtZScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5n
dGggaXMgMQorCitQQVNTIGNyZWF0ZVR3b0VsZW1lbnRzKCdpZnJhbWUnKTsgZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3RoIGlzIDIKK1BBU1MgZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignaWZyYW1lJykuc2V0QXR0cmlidXRlKCduYW1lJywgJ2NoYW5nZWQtbmFtZScp
OyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMgMQorCitQ
QVNTIGNyZWF0ZVR3b0VsZW1lbnRzKCdpbWcnKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUo
J2Z1bGxuYW1lJykubGVuZ3RoIGlzIDIKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW1n
Jykuc2V0QXR0cmlidXRlKCduYW1lJywgJ2NoYW5nZWQtbmFtZScpOyBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMgMQorCitQQVNTIGNyZWF0ZVR3b0VsZW1l
bnRzKCdtYXAnKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVuZ3Ro
IGlzIDIKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWFwJykuc2V0QXR0cmlidXRlKCdu
YW1lJywgJ2NoYW5nZWQtbmFtZScpOyBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5h
bWUnKS5sZW5ndGggaXMgMQorCitQQVNTIGNyZWF0ZVR3b0VsZW1lbnRzKCdtZXRhJyk7IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAyCitQQVNTIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGEnKS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnY2hhbmdlZC1u
YW1lJyk7IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAx
CisKK1BBU1MgY3JlYXRlVHdvRWxlbWVudHMoJ29iamVjdCcpOyBkb2N1bWVudC5nZXRFbGVtZW50
c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdvYmplY3QnKS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnY2hhbmdlZC1uYW1lJyk7IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxsbmFtZScpLmxlbmd0aCBpcyAxCisKK1BBU1MgY3Jl
YXRlVHdvRWxlbWVudHMoJ3BhcmFtJyk7IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdmdWxs
bmFtZScpLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3BhcmFtJyku
c2V0QXR0cmlidXRlKCduYW1lJywgJ2NoYW5nZWQtbmFtZScpOyBkb2N1bWVudC5nZXRFbGVtZW50
c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGggaXMgMQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieW5hbWUtaW52YWxpZGF0aW9uLWNhY2hl
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRlbGVtZW50c2J5
bmFtZS1pbnZhbGlkYXRpb24tY2FjaGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRo
aXMgdGVzdCBjYXNlIGVuc3VyZXMgdGhhdCBuYW1lTm9kZUxpc3RDYWNoZSBzaG91bGQgYmUgaW52
YWxpZGF0ZSB3aGVuIG5hbWUgYXR0cmlidXRlIGNoYW5nZXMuPC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGVsZW1lbnQxOwordmFyIGVsZW1lbnQyOworCitmdW5j
dGlvbiBjcmVhdGVFbGVtZW50KHR5cGUsIHByb3BlcnRpZXMpCit7CisgICAgdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpOworCisgICAgZm9yICh2YXIgaSBpbiBwcm9w
ZXJ0aWVzKQorICAgICAgaWYgKHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoaSkpCisgICAgICAg
IGVsZW1lbnQuc2V0QXR0cmlidXRlKGkscHJvcGVydGllc1tpXSk7CisKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIHJldHVybiBlbGVtZW50OworfQorCitmdW5j
dGlvbiBjcmVhdGVUd29FbGVtZW50cyh0YWdOYW1lKQoreworICAgIGVsZW1lbnQxID0gY3JlYXRl
RWxlbWVudCh0YWdOYW1lLCB7bmFtZTogJ2Z1bGxuYW1lJ30pOworICAgIGVsZW1lbnQyID0gY3Jl
YXRlRWxlbWVudCh0YWdOYW1lLCB7bmFtZTogJ2Z1bGxuYW1lJ30pOworfQorCitmdW5jdGlvbiBy
dW5UZXN0KHRhZ05hbWUpCit7CisgICAgc2hvdWxkQmUoImNyZWF0ZVR3b0VsZW1lbnRzKCciICsg
dGFnTmFtZSArICInKTsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2Z1bGxuYW1lJykubGVu
Z3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignIiArIHRh
Z05hbWUgKyAiJykuc2V0QXR0cmlidXRlKCduYW1lJywgJ2NoYW5nZWQtbmFtZScpOyBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5TmFtZSgnZnVsbG5hbWUnKS5sZW5ndGgiLCAiMSIpOworICAgIGRvY3Vt
ZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudDEpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQoZWxlbWVudDIpOworICAgIGRlYnVnKCcnKTsKK30KKworcnVuVGVzdCgnYScpOworcnVu
VGVzdCgnYXBwbGV0Jyk7CitydW5UZXN0KCdlbWJlZCcpOworcnVuVGVzdCgnc2VjdGlvbicpOwor
cnVuVGVzdCgnZnJhbWUnKTsKK3J1blRlc3QoJ2Zvcm0nKTsKK3J1blRlc3QoJ2lmcmFtZScpOwor
cnVuVGVzdCgnaW1nJyk7CitydW5UZXN0KCdtYXAnKTsKK3J1blRlc3QoJ21ldGEnKTsKK3J1blRl
c3QoJ29iamVjdCcpOworcnVuVGVzdCgncGFyYW0nKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>