<?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>78734</bug_id>
          
          <creation_ts>2012-02-15 13:15:39 -0800</creation_ts>
          <short_desc>Modify HTML parser to support &lt;template&gt; element</short_desc>
          <delta_ts>2012-11-28 12:30:25 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>86031</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>78733</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
    
    <cc>arv</cc>
    
    <cc>morrita</cc>
    
    <cc>rafaelw</cc>
    
    <cc>shinyak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>557494</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-15 13:15:39 -0800</bug_when>
    <thetext>Modify HTML parser to support &lt;template&gt; element</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557496</commentid>
    <comment_count>1</comment_count>
      <attachid>127223</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-15 13:18:08 -0800</bug_when>
    <thetext>Created attachment 127223
WIP: First stab.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557499</commentid>
    <comment_count>2</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-15 13:19:13 -0800</bug_when>
    <thetext>For the moment, this is a playground for me to learn about parser and understand what changes to the algorithm are necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557505</commentid>
    <comment_count>3</comment_count>
      <attachid>127223</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-15 13:32:01 -0800</bug_when>
    <thetext>Comment on attachment 127223
WIP: First stab.

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

I know you said that this patch was a just a playground, but I thought the comments below might be helpful:

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2248
&gt; +        if (token.name() == templateTag) {
&gt; +            m_tree.openElements()-&gt;pop();
&gt; +            return;
&gt; +        }

This change is slightly surprising.  You could be popping any sort of element off the stack, not necessarily a template element.  You probably either want:

if (m_tree.currentNode()-&gt;hasTagName(templateTag)) {
    m_tree.openElements()-&gt;pop();
    return;
}

or

m_tree.openElements()-&gt;popUntilPopped(templateTag.localName());
resetInsertionModeAppropriately();
return;

That&apos;s likely what&apos;s triggering your ASSERT on line 1686.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2275
&gt; +    case TemplateContentsMode:
&gt; +        m_tree.openElements()-&gt;pop();
&gt; +        resetInsertionModeAppropriately();
&gt; +        break;

This parsing might be somewhat surprising:

&lt;div&gt;&lt;template&gt;&lt;/div&gt;Hello

I think it would result in the following DOM:

- &lt;div&gt;
    - &lt;template&gt;
    - #text: hello

I&apos;m not 100% sure what the best thing to do in this case is.  Maybe:

1) If the end tag is &lt;/template&gt;, then pop the open elements.
2) otherwise, pop the pop the open elements, reset the insertion mode, and reprocess the token

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557507</commentid>
    <comment_count>4</comment_count>
      <attachid>127223</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-15 13:33:38 -0800</bug_when>
    <thetext>Comment on attachment 127223
WIP: First stab.

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

&gt; LayoutTests/html5lib/resources/template.dat:187
&gt; +|     &lt;table&gt;
&gt; +|       &lt;thead&gt;
&gt; +|         &lt;template&gt;
&gt; +|           &lt;tr&gt;
&gt; +|             &lt;td&gt;

This case is interesting. Where should implied &lt;tr&gt; appear?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557517</commentid>
    <comment_count>5</comment_count>
      <attachid>127223</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-15 13:40:46 -0800</bug_when>
    <thetext>Comment on attachment 127223
WIP: First stab.

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

&gt;&gt; LayoutTests/html5lib/resources/template.dat:187
&gt;&gt; +|             &lt;td&gt;
&gt; 
&gt; This case is interesting. Where should implied &lt;tr&gt; appear?

Conceptually, from a parsing point of view, what you&apos;ve written here is the most natural.  The &lt;td&gt; creates the implied &lt;tr&gt;, and it would do so as a child of the currently open element, which is the &lt;template&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557521</commentid>
    <comment_count>6</comment_count>
      <attachid>127223</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-15 13:50:39 -0800</bug_when>
    <thetext>Comment on attachment 127223
WIP: First stab.

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

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2248
&gt;&gt; +        }
&gt; 
&gt; This change is slightly surprising.  You could be popping any sort of element off the stack, not necessarily a template element.  You probably either want:
&gt; 
&gt; if (m_tree.currentNode()-&gt;hasTagName(templateTag)) {
&gt;     m_tree.openElements()-&gt;pop();
&gt;     return;
&gt; }
&gt; 
&gt; or
&gt; 
&gt; m_tree.openElements()-&gt;popUntilPopped(templateTag.localName());
&gt; resetInsertionModeAppropriately();
&gt; return;
&gt; 
&gt; That&apos;s likely what&apos;s triggering your ASSERT on line 1686.

Yay, thanks! I misunderstood what token means in this context.

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2275
&gt;&gt; +        break;
&gt; 
&gt; This parsing might be somewhat surprising:
&gt; 
&gt; &lt;div&gt;&lt;template&gt;&lt;/div&gt;Hello
&gt; 
&gt; I think it would result in the following DOM:
&gt; 
&gt; - &lt;div&gt;
&gt;     - &lt;template&gt;
&gt;     - #text: hello
&gt; 
&gt; I&apos;m not 100% sure what the best thing to do in this case is.  Maybe:
&gt; 
&gt; 1) If the end tag is &lt;/template&gt;, then pop the open elements.
&gt; 2) otherwise, pop the pop the open elements, reset the insertion mode, and reprocess the token
&gt; 
&gt; ?

Oh, right. Yes. I think your plan makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557535</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-15 14:08:11 -0800</bug_when>
    <thetext>There&apos;s a general question of how &quot;scoping&quot; you want &lt;/template&gt; to be.  In the

&lt;div&gt;&lt;template&gt;&lt;/div&gt;Hello

example, there are two reasonable parses:

- &lt;div&gt;
  - &lt;template&gt;
    - #text: Hello

or

- &lt;div&gt;
  - &lt;template&gt;
- #text: Hello

In the first case, &lt;template&gt; is strongly scoping, which means it&apos;s hard to escape from the template element&apos;s scope.  In the second case, the template element isn&apos;t very scoping, which means the &lt;/div&gt; token can find and close the div element.

I&apos;d recommend trying to match the scoping of down-rev parsers as much as feasible, which, in this case, means you&apos;ll want the second (less scoping) parsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557536</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-15 14:10:16 -0800</bug_when>
    <thetext>Some examples:

&lt;div&gt;&lt;object&gt;&lt;/div&gt;Hello
&lt;div&gt;&lt;foo&gt;&lt;/div&gt;Hello

These examples parse differently because &lt;object&gt; is pretty strongly scoping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562436</commentid>
    <comment_count>9</comment_count>
      <attachid>128299</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-22 15:15:51 -0800</bug_when>
    <thetext>Created attachment 128299
Moar better, moar tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562464</commentid>
    <comment_count>10</comment_count>
      <attachid>128299</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-22 15:35:14 -0800</bug_when>
    <thetext>Comment on attachment 128299
Moar better, moar tests.

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

This is starting to look really good.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2281
&gt; +    case TemplateContentsMode:
&gt; +        if (token.name() == templateTag) {
&gt; +            m_tree.openElements()-&gt;pop();
&gt; +            resetInsertionModeAppropriately();
&gt; +        }
&gt; +        break;

Can you ASSERT here that the top element is a templateTag?

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2578
&gt; +    case TemplateContentsMode:
&gt; +        // FIXME: What should we do here?

Probably pop the &lt;template&gt; element off the stack of open element, reset the insertion mode appropriately, and reprocess the token.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562604</commentid>
    <comment_count>11</comment_count>
      <attachid>128299</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-22 17:22:12 -0800</bug_when>
    <thetext>Comment on attachment 128299
Moar better, moar tests.

Don&apos;t you hide &lt;template&gt; behind the flag?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562621</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-22 17:35:03 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 128299 [details])
&gt; Don&apos;t you hide &lt;template&gt; behind the flag?

Nah. This patch is just for me to learn what to write in the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562642</commentid>
    <comment_count>13</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-22 17:56:34 -0800</bug_when>
    <thetext>
&gt; Nah. This patch is just for me to learn what to write in the spec.
Ah got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563594</commentid>
    <comment_count>14</comment_count>
      <attachid>128579</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-23 15:57:51 -0800</bug_when>
    <thetext>Created attachment 128579
Faster, harder, stronger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778169</commentid>
    <comment_count>15</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-11-28 12:13:04 -0800</bug_when>
    <thetext>Dimtiri, can we close this now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778177</commentid>
    <comment_count>16</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-28 12:17:23 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Dimtiri, can we close this now?

Yes sir! Please dupe it against the real bug for future archeologists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778194</commentid>
    <comment_count>17</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2012-11-28 12:30:25 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 86031 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127223</attachid>
            <date>2012-02-15 13:18:08 -0800</date>
            <delta_ts>2012-02-22 15:15:46 -0800</delta_ts>
            <desc>WIP: First stab.</desc>
            <filename>bug-78734-20120215131807.patch</filename>
            <type>text/plain</type>
            <size>12105</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNlNTMwNWZkMjhjMDJj
