<?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>98712</bug_id>
          
          <creation_ts>2012-10-08 20:10:01 -0700</creation_ts>
          <short_desc>Make CSS variable names case-insensitive.</short_desc>
          <delta_ts>2012-10-15 10:09:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Luke Macpherson">macpherson</reporter>
          <assigned_to name="Luke Macpherson">macpherson</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>menard</cc>
    
    <cc>rniwa</cc>
    
    <cc>tabatkins</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>737364</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-10-08 20:10:01 -0700</bug_when>
    <thetext>Make CSS variable names case-insensitive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737367</commentid>
    <comment_count>1</comment_count>
      <attachid>167676</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-10-08 20:23:40 -0700</bug_when>
    <thetext>Created attachment 167676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737876</commentid>
    <comment_count>2</comment_count>
      <attachid>167676</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-09 09:42:38 -0700</bug_when>
    <thetext>Comment on attachment 167676
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        making variable definitions consistent with other property names, which are also case insensitive.

Is this the only rationale?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738339</commentid>
    <comment_count>3</comment_count>
      <attachid>167676</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-10-09 17:04:15 -0700</bug_when>
    <thetext>Comment on attachment 167676
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        making variable definitions consistent with other property names, which are also case insensitive.
&gt; 
&gt; Is this the only rationale?

My understanding is that this is the intent of the CSS Variables spec - See http://dev.w3.org/csswg/css-variables/#defining-variables &quot;ISSUE 1&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738345</commentid>
    <comment_count>4</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2012-10-09 17:13:22 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 167676 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=167676&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:9
&gt; &gt;&gt; +        making variable definitions consistent with other property names, which are also case insensitive.
&gt; &gt; 
&gt; &gt; Is this the only rationale?
&gt; 
&gt; My understanding is that this is the intent of the CSS Variables spec - See http://dev.w3.org/csswg/css-variables/#defining-variables &quot;ISSUE 1&quot;.

Yup, we resolved to be case-insensitive of *some* kind.  At minimum, we&apos;ll be ascii-case-insensitive.  (And I think we&apos;ll probably end at that.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739386</commentid>
    <comment_count>5</comment_count>
      <attachid>167676</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-10 16:32:50 -0700</bug_when>
    <thetext>Comment on attachment 167676
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt;&gt;&gt; +        making variable definitions consistent with other property names, which are also case insensitive.
&gt;&gt;&gt; 
&gt;&gt;&gt; Is this the only rationale?
&gt;&gt; 
&gt;&gt; My understanding is that this is the intent of the CSS Variables spec - See http://dev.w3.org/csswg/css-variables/#defining-variables &quot;ISSUE 1&quot;.
&gt; 
&gt; Yup, we resolved to be case-insensitive of *some* kind.  At minimum, we&apos;ll be ascii-case-insensitive.  (And I think we&apos;ll probably end at that.)

It would be nice if you could either include a link to the spec or to the mailing list in the ChangeLog.

&gt; Source/WebCore/css/CSSParser.cpp:3037
&gt;      ASSERT(name.length() &gt; 12);
&gt; -    AtomicString variableName = name.is8Bit() ? AtomicString(name.characters8() + 12, name.length() - 12) : AtomicString(name.characters16() + 12, name.length() - 12);
&gt; +    AtomicString variableName = name.substring(12, name.length() - 12).lower();

Where does 12 come from? Can we use a const char* and sizeof - 1?

&gt; Source/WebCore/css/CSSParserValues.h:101
&gt; +    String substring(unsigned position, unsigned length) const
&gt; +    {
&gt; +        ASSERT(m_length &gt;= position + length);
&gt; +        return is8Bit() ? String(m_data.characters8 + position, length) : String(m_data.characters16 + position, length);
&gt; +    }

I don&apos;t think this helper function is useful since you only use it in one place and it uses String instead of AtomicString.  This is less efficient than just calling lower() on name, then creating an AtomicString in storeVariableDeclaration (it allocates an extra string).

&gt; LayoutTests/fast/css/variables/case-insensitive-expected.html:3
&gt; +&lt;!DOCTYPE html&gt;
&gt; +&lt;html&gt;
&gt; +&lt;style&gt;

Can we just make this into a script test?  reftests run slower than script tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739395</commentid>
    <comment_count>6</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2012-10-10 16:42:58 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Where does 12 come from? Can we use a const char* and sizeof - 1?

It&apos;s the length of &quot;-webkit-var-&quot;, which is a required prefix on all var property names right now.

Agreed, though, that this can be done more understandably.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739474</commentid>
    <comment_count>7</comment_count>
      <attachid>167676</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-10-10 18:28:19 -0700</bug_when>
    <thetext>Comment on attachment 167676
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt;&gt;&gt;&gt; +        making variable definitions consistent with other property names, which are also case insensitive.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Is this the only rationale?
&gt;&gt;&gt; 
&gt;&gt;&gt; My understanding is that this is the intent of the CSS Variables spec - See http://dev.w3.org/csswg/css-variables/#defining-variables &quot;ISSUE 1&quot;.
&gt;&gt; 
&gt;&gt; Yup, we resolved to be case-insensitive of *some* kind.  At minimum, we&apos;ll be ascii-case-insensitive.  (And I think we&apos;ll probably end at that.)
&gt; 
&gt; It would be nice if you could either include a link to the spec or to the mailing list in the ChangeLog.

Added spec link.

&gt;&gt; Source/WebCore/css/CSSParser.cpp:3037
&gt;&gt; +    AtomicString variableName = name.substring(12, name.length() - 12).lower();
&gt; 
&gt; Where does 12 come from? Can we use a const char* and sizeof - 1?

Done.

&gt;&gt; Source/WebCore/css/CSSParserValues.h:101
&gt;&gt; +    }
&gt; 
&gt; I don&apos;t think this helper function is useful since you only use it in one place and it uses String instead of AtomicString.  This is less efficient than just calling lower() on name, then creating an AtomicString in storeVariableDeclaration (it allocates an extra string).

I want to avoid adding intermediate strings to the atomic string table (ie. the non-case-normalized and non-shortened strings). This operation could normally be done in place, but everywhere else I look CSSParserStrings coming in from the tokenizer are treated as immutable, so I am assuming that modifying the underlying string is not expected.

&gt;&gt; LayoutTests/fast/css/variables/case-insensitive-expected.html:3
&gt;&gt; +&lt;style&gt;
&gt; 
&gt; Can we just make this into a script test?  reftests run slower than script tests.

http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree &quot;Most test cases can be easily transformed into ref-tests and it is the preferred way to add new tests.&quot; IMHO ref tests are ideal for testing CSS variables because they provide very clear documentation of the expected behavior of variable resolution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739478</commentid>
    <comment_count>8</comment_count>
      <attachid>168114</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-10-10 18:36:02 -0700</bug_when>
    <thetext>Created attachment 168114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740078</commentid>
    <comment_count>9</comment_count>
      <attachid>168114</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-11 10:05:10 -0700</bug_when>
    <thetext>Comment on attachment 168114
Patch

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

