<?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>25739</bug_id>
          
          <creation_ts>2009-05-12 15:56:08 -0700</creation_ts>
          <short_desc>Upstream V8 bindings for HTMLOptionsCollection and HTMLSelectElementCollection</short_desc>
          <delta_ts>2009-05-15 15:28:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>dglazkov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>120943</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-05-12 15:56:08 -0700</bug_when>
    <thetext>See summary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120945</commentid>
    <comment_count>1</comment_count>
      <attachid>30252</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-05-12 16:01:42 -0700</bug_when>
    <thetext>Created attachment 30252
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121057</commentid>
    <comment_count>2</comment_count>
      <attachid>30252</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-13 10:27:26 -0700</bug_when>
    <thetext>Comment on attachment 30252
patch

&gt; +INDEXED_PROPERTY_SETTER(HTMLOptionsCollection) {

brace on new line.

&gt; +v8::Handle&lt;v8::Value&gt; getOptionsCollectionSetter(uint32_t index, v8::Handle&lt;v8::Value&gt; value, HTMLSelectElement* base) {

brace on new line, and to prefix instead of get. Use &quot;get&quot; when the result is a ptr argument. http://webkit.org/coding/coding-style.html

I wonder though if this method really belongs in V8Collection.h (perhaps need a V8Collection.cpp added?)
  

&gt; Property changes on: WebCore/bindings/v8/custom/V8HTMLOptionsCollectionCustom.h
&gt; ___________________________________________________________________
&gt; Name: svn:executable
&gt;    + *
&gt; 

Whoops! What are these props doing here?

&gt; +NAMED_PROPERTY_GETTER(HTMLSelectElementCollection) {

brace on new line.

&gt; +    // Search local callback properties next to find IDL defined  properties.
&gt; +    if (info.Holder()-&gt;HasRealNamedCallbackProperty(name))
&gt; +            return notHandledByInterceptor();

Something funny with indent here. 4 spaces.

&gt; +    if (!items.size())
&gt; +        return v8::Handle&lt;v8::Value&gt;();

return notHandledByInterceptor();

&gt; +INDEXED_PROPERTY_SETTER(HTMLSelectElementCollection) {

brace on new line.

&gt; +    return WebCore::getOptionsCollectionSetter(index, value, select);

No need for namespace prefix here. We&apos;re in WebCore.

&gt; Property changes on: WebCore/bindings/v8/custom/V8HTMLSelectElementCollectionCustom.cpp
&gt; ___________________________________________________________________
&gt; Name: svn:executable
&gt;    + *
&gt; 

No extra props, pls :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121099</commentid>
    <comment_count>3</comment_count>
      <attachid>30286</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-05-13 14:18:55 -0700</bug_when>
    <thetext>Created attachment 30286
patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121109</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-05-13 14:59:15 -0700</bug_when>
    <thetext>Minor comments:

custom/V8HTMLOptionsCollectionCustom.h

   v8::Handle&lt;v8::Value&gt; getOptionsCollectionSetter(uint32_t index, v8::Handle&lt;v8::Value&gt; value, HTMLSelectElement* element);

* value and element should be removed since they don&apos;t add any info.


custom/V8HTMLSelectElementCollectionCustom.cpp
 
* Two blank lines after the namespace start.
* Extra space after defined in this comment
&quot;Search local callback properties next to find IDL defined  properties.&quot;

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121124</commentid>
    <comment_count>5</comment_count>
      <attachid>30286</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-13 15:41:28 -0700</bug_when>
    <thetext>Comment on attachment 30286
patch2

Want a new patch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121125</commentid>
    <comment_count>6</comment_count>
      <attachid>30291</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-05-13 15:46:08 -0700</bug_when>
    <thetext>Created attachment 30291
patch3

Sorry for the delay...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121129</commentid>
    <comment_count>7</comment_count>
      <attachid>30291</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-13 15:58:06 -0700</bug_when>
    <thetext>Comment on attachment 30291
patch3

Don&apos;t rush :)

&gt; +        * bindings/v8/custom/V8ElementCustom.cpp:
&gt; +        (WebCore::ACCESSOR_SETTER): Moved from v8_custom.cpp.

That doesn&apos;t sound right. We haven&apos;t moved anything like this here.

&gt; -#include &quot;HTMLOptionsCollection.h&quot;
&gt; +#include &quot;V8HTMLOptionsCollectionCustom.h&quot;

be careful here. There is no V8HTMLOptionsCollectionCustom in this CL.
  
&gt; +INDEXED_PROPERTY_SETTER(HTMLOptionsCollection)
&gt; +{
&gt; +    INC_STATS(&quot;DOM.HTMLOptionsCollection.IndexedPropertySetter&quot;);
&gt; +    HTMLOptionsCollection* collection = V8Proxy::ToNativeObject&lt;HTMLOptionsCollection&gt;(V8ClassIndex::HTMLOPTIONSCOLLECTION, info.Holder());
&gt; +    HTMLSelectElement* base = static_cast&lt;HTMLSelectElement*&gt;(collection-&gt;base());
&gt; +    return getOptionsCollectionSetter(index, value, base);

toOptions...

&gt; +    HTMLSelectElement* select = V8Proxy::DOMWrapperToNode&lt;HTMLSelectElement&gt;(info.Holder());
&gt; +    return getOptionsCollectionSetter(index, value, select);

toOptions ..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121174</commentid>
    <comment_count>8</comment_count>
      <attachid>30303</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-05-13 17:23:50 -0700</bug_when>
    <thetext>Created attachment 30303
patch4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121435</commentid>
    <comment_count>9</comment_count>
      <attachid>30303</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-14 22:00:11 -0700</bug_when>
    <thetext>Comment on attachment 30303
patch4

Looks sane enough to me, but Dimitri is really your man here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121525</commentid>
    <comment_count>10</comment_count>
      <attachid>30303</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-15 09:14:53 -0700</bug_when>
    <thetext>Comment on attachment 30303
patch4

Looking good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121593</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-15 15:28:30 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/43787.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30252</attachid>
            <date>2009-05-12 16:01:42 -0700</date>
            <delta_ts>2009-05-13 14:18:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>9115</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzU5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDUtMTIgIE5hdGUgQ2hhcGluICA8amFwaGV0QGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBz
dHJlYW0gVjggYmluZGluZ3MgZm9yIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBhbmQgSFRNTFNlbGVj
dEVsZW1lbnRDb2xsZWN0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjU3MzkKKworICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEVsZW1l
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfU0VUVEVSKTogTW92ZWQg
ZnJvbSB2OF9jdXN0b20uY3BwLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxP
cHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJTkRFWEVEX1BS
T1BFUlRZX1NFVFRFUik6IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OmdldE9wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKTogTW92ZWQgZnJvbSB2OF9jdXN0b20uY3Bw
IGFuZCBtYWRlIG5vbi1zdGF0aWMuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q29sbGVjdGlvbkN1c3RvbS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TkFNRURfUFJPUEVSVFlfR0VUVEVSKTogIE1vdmVkIGZyb20gdjhf
Y3VzdG9tLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OklOREVYRURfUFJPUEVSVFlfU0VUVEVSKTog
IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4KKwogMjAwOS0wMy0xOSAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLiAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxP
cHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDQzNTIyKQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIlY4SFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ3VzdG9tLmgiCiAKKyNpbmNsdWRlICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24u
aCIKICNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTZWxlY3RF
bGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgpAQCAtMTEyLDUgKzExMywzMyBA
QCBBQ0NFU1NPUl9TRVRURVIoSFRNTE9wdGlvbnNDb2xsZWN0aW9uTGVuCiAKICAgICBWOFByb3h5
OjpTZXRET01FeGNlcHRpb24oZWMpOwogfQorCitJTkRFWEVEX1BST1BFUlRZX1NFVFRFUihIVE1M
T3B0aW9uc0NvbGxlY3Rpb24pIHsKKyAgICBJTkNfU1RBVFMoIkRPTS5IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uSW5kZXhlZFByb3BlcnR5U2V0dGVyIik7CisgICAgSFRNTE9wdGlvbnNDb2xsZWN0aW9u
KiBjb2xsZWN0aW9uID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8SFRNTE9wdGlvbnNDb2xsZWN0
aW9uPihWOENsYXNzSW5kZXg6OkhUTUxPUFRJT05TQ09MTEVDVElPTiwgaW5mby5Ib2xkZXIoKSk7
CisgICAgSFRNTFNlbGVjdEVsZW1lbnQqIGJhc2UgPSBzdGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxl
bWVudCo+KGNvbGxlY3Rpb24tPmJhc2UoKSk7CisgICAgcmV0dXJuIGdldE9wdGlvbnNDb2xsZWN0
aW9uU2V0dGVyKGluZGV4LCB2YWx1ZSwgYmFzZSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBnZXRPcHRpb25zQ29sbGVjdGlvblNldHRlcih1aW50MzJfdCBpbmRleCwgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCBIVE1MU2VsZWN0RWxlbWVudCogYmFzZSkgeworICAgIGlmICh2YWx1
ZS0+SXNOdWxsKCkgfHwgdmFsdWUtPklzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgYmFzZS0+cmVt
b3ZlKGluZGV4KTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdmFsdWUgaXMgYW4gSFRNTE9w
dGlvbkVsZW1lbnQuICBJZiBub3QsIHRocm93IGEgVFlQRV9NSVNNQVRDSF9FUlIgRE9NRXhjZXB0
aW9uLgorICAgIGlmICghVjhIVE1MT3B0aW9uRWxlbWVudDo6SGFzSW5zdGFuY2UodmFsdWUpKSB7
CisgICAgICAgIFY4UHJveHk6OlNldERPTUV4Y2VwdGlvbihUWVBFX01JU01BVENIX0VSUik7Cisg
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKKyAgICBIVE1MT3B0aW9uRWxlbWVudCogZWxl
bWVudCA9IFY4UHJveHk6OkRPTVdyYXBwZXJUb05vZGU8SFRNTE9wdGlvbkVsZW1lbnQ+KHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKTsKKyAgICBiYXNlLT5zZXRPcHRpb24oaW5k
ZXgsIGVsZW1lbnQsIGVjKTsKKworICAgIFY4UHJveHk6OlNldERPTUV4Y2VwdGlvbihlYyk7Cisg
ICAgcmV0dXJuIHZhbHVlOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xs
ZWN0aW9uQ3VzdG9tLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbV9oCisjZGVmaW5l
IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tX2gKKworI2luY2x1ZGUgInY4LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OworCisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE9wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKHVpbnQzMl90
IGluZGV4LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIEhUTUxTZWxlY3RFbGVtZW50KiBl
bGVtZW50KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVjhIVE1MT3B0
aW9uc0NvbGxlY3Rpb25DdXN0b21faAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uaApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck5hbWU6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q29sbGVj
dGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxTZWxlY3RFbGVtZW50Q29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTFNlbGVj
dEVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgorI2luY2x1
ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1ZGUg
IlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmgiCisjaW5jbHVkZSAiVjhOYW1lZE5vZGVz
Q29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisKK05BTUVEX1BST1BFUlRZX0dFVFRFUihIVE1MU2VsZWN0RWxlbWVudENvbGxlY3Rpb24p
IHsKKyAgICBJTkNfU1RBVFMoIkRPTS5IVE1MU2VsZWN0RWxlbWVudENvbGxlY3Rpb24uTmFtZWRQ
cm9wZXJ0eVNldHRlciIpOworICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSBWOFByb3h5
OjpET01XcmFwcGVyVG9Ob2RlPEhUTUxTZWxlY3RFbGVtZW50PihpbmZvLkhvbGRlcigpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBpbmZvLkhvbGRlcigpLT5HZXRSZWFsTmFt
ZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSk7CisKKyAgICBpZiAoIXZhbHVlLklzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworCisgICAgLy8gU2VhcmNoIGxvY2FsIGNhbGxi
YWNrIHByb3BlcnRpZXMgbmV4dCB0byBmaW5kIElETCBkZWZpbmVkICBwcm9wZXJ0aWVzLgorICAg
IGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5KG5hbWUpKQor
ICAgICAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisKKyAgICBQYXNz
UmVmUHRyPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4gY29sbGVjdGlvbiA9IHNlbGVjdC0+b3B0aW9u
cygpOworCisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGl0ZW1zOworICAgIGNvbGxlY3Rpb24t
Pm5hbWVkSXRlbXModjhTdHJpbmdUb0F0b21pY1dlYkNvcmVTdHJpbmcobmFtZSksIGl0ZW1zKTsK
KworICAgIGlmICghaXRlbXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCk7CisKKyAgICBpZiAoaXRlbXMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBW
OFByb3h5OjpOb2RlVG9WOE9iamVjdChpdGVtcy5hdCgwKS5nZXQoKSk7CisKKyAgICBOb2RlTGlz
dCogbGlzdCA9IG5ldyBWOE5hbWVkTm9kZXNDb2xsZWN0aW9uKGl0ZW1zKTsKKyAgICByZXR1cm4g
VjhQcm94eTo6VG9WOE9iamVjdChWOENsYXNzSW5kZXg6Ok5PREVMSVNULCBsaXN0KTsKK30KKwor
SU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoSFRNTFNlbGVjdEVsZW1lbnRDb2xsZWN0aW9uKSB7Cisg
ICAgSU5DX1NUQVRTKCJET00uSFRNTFNlbGVjdEVsZW1lbnRDb2xsZWN0aW9uLkluZGV4ZWRQcm9w
ZXJ0eVNldHRlciIpOworICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSBWOFByb3h5OjpE
T01XcmFwcGVyVG9Ob2RlPEhUTUxTZWxlY3RFbGVtZW50PihpbmZvLkhvbGRlcigpKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6Z2V0T3B0aW9uc0NvbGxlY3Rpb25TZXR0ZXIoaW5kZXgsIHZhbHVlLCBz
ZWxlY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q29sbGVjdGlv
bkN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKCg==
</data>
<flag name="review"
          id="15217"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30286</attachid>
            <date>2009-05-13 14:18:55 -0700</date>
            <delta_ts>2009-05-13 15:41:28 -0700</delta_ts>
            <desc>patch2</desc>
            <filename>patch2.txt</filename>
            <type>text/plain</type>
            <size>8749</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzU5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDUtMTIgIE5hdGUgQ2hhcGluICA8amFwaGV0QGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBz
dHJlYW0gVjggYmluZGluZ3MgZm9yIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBhbmQgSFRNTFNlbGVj
dEVsZW1lbnRDb2xsZWN0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjU3MzkKKworICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEVsZW1l
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfU0VUVEVSKTogTW92ZWQg
ZnJvbSB2OF9jdXN0b20uY3BwLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxP
cHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJTkRFWEVEX1BS
T1BFUlRZX1NFVFRFUik6IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OmdldE9wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKTogTW92ZWQgZnJvbSB2OF9jdXN0b20uY3Bw
IGFuZCBtYWRlIG5vbi1zdGF0aWMuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q29sbGVjdGlvbkN1c3RvbS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TkFNRURfUFJPUEVSVFlfR0VUVEVSKTogIE1vdmVkIGZyb20gdjhf
Y3VzdG9tLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OklOREVYRURfUFJPUEVSVFlfU0VUVEVSKTog
IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4KKwogMjAwOS0wMy0xOSAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9w
dGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNDM1OTcpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDggKzI5LDkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiVjhIVE1MT3B0aW9u
c0NvbGxlY3Rpb25DdXN0b20uaCIKIAorI2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBAIC0xMTMsNCArMTE0LDM0IEBA
IEFDQ0VTU09SX1NFVFRFUihIVE1MT3B0aW9uc0NvbGxlY3Rpb25MZW4KICAgICBWOFByb3h5OjpT
ZXRET01FeGNlcHRpb24oZWMpOwogfQogCitJTkRFWEVEX1BST1BFUlRZX1NFVFRFUihIVE1MT3B0
aW9uc0NvbGxlY3Rpb24pCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLkluZGV4ZWRQcm9wZXJ0eVNldHRlciIpOworICAgIEhUTUxPcHRpb25zQ29sbGVjdGlvbiog
Y29sbGVjdGlvbiA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PEhUTUxPcHRpb25zQ29sbGVjdGlv
bj4oVjhDbGFzc0luZGV4OjpIVE1MT1BUSU9OU0NPTExFQ1RJT04sIGluZm8uSG9sZGVyKCkpOwor
ICAgIEhUTUxTZWxlY3RFbGVtZW50KiBiYXNlID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1l
bnQqPihjb2xsZWN0aW9uLT5iYXNlKCkpOworICAgIHJldHVybiBnZXRPcHRpb25zQ29sbGVjdGlv
blNldHRlcihpbmRleCwgdmFsdWUsIGJhc2UpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9PcHRpb25zQ29sbGVjdGlvblNldHRlcih1aW50MzJfdCBpbmRleCwgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCBIVE1MU2VsZWN0RWxlbWVudCogYmFzZSkKK3sKKyAgICBpZiAodmFsdWUt
PklzTnVsbCgpIHx8IHZhbHVlLT5Jc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGJhc2UtPnJlbW92
ZShpbmRleCk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKworICAgIC8vIENoZWNrIHRoYXQgdGhlIHZhbHVlIGlzIGFuIEhUTUxPcHRp
b25FbGVtZW50LiAgSWYgbm90LCB0aHJvdyBhIFRZUEVfTUlTTUFUQ0hfRVJSIERPTUV4Y2VwdGlv
bi4KKyAgICBpZiAoIVY4SFRNTE9wdGlvbkVsZW1lbnQ6Okhhc0luc3RhbmNlKHZhbHVlKSkgewor
ICAgICAgICBWOFByb3h5OjpTZXRET01FeGNlcHRpb24oVFlQRV9NSVNNQVRDSF9FUlIpOworICAg
ICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgSFRNTE9wdGlvbkVsZW1lbnQqIGVsZW1l
bnQgPSBWOFByb3h5OjpET01XcmFwcGVyVG9Ob2RlPEhUTUxPcHRpb25FbGVtZW50Pih2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSk7CisgICAgYmFzZS0+c2V0T3B0aW9uKGluZGV4
LCBlbGVtZW50LCBlYyk7CisKKyAgICBWOFByb3h5OjpTZXRET01FeGNlcHRpb24oZWMpOworICAg
IHJldHVybiB2YWx1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVj
dGlvbkN1c3RvbS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
IAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b21faAorI2RlZmluZSBW
OEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbV9oCisKKyNpbmNsdWRlICJ2OC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKKworICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRPcHRpb25zQ29sbGVjdGlvblNldHRlcih1aW50MzJfdCBp
bmRleCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBIVE1MU2VsZWN0RWxlbWVudCogZWxl
bWVudCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFY4SFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ3VzdG9tX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTFNlbGVjdEVsZW1lbnRDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q29sbGVjdGlvbkN1c3Rv
bS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxT
ZWxlY3RFbGVtZW50Q29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQu
aCIKKworI2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1ZGUgIlY4SFRNTE9w
dGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmgiCisjaW5jbHVkZSAiVjhOYW1lZE5vZGVzQ29sbGVjdGlv
bi5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisKK05B
TUVEX1BST1BFUlRZX0dFVFRFUihIVE1MU2VsZWN0RWxlbWVudENvbGxlY3Rpb24pCit7CisgICAg
SU5DX1NUQVRTKCJET00uSFRNTFNlbGVjdEVsZW1lbnRDb2xsZWN0aW9uLk5hbWVkUHJvcGVydHlT
ZXR0ZXIiKTsKKyAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gVjhQcm94eTo6RE9NV3Jh
cHBlclRvTm9kZTxIVE1MU2VsZWN0RWxlbWVudD4oaW5mby5Ib2xkZXIoKSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVy
dHlJblByb3RvdHlwZUNoYWluKG5hbWUpOworCisgICAgaWYgKCF2YWx1ZS5Jc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB2YWx1ZTsKKworICAgIC8vIFNlYXJjaCBsb2NhbCBjYWxsYmFjayBwcm9w
ZXJ0aWVzIG5leHQgdG8gZmluZCBJREwgZGVmaW5lZCAgcHJvcGVydGllcy4KKyAgICBpZiAoaW5m
by5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0eShuYW1lKSkKKyAgICAgICAg
cmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisKKyAgICBQYXNzUmVmUHRyPEhUTUxP
cHRpb25zQ29sbGVjdGlvbj4gY29sbGVjdGlvbiA9IHNlbGVjdC0+b3B0aW9ucygpOworCisgICAg
VmVjdG9yPFJlZlB0cjxOb2RlPiA+IGl0ZW1zOworICAgIGNvbGxlY3Rpb24tPm5hbWVkSXRlbXMo
djhTdHJpbmdUb0F0b21pY1dlYkNvcmVTdHJpbmcobmFtZSksIGl0ZW1zKTsKKworICAgIGlmICgh
aXRlbXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsK
KworICAgIGlmIChpdGVtcy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6Ok5v
ZGVUb1Y4T2JqZWN0KGl0ZW1zLmF0KDApLmdldCgpKTsKKworICAgIE5vZGVMaXN0KiBsaXN0ID0g
bmV3IFY4TmFtZWROb2Rlc0NvbGxlY3Rpb24oaXRlbXMpOworICAgIHJldHVybiBWOFByb3h5OjpU
b1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9ERUxJU1QsIGxpc3QpOworfQorCitJTkRFWEVEX1BS
T1BFUlRZX1NFVFRFUihIVE1MU2VsZWN0RWxlbWVudENvbGxlY3Rpb24pCit7CisgICAgSU5DX1NU
QVRTKCJET00uSFRNTFNlbGVjdEVsZW1lbnRDb2xsZWN0aW9uLkluZGV4ZWRQcm9wZXJ0eVNldHRl
ciIpOworICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSBWOFByb3h5OjpET01XcmFwcGVy
VG9Ob2RlPEhUTUxTZWxlY3RFbGVtZW50PihpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6Z2V0T3B0aW9uc0NvbGxlY3Rpb25TZXR0ZXIoaW5kZXgsIHZhbHVlLCBzZWxlY3QpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30291</attachid>
            <date>2009-05-13 15:46:08 -0700</date>
            <delta_ts>2009-05-13 17:23:50 -0700</delta_ts>
            <desc>patch3</desc>
            <filename>patch3.txt</filename>
            <type>text/plain</type>
            <size>9454</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzU5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDUtMTIgIE5hdGUgQ2hhcGluICA8amFwaGV0QGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBz
dHJlYW0gVjggYmluZGluZ3MgZm9yIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBhbmQgSFRNTFNlbGVj
dEVsZW1lbnRDb2xsZWN0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjU3MzkKKworICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbGxl
Y3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvT3B0aW9uc0NvbGxlY3Rpb25T
ZXR0ZXIpOiBNb3ZlZCBmcm9tIHY4X2N1c3RvbS5jcHAuCisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTENvbGxlY3Rpb24uaDogQWRkZWQgcHJvdG90eXBlIGZvciB0b09wdGlvbnND
b2xsZWN0aW9uU2V0dGVyKCkuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9TRVRURVIpOiBNb3ZlZCBm
cm9tIHY4X2N1c3RvbS5jcHAuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9w
dGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklOREVYRURfUFJP
UEVSVFlfU0VUVEVSKTogTW92ZWQgZnJvbSB2OF9jdXN0b20uY3BwLgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q29sbGVjdGlvbkN1c3RvbS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TkFNRURfUFJPUEVSVFlfR0VUVEVSKTogIE1vdmVkIGZy
b20gdjhfY3VzdG9tLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OklOREVYRURfUFJPUEVSVFlfU0VU
VEVSKTogIE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4KKwogMjAwOS0wMy0xOSAgT2xpdmVyIEh1
bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJWOENvbGxlY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9PcHRpb25zQ29sbGVjdGlvblNldHRlcih1aW50MzJfdCBpbmRleCwgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBIVE1MU2VsZWN0RWxlbWVudCogYmFzZSkKK3sKKyAgICBp
ZiAodmFsdWUtPklzTnVsbCgpIHx8IHZhbHVlLT5Jc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGJh
c2UtPnJlbW92ZShpbmRleCk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgCisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdmFs
dWUgaXMgYW4gSFRNTE9wdGlvbkVsZW1lbnQuICBJZiBub3QsIHRocm93IGEgVFlQRV9NSVNNQVRD
SF9FUlIgRE9NRXhjZXB0aW9uLgorICAgIGlmICghVjhIVE1MT3B0aW9uRWxlbWVudDo6SGFzSW5z
dGFuY2UodmFsdWUpKSB7CisgICAgICAgIFY4UHJveHk6OlNldERPTUV4Y2VwdGlvbihUWVBFX01J
U01BVENIX0VSUik7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgCisgICAgSFRN
TE9wdGlvbkVsZW1lbnQqIGVsZW1lbnQgPSBWOFByb3h5OjpET01XcmFwcGVyVG9Ob2RlPEhUTUxP
cHRpb25FbGVtZW50Pih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSk7CisgICAg
YmFzZS0+c2V0T3B0aW9uKGluZGV4LCBlbGVtZW50LCBlYyk7CisgICAgCisgICAgVjhQcm94eTo6
U2V0RE9NRXhjZXB0aW9uKGVjKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaAkocmV2aXNpb24g
NDM1OTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFY4Q29sbGVjdGlvbl9oCiAKICNpbmNsdWRl
ICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlIDx2OC5o
PgpAQCAtMjA3LDYgKzIwOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZGVzYy0+
SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXRJbmRleGVkUHJvcGVydHlIYW5kbGVyKGNvbGxlY3Rpb25T
dHJpbmdPck51bGxJbmRleGVkUHJvcGVydHlHZXR0ZXI8Q29sbGVjdGlvbj4sIDAsIDAsIDAsIGNv
bGxlY3Rpb25JbmRleGVkUHJvcGVydHlFbnVtZXJhdG9yPENvbGxlY3Rpb24+KTsKICAgICB9CiAK
KyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvT3B0aW9uc0NvbGxlY3Rpb25TZXR0
ZXIodWludDMyX3QgaW5kZXgsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgSFRNTFNlbGVjdEVsZW1l
bnQqKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVjhDb2xsZWN0aW9u
X2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0
aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDQzNTk3KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNiArMjksMTUgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiVjhI
VE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uaCIKIAorI2luY2x1ZGUgIkhUTUxPcHRpb25zQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRN
TFNlbGVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAKICNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJW
OEhUTUxPcHRpb25FbGVtZW50LmgiCi0jaW5jbHVkZSAiVjhIVE1MU2VsZWN0RWxlbWVudEN1c3Rv
bS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEz
LDQgKzExMiwxMiBAQCBBQ0NFU1NPUl9TRVRURVIoSFRNTE9wdGlvbnNDb2xsZWN0aW9uTGVuCiAg
ICAgVjhQcm94eTo6U2V0RE9NRXhjZXB0aW9uKGVjKTsKIH0KIAorSU5ERVhFRF9QUk9QRVJUWV9T
RVRURVIoSFRNTE9wdGlvbnNDb2xsZWN0aW9uKQoreworICAgIElOQ19TVEFUUygiRE9NLkhUTUxP
cHRpb25zQ29sbGVjdGlvbi5JbmRleGVkUHJvcGVydHlTZXR0ZXIiKTsKKyAgICBIVE1MT3B0aW9u
c0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxIVE1MT3B0
aW9uc0NvbGxlY3Rpb24+KFY4Q2xhc3NJbmRleDo6SFRNTE9QVElPTlNDT0xMRUNUSU9OLCBpbmZv
LkhvbGRlcigpKTsKKyAgICBIVE1MU2VsZWN0RWxlbWVudCogYmFzZSA9IHN0YXRpY19jYXN0PEhU
TUxTZWxlY3RFbGVtZW50Kj4oY29sbGVjdGlvbi0+YmFzZSgpKTsKKyAgICByZXR1cm4gZ2V0T3B0
aW9uc0NvbGxlY3Rpb25TZXR0ZXIoaW5kZXgsIHZhbHVlLCBiYXNlKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2Vs
ZWN0RWxlbWVudENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDb2xsZWN0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVs
ZW1lbnRDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgorCisj
aW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CisjaW5jbHVkZSAiVjhDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgi
CisjaW5jbHVkZSAiVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIlY4UHJveHku
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOQU1FRF9QUk9QRVJUWV9HRVRURVIoSFRNTFNl
bGVjdEVsZW1lbnRDb2xsZWN0aW9uKQoreworICAgIElOQ19TVEFUUygiRE9NLkhUTUxTZWxlY3RF
bGVtZW50Q29sbGVjdGlvbi5OYW1lZFByb3BlcnR5U2V0dGVyIik7CisgICAgSFRNTFNlbGVjdEVs
ZW1lbnQqIHNlbGVjdCA9IFY4UHJveHk6OkRPTVdyYXBwZXJUb05vZGU8SFRNTFNlbGVjdEVsZW1l
bnQ+KGluZm8uSG9sZGVyKCkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IGlu
Zm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1lKTsK
KworICAgIGlmICghdmFsdWUuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdmFsdWU7CisKKyAg
ICAvLyBTZWFyY2ggbG9jYWwgY2FsbGJhY2sgcHJvcGVydGllcyBuZXh0IHRvIGZpbmQgSURMIGRl
ZmluZWQgcHJvcGVydGllcy4KKyAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2Fs
bGJhY2tQcm9wZXJ0eShuYW1lKSkKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2Vw
dG9yKCk7CisKKyAgICBQYXNzUmVmUHRyPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4gY29sbGVjdGlv
biA9IHNlbGVjdC0+b3B0aW9ucygpOworCisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGl0ZW1z
OworICAgIGNvbGxlY3Rpb24tPm5hbWVkSXRlbXModjhTdHJpbmdUb0F0b21pY1dlYkNvcmVTdHJp
bmcobmFtZSksIGl0ZW1zKTsKKworICAgIGlmICghaXRlbXMuc2l6ZSgpKQorICAgICAgICByZXR1
cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKworICAgIGlmIChpdGVtcy5zaXplKCkgPT0g
MSkKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6Ok5vZGVUb1Y4T2JqZWN0KGl0ZW1zLmF0KDApLmdl
dCgpKTsKKworICAgIE5vZGVMaXN0KiBsaXN0ID0gbmV3IFY4TmFtZWROb2Rlc0NvbGxlY3Rpb24o
aXRlbXMpOworICAgIHJldHVybiBWOFByb3h5OjpUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9E
RUxJU1QsIGxpc3QpOworfQorCitJTkRFWEVEX1BST1BFUlRZX1NFVFRFUihIVE1MU2VsZWN0RWxl
bWVudENvbGxlY3Rpb24pCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTFNlbGVjdEVsZW1lbnRD
b2xsZWN0aW9uLkluZGV4ZWRQcm9wZXJ0eVNldHRlciIpOworICAgIEhUTUxTZWxlY3RFbGVtZW50
KiBzZWxlY3QgPSBWOFByb3h5OjpET01XcmFwcGVyVG9Ob2RlPEhUTUxTZWxlY3RFbGVtZW50Pihp
bmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gZ2V0T3B0aW9uc0NvbGxlY3Rpb25TZXR0ZXIoaW5k
ZXgsIHZhbHVlLCBzZWxlY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="15243"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30303</attachid>
            <date>2009-05-13 17:23:50 -0700</date>
            <delta_ts>2009-05-15 09:14:53 -0700</delta_ts>
            <desc>patch4</desc>
            <filename>patch4.txt</filename>
            <type>text/plain</type>
            <size>9749</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzU5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMDUtMTIgIE5hdGUgQ2hhcGluICA8amFwaGV0QGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBz
dHJlYW0gVjggYmluZGluZ3MgZm9yIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBhbmQgSFRNTFNlbGVj
dEVsZW1lbnRDb2xsZWN0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjU3MzkKKworICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6dG9PcHRpb25zQ29sbGVjdGlvblNldHRlcik6
IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbGxl
Y3Rpb24uaDogQWRkZWQgcHJvdG90eXBlIGZvciB0b09wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKCku
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklOREVYRURfUFJPUEVSVFlfU0VUVEVSKTogTW92
ZWQgZnJvbSB2OF9jdXN0b20uY3BwLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxTZWxlY3RFbGVtZW50Q29sbGVjdGlvbkN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TkFNRURfUFJPUEVSVFlfR0VUVEVSKTogIE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6OklOREVYRURfUFJPUEVSVFlfU0VUVEVSKTogIE1vdmVkIGZyb20g
djhfY3VzdG9tLmNwcC4KKyAgICAgICAgCiAyMDA5LTAzLTE5ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4Q29sbGVj
dGlvbi5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkhUTUxPcHRp
b25FbGVtZW50LmgiCisjaW5jbHVkZSAiVjhIVE1MT3B0aW9uRWxlbWVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b09wdGlvbnNDb2xsZWN0aW9u
U2V0dGVyKHVpbnQzMl90IGluZGV4LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIEhUTUxT
ZWxlY3RFbGVtZW50KiBiYXNlKQoreworICAgIGlmICh2YWx1ZS0+SXNOdWxsKCkgfHwgdmFsdWUt
PklzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgYmFzZS0+cmVtb3ZlKGluZGV4KTsKKyAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgIH0KKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICAKKyAgICAvLyBDaGVjayB0aGF0IHRoZSB2YWx1ZSBpcyBhbiBIVE1MT3B0aW9uRWxlbWVudC4g
IElmIG5vdCwgdGhyb3cgYSBUWVBFX01JU01BVENIX0VSUiBET01FeGNlcHRpb24uCisgICAgaWYg
KCFWOEhUTUxPcHRpb25FbGVtZW50OjpIYXNJbnN0YW5jZSh2YWx1ZSkpIHsKKyAgICAgICAgVjhQ
cm94eTo6U2V0RE9NRXhjZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgIH0KKyAgICAKKyAgICBIVE1MT3B0aW9uRWxlbWVudCogZWxlbWVudCA9IFY4
UHJveHk6OkRPTVdyYXBwZXJUb05vZGU8SFRNTE9wdGlvbkVsZW1lbnQ+KHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QodmFsdWUpKTsKKyAgICBiYXNlLT5zZXRPcHRpb24oaW5kZXgsIGVsZW1l
bnQsIGVjKTsKKyAgICAKKyAgICBWOFByb3h5OjpTZXRET01FeGNlcHRpb24oZWMpOworICAgIHJl
dHVybiB2YWx1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4Q29sbGVjdGlvbi5oCShyZXZpc2lvbiA0MzU5NykKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZp
bmUgVjhDb2xsZWN0aW9uX2gKIAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1
ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgPHY4Lmg+CkBAIC0yMDcsNiArMjA4LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldEluZGV4
ZWRQcm9wZXJ0eUhhbmRsZXIoY29sbGVjdGlvblN0cmluZ09yTnVsbEluZGV4ZWRQcm9wZXJ0eUdl
dHRlcjxDb2xsZWN0aW9uPiwgMCwgMCwgMCwgY29sbGVjdGlvbkluZGV4ZWRQcm9wZXJ0eUVudW1l
cmF0b3I8Q29sbGVjdGlvbj4pOwogICAgIH0KIAorICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b09wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKHVpbnQzMl90IGluZGV4LCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4sIEhUTUxTZWxlY3RFbGVtZW50Kik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIFY4Q29sbGVjdGlvbl9oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCShy
ZXZpc2lvbiA0MzU5NykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDEwIEBA
CiAjaW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAKICNpbmNsdWRlICJIVE1MT3B0
aW9uRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhD
b2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhI
VE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20u
aCIKQEAgLTExMiw1ICsxMTIsMjcgQEAgQUNDRVNTT1JfU0VUVEVSKEhUTUxPcHRpb25zQ29sbGVj
dGlvbkxlbgogCiAgICAgVjhQcm94eTo6U2V0RE9NRXhjZXB0aW9uKGVjKTsKIH0KKyAgICAKKyAg
ICAKK0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxPcHRpb25zQ29sbGVjdGlvbikKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5IVE1MT3B0aW9uc0NvbGxlY3Rpb24uSW5kZXhlZFByb3BlcnR5R2V0
dGVyIik7CisgICAgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gVjhQcm94eTo6
VG9OYXRpdmVPYmplY3Q8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPihWOENsYXNzSW5kZXg6OkhUTUxP
UFRJT05TQ09MTEVDVElPTiwgaW5mby5Ib2xkZXIoKSk7CisgICAgICAgIAorICAgIFJlZlB0cjxO
b2RlPiByZXN1bHQgPSBjb2xsZWN0aW9uLT5pdGVtKGluZGV4KTsKKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisKKyAgICByZXR1cm4g
VjhQcm94eTo6Tm9kZVRvVjhPYmplY3QocmVzdWx0LmdldCgpKTsKK30KKyAgICAKKworSU5ERVhF
RF9QUk9QRVJUWV9TRVRURVIoSFRNTE9wdGlvbnNDb2xsZWN0aW9uKQoreworICAgIElOQ19TVEFU
UygiRE9NLkhUTUxPcHRpb25zQ29sbGVjdGlvbi5JbmRleGVkUHJvcGVydHlTZXR0ZXIiKTsKKyAg
ICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBWOFByb3h5OjpUb05hdGl2ZU9i
amVjdDxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+KFY4Q2xhc3NJbmRleDo6SFRNTE9QVElPTlNDT0xM
RUNUSU9OLCBpbmZvLkhvbGRlcigpKTsKKyAgICBIVE1MU2VsZWN0RWxlbWVudCogYmFzZSA9IHN0
YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oY29sbGVjdGlvbi0+YmFzZSgpKTsKKyAgICBy
ZXR1cm4gdG9PcHRpb25zQ29sbGVjdGlvblNldHRlcihpbmRleCwgdmFsdWUsIGJhc2UpOworfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxTZWxlY3RFbGVtZW50Q29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudENvbGxlY3Rpb25D
dXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MU2VsZWN0RWxlbWVudENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVt
ZW50LmgiCisKKyNpbmNsdWRlICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJWOEN1c3Rv
bUJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmgiCisjaW5jbHVk
ZSAiVjhQcm94eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05BTUVEX1BST1BFUlRZX0dF
VFRFUihIVE1MU2VsZWN0RWxlbWVudENvbGxlY3Rpb24pCit7CisgICAgSU5DX1NUQVRTKCJET00u
SFRNTFNlbGVjdEVsZW1lbnRDb2xsZWN0aW9uLk5hbWVkUHJvcGVydHlTZXR0ZXIiKTsKKyAgICBI
VE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gVjhQcm94eTo6RE9NV3JhcHBlclRvTm9kZTxIVE1M
U2VsZWN0RWxlbWVudD4oaW5mby5Ib2xkZXIoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlID0gaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHlJblByb3RvdHlwZUNo
YWluKG5hbWUpOworCisgICAgaWYgKCF2YWx1ZS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2
YWx1ZTsKKworICAgIC8vIFNlYXJjaCBsb2NhbCBjYWxsYmFjayBwcm9wZXJ0aWVzIG5leHQgdG8g
ZmluZCBJREwgZGVmaW5lZCBwcm9wZXJ0aWVzLgorICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNS
ZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5KG5hbWUpKQorICAgICAgICByZXR1cm4gbm90SGFuZGxl
ZEJ5SW50ZXJjZXB0b3IoKTsKKworICAgIFBhc3NSZWZQdHI8SFRNTE9wdGlvbnNDb2xsZWN0aW9u
PiBjb2xsZWN0aW9uID0gc2VsZWN0LT5vcHRpb25zKCk7CisKKyAgICBWZWN0b3I8UmVmUHRyPE5v
ZGU+ID4gaXRlbXM7CisgICAgY29sbGVjdGlvbi0+bmFtZWRJdGVtcyh2OFN0cmluZ1RvQXRvbWlj
V2ViQ29yZVN0cmluZyhuYW1lKSwgaXRlbXMpOworCisgICAgaWYgKCFpdGVtcy5zaXplKCkpCisg
ICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworCisgICAgaWYgKGl0ZW1z
LnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gVjhQcm94eTo6Tm9kZVRvVjhPYmplY3QoaXRl
bXMuYXQoMCkuZ2V0KCkpOworCisgICAgTm9kZUxpc3QqIGxpc3QgPSBuZXcgVjhOYW1lZE5vZGVz
Q29sbGVjdGlvbihpdGVtcyk7CisgICAgcmV0dXJuIFY4UHJveHk6OlRvVjhPYmplY3QoVjhDbGFz
c0luZGV4OjpOT0RFTElTVCwgbGlzdCk7Cit9CisKK0lOREVYRURfUFJPUEVSVFlfU0VUVEVSKEhU
TUxTZWxlY3RFbGVtZW50Q29sbGVjdGlvbikKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5IVE1MU2Vs
ZWN0RWxlbWVudENvbGxlY3Rpb24uSW5kZXhlZFByb3BlcnR5U2V0dGVyIik7CisgICAgSFRNTFNl
bGVjdEVsZW1lbnQqIHNlbGVjdCA9IFY4UHJveHk6OkRPTVdyYXBwZXJUb05vZGU8SFRNTFNlbGVj
dEVsZW1lbnQ+KGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB0b09wdGlvbnNDb2xsZWN0aW9u
U2V0dGVyKGluZGV4LCB2YWx1ZSwgc2VsZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQo=
</data>
<flag name="review"
          id="15250"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>