ZTQzMTQzYzFhYzEzNzRmYjk1MWQyOWVmNy4uNzVhNWNmZDNiZGVjYTk0MjY3YjQ0OTA1NTc5Njlh
YjQ1N2M3NTJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTE1ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW9kaWZ5IEhU
TUwgcGFyc2VyIHRvIHN1cHBvcnQgPHRlbXBsYXRlPiBlbGVtZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODczNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisg
ICAgICAgICogaHRtbC9IVE1MVGFnTmFtZXMuaW46CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TEVsZW1lbnRTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpw
b3BVbnRpbFRhYmxlU2NvcGVNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRT
dGFjazo6cG9wVW50aWxUYWJsZUJvZHlTY29wZU1hcmtlcik6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVs
eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisKIDIwMTItMDItMTMg
IFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGlu
Y2x1ZGUgYSBzZXBhcmF0b3IgYmVmb3JlIHRoZSAiSW5zcGVjdCBFbGVtZW50IiBjb250ZXh0IG1l
bnUgaXRlbSB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaXMgZW1wdHkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhZ05hbWVzLmluCmluZGV4IDYyYmE1MDEwMDBjNjc5ODdmYTQyNWU4YzViYWIzOGE1MTFkMjQ4
MDQuLjBiNDgyM2ZlYTc1MDlmYTg2Zjg2Y2Q1ZWU2YjQzMDg4N2VkYzE1ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhZ05hbWVzLmluCkBAIC0xMjAsNiArMTIwLDcgQEAgc3VwIGludGVyZmFjZU5h
bWU9SFRNTEVsZW1lbnQKIHRhYmxlCiB0Ym9keSBpbnRlcmZhY2VOYW1lPUhUTUxUYWJsZVNlY3Rp
b25FbGVtZW50CiB0ZCBpbnRlcmZhY2VOYW1lPUhUTUxUYWJsZUNlbGxFbGVtZW50Cit0ZW1wbGF0
ZSBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiB0ZXh0YXJlYSBpbnRlcmZhY2VOYW1lPUhUTUxU
ZXh0QXJlYUVsZW1lbnQsIGNvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudAogdGZvb3QgaW50ZXJm
YWNlTmFtZT1IVE1MVGFibGVTZWN0aW9uRWxlbWVudAogdGggaW50ZXJmYWNlTmFtZT1IVE1MVGFi
bGVDZWxsRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVu
dFN0YWNrLmNwcAppbmRleCA5ODg4NTc0M2U3NzY4NjU2NmY5Mjk3ZjY1NDYzMTMwOGRhMzQ0YTdl
Li44NmUxZjlhYzExZWZkNjc3MGFiMjJmZmYzMDllNTJiMGZhOWFmYTM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtMjUyLDE0ICsy
NTIsMTQgQEAgdm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwb3BVbnRpbFBvcHBlZChFbGVtZW50KiBl
bGVtZW50KQogdm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwb3BVbnRpbFRhYmxlU2NvcGVNYXJrZXIo
KQogewogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50
LXdvcmsvbXVsdGlwYWdlL3Rva2VuaXphdGlvbi5odG1sI2NsZWFyLXRoZS1zdGFjay1iYWNrLXRv
LWEtdGFibGUtY29udGV4dAotICAgIHdoaWxlICghaXNUYWJsZVNjb3BlTWFya2VyKHRvcE5vZGUo
KSkpCisgICAgd2hpbGUgKCEoaXNUYWJsZVNjb3BlTWFya2VyKHRvcE5vZGUoKSkgfHwgdG9wTm9k
ZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGVtcGxhdGVUYWcpKSkKICAgICAgICAgcG9wKCk7
CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wVW50aWxUYWJsZUJvZHlTY29wZU1hcmtl
cigpCiB7CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjY2xlYXItdGhlLXN0YWNrLWJhY2st
dG8tYS10YWJsZS1ib2R5LWNvbnRleHQKLSAgICB3aGlsZSAoIWlzVGFibGVCb2R5U2NvcGVNYXJr
ZXIodG9wTm9kZSgpKSkKKyAgICB3aGlsZSAoIShpc1RhYmxlQm9keVNjb3BlTWFya2VyKHRvcE5v
ZGUoKSkgfHwgdG9wTm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGVtcGxhdGVUYWcpKSkK
ICAgICAgICAgcG9wKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDlkODM5MTIwZGJhYzc3YzBkMjBiM2E5YjFjM2FiOTExMDU2
NzJlNjguLjVkZGJmZTdiMmI3NGZjZDVlYTMzNzljNjIxNzc1OTQzZjMyZThlNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMTkyLDYg
KzE5Miw3IEBAIGJvb2wgaXNTcGVjaWFsTm9kZShOb2RlKiBub2RlKQogICAgICAgICB8fCB0YWdO
YW1lID09IHRhYmxlVGFnCiAgICAgICAgIHx8IGlzVGFibGVCb2R5Q29udGV4dFRhZyh0YWdOYW1l
KQogICAgICAgICB8fCB0YWdOYW1lID09IHRkVGFnCisgICAgICAgIHx8IHRhZ05hbWUgPT0gdGVt
cGxhdGVUYWcKICAgICAgICAgfHwgdGFnTmFtZSA9PSB0ZXh0YXJlYVRhZwogICAgICAgICB8fCB0
YWdOYW1lID09IHRoVGFnCiAgICAgICAgIHx8IHRhZ05hbWUgPT0gdGl0bGVUYWcKQEAgLTEwOTIs
NiArMTA5MywxMiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5U
YWJsZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9r
ZW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gdGVt
cGxhdGVUYWcpIHsKKyAgICAgICAgbV90cmVlLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpLT5h
cHBlbmRNYXJrZXIoKTsKKyAgICAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsK
KyAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShUZW1wbGF0ZUNvbnRlbnRzTW9kZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAgICAgaWYgKGlzVGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi5uYW1l
KCkpKSB7CiAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wVW50aWxUYWJsZVNjb3Bl
TWFya2VyKCk7CiAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7CkBAIC0x
NDMxLDYgKzE0MzgsMTEgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgbV90cmVlLmluc2VydEhUTUxFbGVt
ZW50KHRva2VuKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAo
dG9rZW4ubmFtZSgpID09IHRlbXBsYXRlVGFnKSB7CisgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0
SFRNTEVsZW1lbnQodG9rZW4pOworICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShUZW1wbGF0
ZUNvbnRlbnRzTW9kZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAg
aWYgKHRva2VuLm5hbWUoKSA9PSBzZWxlY3RUYWcpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3Io
dG9rZW4pOwogICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW5U
eXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOwpAQCAtMTQ2Myw2ICsxNDc1LDIw
IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2Vu
JiB0b2tlbikKICAgICBjYXNlIFRleHRNb2RlOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUZW1wbGF0ZUNvbnRlbnRzTW9kZToKKyAgICAg
ICAgaWYgKGlzQ2FwdGlvbkNvbE9yQ29sZ3JvdXBUYWcodG9rZW4ubmFtZSgpKQorICAgICAgICAg
ICAgfHwgaXNUYWJsZUJvZHlDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpIHsKKyAgICAgICAgICAg
IHNldEluc2VydGlvbk1vZGUoSW5UYWJsZU1vZGUpOworICAgICAgICAgICAgcHJvY2Vzc1N0YXJ0
VGFnRm9ySW5UYWJsZSh0b2tlbik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNUYWJsZUNlbGxDb250
ZXh0VGFnKHRva2VuLm5hbWUoKSkKKyAgICAgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9PSB0clRh
ZykgeworICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJblRhYmxlQm9keU1vZGUpOworICAg
ICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHNldEluc2VydGlvbk1vZGUoSW5Cb2R5TW9kZSk7CisgICAgICAgICAgICBwcm9jZXNz
U3RhcnRUYWdGb3JJbkJvZHkodG9rZW4pOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KIApAQCAtMTY1Niw3ICsxNjgyLDggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0
SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogICAgICAgICAgICAgbm9kZSA9IG1fZnJhZ21l
bnRDb250ZXh0LmNvbnRleHRFbGVtZW50KCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkgewotICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0Zy
YWdtZW50KCkpOworICAgICAgICAgICAgLy8gRklYTUU6IEludGVyZXN0aW5nLiBXaHkgZG8gSSBu
ZWVkIHRvIGNvbW1lbnQgb3V0IHRoaXMgQVNTRVJUPworLy8gICAgICAgICAgICBBU1NFUlQoaXNQ
YXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJ
blNlbGVjdE1vZGUpOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRk
VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHRoVGFnKSkKQEAgLTIyMTUsNiArMjI0MiwxMCBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KKyAgICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSB0ZW1wbGF0ZVRhZykgeworICAg
ICAgICAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wb3AoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IG9wdGlvblRhZykgewog
ICAgICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKG9wdGlvblRh
ZykpIHsKICAgICAgICAgICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcCgpOwpAQCAt
MjIzOCw2ICsyMjY5LDEwIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIGRlZmF1bHRGb3JJblRhYmxlVGV4dCgpOwog
ICAgICAgICBwcm9jZXNzRW5kVGFnKHRva2VuKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
ZW1wbGF0ZUNvbnRlbnRzTW9kZToKKyAgICAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wb3Ao
KTsKKyAgICAgICAgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpOworICAgICAgICBi
cmVhazsKICAgICB9CiB9CiAKQEAgLTI0MzQsNiArMjQ2OSwxNiBAQCBSZXByb2Nlc3NCdWZmZXI6
CiAgICAgICAgIC8vIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMuCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KKyAgICBjYXNlIFRlbXBsYXRlQ29udGVudHNNb2RlOiB7CisgICAgICAgIFN0cmluZyBs
ZWFkaW5nV2hpdGVzcGFjZSA9IGJ1ZmZlci50YWtlUmVtYWluaW5nV2hpdGVzcGFjZSgpOworICAg
ICAgICBpZiAoIWxlYWRpbmdXaGl0ZXNwYWNlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8g
RklYTUU6IFdoeSBpcyB0aGlzIGhlcmU/CisgICAgICAgICAgICBtX3RyZWUucmVjb25zdHJ1Y3RU
aGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTsKKyAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRU
ZXh0Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSwgQWxsV2hpdGVzcGFjZSk7CisgICAgICAgIH0KKyAg
ICAgICAgLy8gRklYTUU6IFdoYXQgZWxzZSBzaG91bGQgd2UgZG8gaGVyZT8KKyAgICAgICAgYnJl
YWs7CisgICAgfQogICAgIH0KIH0KIApAQCAtMjUyMyw2ICsyNTY4LDkgQEAgdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAg
ICAgc2V0SW5zZXJ0aW9uTW9kZShtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSk7CiAgICAgICAgIHBy
b2Nlc3NFbmRPZkZpbGUodG9rZW4pOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBUZW1wbGF0
ZUNvbnRlbnRzTW9kZToKKyAgICAgICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHdlIGRvIGhlcmU/
CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlQobV90cmVlLmN1cnJlbnROb2RlKCkp
OwogICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wQWxsKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCmluZGV4IDAxODNkMjBjYWUxY2VhMjc5ZGZh
OWZmNDczNGU4OGJjNGY2ZDY1YmIuLjVmM2QzODlmNTI2ZjUxMThiM2ExNmYzMWMyOTg3MWYyNTgz
N2ZhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5o
CkBAIC0xMTUsNiArMTE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQWZ0ZXJGcmFtZXNldE1vZGUs
CiAgICAgICAgIEFmdGVyQWZ0ZXJCb2R5TW9kZSwKICAgICAgICAgQWZ0ZXJBZnRlckZyYW1lc2V0
TW9kZSwKKyAgICAgICAgVGVtcGxhdGVDb250ZW50c01vZGUsCiAgICAgfTsKIAogICAgIEhUTUxU
cmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXIqLCBIVE1MRG9jdW1lbnQqLCBib29sIHJlcG9y
dEVycm9ycywgYm9vbCB1c2VQcmVIVE1MNVBhcnNlclF1aXJrcywgdW5zaWduZWQgbWF4aW11bURP
TVRyZWVEZXB0aCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMv
dGVtcGxhdGUuZGF0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL3RlbXBsYXRlLmRh
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNmEzYTFiNDljNmJkZmQ5NDZmNDdjZmM5ZGE1Y2Y3MzA3Y2JlZTBmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL3RlbXBsYXRl
LmRhdApAQCAtMCwwICsxLDIwMCBAQAorI2RhdGEKKzx0YWJsZT48dGVtcGxhdGU+PC90ZW1wbGF0
ZT48L3RhYmxlPgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAg
IDxib2R5PgorfCAgICAgPHRhYmxlPgorfCAgICAgICA8dGVtcGxhdGU+CisKKyNkYXRhCis8dGFi
bGU+PHRlbXBsYXRlPjwvdGVtcGxhdGU+PC9kaXY+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPGh0
bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICA8dGFibGU+Cit8ICAgICAgIDx0ZW1w
bGF0ZT4KKworI2RhdGEKKzx0YWJsZT48ZGl2Pjx0ZW1wbGF0ZT48L3RlbXBsYXRlPjwvZGl2Pgor
I2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAg
ICAgPGRpdj4KK3wgICAgICAgPHRlbXBsYXRlPgorfCAgICAgPHRhYmxlPgorCisjZGF0YQorPHRh
YmxlPjx0ZW1wbGF0ZT48L3RlbXBsYXRlPjxkaXY+PC9kaXY+CisjZXJyb3JzCisjZG9jdW1lbnQK
K3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICA8ZGl2PgorfCAgICAgPHRh
YmxlPgorfCAgICAgICA8dGVtcGxhdGU+CisKKyNkYXRhCis8dGFibGU+ICAgPHRlbXBsYXRlPjwv
dGVtcGxhdGU+PC90YWJsZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVh
ZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgIiAgICIKK3wgICAgICAgPHRl
bXBsYXRlPgorCisjZGF0YQorPHRhYmxlPjx0Ym9keT48dGVtcGxhdGU+PC90ZW1wbGF0ZT48L3Ri
b2R5PgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5
PgorfCAgICAgPHRhYmxlPgorfCAgICAgICA8dGJvZHk+Cit8ICAgICAgICAgPHRlbXBsYXRlPgor
CisjZGF0YQorPHRhYmxlPjx0Ym9keT48dGVtcGxhdGU+PC90Ym9keT48L3RlbXBsYXRlPgorI2Vy
cm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAg
PHRhYmxlPgorfCAgICAgICA8dGJvZHk+Cit8ICAgICAgICAgPHRlbXBsYXRlPgorCisjZGF0YQor
PHRhYmxlPjx0Ym9keT48dGVtcGxhdGU+PC90ZW1wbGF0ZT48L3Rib2R5PjwvdGFibGU+CisjZXJy
b3JzCisjZG9jdW1lbnQKK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICA8
dGFibGU+Cit8ICAgICAgIDx0Ym9keT4KK3wgICAgICAgICA8dGVtcGxhdGU+CisKKyNkYXRhCis8
dGFibGU+PHRoZWFkPjx0ZW1wbGF0ZT48L3RlbXBsYXRlPjwvdGhlYWQ+CisjZXJyb3JzCisjZG9j
dW1lbnQKK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICA8dGFibGU+Cit8
ICAgICAgIDx0aGVhZD4KK3wgICAgICAgICA8dGVtcGxhdGU+CisKKyNkYXRhCis8dGFibGU+PHRm
b290Pjx0ZW1wbGF0ZT48L3RlbXBsYXRlPjwvdGZvb3Q+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wg
PGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICA8dGFibGU+Cit8ICAgICAgIDx0
Zm9vdD4KK3wgICAgICAgICA8dGVtcGxhdGU+CisKKyNkYXRhCis8c2VsZWN0Pjx0ZW1wbGF0ZT48
L3RlbXBsYXRlPjwvc2VsZWN0PgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxo
ZWFkPgorfCAgIDxib2R5PgorfCAgICAgPHNlbGVjdD4KK3wgICAgICAgPHRlbXBsYXRlPgorCisj
ZGF0YQorPHNlbGVjdD48b3B0aW9uPjx0ZW1wbGF0ZT48L3RlbXBsYXRlPjwvc2VsZWN0PgorI2Vy
cm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAg
PHNlbGVjdD4KK3wgICAgICAgPG9wdGlvbj4KK3wgICAgICAgICA8dGVtcGxhdGU+CisKKyNkYXRh
Cis8c2VsZWN0PjxvcHRpb24+PC9vcHRpb24+PHRlbXBsYXRlPgorI2Vycm9ycworI2RvY3VtZW50
Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgPHNlbGVjdD4KK3wgICAg
ICAgPG9wdGlvbj4KK3wgICAgICAgPHRlbXBsYXRlPgorCisjZGF0YQorPHNlbGVjdD48b3B0aW9u
Pjwvb3B0aW9uPjx0ZW1wbGF0ZT48b3B0aW9uPgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1s
PgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgPHNlbGVjdD4KK3wgICAgICAgPG9wdGlv
bj4KK3wgICAgICAgPHRlbXBsYXRlPgorfCAgICAgICAgIDxvcHRpb24+CisKKyNkYXRhCis8dGFi
bGU+PHRlbXBsYXRlPjx0aGVhZD48L3RlbXBsYXRlPjwvdGFibGU+CisjZXJyb3JzCisjZG9jdW1l
bnQKK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICA8dGFibGU+Cit8ICAg
ICAgIDx0ZW1wbGF0ZT4KK3wgICAgICAgICA8dGhlYWQ+CisKKyNkYXRhCis8dGFibGU+PHRoZWFk
Pjx0ZW1wbGF0ZT48dHI+PC90ZW1wbGF0ZT48L3RhYmxlPgorI2Vycm9ycworI2RvY3VtZW50Cit8
IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgPHRhYmxlPgorfCAgICAgICA8
dGhlYWQ+Cit8ICAgICAgICAgPHRlbXBsYXRlPgorfCAgICAgICAgICAgPHRyPgorCisjZGF0YQor
PHRhYmxlPjx0aGVhZD48dGVtcGxhdGU+PHRkPjwvdGVtcGxhdGU+PC90YWJsZT4KKyNlcnJvcnMK
KyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJs
ZT4KK3wgICAgICAgPHRoZWFkPgorfCAgICAgICAgIDx0ZW1wbGF0ZT4KK3wgICAgICAgICAgIDx0
cj4KK3wgICAgICAgICAgICAgPHRkPgorCisjZGF0YQorPHRhYmxlPjx0ZW1wbGF0ZT48dHI+PC90
ZW1wbGF0ZT48L3RhYmxlPgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFk
PgorfCAgIDxib2R5PgorfCAgICAgPHRhYmxlPgorfCAgICAgICA8dGhlYWQ+Cit8ICAgICAgICAg
PHRlbXBsYXRlPgorfCAgICAgICAgICAgPHRyPgorfCAgICAgICAgICAgICA8dGQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW4tdGVtcGxhdGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHRtbDVsaWIvcnVuLXRlbXBsYXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZWZlMzI0YjAxMjllNjFjOTEyNGU1NTgwOTI4MmE5NWQwYmFhYWU3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVuLXRlbXBsYXRlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxIEBACityZXNvdXJjZXMvdGVtcGxhdGUuZGF0OiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odG1sNWxpYi9ydW4tdGVtcGxhdGUuaHRtbCBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1
bi10ZW1wbGF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4MTEyOWEwZTE2ZmZlYWM0NDQ5YjNlOTE3YWM0
ZDQxOWNiNjRmZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW4t
dGVtcGxhdGUuaHRtbApAQCAtMCwwICsxLDggQEAKKzwhZG9jdHlwZSBodG1sPgorPHNjcmlwdD4K
K3ZhciB0ZXN0X2ZpbGVzID0gWworICAncmVzb3VyY2VzL3RlbXBsYXRlLmRhdCcsCitdCis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128299</attachid>
            <date>2012-02-22 15:15:51 -0800</date>
            <delta_ts>2012-02-23 15:57:46 -0800</delta_ts>
            <desc>Moar better, moar tests.</desc>
            <filename>bug-78734-20120222151550.patch</filename>
            <type>text/plain</type>
            <size>16172</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRlNGEyNDMzOTc1Yjhh
ZGZkZjNhZDQwYjg5ZGRlZTQ0NzhlMjA3YS4uZTdlMDc5MzMxNTc0MDVhZWM2YTAyOWFlODI0NmUy
Njg0NjMzODU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTE1ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW9kaWZ5IEhU
TUwgcGFyc2VyIHRvIHN1cHBvcnQgPHRlbXBsYXRlPiBlbGVtZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODczNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisg
ICAgICAgICogaHRtbC9IVE1MVGFnTmFtZXMuaW46CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TEVsZW1lbnRTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpw
b3BVbnRpbFRhYmxlU2NvcGVNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRT
dGFjazo6cG9wVW50aWxUYWJsZUJvZHlTY29wZU1hcmtlcik6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVs
eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisKIDIwMTItMDItMjEg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
IFdlYkF1ZGlvIGJ1aWxkIGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFnTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgpp
bmRleCA2MmJhNTAxMDAwYzY3OTg3ZmE0MjVlOGM1YmFiMzhhNTExZDI0ODA0Li4wYjQ4MjNmZWE3
NTA5ZmE4NmY4NmNkNWVlNmI0MzA4ODdlZGMxNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWdOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdO
YW1lcy5pbgpAQCAtMTIwLDYgKzEyMCw3IEBAIHN1cCBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50
CiB0YWJsZQogdGJvZHkgaW50ZXJmYWNlTmFtZT1IVE1MVGFibGVTZWN0aW9uRWxlbWVudAogdGQg
aW50ZXJmYWNlTmFtZT1IVE1MVGFibGVDZWxsRWxlbWVudAordGVtcGxhdGUgaW50ZXJmYWNlTmFt
ZT1IVE1MRWxlbWVudAogdGV4dGFyZWEgaW50ZXJmYWNlTmFtZT1IVE1MVGV4dEFyZWFFbGVtZW50
LCBjb25zdHJ1Y3Rvck5lZWRzRm9ybUVsZW1lbnQKIHRmb290IGludGVyZmFjZU5hbWU9SFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQKIHRoIGludGVyZmFjZU5hbWU9SFRNTFRhYmxlQ2VsbEVsZW1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKaW5k
ZXggOWNjM2EwMzE2NmU1MTFhYjI1ODY3MmY0M2NiNzAwODE1Yzc3NDAyNC4uNGRmMDM1MWY0YTMz
YmMzZDBkODRkNDM0YmQ2YzExZjkwMjgwOGExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKQEAgLTYzLDYgKzYzLDcgQEAgaW5saW5lIGJv
b2wgaXNTY29wZU1hcmtlcihDb250YWluZXJOb2RlKiBub2RlKQogICAgICAgICB8fCBub2RlLT5o
YXNUYWdOYW1lKG1hcnF1ZWVUYWcpCiAgICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUob2JqZWN0
VGFnKQogICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKHRhYmxlVGFnKQorICAgICAgICB8fCBu
b2RlLT5oYXNUYWdOYW1lKHRlbXBsYXRlVGFnKQogICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1l
KHRkVGFnKQogICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKHRoVGFnKQogICAgICAgICB8fCBu
b2RlLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptaVRhZykKQEAgLTI1MSwyMSArMjUyLDIxIEBA
IHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wVW50aWxQb3BwZWQoRWxlbWVudCogZWxlbWVudCkK
IHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wVW50aWxUYWJsZVNjb3BlTWFya2VyKCkKIHsKICAg
ICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211
bHRpcGFnZS90b2tlbml6YXRpb24uaHRtbCNjbGVhci10aGUtc3RhY2stYmFjay10by1hLXRhYmxl
LWNvbnRleHQKLSAgICB3aGlsZSAoIWlzVGFibGVTY29wZU1hcmtlcih0b3BOb2RlKCkpKQorICAg
IHdoaWxlICghKGlzVGFibGVTY29wZU1hcmtlcih0b3BOb2RlKCkpIHx8IHRvcE5vZGUoKS0+aGFz
VGFnTmFtZShIVE1MTmFtZXM6OnRlbXBsYXRlVGFnKSkpCiAgICAgICAgIHBvcCgpOwogfQogCiB2
b2lkIEhUTUxFbGVtZW50U3RhY2s6OnBvcFVudGlsVGFibGVCb2R5U2NvcGVNYXJrZXIoKQogewog
ICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL3Rva2VuaXphdGlvbi5odG1sI2NsZWFyLXRoZS1zdGFjay1iYWNrLXRvLWEtdGFi
bGUtYm9keS1jb250ZXh0Ci0gICAgd2hpbGUgKCFpc1RhYmxlQm9keVNjb3BlTWFya2VyKHRvcE5v
ZGUoKSkpCisgICAgd2hpbGUgKCEoaXNUYWJsZUJvZHlTY29wZU1hcmtlcih0b3BOb2RlKCkpIHx8
IHRvcE5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRlbXBsYXRlVGFnKSkpCiAgICAgICAg
IHBvcCgpOwogfQogCiB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnBvcFVudGlsVGFibGVSb3dTY29w
ZU1hcmtlcigpCiB7CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjY2xlYXItdGhlLXN0YWNr
LWJhY2stdG8tYS10YWJsZS1yb3ctY29udGV4dAotICAgIHdoaWxlICghaXNUYWJsZVJvd1Njb3Bl
TWFya2VyKHRvcE5vZGUoKSkpCisgICAgd2hpbGUgKCEoaXNUYWJsZVJvd1Njb3BlTWFya2VyKHRv
cE5vZGUoKSkgfHwgdG9wTm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGVtcGxhdGVUYWcp
KSkKICAgICAgICAgcG9wKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDNiNTQxNDkxMzE3ZDc3NWUxOWZlYTRlNDI5Y2ZiZGRi
NzkwMjRlZDAuLjRiMjgxZDkxNzExMGUzMWY2MTk1NjUxZDNjZjYxYTZjY2FmYTNmMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMTky
LDYgKzE5Miw3IEBAIGJvb2wgaXNTcGVjaWFsTm9kZShOb2RlKiBub2RlKQogICAgICAgICB8fCB0
YWdOYW1lID09IHRhYmxlVGFnCiAgICAgICAgIHx8IGlzVGFibGVCb2R5Q29udGV4dFRhZyh0YWdO
YW1lKQogICAgICAgICB8fCB0YWdOYW1lID09IHRkVGFnCisgICAgICAgIHx8IHRhZ05hbWUgPT0g
dGVtcGxhdGVUYWcKICAgICAgICAgfHwgdGFnTmFtZSA9PSB0ZXh0YXJlYVRhZwogICAgICAgICB8
fCB0YWdOYW1lID09IHRoVGFnCiAgICAgICAgIHx8IHRhZ05hbWUgPT0gdGl0bGVUYWcKQEAgLTEw
OTAsNiArMTA5MSwxMiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9y
SW5UYWJsZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBwcm9jZXNzU3RhcnRUYWco
dG9rZW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmICh0b2tlbi5uYW1lKCkgPT0g
dGVtcGxhdGVUYWcpIHsKKyAgICAgICAgbV90cmVlLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygp
LT5hcHBlbmRNYXJrZXIoKTsKKyAgICAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2Vu
KTsKKyAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShUZW1wbGF0ZUNvbnRlbnRzTW9kZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgaWYgKGlzVGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi5u
YW1lKCkpKSB7CiAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wVW50aWxUYWJsZVNj
b3BlTWFya2VyKCk7CiAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7CkBA
IC0xNDI5LDYgKzE0MzYsMTEgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRh
ZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgbV90cmVlLmluc2VydEhUTUxF
bGVtZW50KHRva2VuKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBp
ZiAodG9rZW4ubmFtZSgpID09IHRlbXBsYXRlVGFnKSB7CisgICAgICAgICAgICBtX3RyZWUuaW5z
ZXJ0SFRNTEVsZW1lbnQodG9rZW4pOworICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShUZW1w
bGF0ZUNvbnRlbnRzTW9kZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAg
ICAgaWYgKHRva2VuLm5hbWUoKSA9PSBzZWxlY3RUYWcpIHsKICAgICAgICAgICAgIHBhcnNlRXJy
b3IodG9rZW4pOwogICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9r
ZW5UeXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOwpAQCAtMTQ2MSw2ICsxNDcz
LDIyIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKICAgICBjYXNlIFRleHRNb2RlOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUZW1wbGF0ZUNvbnRlbnRzTW9kZToKKyAg
ICAgICAgaWYgKGlzQ2FwdGlvbkNvbE9yQ29sZ3JvdXBUYWcodG9rZW4ubmFtZSgpKQorICAgICAg
ICAgICAgfHwgaXNUYWJsZUJvZHlDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpIHsKKyAgICAgICAg
ICAgIHNldEluc2VydGlvbk1vZGUoSW5UYWJsZU1vZGUpOworICAgICAgICAgICAgcHJvY2Vzc1N0
YXJ0VGFnRm9ySW5UYWJsZSh0b2tlbik7CisgICAgICAgIH0gZWxzZSBpZiAodG9rZW4ubmFtZSgp
ID09IHRyVGFnKSB7CisgICAgICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEluVGFibGVCb2R5TW9k
ZSk7CisgICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9rZW4pOworICAgICAgICB9IGVsc2Ug
aWYgKGlzVGFibGVDZWxsQ29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CisgICAgICAgICAgICBz
ZXRJbnNlcnRpb25Nb2RlKEluUm93TW9kZSk7CisgICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWco
dG9rZW4pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJ
bkJvZHlNb2RlKTsKKyAgICAgICAgICAgIHByb2Nlc3NTdGFydFRhZ0ZvckluQm9keSh0b2tlbik7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0xNjU0LDcgKzE2ODIs
NyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVs
eSgpCiAgICAgICAgICAgICBub2RlID0gbV9mcmFnbWVudENvbnRleHQuY29udGV4dEVsZW1lbnQo
KTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKSB7
Ci0gICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CisgICAgICAgICAgICBB
U1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gVGVtcGxhdGVD
b250ZW50c01vZGUpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5TZWxl
Y3RNb2RlKTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0ZFRhZykg
fHwgbm9kZS0+aGFzVGFnTmFtZSh0aFRhZykpCkBAIC0xNzE0LDcgKzE3NDIsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGVCb2R5KEF0b21pY0hUTUxUb2tl
biYgdG9rZW4pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV90cmVl
Lm9wZW5FbGVtZW50cygpLT5wb3BVbnRpbFRhYmxlQm9keVNjb3BlTWFya2VyKCk7Ci0gICAgICAg
IEFTU0VSVChpc1RhYmxlQm9keUNvbnRleHRUYWcobV90cmVlLmN1cnJlbnRFbGVtZW50KCktPmxv
Y2FsTmFtZSgpKSk7CisgICAgICAgIEFTU0VSVChpc1RhYmxlQm9keUNvbnRleHRUYWcobV90cmVl
LmN1cnJlbnRFbGVtZW50KCktPmxvY2FsTmFtZSgpKSB8fCBtX3RyZWUuY3VycmVudEVsZW1lbnQo
KS0+aGFzVGFnTmFtZSh0ZW1wbGF0ZVRhZykpOwogICAgICAgICBwcm9jZXNzRmFrZUVuZFRhZyht
X3RyZWUuY3VycmVudEVsZW1lbnQoKS0+dGFnUU5hbWUoKSk7CiAgICAgICAgIHByb2Nlc3NFbmRU
YWcodG9rZW4pOwogICAgICAgICByZXR1cm47CkBAIC0xNzkwLDYgKzE4MTgsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQ2VsbChBdG9taWNIVE1MVG9rZW4mIHRv
a2VuKQogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRhYmxlVGFnCiAgICAgICAgIHx8
IHRva2VuLm5hbWUoKSA9PSB0clRhZworICAgICAgICB8fCB0b2tlbi5uYW1lKCkgPT0gdGVtcGxh
dGVUYWcKICAgICAgICAgfHwgaXNUYWJsZUJvZHlDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpIHsK
ICAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0b2tlbi5u
YW1lKCkpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNUYWJsZUJvZHlDb250ZXh0VGFnKHRva2Vu
Lm5hbWUoKSkgfHwgaXNQYXJzaW5nRnJhZ21lbnQoKSk7CkBAIC0xOTE1LDcgKzE5NDQsOCBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IGFwcGxldFRhZwogICAg
ICAgICB8fCB0b2tlbi5uYW1lKCkgPT0gbWFycXVlZVRhZwotICAgICAgICB8fCB0b2tlbi5uYW1l
KCkgPT0gb2JqZWN0VGFnKSB7CisgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9PSBvYmplY3RUYWcK
KyAgICAgICAgfHwgdG9rZW4ubmFtZSgpID09IHRlbXBsYXRlVGFnKSB7CiAgICAgICAgIGlmICgh
bV90cmVlLm9wZW5FbGVtZW50cygpLT5pblNjb3BlKHRva2VuLm5hbWUoKSkpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTkyNSw2ICsx
OTU1LDggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkJvZHkoQXRv
bWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAg
ICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcFVudGlsUG9wcGVkKHRva2VuLm5hbWUoKSk7
CiAgICAgICAgIG1fdHJlZS5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKS0+Y2xlYXJUb0xhc3RN
YXJrZXIoKTsKKyAgICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSB0ZW1wbGF0ZVRhZykKKyAgICAg
ICAgICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IGJyVGFnKSB7CkBAIC0yMjEzLDYgKzIy
NDUsMTEgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGlmIChtX3RyZWUuY3VycmVudE5vZGUoKS0+aGFz
VGFnTmFtZSh0ZW1wbGF0ZVRhZykpIHsKKyAgICAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMo
KS0+cG9wVW50aWxQb3BwZWQodGVtcGxhdGVUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAg
cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gb3B0aW9uVGFnKSB7CiAgICAg
ICAgICAgICBpZiAobV90cmVlLmN1cnJlbnROb2RlKCktPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkg
ewogICAgICAgICAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wKCk7CkBAIC0yMjM2
LDYgKzIyNzMsMTIgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgZGVmYXVsdEZvckluVGFibGVUZXh0KCk7CiAgICAg
ICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFRlbXBs
YXRlQ29udGVudHNNb2RlOgorICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRlbXBsYXRlVGFn
KSB7CisgICAgICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcCgpOworICAgICAgICAg
ICAgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOwogICAgIH0KIH0KIApAQCAtMjQzMiw2ICsyNDc1LDE2IEBAIFJlcHJvY2Vzc0J1ZmZl
cjoKICAgICAgICAgLy8gbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycy4KICAgICAgICAgYnJlYWs7
CiAgICAgfQorICAgIGNhc2UgVGVtcGxhdGVDb250ZW50c01vZGU6IHsKKyAgICAgICAgU3RyaW5n
IGxlYWRpbmdXaGl0ZXNwYWNlID0gYnVmZmVyLnRha2VSZW1haW5pbmdXaGl0ZXNwYWNlKCk7Cisg
ICAgICAgIGlmICghbGVhZGluZ1doaXRlc3BhY2UuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAv
LyBGSVhNRTogV2h5IGlzIHRoaXMgaGVyZT8KKyAgICAgICAgICAgIG1fdHJlZS5yZWNvbnN0cnVj
dFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOworICAgICAgICAgICAgbV90cmVlLmluc2Vy
dFRleHROb2RlKGxlYWRpbmdXaGl0ZXNwYWNlLCBBbGxXaGl0ZXNwYWNlKTsKKyAgICAgICAgfQor
ICAgICAgICAvLyBGSVhNRTogV2hhdCBlbHNlIHNob3VsZCB3ZSBkbyBoZXJlPworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgfQogfQogCkBAIC0yNTIxLDYgKzI1NzQsOSBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAg
ICAgICBzZXRJbnNlcnRpb25Nb2RlKG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlKTsKICAgICAgICAg
cHJvY2Vzc0VuZE9mRmlsZSh0b2tlbik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFRlbXBs
YXRlQ29udGVudHNNb2RlOgorICAgICAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgd2UgZG8gaGVy
ZT8KKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVChtX3RyZWUuY3VycmVudE5vZGUo
KSk7CiAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wb3BBbGwoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKaW5kZXggMDE4M2QyMGNhZTFjZWEyNzlk
ZmE5ZmY0NzM0ZTg4YmM0ZjZkNjViYi4uNWYzZDM4OWY1MjZmNTExOGIzYTE2ZjMxYzI5ODcxZjI1
ODM3ZmEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVC
dWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmgKQEAgLTExNSw2ICsxMTUsNyBAQCBwcml2YXRlOgogICAgICAgICBBZnRlckZyYW1lc2V0TW9k
ZSwKICAgICAgICAgQWZ0ZXJBZnRlckJvZHlNb2RlLAogICAgICAgICBBZnRlckFmdGVyRnJhbWVz
ZXRNb2RlLAorICAgICAgICBUZW1wbGF0ZUNvbnRlbnRzTW9kZSwKICAgICB9OwogCiAgICAgSFRN
TFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNlciosIEhUTUxEb2N1bWVudCosIGJvb2wgcmVw
b3J0RXJyb3JzLCBib29sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzLCB1bnNpZ25lZCBtYXhpbXVt
RE9NVHJlZURlcHRoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNl
cy90ZW1wbGF0ZS5kYXQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvdGVtcGxhdGUu
ZGF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg2ZGMwYjM3Yzg2NjhhMDIxNjZiY2VhOWM3M2JhNTdhZGM3MTY4ZTcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvdGVtcGxh
dGUuZGF0CkBAIC0wLDAgKzEsMzAyIEBACisjZGF0YQorPGRpdj48dGVtcGxhdGU+PGRpdj48c3Bh
bj48L3RlbXBsYXRlPjxiPgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFk
PgorfCAgIDxib2R5PgorfCAgICAgPGRpdj4KK3wgICAgICAgPHRlbXBsYXRlPgorfCAgICAgICAg
IDxkaXY+Cit8ICAgICAgICAgICA8c3Bhbj4KK3wgICAgICAgPGI+CisKKyNkYXRhCis8ZGl2Pjx0
ZW1wbGF0ZT48L2Rpdj5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxo
ZWFkPgorfCAgIDxib2R5PgorfCAgICAgPGRpdj4KK3wgICAgICAgPHRlbXBsYXRlPgorfCAgICAg
ICAgICJIZWxsbyIKKworI2RhdGEKKzxkaXY+PC90ZW1wbGF0ZT48L2Rpdj4KKyNlcnJvcnMKKyNk
b2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDxkaXY+CisK
KyNkYXRhCis8dGFibGU+PHRlbXBsYXRlPjwvdGVtcGxhdGU+PC90YWJsZT4KKyNlcnJvcnMKKyNk
b2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJsZT4K
K3wgICAgICAgPHRlbXBsYXRlPgorCisjZGF0YQorPHRhYmxlPjx0ZW1wbGF0ZT48L3RlbXBsYXRl
PjwvZGl2PgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxi
b2R5PgorfCAgICAgPHRhYmxlPgorfCAgICAgICA8dGVtcGxhdGU+CisKKyNkYXRhCis8dGFibGU+
PGRpdj48dGVtcGxhdGU+PC90ZW1wbGF0ZT48L2Rpdj4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8
aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDxkaXY+Cit8ICAgICAgIDx0ZW1w
bGF0ZT4KK3wgICAgIDx0YWJsZT4KKworI2RhdGEKKzx0YWJsZT48dGVtcGxhdGU+PC90ZW1wbGF0
ZT48ZGl2PjwvZGl2PgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFkPgor
fCAgIDxib2R5PgorfCAgICAgPGRpdj4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgPHRlbXBsYXRl
PgorCisjZGF0YQorPHRhYmxlPiAgIDx0ZW1wbGF0ZT48L3RlbXBsYXRlPjwvdGFibGU+CisjZXJy
b3JzCisjZG9jdW1lbnQKK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICA8
dGFibGU+Cit8ICAgICAgICIgICAiCit8ICAgICAgIDx0ZW1wbGF0ZT4KKworI2RhdGEKKzx0YWJs
ZT48dGJvZHk+PHRlbXBsYXRlPjwvdGVtcGxhdGU+PC90Ym9keT4KKyNlcnJvcnMKKyNkb2N1bWVu
dAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAg
ICAgPHRib2R5PgorfCAgICAgICAgIDx0ZW1wbGF0ZT4KKworI2RhdGEKKzx0YWJsZT48dGJvZHk+
PHRlbXBsYXRlPjwvdGJvZHk+PC90ZW1wbGF0ZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRt
bD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgPHRib2R5
PgorfCAgICAgICAgIDx0ZW1wbGF0ZT4KKworI2RhdGEKKzx0YWJsZT48dGJvZHk+PHRlbXBsYXRl
PjwvdGVtcGxhdGU+PC90Ym9keT48L3RhYmxlPgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1s
PgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgPHRhYmxlPgorfCAgICAgICA8dGJvZHk+
Cit8ICAgICAgICAgPHRlbXBsYXRlPgorCisjZGF0YQorPHRhYmxlPjx0aGVhZD48dGVtcGxhdGU+
PC90ZW1wbGF0ZT48L3RoZWFkPgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxo
ZWFkPgorfCAgIDxib2R5PgorfCAgICAgPHRhYmxlPgorfCAgICAgICA8dGhlYWQ+Cit8ICAgICAg
ICAgPHRlbXBsYXRlPgorCisjZGF0YQorPHRhYmxlPjx0Zm9vdD48dGVtcGxhdGU+PC90ZW1wbGF0
ZT48L3Rmb290PgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAg
IDxib2R5PgorfCAgICAgPHRhYmxlPgorfCAgICAgICA8dGZvb3Q+Cit8ICAgICAgICAgPHRlbXBs
YXRlPgorCisjZGF0YQorPHNlbGVjdD48dGVtcGxhdGU+PC90ZW1wbGF0ZT48L3NlbGVjdD4KKyNl
cnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAg
IDxzZWxlY3Q+Cit8ICAgICAgIDx0ZW1wbGF0ZT4KKworI2RhdGEKKzxzZWxlY3Q+PHRlbXBsYXRl
PjwvdGVtcGxhdGU+PG9wdGlvbj48L3NlbGVjdD4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRt
bD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDxzZWxlY3Q+Cit8ICAgICAgIDx0ZW1w
bGF0ZT4KK3wgICAgICAgPG9wdGlvbj4KKworI2RhdGEKKzxzZWxlY3Q+PG9wdGlvbj48dGVtcGxh
dGU+PC90ZW1wbGF0ZT48L3NlbGVjdD4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wg
ICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDxzZWxlY3Q+Cit8ICAgICAgIDxvcHRpb24+Cit8
ICAgICAgICAgPHRlbXBsYXRlPgorCisjZGF0YQorPHNlbGVjdD48b3B0aW9uPjwvb3B0aW9uPjx0
ZW1wbGF0ZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8
Ym9keT4KK3wgICAgIDxzZWxlY3Q+Cit8ICAgICAgIDxvcHRpb24+Cit8ICAgICAgIDx0ZW1wbGF0
ZT4KKworI2RhdGEKKzxzZWxlY3Q+PG9wdGlvbj48L29wdGlvbj48dGVtcGxhdGU+PG9wdGlvbj4K
KyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wg
ICAgIDxzZWxlY3Q+Cit8ICAgICAgIDxvcHRpb24+Cit8ICAgICAgIDx0ZW1wbGF0ZT4KK3wgICAg
ICAgICA8b3B0aW9uPgorCisjZGF0YQorPHRhYmxlPjx0aGVhZD48dGVtcGxhdGU+PHRkPjwvdGVt
cGxhdGU+PC90YWJsZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4K
K3wgICA8Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgPHRoZWFkPgorfCAgICAgICAgIDx0
ZW1wbGF0ZT4KK3wgICAgICAgICAgIDx0ZD4KKworI2RhdGEKKzx0YWJsZT48dGVtcGxhdGU+PHRo
ZWFkPjwvdGVtcGxhdGU+PC90YWJsZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wg
ICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgPHRlbXBsYXRlPgor
fCAgICAgICAgIDx0aGVhZD4KKworI2RhdGEKKzx0YWJsZT48dGVtcGxhdGU+PHRoZWFkPjwvdGVt
cGxhdGU+PC90aGVhZD48L3RhYmxlPgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAg
IDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgPHRhYmxlPgorfCAgICAgICA8dGVtcGxhdGU+Cit8
ICAgICAgICAgPHRoZWFkPgorCisjZGF0YQorPHRhYmxlPjx0aGVhZD48dGVtcGxhdGU+PHRyPjwv
dGVtcGxhdGU+PC90YWJsZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVh
ZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgPHRoZWFkPgorfCAgICAgICAg
IDx0ZW1wbGF0ZT4KK3wgICAgICAgICAgIDx0cj4KKworI2RhdGEKKzx0YWJsZT48dGVtcGxhdGU+
PHRyPjwvdGVtcGxhdGU+PC90YWJsZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wg
ICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgPHRlbXBsYXRlPgor
fCAgICAgICAgIDx0cj4KKworI2RhdGEKKzx0YWJsZT48dHI+PHRlbXBsYXRlPjx0ZD4KKyNlcnJv
cnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0
YWJsZT4KK3wgICAgICAgPHRib2R5PgorfCAgICAgICAgIDx0cj4KK3wgICAgICAgICAgIDx0ZW1w
bGF0ZT4KK3wgICAgICAgICAgICAgPHRkPgorCisjZGF0YQorPHRhYmxlPjx0ZW1wbGF0ZT48dHI+
PHRlbXBsYXRlPjx0ZD48L3RlbXBsYXRlPjwvdHI+PC90ZW1wbGF0ZT48L3RhYmxlPgorI2Vycm9y
cworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgPHRh
YmxlPgorfCAgICAgICA8dGVtcGxhdGU+Cit8ICAgICAgICAgPHRyPgorfCAgICAgICAgICAgPHRl
bXBsYXRlPgorfCAgICAgICAgICAgICA8dGQ+CisKKyNkYXRhCis8dGFibGU+PHRlbXBsYXRlPjx0
cj48dGVtcGxhdGU+PHRkPjwvdGQ+PC90ZW1wbGF0ZT48L3RyPjwvdGVtcGxhdGU+PC90YWJsZT4K
KyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wg
ICAgIDx0YWJsZT4KK3wgICAgICAgPHRlbXBsYXRlPgorfCAgICAgICAgIDx0cj4KK3wgICAgICAg
ICAgIDx0ZW1wbGF0ZT4KK3wgICAgICAgICAgICAgPHRkPgorCisjZGF0YQorPHRhYmxlPjx0ZW1w
bGF0ZT48dGQ+PC90ZW1wbGF0ZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8
aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgPHRlbXBsYXRlPgorfCAg
ICAgICAgIDx0ZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bi10ZW1wbGF0
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW4tdGVtcGxhdGUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjllZmUzMjRiMDEyOWU2MWM5MTI0ZTU1ODA5MjgyYTk1ZDBiYWFh
ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW4tdGVtcGxhdGUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK3Jlc291cmNlcy90ZW1wbGF0ZS5kYXQ6IFBBU1MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bi10ZW1wbGF0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvaHRtbDVsaWIvcnVuLXRlbXBsYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgxMTI5YTBl
MTZmZmVhYzQ0NDliM2U5MTdhYzRkNDE5Y2I2NGZlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0bWw1bGliL3J1bi10ZW1wbGF0ZS5odG1sCkBAIC0wLDAgKzEsOCBAQAorPCFkb2N0
eXBlIGh0bWw+Cis8c2NyaXB0PgordmFyIHRlc3RfZmlsZXMgPSBbCisgICdyZXNvdXJjZXMvdGVt
cGxhdGUuZGF0JywKK10KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9kdW1w
LWFzLW1hcmt1cC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3J1bm5lci5q
cyI+PC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128579</attachid>
            <date>2012-02-23 15:57:51 -0800</date>
            <delta_ts>2012-02-23 15:57:51 -0800</delta_ts>
            <desc>Faster, harder, stronger.</desc>
            <filename>bug-78734-20120223155750.patch</filename>
            <type>text/plain</type>
            <size>16499</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRlNGEyNDMzOTc1Yjhh
ZGZkZjNhZDQwYjg5ZGRlZTQ0NzhlMjA3YS4uZTdlMDc5MzMxNTc0MDVhZWM2YTAyOWFlODI0NmUy
Njg0NjMzODU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTE1ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW9kaWZ5IEhU
TUwgcGFyc2VyIHRvIHN1cHBvcnQgPHRlbXBsYXRlPiBlbGVtZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODczNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisg
ICAgICAgICogaHRtbC9IVE1MVGFnTmFtZXMuaW46CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TEVsZW1lbnRTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpw
b3BVbnRpbFRhYmxlU2NvcGVNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRT
dGFjazo6cG9wVW50aWxUYWJsZUJvZHlTY29wZU1hcmtlcik6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVs
eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisKIDIwMTItMDItMjEg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
IFdlYkF1ZGlvIGJ1aWxkIGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFnTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgpp
bmRleCA2MmJhNTAxMDAwYzY3OTg3ZmE0MjVlOGM1YmFiMzhhNTExZDI0ODA0Li4wYjQ4MjNmZWE3
NTA5ZmE4NmY4NmNkNWVlNmI0MzA4ODdlZGMxNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWdOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdO
YW1lcy5pbgpAQCAtMTIwLDYgKzEyMCw3IEBAIHN1cCBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50
CiB0YWJsZQogdGJvZHkgaW50ZXJmYWNlTmFtZT1IVE1MVGFibGVTZWN0aW9uRWxlbWVudAogdGQg
aW50ZXJmYWNlTmFtZT1IVE1MVGFibGVDZWxsRWxlbWVudAordGVtcGxhdGUgaW50ZXJmYWNlTmFt
ZT1IVE1MRWxlbWVudAogdGV4dGFyZWEgaW50ZXJmYWNlTmFtZT1IVE1MVGV4dEFyZWFFbGVtZW50
LCBjb25zdHJ1Y3Rvck5lZWRzRm9ybUVsZW1lbnQKIHRmb290IGludGVyZmFjZU5hbWU9SFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQKIHRoIGludGVyZmFjZU5hbWU9SFRNTFRhYmxlQ2VsbEVsZW1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKaW5k
ZXggOWNjM2EwMzE2NmU1MTFhYjI1ODY3MmY0M2NiNzAwODE1Yzc3NDAyNC4uNGRmMDM1MWY0YTMz
YmMzZDBkODRkNDM0YmQ2YzExZjkwMjgwOGExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKQEAgLTYzLDYgKzYzLDcgQEAgaW5saW5lIGJv
b2wgaXNTY29wZU1hcmtlcihDb250YWluZXJOb2RlKiBub2RlKQogICAgICAgICB8fCBub2RlLT5o
YXNUYWdOYW1lKG1hcnF1ZWVUYWcpCiAgICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUob2JqZWN0
VGFnKQogICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKHRhYmxlVGFnKQorICAgICAgICB8fCBu
b2RlLT5oYXNUYWdOYW1lKHRlbXBsYXRlVGFnKQogICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1l
KHRkVGFnKQogICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKHRoVGFnKQogICAgICAgICB8fCBu
b2RlLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptaVRhZykKQEAgLTI1MSwyMSArMjUyLDIxIEBA
IHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wVW50aWxQb3BwZWQoRWxlbWVudCogZWxlbWVudCkK
IHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wVW50aWxUYWJsZVNjb3BlTWFya2VyKCkKIHsKICAg
ICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211
bHRpcGFnZS90b2tlbml6YXRpb24uaHRtbCNjbGVhci10aGUtc3RhY2stYmFjay10by1hLXRhYmxl
LWNvbnRleHQKLSAgICB3aGlsZSAoIWlzVGFibGVTY29wZU1hcmtlcih0b3BOb2RlKCkpKQorICAg
IHdoaWxlICghKGlzVGFibGVTY29wZU1hcmtlcih0b3BOb2RlKCkpIHx8IHRvcE5vZGUoKS0+aGFz
VGFnTmFtZShIVE1MTmFtZXM6OnRlbXBsYXRlVGFnKSkpCiAgICAgICAgIHBvcCgpOwogfQogCiB2
b2lkIEhUTUxFbGVtZW50U3RhY2s6OnBvcFVudGlsVGFibGVCb2R5U2NvcGVNYXJrZXIoKQogewog
ICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL3Rva2VuaXphdGlvbi5odG1sI2NsZWFyLXRoZS1zdGFjay1iYWNrLXRvLWEtdGFi
bGUtYm9keS1jb250ZXh0Ci0gICAgd2hpbGUgKCFpc1RhYmxlQm9keVNjb3BlTWFya2VyKHRvcE5v
ZGUoKSkpCisgICAgd2hpbGUgKCEoaXNUYWJsZUJvZHlTY29wZU1hcmtlcih0b3BOb2RlKCkpIHx8
IHRvcE5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRlbXBsYXRlVGFnKSkpCiAgICAgICAg
IHBvcCgpOwogfQogCiB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnBvcFVudGlsVGFibGVSb3dTY29w
ZU1hcmtlcigpCiB7CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjY2xlYXItdGhlLXN0YWNr
LWJhY2stdG8tYS10YWJsZS1yb3ctY29udGV4dAotICAgIHdoaWxlICghaXNUYWJsZVJvd1Njb3Bl
TWFya2VyKHRvcE5vZGUoKSkpCisgICAgd2hpbGUgKCEoaXNUYWJsZVJvd1Njb3BlTWFya2VyKHRv
cE5vZGUoKSkgfHwgdG9wTm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGVtcGxhdGVUYWcp
KSkKICAgICAgICAgcG9wKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDNiNTQxNDkxMzE3ZDc3NWUxOWZlYTRlNDI5Y2ZiZGRi
NzkwMjRlZDAuLjk2YTllYTUzZTE5YzlhNDRlNzEwMTk5YjQ3ZTkzMTdjYmVkNzU0ZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMTky
LDYgKzE5Miw3IEBAIGJvb2wgaXNTcGVjaWFsTm9kZShOb2RlKiBub2RlKQogICAgICAgICB8fCB0
YWdOYW1lID09IHRhYmxlVGFnCiAgICAgICAgIHx8IGlzVGFibGVCb2R5Q29udGV4dFRhZyh0YWdO
YW1lKQogICAgICAgICB8fCB0YWdOYW1lID09IHRkVGFnCisgICAgICAgIHx8IHRhZ05hbWUgPT0g
dGVtcGxhdGVUYWcKICAgICAgICAgfHwgdGFnTmFtZSA9PSB0ZXh0YXJlYVRhZwogICAgICAgICB8
fCB0YWdOYW1lID09IHRoVGFnCiAgICAgICAgIHx8IHRhZ05hbWUgPT0gdGl0bGVUYWcKQEAgLTEw
OTAsNiArMTA5MSwxMiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9y
SW5UYWJsZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBwcm9jZXNzU3RhcnRUYWco
dG9rZW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmICh0b2tlbi5uYW1lKCkgPT0g
dGVtcGxhdGVUYWcpIHsKKyAgICAgICAgbV90cmVlLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygp
LT5hcHBlbmRNYXJrZXIoKTsKKyAgICAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2Vu
KTsKKyAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShUZW1wbGF0ZUNvbnRlbnRzTW9kZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgaWYgKGlzVGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi5u
YW1lKCkpKSB7CiAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wVW50aWxUYWJsZVNj
b3BlTWFya2VyKCk7CiAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7CkBA
IC0xNDI5LDYgKzE0MzYsMTEgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRh
ZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgbV90cmVlLmluc2VydEhUTUxF
bGVtZW50KHRva2VuKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBp
ZiAodG9rZW4ubmFtZSgpID09IHRlbXBsYXRlVGFnKSB7CisgICAgICAgICAgICBtX3RyZWUuaW5z
ZXJ0SFRNTEVsZW1lbnQodG9rZW4pOworICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShUZW1w
bGF0ZUNvbnRlbnRzTW9kZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAg
ICAgaWYgKHRva2VuLm5hbWUoKSA9PSBzZWxlY3RUYWcpIHsKICAgICAgICAgICAgIHBhcnNlRXJy
b3IodG9rZW4pOwogICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9r
ZW5UeXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOwpAQCAtMTQ2MSw2ICsxNDcz
LDIyIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKICAgICBjYXNlIFRleHRNb2RlOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUZW1wbGF0ZUNvbnRlbnRzTW9kZToKKyAg
ICAgICAgaWYgKGlzQ2FwdGlvbkNvbE9yQ29sZ3JvdXBUYWcodG9rZW4ubmFtZSgpKQorICAgICAg
ICAgICAgfHwgaXNUYWJsZUJvZHlDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpIHsKKyAgICAgICAg
ICAgIHNldEluc2VydGlvbk1vZGUoSW5UYWJsZU1vZGUpOworICAgICAgICAgICAgcHJvY2Vzc1N0
YXJ0VGFnRm9ySW5UYWJsZSh0b2tlbik7CisgICAgICAgIH0gZWxzZSBpZiAodG9rZW4ubmFtZSgp
ID09IHRyVGFnKSB7CisgICAgICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEluVGFibGVCb2R5TW9k
ZSk7CisgICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9rZW4pOworICAgICAgICB9IGVsc2Ug
aWYgKGlzVGFibGVDZWxsQ29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CisgICAgICAgICAgICBz
ZXRJbnNlcnRpb25Nb2RlKEluUm93TW9kZSk7CisgICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWco
dG9rZW4pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJ
bkJvZHlNb2RlKTsKKyAgICAgICAgICAgIHByb2Nlc3NTdGFydFRhZ0ZvckluQm9keSh0b2tlbik7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0xNjU0LDcgKzE2ODIs
NyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVs
eSgpCiAgICAgICAgICAgICBub2RlID0gbV9mcmFnbWVudENvbnRleHQuY29udGV4dEVsZW1lbnQo
KTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKSB7
Ci0gICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CisgICAgICAgICAgICBB
U1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gVGVtcGxhdGVD
b250ZW50c01vZGUpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5TZWxl
Y3RNb2RlKTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0ZFRhZykg
fHwgbm9kZS0+aGFzVGFnTmFtZSh0aFRhZykpCkBAIC0xNzE0LDcgKzE3NDIsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGVCb2R5KEF0b21pY0hUTUxUb2tl
biYgdG9rZW4pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV90cmVl
Lm9wZW5FbGVtZW50cygpLT5wb3BVbnRpbFRhYmxlQm9keVNjb3BlTWFya2VyKCk7Ci0gICAgICAg
IEFTU0VSVChpc1RhYmxlQm9keUNvbnRleHRUYWcobV90cmVlLmN1cnJlbnRFbGVtZW50KCktPmxv
Y2FsTmFtZSgpKSk7CisgICAgICAgIEFTU0VSVChpc1RhYmxlQm9keUNvbnRleHRUYWcobV90cmVl
LmN1cnJlbnRFbGVtZW50KCktPmxvY2FsTmFtZSgpKSB8fCBtX3RyZWUuY3VycmVudEVsZW1lbnQo
KS0+aGFzVGFnTmFtZSh0ZW1wbGF0ZVRhZykpOwogICAgICAgICBwcm9jZXNzRmFrZUVuZFRhZyht
X3RyZWUuY3VycmVudEVsZW1lbnQoKS0+dGFnUU5hbWUoKSk7CiAgICAgICAgIHByb2Nlc3NFbmRU
YWcodG9rZW4pOwogICAgICAgICByZXR1cm47CkBAIC0xNzkwLDYgKzE4MTgsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQ2VsbChBdG9taWNIVE1MVG9rZW4mIHRv
a2VuKQogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRhYmxlVGFnCiAgICAgICAgIHx8
IHRva2VuLm5hbWUoKSA9PSB0clRhZworICAgICAgICB8fCB0b2tlbi5uYW1lKCkgPT0gdGVtcGxh
dGVUYWcKICAgICAgICAgfHwgaXNUYWJsZUJvZHlDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpIHsK
ICAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0b2tlbi5u
YW1lKCkpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNUYWJsZUJvZHlDb250ZXh0VGFnKHRva2Vu
Lm5hbWUoKSkgfHwgaXNQYXJzaW5nRnJhZ21lbnQoKSk7CkBAIC0xOTE1LDcgKzE5NDQsOCBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IGFwcGxldFRhZwogICAg
ICAgICB8fCB0b2tlbi5uYW1lKCkgPT0gbWFycXVlZVRhZwotICAgICAgICB8fCB0b2tlbi5uYW1l
KCkgPT0gb2JqZWN0VGFnKSB7CisgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9PSBvYmplY3RUYWcK
KyAgICAgICAgfHwgdG9rZW4ubmFtZSgpID09IHRlbXBsYXRlVGFnKSB7CiAgICAgICAgIGlmICgh
bV90cmVlLm9wZW5FbGVtZW50cygpLT5pblNjb3BlKHRva2VuLm5hbWUoKSkpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTkyNSw2ICsx
OTU1LDggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkJvZHkoQXRv
bWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAg
ICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcFVudGlsUG9wcGVkKHRva2VuLm5hbWUoKSk7
CiAgICAgICAgIG1fdHJlZS5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKS0+Y2xlYXJUb0xhc3RN
YXJrZXIoKTsKKyAgICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSB0ZW1wbGF0ZVRhZykKKyAgICAg
ICAgICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IGJyVGFnKSB7CkBAIC0yMjEzLDYgKzIy
NDUsMTEgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGlmIChtX3RyZWUuY3VycmVudE5vZGUoKS0+aGFz
VGFnTmFtZSh0ZW1wbGF0ZVRhZykpIHsKKyAgICAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMo
KS0+cG9wVW50aWxQb3BwZWQodGVtcGxhdGVUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAg
cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gb3B0aW9uVGFnKSB7CiAgICAg
ICAgICAgICBpZiAobV90cmVlLmN1cnJlbnROb2RlKCktPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkg
ewogICAgICAgICAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wKCk7CkBAIC0yMjM2
LDYgKzIyNzMsMTMgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgZGVmYXVsdEZvckluVGFibGVUZXh0KCk7CiAgICAg
ICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFRlbXBs
YXRlQ29udGVudHNNb2RlOgorICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRlbXBsYXRlVGFn
KSB7CisgICAgICAgICAgICBBU1NFUlQobV90cmVlLmN1cnJlbnROb2RlKCktPmhhc1RhZ05hbWUo
dGVtcGxhdGVUYWcpKTsKKyAgICAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wKCk7
CisgICAgICAgICAgICByZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0yNDMyLDYgKzI0NzYsMTYgQEAgUmVw
cm9jZXNzQnVmZmVyOgogICAgICAgICAvLyBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgogICAg
ICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBUZW1wbGF0ZUNvbnRlbnRzTW9kZTogeworICAg
ICAgICBTdHJpbmcgbGVhZGluZ1doaXRlc3BhY2UgPSBidWZmZXIudGFrZVJlbWFpbmluZ1doaXRl
c3BhY2UoKTsKKyAgICAgICAgaWYgKCFsZWFkaW5nV2hpdGVzcGFjZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBoZXJlPworICAgICAgICAgICAgbV90cmVl
LnJlY29uc3RydWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7CisgICAgICAgICAgICBt
X3RyZWUuaW5zZXJ0VGV4dE5vZGUobGVhZGluZ1doaXRlc3BhY2UsIEFsbFdoaXRlc3BhY2UpOwor
ICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBXaGF0IGVsc2Ugc2hvdWxkIHdlIGRvIGhlcmU/
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiB9CiAKQEAgLTI1MjEsNiArMjU3NSwxMiBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKG1fb3JpZ2luYWxJbnNlcnRpb25Nb2Rl
KTsKICAgICAgICAgcHJvY2Vzc0VuZE9mRmlsZSh0b2tlbik7CiAgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIFRlbXBsYXRlQ29udGVudHNNb2RlOgorICAgICAgICBBU1NFUlQobV90cmVlLmN1cnJl
bnROb2RlKCktPmhhc1RhZ05hbWUodGVtcGxhdGVUYWcpKTsKKyAgICAgICAgbV90cmVlLm9wZW5F
bGVtZW50cygpLT5wb3AoKTsKKyAgICAgICAgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVs
eSgpOworICAgICAgICBwcm9jZXNzRW5kT2ZGaWxlKHRva2VuKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBBU1NFUlQobV90cmVlLmN1cnJlbnROb2RlKCkpOwogICAgIG1fdHJlZS5vcGVu
RWxlbWVudHMoKS0+cG9wQWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5oCmluZGV4IDAxODNkMjBjYWUxY2VhMjc5ZGZhOWZmNDczNGU4OGJjNGY2ZDY1
YmIuLjVmM2QzODlmNTI2ZjUxMThiM2ExNmYzMWMyOTg3MWYyNTgzN2ZhMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCkBAIC0xMTUsNiArMTE1LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgQWZ0ZXJGcmFtZXNldE1vZGUsCiAgICAgICAgIEFmdGVyQWZ0
ZXJCb2R5TW9kZSwKICAgICAgICAgQWZ0ZXJBZnRlckZyYW1lc2V0TW9kZSwKKyAgICAgICAgVGVt
cGxhdGVDb250ZW50c01vZGUsCiAgICAgfTsKIAogICAgIEhUTUxUcmVlQnVpbGRlcihIVE1MRG9j
dW1lbnRQYXJzZXIqLCBIVE1MRG9jdW1lbnQqLCBib29sIHJlcG9ydEVycm9ycywgYm9vbCB1c2VQ
cmVIVE1MNVBhcnNlclF1aXJrcywgdW5zaWduZWQgbWF4aW11bURPTVRyZWVEZXB0aCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvdGVtcGxhdGUuZGF0IGIvTGF5
b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL3RlbXBsYXRlLmRhdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDcx
ZDQxNWQyMTU4NTM4YWJmYThkMGQ3ZDU0OTQ3NDdjMzZhMGM4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL3RlbXBsYXRlLmRhdApAQCAtMCwwICsxLDMx
MiBAQAorI2RhdGEKKzxkaXY+PHRlbXBsYXRlPjxkaXY+PHNwYW4+PC90ZW1wbGF0ZT48Yj4KKyNl
cnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAg
IDxkaXY+Cit8ICAgICAgIDx0ZW1wbGF0ZT4KK3wgICAgICAgICA8ZGl2PgorfCAgICAgICAgICAg
PHNwYW4+Cit8ICAgICAgIDxiPgorCisjZGF0YQorPGRpdj48dGVtcGxhdGU+PC9kaXY+SGVsbG8K
KyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wg
ICAgIDxkaXY+Cit8ICAgICAgIDx0ZW1wbGF0ZT4KK3wgICAgICAgICAiSGVsbG8iCisKKyNkYXRh
Cis8ZGl2PjwvdGVtcGxhdGU+PC9kaXY+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPGh0bWw+Cit8
ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICA8ZGl2PgorCisjZGF0YQorPHRhYmxlPjx0ZW1w
bGF0ZT48L3RlbXBsYXRlPjwvdGFibGU+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPGh0bWw+Cit8
ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICA8dGFibGU+Cit8ICAgICAgIDx0ZW1wbGF0ZT4K
KworI2RhdGEKKzx0YWJsZT48dGVtcGxhdGU+PC90ZW1wbGF0ZT48L2Rpdj4KKyNlcnJvcnMKKyNk
b2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJsZT4K
K3wgICAgICAgPHRlbXBsYXRlPgorCisjZGF0YQorPHRhYmxlPjxkaXY+PHRlbXBsYXRlPjwvdGVt
cGxhdGU+PC9kaXY+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8
ICAgPGJvZHk+Cit8ICAgICA8ZGl2PgorfCAgICAgICA8dGVtcGxhdGU+Cit8ICAgICA8dGFibGU+
CisKKyNkYXRhCis8dGFibGU+PHRlbXBsYXRlPjwvdGVtcGxhdGU+PGRpdj48L2Rpdj4KKyNlcnJv
cnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDxk
aXY+Cit8ICAgICA8dGFibGU+Cit8ICAgICAgIDx0ZW1wbGF0ZT4KKworI2RhdGEKKzx0YWJsZT4g
ICA8dGVtcGxhdGU+PC90ZW1wbGF0ZT48L3RhYmxlPgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxo
dG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgPHRhYmxlPgorfCAgICAgICAiICAg
IgorfCAgICAgICA8dGVtcGxhdGU+CisKKyNkYXRhCis8dGFibGU+PHRib2R5Pjx0ZW1wbGF0ZT48
L3RlbXBsYXRlPjwvdGJvZHk+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPGh0bWw+Cit8ICAgPGhl
YWQ+Cit8ICAgPGJvZHk+Cit8ICAgICA8dGFibGU+Cit8ICAgICAgIDx0Ym9keT4KK3wgICAgICAg
ICA8dGVtcGxhdGU+CisKKyNkYXRhCis8dGFibGU+PHRib2R5Pjx0ZW1wbGF0ZT48L3Rib2R5Pjwv
dGVtcGxhdGU+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAg
PGJvZHk+Cit8ICAgICA8dGFibGU+Cit8ICAgICAgIDx0Ym9keT4KK3wgICAgICAgICA8dGVtcGxh
dGU+CisKKyNkYXRhCis8dGFibGU+PHRib2R5Pjx0ZW1wbGF0ZT48L3RlbXBsYXRlPjwvdGJvZHk+
PC90YWJsZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8
Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgPHRib2R5PgorfCAgICAgICAgIDx0ZW1wbGF0
ZT4KKworI2RhdGEKKzx0YWJsZT48dGhlYWQ+PHRlbXBsYXRlPjwvdGVtcGxhdGU+PC90aGVhZD4K
KyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wg
ICAgIDx0YWJsZT4KK3wgICAgICAgPHRoZWFkPgorfCAgICAgICAgIDx0ZW1wbGF0ZT4KKworI2Rh
dGEKKzx0YWJsZT48dGZvb3Q+PHRlbXBsYXRlPjwvdGVtcGxhdGU+PC90Zm9vdD4KKyNlcnJvcnMK
KyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJs
ZT4KK3wgICAgICAgPHRmb290PgorfCAgICAgICAgIDx0ZW1wbGF0ZT4KKworI2RhdGEKKzxzZWxl
Y3Q+PHRlbXBsYXRlPjwvdGVtcGxhdGU+PC9zZWxlY3Q+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wg
PGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICA8c2VsZWN0PgorfCAgICAgICA8
dGVtcGxhdGU+CisKKyNkYXRhCis8c2VsZWN0Pjx0ZW1wbGF0ZT48L3RlbXBsYXRlPjxvcHRpb24+
PC9zZWxlY3Q+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAg
PGJvZHk+Cit8ICAgICA8c2VsZWN0PgorfCAgICAgICA8dGVtcGxhdGU+Cit8ICAgICAgIDxvcHRp
b24+CisKKyNkYXRhCis8c2VsZWN0PjxvcHRpb24+PHRlbXBsYXRlPjwvdGVtcGxhdGU+PC9zZWxl
Y3Q+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+
Cit8ICAgICA8c2VsZWN0PgorfCAgICAgICA8b3B0aW9uPgorfCAgICAgICAgIDx0ZW1wbGF0ZT4K
KworI2RhdGEKKzxzZWxlY3Q+PHRlbXBsYXRlPgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1s
PgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgPHNlbGVjdD4KK3wgICAgICAgPHRlbXBs
YXRlPgorCisjZGF0YQorPHNlbGVjdD48b3B0aW9uPjwvb3B0aW9uPjx0ZW1wbGF0ZT4KKyNlcnJv
cnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDxz
ZWxlY3Q+Cit8ICAgICAgIDxvcHRpb24+Cit8ICAgICAgIDx0ZW1wbGF0ZT4KKworI2RhdGEKKzxz
ZWxlY3Q+PG9wdGlvbj48L29wdGlvbj48dGVtcGxhdGU+PG9wdGlvbj4KKyNlcnJvcnMKKyNkb2N1
bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDxzZWxlY3Q+Cit8
ICAgICAgIDxvcHRpb24+Cit8ICAgICAgIDx0ZW1wbGF0ZT4KK3wgICAgICAgICA8b3B0aW9uPgor
CisjZGF0YQorPHRhYmxlPjx0aGVhZD48dGVtcGxhdGU+PHRkPjwvdGVtcGxhdGU+PC90YWJsZT4K
KyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wg
ICAgIDx0YWJsZT4KK3wgICAgICAgPHRoZWFkPgorfCAgICAgICAgIDx0ZW1wbGF0ZT4KK3wgICAg
ICAgICAgIDx0ZD4KKworI2RhdGEKKzx0YWJsZT48dGVtcGxhdGU+PHRoZWFkPjwvdGVtcGxhdGU+
PC90YWJsZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8
Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgPHRlbXBsYXRlPgorfCAgICAgICAgIDx0aGVh
ZD4KKworI2RhdGEKKzx0YWJsZT48dGVtcGxhdGU+PHRoZWFkPjwvdGVtcGxhdGU+PC90aGVhZD48
L3RhYmxlPgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxi
b2R5PgorfCAgICAgPHRhYmxlPgorfCAgICAgICA8dGVtcGxhdGU+Cit8ICAgICAgICAgPHRoZWFk
PgorCisjZGF0YQorPHRhYmxlPjx0aGVhZD48dGVtcGxhdGU+PHRyPjwvdGVtcGxhdGU+PC90YWJs
ZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4K
K3wgICAgIDx0YWJsZT4KK3wgICAgICAgPHRoZWFkPgorfCAgICAgICAgIDx0ZW1wbGF0ZT4KK3wg
ICAgICAgICAgIDx0cj4KKworI2RhdGEKKzx0YWJsZT48dGVtcGxhdGU+PHRyPjwvdGVtcGxhdGU+
PC90YWJsZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8
Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgPHRlbXBsYXRlPgorfCAgICAgICAgIDx0cj4K
KworI2RhdGEKKzx0YWJsZT48dHI+PHRlbXBsYXRlPjx0ZD4KKyNlcnJvcnMKKyNkb2N1bWVudAor
fCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAg
PHRib2R5PgorfCAgICAgICAgIDx0cj4KK3wgICAgICAgICAgIDx0ZW1wbGF0ZT4KK3wgICAgICAg
ICAgICAgPHRkPgorCisjZGF0YQorPHRhYmxlPjx0ZW1wbGF0ZT48dHI+PHRlbXBsYXRlPjx0ZD48
L3RlbXBsYXRlPjwvdHI+PC90ZW1wbGF0ZT48L3RhYmxlPgorI2Vycm9ycworI2RvY3VtZW50Cit8
IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgPHRhYmxlPgorfCAgICAgICA8
dGVtcGxhdGU+Cit8ICAgICAgICAgPHRyPgorfCAgICAgICAgICAgPHRlbXBsYXRlPgorfCAgICAg
ICAgICAgICA8dGQ+CisKKyNkYXRhCis8dGFibGU+PHRlbXBsYXRlPjx0cj48dGVtcGxhdGU+PHRk
PjwvdGQ+PC90ZW1wbGF0ZT48L3RyPjwvdGVtcGxhdGU+PC90YWJsZT4KKyNlcnJvcnMKKyNkb2N1
bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wg
ICAgICAgPHRlbXBsYXRlPgorfCAgICAgICAgIDx0cj4KK3wgICAgICAgICAgIDx0ZW1wbGF0ZT4K
K3wgICAgICAgICAgICAgPHRkPgorCisjZGF0YQorPHRhYmxlPjx0ZW1wbGF0ZT48dGQ+PC90ZW1w
bGF0ZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9k
eT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgPHRlbXBsYXRlPgorfCAgICAgICAgIDx0ZD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bi10ZW1wbGF0ZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW4tdGVtcGxhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjllZmUzMjRiMDEyOWU2MWM5MTI0ZTU1ODA5MjgyYTk1ZDBiYWFhZTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW4tdGVtcGxhdGUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEgQEAKK3Jlc291cmNlcy90ZW1wbGF0ZS5kYXQ6IFBBU1MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0bWw1bGliL3J1bi10ZW1wbGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHRtbDVs
aWIvcnVuLXRlbXBsYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgxMTI5YTBlMTZmZmVhYzQ0NDliM2U5
MTdhYzRkNDE5Y2I2NGZlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGli
L3J1bi10ZW1wbGF0ZS5odG1sCkBAIC0wLDAgKzEsOCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8c2Ny
aXB0PgordmFyIHRlc3RfZmlsZXMgPSBbCisgICdyZXNvdXJjZXMvdGVtcGxhdGUuZGF0JywKK10K
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>