&gt; Source/WebCore/css/CSSParser.cpp:3041
&gt; +    AtomicString variableName = name.substring(prefixLength, name.length() - prefixLength).lower();

What I&apos;m suggesting is:
String lowerName = name.lower();
AtomicString variableName = lowerName.is8Bit() ? AtomicString(lowerName.characters8() + prefixLength, lowerName.length() - prefixLength) : AtomicString(lowerName.characters16() + prefixLength, lowerName.length() - prefixLength);

This creates 1 extra String and 1 AtomicString with the variable name.  Your code creates 2 Strings and 1 AtomicString.  You could make a static inline helper function for this if you wanted.  It doesn&apos;t seem like it&apos;s worth adding to CSSParserValues.h since it&apos;s only used in one place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740087</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-11 10:09:47 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Can we just make this into a script test?  reftests run slower than script tests.
&gt; 
&gt; http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree &quot;Most test cases can be easily transformed into ref-tests and it is the preferred way to add new tests.&quot; IMHO ref tests are ideal for testing CSS variables because they provide very clear documentation of the expected behavior of variable resolution.

I think that sentence means the preferred way to add new pixel tests.  It&apos;s under the heading &quot;Pixel Test Tips&quot;.  Also, I think it&apos;s more clear to have the test write &quot;PASS getComputedStyle(div).backgroundColor is green&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740372</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-11 16:10:10 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 168114 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=168114&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:3041
&gt; &gt; +    AtomicString variableName = name.substring(prefixLength, name.length() - prefixLength).lower();
&gt; 
&gt; What I&apos;m suggesting is:
&gt; String lowerName = name.lower();
&gt; AtomicString variableName = lowerName.is8Bit() ? AtomicString(lowerName.characters8() + prefixLength, lowerName.length() - prefixLength) : AtomicString(lowerName.characters16() + prefixLength, lowerName.length() - prefixLength);
&gt; 
&gt; This creates 1 extra String and 1 AtomicString with the variable name.  Your code creates 2 Strings and 1 AtomicString.  You could make a static inline helper function for this if you wanted.  It doesn&apos;t seem like it&apos;s worth adding to CSSParserValues.h since it&apos;s only used in one place.

Why don&apos;t we just do AtomicString(name.lower().substringSharingImpl(prefixLength).impl()); ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740376</commentid>
    <comment_count>12</comment_count>
      <attachid>168114</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-10-11 16:11:50 -0700</bug_when>
    <thetext>Comment on attachment 168114
Patch

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

&gt;&gt; Source/WebCore/css/CSSParser.cpp:3041
&gt;&gt; +    AtomicString variableName = name.substring(prefixLength, name.length() - prefixLength).lower();
&gt; 
&gt; What I&apos;m suggesting is:
&gt; String lowerName = name.lower();
&gt; AtomicString variableName = lowerName.is8Bit() ? AtomicString(lowerName.characters8() + prefixLength, lowerName.length() - prefixLength) : AtomicString(lowerName.characters16() + prefixLength, lowerName.length() - prefixLength);
&gt; 
&gt; This creates 1 extra String and 1 AtomicString with the variable name.  Your code creates 2 Strings and 1 AtomicString.  You could make a static inline helper function for this if you wanted.  It doesn&apos;t seem like it&apos;s worth adding to CSSParserValues.h since it&apos;s only used in one place.

name is const &amp;, and CSSParserString::lower() returns void and mutates in place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740507</commentid>
    <comment_count>13</comment_count>
      <attachid>168332</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-10-11 18:49:47 -0700</bug_when>
    <thetext>Created attachment 168332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742135</commentid>
    <comment_count>14</comment_count>
      <attachid>168332</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-15 10:09:27 -0700</bug_when>
    <thetext>Comment on attachment 168332
Patch

Clearing flags on attachment: 168332

Committed r131313: &lt;http://trac.webkit.org/changeset/131313&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742136</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-15 10:09:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167676</attachid>
            <date>2012-10-08 20:23:40 -0700</date>
            <delta_ts>2012-10-10 18:35:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98712-20121009142241.patch</filename>
            <type>text/plain</type>
            <size>8068</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVjODg2OTkyMTc2YWMx
NzUzYTQ1ODM2OGE4OGM2M2JhZDFkNjhiOC4uOGYzNTk4YWFiYzM3ZjJjYjIxYzFhZTNiODQxNTU3
YzQ0MmU2NzM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTEwLTA4ICBMdWtl
IE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBD
U1MgdmFyaWFibGUgbmFtZXMgY2FzZS1pbnNlbnNpdGl2ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2Vy
IHRvIG5vcm1hbGl6ZSBhbGwgdmFyaWFibGUgbmFtZXMgdG8gbG93ZXIgY2FzZSwKKyAgICAgICAg
bWFraW5nIHZhcmlhYmxlIGRlZmluaXRpb25zIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBwcm9wZXJ0
eSBuYW1lcywgd2hpY2ggYXJlIGFsc28gY2FzZSBpbnNlbnNpdGl2ZS4KKworICAgICAgICBUZXN0
OiBmYXN0L2Nzcy92YXJpYWJsZXMvY2FzZS1pbnNlbnNpdGl2ZS5odG1sCisKKyAgICAgICAgKiBj
c3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlUHJp
bWl0aXZlTnVtZXJpY1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpjcmVhdGVQcmltaXRpdmVWYXJpYWJsZU5hbWVWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsaWRQcmltaXRpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6c3RvcmVWYXJpYWJsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6
CisgICAgICAgIChDU1NQYXJzZXIpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclN0cmluZzo6c3Vic3RyaW5nKToKKyAgICAgICAg
KENTU1BhcnNlclN0cmluZyk6CisgICAgICAgIEFkZCBhIHN1YnN0cmluZyBmdW5jdGlvbiB0byBy
ZW1vdmUgZHVwbGljYXRlIGNvZGUgaW4gQ1NTUGFyc2VyLgorCiAyMDEyLTEwLTA4ICBKYWVodW4g
TGltICA8bGphZWh1bi5saW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0NBSVJPXSBBZGp1c3Qg
dGhlIHNvdXJjZSByZWN0IHNpemUgd2hlbiBJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcgaXMg
ZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBiOWRmYmVhZDQxNzIwODgyYjYw
NWMwOTFkZGQ3ZGVmMjJmYzFkMzc0Li40ZjBhM2YxNmQyODQ2YjU1MDBkYjZhYjM2Yjc4ODFjMzIy
M2ZhOTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTU3Myw3ICsxNTczLDcgQEAg
aW5saW5lIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6Y3JlYXRlUHJp
bWl0aXZlTnVtZXJpY1ZhbHVlKENTU1AKIHsKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAg
ICBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1F
KQotICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS0+c3RyaW5n
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUUpOworICAgICAgICByZXR1cm4g
Y3JlYXRlUHJpbWl0aXZlVmFyaWFibGVOYW1lVmFsdWUodmFsdWUpOwogI2VuZGlmCiAKICAgICBp
ZiAobV9wYXJzZWRDYWxjdWxhdGlvbikgewpAQCAtMTYwMCw2ICsxNjAwLDE1IEBAIGlubGluZSBQ
YXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OmNyZWF0ZVByaW1pdGl2ZVN0
cmluZ1ZhbHVlKENTU1BhCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHZh
bHVlLT5zdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKIH0KIAorI2lmIEVO
QUJMRShDU1NfVkFSSUFCTEVTKQoraW5saW5lIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IENTU1BhcnNlcjo6Y3JlYXRlUHJpbWl0aXZlVmFyaWFibGVOYW1lVmFsdWUoQ1NTUGFyc2VyVmFs
dWUqIHZhbHVlKQoreworICAgIEFTU0VSVCh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1ZBUklBQkxFX05BTUUpOworICAgIEF0b21pY1N0cmluZyB2YXJpYWJsZU5hbWUgPSBT
dHJpbmcodmFsdWUtPnN0cmluZykubG93ZXIoKTsKKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSh2YXJpYWJsZU5hbWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVf
TkFNRSk7Cit9CisjZW5kaWYKKwogc3RhdGljIGlubGluZSBib29sIGlzQ29tbWEoQ1NTUGFyc2Vy
VmFsdWUqIHZhbHVlKQogeyAKICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUtPnVuaXQgPT0gQ1NT
UGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbHVlLT5pVmFsdWUgPT0gJywnOyAKQEAgLTE2NDAs
NyArMTY0OSw3IEBAIGlubGluZSBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJz
ZXI6OnBhcnNlVmFsaWRQcmltaXRpdmUoaW50IGlkZW50aWZpCiAjZW5kaWYKICNpZiBFTkFCTEUo
Q1NTX1ZBUklBQkxFUykKICAgICBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19WQVJJQUJMRV9OQU1FKQotICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZSh2YWx1ZS0+c3RyaW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUUp
OworICAgICAgICByZXR1cm4gY3JlYXRlUHJpbWl0aXZlVmFyaWFibGVOYW1lVmFsdWUodmFsdWUp
OwogI2VuZGlmCiAgICAgaWYgKHZhbHVlLT51bml0ID49IENTU1BhcnNlclZhbHVlOjpRX0VNUykK
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVBbGxvd2luZ01hcmdpblF1
aXJrKHZhbHVlLT5mVmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKTsKQEAgLTE2ODMs
NyArMTY5Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIGlm
ICghaWQgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9O
QU1FICYmIG51bSA9PSAxKSB7Ci0gICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS0+c3RyaW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZB
UklBQkxFX05BTUUpLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIGNy
ZWF0ZVByaW1pdGl2ZVZhcmlhYmxlTmFtZVZhbHVlKHZhbHVlKSwgaW1wb3J0YW50KTsKICAgICAg
ICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MzAyNSw3ICszMDM0LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnN0b3JlVmFyaWFibGVEZWNsYXJhdGlv
bihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHIKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIEFTU0VSVChuYW1lLmxlbmd0aCgpID4gMTIpOwotICAgIEF0b21pY1N0cmlu
ZyB2YXJpYWJsZU5hbWUgPSBuYW1lLmlzOEJpdCgpID8gQXRvbWljU3RyaW5nKG5hbWUuY2hhcmFj
dGVyczgoKSArIDEyLCBuYW1lLmxlbmd0aCgpIC0gMTIpIDogQXRvbWljU3RyaW5nKG5hbWUuY2hh
cmFjdGVyczE2KCkgKyAxMiwgbmFtZS5sZW5ndGgoKSAtIDEyKTsKKyAgICBBdG9taWNTdHJpbmcg
dmFyaWFibGVOYW1lID0gbmFtZS5zdWJzdHJpbmcoMTIsIG5hbWUubGVuZ3RoKCkgLSAxMikubG93
ZXIoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwLCBzaXplID0gdmFsdWUtPnNpemUoKTsgaSA8IHNpemU7IGkrKykgewpAQCAtMzAzNiw3ICsz
MDQ1LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnN0b3JlVmFyaWFibGVEZWNsYXJhdGlvbihjb25zdCBD
U1NQYXJzZXJTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHIKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoY3NzVmFsdWUtPmNzc1RleHQoKSk7CiAgICAgfQotICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5VmFyaWFibGUsIENTU1ZhcmlhYmxlVmFsdWU6OmNyZWF0ZSh2
YXJpYWJsZU5hbWUsIGJ1aWxkZXIudG9TdHJpbmcoKSksIGltcG9ydGFudCwgZmFsc2UpOworICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5VmFyaWFibGUsIENTU1ZhcmlhYmxlVmFsdWU6OmNyZWF0
ZSh2YXJpYWJsZU5hbWUsIGJ1aWxkZXIudG9TdHJpbmcoKS5sb3dlcigpKSwgaW1wb3J0YW50LCBm
YWxzZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDcxZDczOTk1ZDAx
OWI5YzgwYTQ3MTFkODUwNjhiMTZiMzI3MjY1ODEuLjUzZjU4YWRjMWY5MWRmMzgwNGMxYzI2MWYy
ODk1ZjE5MjU4YTIyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTM2Niw2ICszNjYsOSBA
QCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmlt
aXRpdmVOdW1lcmljVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKTsKICAgICBQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVTdHJpbmdWYWx1ZShDU1NQYXJzZXJWYWx1ZSop
OworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVZhcmlhYmxlTmFtZVZhbHVlKENTU1BhcnNlclZhbHVlKik7
CisjZW5kaWYKIAogICAgIHN0YXRpYyBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IENTU1BhcnNlckNv
bnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1
ZXMuaAppbmRleCA4M2FhNzdjMzM1NTZhN2ViYzM1NmIwMzU1ZTdiMTNhZWNjMWUyYTc0Li4yZmRk
OGVlZTQ4NWUxZDIzNjBmMzQyYzZlMTYyYjIwOTQ2NjIyY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlclZhbHVlcy5oCkBAIC05NCw2ICs5NCwxMiBAQCBzdHJ1Y3QgQ1NTUGFyc2VyU3RyaW5n
IHsKICAgICBvcGVyYXRvciBTdHJpbmcoKSBjb25zdCB7IHJldHVybiBpczhCaXQoKSA/IFN0cmlu
ZyhtX2RhdGEuY2hhcmFjdGVyczgsIG1fbGVuZ3RoKSA6IFN0cmluZyhtX2RhdGEuY2hhcmFjdGVy
czE2LCBtX2xlbmd0aCk7IH0KICAgICBvcGVyYXRvciBBdG9taWNTdHJpbmcoKSBjb25zdCB7IHJl
dHVybiBpczhCaXQoKSA/IEF0b21pY1N0cmluZyhtX2RhdGEuY2hhcmFjdGVyczgsIG1fbGVuZ3Ro
KSA6IEF0b21pY1N0cmluZyhtX2RhdGEuY2hhcmFjdGVyczE2LCBtX2xlbmd0aCk7IH0KIAorICAg
IFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCkgY29u
c3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2xlbmd0aCA+PSBwb3NpdGlvbiArIGxlbmd0aCk7
CisgICAgICAgIHJldHVybiBpczhCaXQoKSA/IFN0cmluZyhtX2RhdGEuY2hhcmFjdGVyczggKyBw
b3NpdGlvbiwgbGVuZ3RoKSA6IFN0cmluZyhtX2RhdGEuY2hhcmFjdGVyczE2ICsgcG9zaXRpb24s
IGxlbmd0aCk7CisgICAgfQorCiAgICAgdW5pb24gewogICAgICAgICBMQ2hhciogY2hhcmFjdGVy
czg7CiAgICAgICAgIFVDaGFyKiBjaGFyYWN0ZXJzMTY7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDdmZGM2Yjg3MTE3OWI4
ODRmZjNkZTk0ODQ2M2JhYmZlZGQxNmRiOC4uNzQ5OTJjYmRhMGJmMDY1N2JmNTliNzVlNDZjMmNi
NjA5NjFiNWJlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTA4ICBMdWtlIE1hY3Bo
ZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBDU1MgdmFy
aWFibGUgbmFtZXMgY2FzZS1pbnNlbnNpdGl2ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgdGhhdCB2YXJpYWJsZSBuYW1lcyBhcmUgbWF0
Y2ggY29ycmVjdGx5IHdoZW4gZGlmZmVyZW50IGNhc2UgaXMgdXNlZC4KKworICAgICAgICAqIGZh
c3QvY3NzL3ZhcmlhYmxlcy9jYXNlLWluc2Vuc2l0aXZlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy9jYXNlLWluc2Vuc2l0aXZlLmh0bWw6IEFkZGVk
LgorCiAyMDEyLTEwLTA4ICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgTm90IHJldmlld2VkLiBSZWJhc2VsaW5lcyBmb3IgQ2hyb21pdW0uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FzZS1pbnNlbnNpdGl2ZS1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2Nhc2UtaW5zZW5zaXRpdmUtZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzBhNWVlNWJiNmU3ODIzN2ZlYzg2YmQyYTM3NTA0OTNl
ODE0NDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVz
L2Nhc2UtaW5zZW5zaXRpdmUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8c3R5bGU+CitkaXYgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworfQorPC9zdHlsZT4KKzxkaXY+VGhpcyB0ZXh0IHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFj
a2dyb3VuZC48L2Rpdj4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3ZhcmlhYmxlcy9jYXNlLWluc2Vuc2l0aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92
YXJpYWJsZXMvY2FzZS1pbnNlbnNpdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzNTcwZjYzOTc5MjU2
YTVjMWRhZDdkZWRmZDQ2NWYwYjQzNTMxYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FzZS1pbnNlbnNpdGl2ZS5odG1sCkBAIC0wLDAgKzEsMTMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0PgoraW50ZXJuYWxzLnNldHRpbmdz
LnNldENTU1ZhcmlhYmxlc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2RpdiB7
CisgIGJhY2tncm91bmQtY29sb3I6IC13ZWJraXQtdmFyKE5hTWUpOworICAtd2Via2l0LXZhci1u
QW1FOiBncmVlbjsKK30KKzwvc3R5bGU+Cis8ZGl2PlRoaXMgdGV4dCBzaG91bGQgaGF2ZSBhIGdy
ZWVuIGJhY2tncm91bmQuPC9kaXY+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168114</attachid>
            <date>2012-10-10 18:36:02 -0700</date>
            <delta_ts>2012-10-11 18:49:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98712-20121011123501.patch</filename>
            <type>text/plain</type>
            <size>8295</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwOTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgyMzA2YjZlOWY2OGQx
NGU4ZjY5YWY1OWMxOWIwYTc0MWJhNDhkYS4uMmJjMzljZWViZTNiMDJmODNjZmRiZDNmYmQxYmQw
MDY0OTVhZGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEwLTA4ICBMdWtl
IE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBD
U1MgdmFyaWFibGUgbmFtZXMgY2FzZS1pbnNlbnNpdGl2ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2Vy
IHRvIG5vcm1hbGl6ZSBhbGwgdmFyaWFibGUgbmFtZXMgdG8gbG93ZXIgY2FzZSwKKyAgICAgICAg
bWFraW5nIHZhcmlhYmxlIGRlZmluaXRpb25zIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBwcm9wZXJ0
eSBuYW1lcywgd2hpY2ggYXJlIGFsc28gY2FzZSBpbnNlbnNpdGl2ZS4KKyAgICAgICAgU3BlYzog
aHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXZhcmlhYmxlcy8jZGVmaW5pbmctdmFyaWFibGVz
CisKKyAgICAgICAgVGVzdDogZmFzdC9jc3MvdmFyaWFibGVzL2Nhc2UtaW5zZW5zaXRpdmUuaHRt
bAorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OmNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlUHJpbWl0aXZlVmFyaWFibGVOYW1l
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbGlkUHJpbWl0aXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnN0b3JlVmFyaWFibGVEZWNsYXJhdGlvbik6CisgICAgICAgICog
Y3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyVmFsdWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTdHJpbmc6OnN1YnN0
cmluZyk6CisgICAgICAgIChDU1NQYXJzZXJTdHJpbmcpOgorICAgICAgICBBZGQgYSBzdWJzdHJp
bmcgZnVuY3Rpb24gdG8gcmVtb3ZlIGR1cGxpY2F0ZSBjb2RlIGluIENTU1BhcnNlci4KKwogMjAx
Mi0xMC0xMCAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgRm9udFZlcnRpY2FsRGF0YUNhY2hlIHNob3VsZCBhbGxvdyB6ZXJvIGFzIGEga2V5IHZhbHVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDQ2ODZjOWNkMzBiYWY2MTk5OTdiMjkxYTRk
NmYxZTBmMzgyYzU2YTQuLjhiOGQ4ZGRlNjFlNmRkMDJkZTIzYjhkZGM4Nzk1Y2Y4YjgwNDFlMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xNTczLDcgKzE1NzMsNyBAQCBpbmxpbmUg
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpjcmVhdGVQcmltaXRpdmVO
dW1lcmljVmFsdWUoQ1NTUAogewogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIGlmICh2
YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUUpCi0gICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLT5zdHJpbmcsIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFNRSk7CisgICAgICAgIHJldHVybiBjcmVhdGVQ
cmltaXRpdmVWYXJpYWJsZU5hbWVWYWx1ZSh2YWx1ZSk7CiAjZW5kaWYKIAogICAgIGlmIChtX3Bh
cnNlZENhbGN1bGF0aW9uKSB7CkBAIC0xNjAwLDYgKzE2MDAsMTUgQEAgaW5saW5lIFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6Y3JlYXRlUHJpbWl0aXZlU3RyaW5nVmFs
dWUoQ1NTUGEKICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUodmFsdWUtPnN0
cmluZywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogfQogCisjaWYgRU5BQkxFKENT
U19WQVJJQUJMRVMpCitpbmxpbmUgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFy
c2VyOjpjcmVhdGVQcmltaXRpdmVWYXJpYWJsZU5hbWVWYWx1ZShDU1NQYXJzZXJWYWx1ZSogdmFs
dWUpCit7CisgICAgQVNTRVJUKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
VkFSSUFCTEVfTkFNRSk7CisgICAgQXRvbWljU3RyaW5nIHZhcmlhYmxlTmFtZSA9IFN0cmluZyh2
YWx1ZS0+c3RyaW5nKS5sb3dlcigpOworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHZhcmlhYmxlTmFtZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FKTsK
K30KKyNlbmRpZgorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNDb21tYShDU1NQYXJzZXJWYWx1ZSog
dmFsdWUpCiB7IAogICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJW
YWx1ZTo6T3BlcmF0b3IgJiYgdmFsdWUtPmlWYWx1ZSA9PSAnLCc7IApAQCAtMTY0MCw3ICsxNjQ5
LDcgQEAgaW5saW5lIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFy
c2VWYWxpZFByaW1pdGl2ZShpbnQgaWRlbnRpZmkKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfVkFS
SUFCTEVTKQogICAgIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZB
UklBQkxFX05BTUUpCi0gICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZh
bHVlLT5zdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFNRSk7CisgICAg
ICAgIHJldHVybiBjcmVhdGVQcmltaXRpdmVWYXJpYWJsZU5hbWVWYWx1ZSh2YWx1ZSk7CiAjZW5k
aWYKICAgICBpZiAodmFsdWUtPnVuaXQgPj0gQ1NTUGFyc2VyVmFsdWU6OlFfRU1TKQogICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUFsbG93aW5nTWFyZ2luUXVpcmsodmFs
dWUtPmZWYWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwpAQCAtMTY4Myw3ICsxNjky
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgaWYgKCFpZCAm
JiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUUgJiYg
bnVtID09IDEpIHsKLSAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHZhbHVlLT5zdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVf
TkFNRSksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgY3JlYXRlUHJp
bWl0aXZlVmFyaWFibGVOYW1lVmFsdWUodmFsdWUpLCBpbXBvcnRhbnQpOwogICAgICAgICBtX3Zh
bHVlTGlzdC0+bmV4dCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMDI2LDgg
KzMwMzUsMTAgQEAgdm9pZCBDU1NQYXJzZXI6OnN0b3JlVmFyaWFibGVEZWNsYXJhdGlvbihjb25z
dCBDU1NQYXJzZXJTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHIKICAgICBpZiAoIXZhbHVlKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgQVNTRVJUKG5hbWUubGVuZ3RoKCkgPiAxMik7Ci0gICAg
QXRvbWljU3RyaW5nIHZhcmlhYmxlTmFtZSA9IG5hbWUuaXM4Qml0KCkgPyBBdG9taWNTdHJpbmco
bmFtZS5jaGFyYWN0ZXJzOCgpICsgMTIsIG5hbWUubGVuZ3RoKCkgLSAxMikgOiBBdG9taWNTdHJp
bmcobmFtZS5jaGFyYWN0ZXJzMTYoKSArIDEyLCBuYW1lLmxlbmd0aCgpIC0gMTIpOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSBzaXplb2YoIi13ZWJraXQtdmFyLSIp
IC0gMTsKKyAgICAKKyAgICBBU1NFUlQobmFtZS5sZW5ndGgoKSA+IHByZWZpeExlbmd0aCk7Cisg
ICAgQXRvbWljU3RyaW5nIHZhcmlhYmxlTmFtZSA9IG5hbWUuc3Vic3RyaW5nKHByZWZpeExlbmd0
aCwgbmFtZS5sZW5ndGgoKSAtIHByZWZpeExlbmd0aCkubG93ZXIoKTsKIAogICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gdmFsdWUtPnNp
emUoKTsgaSA8IHNpemU7IGkrKykgewpAQCAtMzAzOCw3ICszMDQ5LDcgQEAgdm9pZCBDU1NQYXJz
ZXI6OnN0b3JlVmFyaWFibGVEZWNsYXJhdGlvbihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIG5hbWUs
IFBhc3NPd25QdHIKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Y3NzVmFsdWUtPmNzc1RleHQoKSk7CiAgICAgfQotICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
VmFyaWFibGUsIENTU1ZhcmlhYmxlVmFsdWU6OmNyZWF0ZSh2YXJpYWJsZU5hbWUsIGJ1aWxkZXIu
dG9TdHJpbmcoKSksIGltcG9ydGFudCwgZmFsc2UpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5VmFyaWFibGUsIENTU1ZhcmlhYmxlVmFsdWU6OmNyZWF0ZSh2YXJpYWJsZU5hbWUsIGJ1aWxk
ZXIudG9TdHJpbmcoKS5sb3dlcigpKSwgaW1wb3J0YW50LCBmYWxzZSk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDcxZDczOTk1ZDAxOWI5YzgwYTQ3MTFkODUwNjhiMTZi
MzI3MjY1ODEuLjUzZjU4YWRjMWY5MWRmMzgwNGMxYzI2MWYyODk1ZjE5MjU4YTIyZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTM2Niw2ICszNjYsOSBAQCBwdWJsaWM6CiAKICAgICBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoQ1NT
UGFyc2VyVmFsdWUqKTsKICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQ
cmltaXRpdmVTdHJpbmdWYWx1ZShDU1NQYXJzZXJWYWx1ZSopOworI2lmIEVOQUJMRShDU1NfVkFS
SUFCTEVTKQorICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2
ZVZhcmlhYmxlTmFtZVZhbHVlKENTU1BhcnNlclZhbHVlKik7CisjZW5kaWYKIAogICAgIHN0YXRp
YyBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBjb25zdCBTdHJpbmcm
IHVybCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAppbmRleCA4M2FhNzdjMzM1
NTZhN2ViYzM1NmIwMzU1ZTdiMTNhZWNjMWUyYTc0Li4yZmRkOGVlZTQ4NWUxZDIzNjBmMzQyYzZl
MTYyYjIwOTQ2NjIyY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
VmFsdWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCkBAIC05
NCw2ICs5NCwxMiBAQCBzdHJ1Y3QgQ1NTUGFyc2VyU3RyaW5nIHsKICAgICBvcGVyYXRvciBTdHJp
bmcoKSBjb25zdCB7IHJldHVybiBpczhCaXQoKSA/IFN0cmluZyhtX2RhdGEuY2hhcmFjdGVyczgs
IG1fbGVuZ3RoKSA6IFN0cmluZyhtX2RhdGEuY2hhcmFjdGVyczE2LCBtX2xlbmd0aCk7IH0KICAg
ICBvcGVyYXRvciBBdG9taWNTdHJpbmcoKSBjb25zdCB7IHJldHVybiBpczhCaXQoKSA/IEF0b21p
Y1N0cmluZyhtX2RhdGEuY2hhcmFjdGVyczgsIG1fbGVuZ3RoKSA6IEF0b21pY1N0cmluZyhtX2Rh
dGEuY2hhcmFjdGVyczE2LCBtX2xlbmd0aCk7IH0KIAorICAgIFN0cmluZyBzdWJzdHJpbmcodW5z
aWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX2xlbmd0aCA+PSBwb3NpdGlvbiArIGxlbmd0aCk7CisgICAgICAgIHJldHVybiBpczhC
aXQoKSA/IFN0cmluZyhtX2RhdGEuY2hhcmFjdGVyczggKyBwb3NpdGlvbiwgbGVuZ3RoKSA6IFN0
cmluZyhtX2RhdGEuY2hhcmFjdGVyczE2ICsgcG9zaXRpb24sIGxlbmd0aCk7CisgICAgfQorCiAg
ICAgdW5pb24gewogICAgICAgICBMQ2hhciogY2hhcmFjdGVyczg7CiAgICAgICAgIFVDaGFyKiBj
aGFyYWN0ZXJzMTY7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2U1NmYxNmUwOTg1NDhhOGMzN2MyMjY5ZmYwMzYyNWFjYWM2
ZjIzOS4uNTI2MGI5MDc2MGVjMmQwYjllNzcxNGU0NmFiZWI3YzJjZGY4MWVkOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEyLTEwLTA4ICBMdWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBDU1MgdmFyaWFibGUgbmFtZXMgY2FzZS1pbnNl
bnNpdGl2ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4NzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHRlc3QgdGhhdCB2YXJpYWJsZSBuYW1lcyBhcmUgbWF0Y2ggY29ycmVjdGx5IHdoZW4gZGlm
ZmVyZW50IGNhc2UgaXMgdXNlZC4KKworICAgICAgICAqIGZhc3QvY3NzL3ZhcmlhYmxlcy9jYXNl
LWluc2Vuc2l0aXZlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3Zh
cmlhYmxlcy9jYXNlLWluc2Vuc2l0aXZlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEwLTEwICBPamFu
IFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHBlcmYgdGVzdHMg
dGhhdCBoYXZlbid0IGZhaWxlZCBpbiB0aGUgcGFzdCA1MDAgcnVucy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9jYXNlLWluc2Vuc2l0aXZlLWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FzZS1pbnNlbnNpdGl2ZS1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MGE1ZWU1YmI2ZTc4MjM3ZmVjODZiZDJhMzc1MDQ5M2U4
MTQ0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMv
Y2FzZS1pbnNlbnNpdGl2ZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KK2RpdiB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47Cit9Cis8L3N0eWxlPgorPGRpdj5UaGlzIHRleHQgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNr
Z3JvdW5kLjwvZGl2PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
dmFyaWFibGVzL2Nhc2UtaW5zZW5zaXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Zh
cmlhYmxlcy9jYXNlLWluc2Vuc2l0aXZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjM1NzBmNjM5NzkyNTZh
NWMxZGFkN2RlZGZkNDY1ZjBiNDM1MzFjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3ZhcmlhYmxlcy9jYXNlLWluc2Vuc2l0aXZlLmh0bWwKQEAgLTAsMCArMSwxMyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+CitpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0Q1NTVmFyaWFibGVzRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorZGl2IHsK
KyAgYmFja2dyb3VuZC1jb2xvcjogLXdlYmtpdC12YXIoTmFNZSk7CisgIC13ZWJraXQtdmFyLW5B
bUU6IGdyZWVuOworfQorPC9zdHlsZT4KKzxkaXY+VGhpcyB0ZXh0IHNob3VsZCBoYXZlIGEgZ3Jl
ZW4gYmFja2dyb3VuZC48L2Rpdj4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168332</attachid>
            <date>2012-10-11 18:49:47 -0700</date>
            <delta_ts>2012-10-15 10:09:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98712-20121012124844.patch</filename>
            <type>text/plain</type>
            <size>10202</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwOTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgyMzA2YjZlOWY2OGQx
NGU4ZjY5YWY1OWMxOWIwYTc0MWJhNDhkYS4uNWI5MGFjYTNjNzcwYzU2Zjc1NWVlOWJlMmU5YzQy
ZTg5ZWQ4NGExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEwLTA4ICBMdWtl
IE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBD
U1MgdmFyaWFibGUgbmFtZXMgY2FzZS1pbnNlbnNpdGl2ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2Vy
IHRvIG5vcm1hbGl6ZSBhbGwgdmFyaWFibGUgbmFtZXMgdG8gbG93ZXIgY2FzZSwKKyAgICAgICAg
bWFraW5nIHZhcmlhYmxlIGRlZmluaXRpb25zIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBwcm9wZXJ0
eSBuYW1lcywgd2hpY2ggYXJlIGFsc28gY2FzZSBpbnNlbnNpdGl2ZS4KKyAgICAgICAgU3BlYzog
aHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXZhcmlhYmxlcy8jZGVmaW5pbmctdmFyaWFibGVz
CisKKyAgICAgICAgVGVzdDogZmFzdC9jc3MvdmFyaWFibGVzL2Nhc2UtaW5zZW5zaXRpdmUuaHRt
bAorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OmNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlUHJpbWl0aXZlVmFyaWFibGVOYW1l
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbGlkUHJpbWl0aXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnN0b3JlVmFyaWFibGVEZWNsYXJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJTdHJpbmc6Omxvd2VyU3Vic3RyaW5nKToKKyAgICAgICAgQWRkZWQg
ZnVuY3Rpb24gdG8gY29tcHV0ZSBhIGxvd2VyIGNhc2Ugc3Vic3RyaW5nIGFzIGFuIEF0b21pY1N0
cmluZyBmcm9tIGEgQ1NTUGFyc2VyU3RyaW5nLgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoK
KyAgICAgICAgKENTU1BhcnNlcik6CisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5oOgor
ICAgICAgICAoQ1NTUGFyc2VyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclN0
cmluZzo6bG93ZXJTdWJzdHJpbmcpOgorCiAyMDEyLTEwLTEwICBLZW5pY2hpIElzaGliYXNoaSAg
PGJhc2hpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGb250VmVydGljYWxEYXRhQ2FjaGUgc2hv
dWxkIGFsbG93IHplcm8gYXMgYSBrZXkgdmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5k
ZXggNDY4NmM5Y2QzMGJhZjYxOTk5N2IyOTFhNGQ2ZjFlMGYzODJjNTZhNC4uY2U0NzFmOTAwZTI0
MTYwZWQ0OTgyYmMzZjA4MzEwY2NlMTZiOWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTI5MSwzMSArMjkxLDUwIEBAIENTU1BhcnNlcjo6fkNTU1BhcnNlcigpCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBt
YWtlTG93ZXIoQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorQUxX
QVlTX0lOTElORSBzdGF0aWMgdm9pZCBtYWtlTG93ZXIoY29uc3QgQ2hhcmFjdGVyVHlwZSogaW5w
dXQsIENoYXJhY3RlclR5cGUqIG91dHB1dCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIC8vIEZJ
WE1FOiBJZiB3ZSBuZWVkIFVuaWNvZGUgbG93ZXJjYXNpbmcgaGVyZSwgdGhlbiB3ZSBwcm9iYWJs
eSB3YW50IHRoZSByZWFsIGtpbmQKICAgICAvLyB0aGF0IGNhbiBwb3RlbnRpYWxseSBjaGFuZ2Ug
dGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHJhdGhlciB0aGFuIHRoZSBjaGFyYWN0ZXIKICAgICAv
LyBieSBjaGFyYWN0ZXIga2luZC4gSWYgd2UgZG9uJ3QgbmVlZCBVbmljb2RlIGxvd2VyY2FzaW5n
LCBpdCB3b3VsZCBiZSBnb29kIHRvCiAgICAgLy8gc2ltcGxpZnkgdGhpcyBmdW5jdGlvbi4KIAot
ICAgIGlmIChjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVycywgbGVuZ3RoKSkgeworICAg
IGlmIChjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoaW5wdXQsIGxlbmd0aCkpIHsKICAgICAgICAgLy8g
RmFzdCBjYXNlIGZvciBhbGwtQVNDSUkuCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGNoYXJhY3RlcnNbaV0gPSB0b0FTQ0lJTG93ZXIo
Y2hhcmFjdGVyc1tpXSk7CisgICAgICAgICAgICBvdXRwdXRbaV0gPSB0b0FTQ0lJTG93ZXIoaW5w
dXRbaV0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGNoYXJhY3RlcnNbaV0gPSBVbmljb2RlOjp0b0xvd2Vy
KGNoYXJhY3RlcnNbaV0pOworICAgICAgICAgICAgb3V0cHV0W2ldID0gVW5pY29kZTo6dG9Mb3dl
cihpbnB1dFtpXSk7CiAgICAgfQogfQogCiB2b2lkIENTU1BhcnNlclN0cmluZzo6bG93ZXIoKQog
ewogICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICBtYWtlTG93ZXIoY2hhcmFjdGVyczgoKSwg
bGVuZ3RoKCkpOworICAgICAgICBtYWtlTG93ZXIoY2hhcmFjdGVyczgoKSwgY2hhcmFjdGVyczgo
KSwgbGVuZ3RoKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbWFrZUxvd2VyKGNo
YXJhY3RlcnMxNigpLCBsZW5ndGgoKSk7CisgICAgbWFrZUxvd2VyKGNoYXJhY3RlcnMxNigpLCBj
aGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCkpOworfQorCitBdG9taWNTdHJpbmcgQ1NTUGFyc2VyU3Ry
aW5nOjpsb3dlclN1YnN0cmluZyh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKSBj
b25zdAoreworICAgIEFTU0VSVChtX2xlbmd0aCA+PSBwb3NpdGlvbiArIGxlbmd0aCk7CisKKyAg
ICBSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0OworCisgICAgaWYgKGlzOEJpdCgpKSB7CisgICAg
ICAgIExDaGFyKiBidWZmZXI7CisgICAgICAgIHJlc3VsdCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOworICAgICAgICBtYWtlTG93ZXIoY2hhcmFjdGVy
czgoKSArIHBvc2l0aW9uLCBidWZmZXIsIGxlbmd0aCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
VUNoYXIqIGJ1ZmZlciA9IDA7CisgICAgICAgIHJlc3VsdCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOworICAgICAgICBtYWtlTG93ZXIoY2hhcmFjdGVy
czE2KCkgKyBwb3NpdGlvbiwgYnVmZmVyLCBsZW5ndGgpOworICAgIH0KKworICAgIHJldHVybiBB
dG9taWNTdHJpbmcocmVzdWx0KTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OnNldHVwUGFyc2VyKGNv
bnN0IGNoYXIqIHByZWZpeCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHN1ZmZp
eCkKQEAgLTE1NzMsNyArMTU5Miw3IEBAIGlubGluZSBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBDU1NQYXJzZXI6OmNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZShDU1NQCiB7CiAjaWYg
RU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgaWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFNRSkKLSAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUodmFsdWUtPnN0cmluZywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJM
RV9OQU1FKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVByaW1pdGl2ZVZhcmlhYmxlTmFtZVZhbHVl
KHZhbHVlKTsKICNlbmRpZgogCiAgICAgaWYgKG1fcGFyc2VkQ2FsY3VsYXRpb24pIHsKQEAgLTE2
MDAsNiArMTYxOSwxNSBAQCBpbmxpbmUgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NT
UGFyc2VyOjpjcmVhdGVQcmltaXRpdmVTdHJpbmdWYWx1ZShDU1NQYQogICAgIHJldHVybiBjc3NW
YWx1ZVBvb2woKS5jcmVhdGVWYWx1ZSh2YWx1ZS0+c3RyaW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORyk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKK2lubGluZSBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OmNyZWF0ZVByaW1pdGl2ZVZhcmlh
YmxlTmFtZVZhbHVlKENTU1BhcnNlclZhbHVlKiB2YWx1ZSkKK3sKKyAgICBBU1NFUlQodmFsdWUt
PnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FKTsKKyAgICBBdG9t
aWNTdHJpbmcgdmFyaWFibGVOYW1lID0gU3RyaW5nKHZhbHVlLT5zdHJpbmcpLmxvd2VyKCk7Cisg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFyaWFibGVOYW1lLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUUpOworfQorI2VuZGlmCisKIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0NvbW1hKENTU1BhcnNlclZhbHVlKiB2YWx1ZSkKIHsgCiAgICAgcmV0dXJuIHZh
bHVlICYmIHZhbHVlLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2YWx1ZS0+
aVZhbHVlID09ICcsJzsgCkBAIC0xNjQwLDcgKzE2NjgsNyBAQCBpbmxpbmUgUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbGlkUHJpbWl0aXZlKGludCBpZGVu
dGlmaQogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgaWYgKHZhbHVlLT51
bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFNRSkKLSAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUtPnN0cmluZywgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVByaW1pdGl2
ZVZhcmlhYmxlTmFtZVZhbHVlKHZhbHVlKTsKICNlbmRpZgogICAgIGlmICh2YWx1ZS0+dW5pdCA+
PSBDU1NQYXJzZXJWYWx1ZTo6UV9FTVMpCiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlQWxsb3dpbmdNYXJnaW5RdWlyayh2YWx1ZS0+ZlZhbHVlLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0VNUyk7CkBAIC0xNjgzLDcgKzE3MTEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAKICNpZiBFTkFC
TEUoQ1NTX1ZBUklBQkxFUykKICAgICBpZiAoIWlkICYmIHZhbHVlLT51bml0ID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFNRSAmJiBudW0gPT0gMSkgewotICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wSWQsIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUtPnN0cmluZywg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FKSwgaW1wb3J0YW50KTsKKyAgICAg
ICAgYWRkUHJvcGVydHkocHJvcElkLCBjcmVhdGVQcmltaXRpdmVWYXJpYWJsZU5hbWVWYWx1ZSh2
YWx1ZSksIGltcG9ydGFudCk7CiAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMwMjYsOCArMzA1NCwxMCBAQCB2b2lkIENTU1BhcnNl
cjo6c3RvcmVWYXJpYWJsZURlY2xhcmF0aW9uKGNvbnN0IENTU1BhcnNlclN0cmluZyYgbmFtZSwg
UGFzc093blB0cgogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBB
U1NFUlQobmFtZS5sZW5ndGgoKSA+IDEyKTsKLSAgICBBdG9taWNTdHJpbmcgdmFyaWFibGVOYW1l
ID0gbmFtZS5pczhCaXQoKSA/IEF0b21pY1N0cmluZyhuYW1lLmNoYXJhY3RlcnM4KCkgKyAxMiwg
bmFtZS5sZW5ndGgoKSAtIDEyKSA6IEF0b21pY1N0cmluZyhuYW1lLmNoYXJhY3RlcnMxNigpICsg
MTIsIG5hbWUubGVuZ3RoKCkgLSAxMik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByZWZp
eExlbmd0aCA9IHNpemVvZigiLXdlYmtpdC12YXItIikgLSAxOworICAgIAorICAgIEFTU0VSVChu
YW1lLmxlbmd0aCgpID4gcHJlZml4TGVuZ3RoKTsKKyAgICBBdG9taWNTdHJpbmcgdmFyaWFibGVO
YW1lID0gbmFtZS5sb3dlclN1YnN0cmluZyhwcmVmaXhMZW5ndGgsIG5hbWUubGVuZ3RoKCkgLSBw
cmVmaXhMZW5ndGgpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDAsIHNpemUgPSB2YWx1ZS0+c2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7CkBAIC0z
MDM4LDcgKzMwNjgsNyBAQCB2b2lkIENTU1BhcnNlcjo6c3RvcmVWYXJpYWJsZURlY2xhcmF0aW9u
KGNvbnN0IENTU1BhcnNlclN0cmluZyYgbmFtZSwgUGFzc093blB0cgogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBidWlsZGVyLmFwcGVuZChjc3NWYWx1ZS0+Y3NzVGV4dCgpKTsKICAgICB9
Ci0gICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlWYXJpYWJsZSwgQ1NTVmFyaWFibGVWYWx1ZTo6
Y3JlYXRlKHZhcmlhYmxlTmFtZSwgYnVpbGRlci50b1N0cmluZygpKSwgaW1wb3J0YW50LCBmYWxz
ZSk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlWYXJpYWJsZSwgQ1NTVmFyaWFibGVWYWx1
ZTo6Y3JlYXRlKHZhcmlhYmxlTmFtZSwgYnVpbGRlci50b1N0cmluZygpLmxvd2VyKCkpLCBpbXBv
cnRhbnQsIGZhbHNlKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggNzFk
NzM5OTVkMDE5YjljODBhNDcxMWQ4NTA2OGIxNmIzMjcyNjU4MS4uNTNmNThhZGMxZjkxZGYzODA0
YzFjMjYxZjI4OTVmMTkyNThhMjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMzY2LDYg
KzM2Niw5IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNy
ZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZShDU1NQYXJzZXJWYWx1ZSopOwogICAgIFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKENTU1BhcnNl
clZhbHVlKik7CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZlVmFyaWFibGVOYW1lVmFsdWUoQ1NTUGFyc2Vy
VmFsdWUqKTsKKyNlbmRpZgogCiAgICAgc3RhdGljIEtVUkwgY29tcGxldGVVUkwoY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlclZhbHVlcy5oCmluZGV4IDgzYWE3N2MzMzU1NmE3ZWJjMzU2YjAzNTVlN2IxM2FlY2MxZTJh
NzQuLmQzZmM0MDM1MzAyOWZmMGEyN2Q5YWU1YjlkNGMwNmE5YzdlOTIyODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKQEAgLTk0LDYgKzk0LDggQEAgc3RydWN0IENTU1BhcnNl
clN0cmluZyB7CiAgICAgb3BlcmF0b3IgU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gaXM4Qml0KCkg
PyBTdHJpbmcobV9kYXRhLmNoYXJhY3RlcnM4LCBtX2xlbmd0aCkgOiBTdHJpbmcobV9kYXRhLmNo
YXJhY3RlcnMxNiwgbV9sZW5ndGgpOyB9CiAgICAgb3BlcmF0b3IgQXRvbWljU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gaXM4Qml0KCkgPyBBdG9taWNTdHJpbmcobV9kYXRhLmNoYXJhY3RlcnM4LCBt
X2xlbmd0aCkgOiBBdG9taWNTdHJpbmcobV9kYXRhLmNoYXJhY3RlcnMxNiwgbV9sZW5ndGgpOyB9
CiAKKyAgICBBdG9taWNTdHJpbmcgbG93ZXJTdWJzdHJpbmcodW5zaWduZWQgcG9zaXRpb24sIHVu
c2lnbmVkIGxlbmd0aCkgY29uc3Q7CisKICAgICB1bmlvbiB7CiAgICAgICAgIExDaGFyKiBjaGFy
YWN0ZXJzODsKICAgICAgICAgVUNoYXIqIGNoYXJhY3RlcnMxNjsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZTU2ZjE2ZTA5
ODU0OGE4YzM3YzIyNjlmZjAzNjI1YWNhYzZmMjM5Li41MjYwYjkwNzYwZWMyZDBiOWU3NzE0ZTQ2
YWJlYjdjMmNkZjgxZWQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMDggIEx1a2Ug
TWFjcGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIENT
UyB2YXJpYWJsZSBuYW1lcyBjYXNlLWluc2Vuc2l0aXZlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCB0aGF0IHZhcmlhYmxlIG5hbWVzIGFy
ZSBtYXRjaCBjb3JyZWN0bHkgd2hlbiBkaWZmZXJlbnQgY2FzZSBpcyB1c2VkLgorCisgICAgICAg
ICogZmFzdC9jc3MvdmFyaWFibGVzL2Nhc2UtaW5zZW5zaXRpdmUtZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9jc3MvdmFyaWFibGVzL2Nhc2UtaW5zZW5zaXRpdmUuaHRtbDog
QWRkZWQuCisKIDIwMTItMTAtMTAgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZW1vdmUgcGVyZiB0ZXN0cyB0aGF0IGhhdmVuJ3QgZmFpbGVkIGluIHRoZSBwYXN0
IDUwMCBydW5zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2Nh
c2UtaW5zZW5zaXRpdmUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Zhcmlh
Ymxlcy9jYXNlLWluc2Vuc2l0aXZlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTcwYTVlZTVi
YjZlNzgyMzdmZWM4NmJkMmEzNzUwNDkzZTgxNDQ0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzL3ZhcmlhYmxlcy9jYXNlLWluc2Vuc2l0aXZlLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHN0eWxlPgorZGl2IHsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+Cis8ZGl2PlRoaXMgdGV4
dCBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9kaXY+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy92YXJpYWJsZXMvY2FzZS1pbnNlbnNpdGl2ZS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2Nhc2UtaW5zZW5zaXRpdmUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMzU3MGY2Mzk3OTI1NmE1YzFkYWQ3ZGVkZmQ0NjVmMGI0MzUzMWM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdmFyaWFibGVzL2Nhc2UtaW5zZW5z
aXRpdmUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNj
cmlwdD4KK2ludGVybmFscy5zZXR0aW5ncy5zZXRDU1NWYXJpYWJsZXNFbmFibGVkKHRydWUpOwor
PC9zY3JpcHQ+Cis8c3R5bGU+CitkaXYgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAtd2Via2l0LXZh
cihOYU1lKTsKKyAgLXdlYmtpdC12YXItbkFtRTogZ3JlZW47Cit9Cis8L3N0eWxlPgorPGRpdj5U
aGlzIHRleHQgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvZGl2PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>