<?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>66841</bug_id>
          
          <creation_ts>2011-08-24 01:09:09 -0700</creation_ts>
          <short_desc>Let MessageEvent.data hold SerializedScriptValue or String selectively</short_desc>
          <delta_ts>2011-08-25 02:25:35 -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>UI Events</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>
          
          <blocked>65249</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuta Kitamura">yutak</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>atwilson</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>456003</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-24 01:09:09 -0700</bug_when>
    <thetext>WebSocket generates a MessageEvent when a WebSocket message is received. MessageEvent&apos;s data attribute contains String, ArrayBuffer or Blob (ArrayBuffer and Blob messages are not implemented yet).

In current WebCore implementation, MessageEvent.data is defined to be SerializedScriptValue. WebSocket class can directly construct the object representing an incoming message (as a String, an ArrayBuffer or a Blob), and it does not have to be serialized at all.

This bug is dedicated to MessageEvent refactoring making MessageEvent.data hold a variant value (SerializedScriptValue or String).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456025</commentid>
    <comment_count>1</comment_count>
      <attachid>104973</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-24 02:16:17 -0700</bug_when>
    <thetext>Created attachment 104973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456278</commentid>
    <comment_count>2</comment_count>
      <attachid>104973</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-24 11:59:51 -0700</bug_when>
    <thetext>Comment on attachment 104973
Patch

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

&gt; Source/WebCore/bindings/v8/custom/V8MessageEventCustom.cpp:74
&gt; +    // Overwrite the data attribute so it returns the cached result in future invocations.
&gt; +    v8::PropertyAttribute dataAttr = static_cast&lt;v8::PropertyAttribute&gt;(v8::DontDelete | v8::ReadOnly);
&gt; +    info.Holder()-&gt;ForceSet(name, result, dataAttr);
&gt; +    return result;

I trust the underlying C++ data is immutable.  :)

&gt; Source/WebCore/dom/MessageEvent.cpp:58
&gt; +    , m_origin(&quot;&quot;)
&gt; +    , m_lastEventId(&quot;&quot;)

Do you mean for these to be empty strings as opposed to null strings?

&gt; Source/WebCore/dom/MessageEvent.h:76
&gt; +        enum DataType {
&gt; +            DataTypeSerializedScriptValue,
&gt; +            DataTypeString
&gt; +        };

The switch statements that use this enum shouldn&apos;t have a default case.  We rely upon the compiler to complain when we change the enum and forget to update the switch statements.

&gt; Source/WebCore/websockets/WebSocket.cpp:-397
&gt; -    evt-&gt;initMessageEvent(eventNames().messageEvent, false, false, SerializedScriptValue::create(msg), &quot;&quot;, &quot;&quot;, 0, 0);

I see that the empty strings were used here, so you&apos;re probably doing the right thing above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456705</commentid>
    <comment_count>3</comment_count>
      <attachid>104973</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-25 01:23:07 -0700</bug_when>
    <thetext>Comment on attachment 104973
Patch

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

Thank you for your review!

&gt;&gt; Source/WebCore/bindings/v8/custom/V8MessageEventCustom.cpp:74
&gt;&gt; +    return result;
&gt; 
&gt; I trust the underlying C++ data is immutable.  :)

If we didn&apos;t cache the result, .data accessor would generate a different JS object (which is semantically same) every time .data value is obtained. This is not desirable and actually makes some tests (fast/dom/Window/window-postmessage-clone*.html) fail.

ForceSet() is used in SerializedScriptValue::deserializeAndSetProperty(), which stub code for SerializedScriptValue generated by CodeGeneratorV8 uses (http://trac.webkit.org/browser/trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm?rev=92890#L2592).

&gt;&gt; Source/WebCore/dom/MessageEvent.cpp:58
&gt;&gt; +    , m_lastEventId(&quot;&quot;)
&gt; 
&gt; Do you mean for these to be empty strings as opposed to null strings?

Yes, this is intentional, as you mentioned below.

&gt;&gt; Source/WebCore/dom/MessageEvent.h:76
&gt;&gt; +        };
&gt; 
&gt; The switch statements that use this enum shouldn&apos;t have a default case.  We rely upon the compiler to complain when we change the enum and forget to update the switch statements.

Default cases will be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456707</commentid>
    <comment_count>4</comment_count>
      <attachid>105143</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-25 01:25:42 -0700</bug_when>
    <thetext>Created attachment 105143
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456721</commentid>
    <comment_count>5</comment_count>
      <attachid>105143</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-25 02:25:30 -0700</bug_when>
    <thetext>Comment on attachment 105143
Patch for landing

Clearing flags on attachment: 105143

Committed r93766: &lt;http://trac.webkit.org/changeset/93766&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456722</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-25 02:25:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104973</attachid>
            <date>2011-08-24 02:16:17 -0700</date>
            <delta_ts>2011-08-25 01:25:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66841-20110824181615.patch</filename>
            <type>text/plain</type>
            <size>13805</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM2NDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjU3OTFmOTZjMzIzN2Zh
ZjJjMTliNzFjZGQxNDI3YTQyNzAzNDZhLi5iODJiNmMzODZjMzE3NjQzMGFhOTUxYWRhZWIyMTcz
OTA5NTFmYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDgtMjQgIFl1dGEg
S2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTGV0IE1lc3NhZ2VFdmVu
dC5kYXRhIGhvbGQgU2VyaWFsaXplZFNjcmlwdFZhbHVlIG9yIFN0cmluZyBzZWxlY3RpdmVseQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZXNzYWdlRXZl
bnQgZnJvbSBXZWJTb2NrZXQgY29udGFpbnMgYSBTdHJpbmcgaW4gaXRzICJkYXRhIiBhdHRyaWJ1
dGUsIGJ1dCBpdCBkb2VzIG5vdCBoYXZlCisgICAgICAgIHRvIGJlIHNlcmlhbGl6ZWQuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIGFyZSBhZGRlZCwgYmVjYXVzZSB0aGlzIGlzIHJlZmFjdG9yaW5n
IGFuZCB0aGUgYmVoYXZpb3Igc2hvdWxkIG5vdCBjaGFuZ2UuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3Nh
Z2VFdmVudDo6ZGF0YSk6CisgICAgICAgIFRvIGNhbGwgcHV0QW5vbnltb3VzVmFsdWUoKSwgInRo
aXMiIG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBub24tY29uc3QgdXNpbmcgY29uc3RfY2FzdDw+
LgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQpOgor
ICAgICAgICBVcGRhdGUgdGhlIGNhY2hlIHZhbHVlIGFzIHdlbGwuCisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4TWVzc2FnZUV2ZW50OjpkYXRhQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICBGb3JjZVNldCgp
IGlzIHVzZWQgdG8gY2FjaGUgYSB2YWx1ZS4gVGhpcyBpcyB0aGUgc2FtZSBhcyB3aGF0IHRoZSBj
b2RlIGdlbmVyYXRlZCBieQorICAgICAgICBDb2RlR2VuZXJhdG9yVjggZG9lcy4KKyAgICAgICAg
KFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2spOgorICAg
ICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2
ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojppbml0
TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6ZGF0YSk6Cisg
ICAgICAgIFRoaXMgaXMgb25seSB1c2VkIHdpdGhpbiB0aGUgT2JqZWN0aXZlLUMgYmluZGluZ3Mg
KEpTQyBhbmQgVjggaGF2ZSB0aGUgY3VzdG9tIGZ1bmN0aW9ucykuCisgICAgICAgIFNpbmNlIE9i
amVjdGl2ZS1DIGNvZGUgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBvcnQgW0N1c3RvbUdldHRlcl0g
SURMIGF0dHJpYnV0ZSwgdGhlcmUgaXMKKyAgICAgICAgbm8gZ29vZCB3YXkgdG8gcmV0dXJuIGEg
dmFyaWFudCB2YWx1ZSBmb3IgT2JqZWN0aXZlLUMgYmluZGluZ3MuCisgICAgICAgICogZG9tL01l
c3NhZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpkYXRhVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZXNzYWdlRXZlbnQ6OmRhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmRhdGFBc1N0cmluZyk6CisgICAgICAgICogZG9tL01l
c3NhZ2VFdmVudC5pZGw6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIENv
bnN0cnVjdCBhIE1lc3NhZ2VFdmVudCB3aXRob3V0IHNlcmlhbGl6aW5nIHRoZSByZWNlaXZlZCBt
ZXNzYWdlLgorCiAyMDExLTA4LTIzICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+
CiAKICAgICAgICAgW2Nocm9taXVtXSBGaXggcG90ZW50aWFsIG51bGxwdHIgZGVyZWYgaW4gVGls
ZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggMjE1ZTE1ZjBhODk2
N2IxMzcxM2VhNTg0NmVmNTlkMWQ5MzFjYTJjYi4uZDQyM2QwNDQ5ZjNiYWY2Y2MxMTY2ODcxMzI0
MTY5MTk3ZmIyYWQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtNDIsNiArNDIsMzYgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50Ojpk
YXRhKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1
ZSA9IGdldEFub255bW91c1ZhbHVlKEpTTWVzc2FnZUV2ZW50OjpkYXRhU2xvdCkpCisgICAgICAg
IHJldHVybiBjYWNoZWRWYWx1ZTsKKworICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBzdGF0aWNf
Y2FzdDxNZXNzYWdlRXZlbnQqPihpbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0OworICAgIHN3
aXRjaCAoZXZlbnQtPmRhdGFUeXBlKCkpIHsKKyAgICBjYXNlIE1lc3NhZ2VFdmVudDo6RGF0YVR5
cGVTZXJpYWxpemVkU2NyaXB0VmFsdWU6CisgICAgICAgIGlmIChTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIHNlcmlhbGl6ZWRWYWx1ZSA9IGV2ZW50LT5kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUo
KSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlcmlhbGl6ZWRWYWx1ZS0+ZGVzZXJpYWxpemUoZXhl
YywgZ2xvYmFsT2JqZWN0KCksIE5vblRocm93aW5nKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmVzdWx0ID0ganNOdWxsKCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNZXNzYWdl
RXZlbnQ6OkRhdGFUeXBlU3RyaW5nOgorICAgICAgICByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBl
dmVudC0+ZGF0YUFzU3RyaW5nKCkpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXN1bHQgPSBqc1VuZGVmaW5l
ZCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBTYXZlIHRoZSByZXN1bHQgc28g
d2UgZG9uJ3QgaGF2ZSB0byBkZXNlcmlhbGl6ZSB0aGUgdmFsdWUgYWdhaW4uCisgICAgY29uc3Rf
Y2FzdDxKU01lc3NhZ2VFdmVudCo+KHRoaXMpLT5wdXRBbm9ueW1vdXNWYWx1ZShleGVjLT5nbG9i
YWxEYXRhKCksIEpTTWVzc2FnZUV2ZW50OjpkYXRhU2xvdCwgcmVzdWx0KTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50Ojpwb3J0cyhFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiB7CiAgICAgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMgPSBzdGF0aWNfY2FzdDxN
ZXNzYWdlRXZlbnQqPihpbXBsKCkpLT5wb3J0cygpOwpAQCAtNzUsNiArMTA1LDEyIEBAIEpTQzo6
SlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChKU0M6OkV4ZWNTdGF0ZSog
ZXhlYykKIAogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBzdGF0aWNfY2FzdDxNZXNzYWdlRXZl
bnQqPih0aGlzLT5pbXBsKCkpOwogICAgIGV2ZW50LT5pbml0TWVzc2FnZUV2ZW50KHVzdHJpbmdU
b0F0b21pY1N0cmluZyh0eXBlQXJnKSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRh
QXJnLnJlbGVhc2UoKSwgdXN0cmluZ1RvU3RyaW5nKG9yaWdpbkFyZyksIHVzdHJpbmdUb1N0cmlu
ZyhsYXN0RXZlbnRJZEFyZyksIHNvdXJjZUFyZywgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQ7CisgICAgaWYgKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFs
aXplZFZhbHVlID0gZXZlbnQtPmRhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpKQorICAgICAg
ICByZXN1bHQgPSBzZXJpYWxpemVkVmFsdWUtPmRlc2VyaWFsaXplKGV4ZWMsIGdsb2JhbE9iamVj
dCgpLCBOb25UaHJvd2luZyk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBqc051bGwoKTsK
KyAgICBwdXRBbm9ueW1vdXNWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIEpTTWVzc2FnZUV2ZW50
OjpkYXRhU2xvdCwgcmVzdWx0KTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VF
dmVudEN1c3RvbS5jcHAKaW5kZXggNDc1ZGUyYTA5OTlkYjFkYjVhMzM3ZWI2OGFiNTQ0NjhiNGRm
MGJhMS4uODM5NWEwOGY2YzI3MWU2Njg3NzZhMWM3ODEwMzMwMmY1N2M1NTE2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZl
bnRDdXN0b20uY3BwCkBAIC00Miw2ICs0MiwzOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6ZGF0YUFjY2Vzc29yR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVudC5kYXRhIik7CisgICAgTWVzc2Fn
ZUV2ZW50KiBldmVudCA9IFY4TWVzc2FnZUV2ZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQ7CisgICAgc3dpdGNoIChldmVudC0+
ZGF0YVR5cGUoKSkgeworICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZToKKyAgICAgICAgaWYgKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXpl
ZFZhbHVlID0gZXZlbnQtPmRhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpKQorICAgICAgICAg
ICAgcmVzdWx0ID0gc2VyaWFsaXplZFZhbHVlLT5kZXNlcmlhbGl6ZSgpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICByZXN1bHQgPSB2ODo6TnVsbCgpOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVN0cmluZzogeworICAgICAgICBTdHJpbmcgc3Ry
aW5nVmFsdWUgPSBldmVudC0+ZGF0YUFzU3RyaW5nKCk7CisgICAgICAgIHJlc3VsdCA9IHY4OjpT
dHJpbmc6Ok5ldyhmcm9tV2ViQ29yZVN0cmluZyhzdHJpbmdWYWx1ZSksIHN0cmluZ1ZhbHVlLmxl
bmd0aCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJlc3VsdCA9IHY4OjpVbmRlZmluZWQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gT3ZlcndyaXRlIHRoZSBkYXRhIGF0dHJp
YnV0ZSBzbyBpdCByZXR1cm5zIHRoZSBjYWNoZWQgcmVzdWx0IGluIGZ1dHVyZSBpbnZvY2F0aW9u
cy4KKyAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUgZGF0YUF0dHIgPSBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlIHwgdjg6OlJlYWRPbmx5KTsKKyAgICBp
bmZvLkhvbGRlcigpLT5Gb3JjZVNldChuYW1lLCByZXN1bHQsIGRhdGFBdHRyKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OnBv
cnRzQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZUV2ZW50LnBv
cnRzIik7CkBAIC04NSw3ICsxMTcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdl
RXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbgogICAgIH0K
ICAgICBldmVudC0+aW5pdE1lc3NhZ2VFdmVudCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNl
bGFibGVBcmcsIGRhdGFBcmcucmVsZWFzZSgpLCBvcmlnaW5BcmcsIGxhc3RFdmVudElkQXJnLCBz
b3VyY2VBcmcsIHBvcnRBcnJheS5yZWxlYXNlKCkpOwogICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZSBkYXRhQXR0ciA9IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6OkRvbnRE
ZWxldGUgfCB2ODo6UmVhZE9ubHkpOwotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJp
YWxpemVBbmRTZXRQcm9wZXJ0eShhcmdzLkhvbGRlcigpLCAiZGF0YSIsIGRhdGFBdHRyLCBldmVu
dC0+ZGF0YSgpKTsKKyAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0
UHJvcGVydHkoYXJncy5Ib2xkZXIoKSwgImRhdGEiLCBkYXRhQXR0ciwgZXZlbnQtPmRhdGFBc1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSgpKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggYjQzMzM4MWI3NWJjYWQ3N2Y5
MjNmY2NmZTk3MGEyYjllY2U3NjBmMy4uOGQ0ZThmMDg2NDE0YzY5NzM3MWUyZTM5OTBhZDIyZjAw
NjVlNjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAgLTM0LDEzICszNCwx
NSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCgp
Ci0gICAgOiBtX2RhdGEoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKSkKKyAgICA6IG1f
ZGF0YVR5cGUoRGF0YVR5cGVTZXJpYWxpemVkU2NyaXB0VmFsdWUpCisgICAgLCBtX2RhdGFBc1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgpKQogewog
fQogCiBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRBcnJheT4gcG9ydHMpCiAgICAgOiBFdmVudChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBm
YWxzZSwgZmFsc2UpCi0gICAgLCBtX2RhdGEoZGF0YSkKKyAgICAsIG1fZGF0YVR5cGUoRGF0YVR5
cGVTZXJpYWxpemVkU2NyaXB0VmFsdWUpCisgICAgLCBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZShkYXRhKQogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9sYXN0RXZlbnRJZChs
YXN0RXZlbnRJZCkKICAgICAsIG1fc291cmNlKHNvdXJjZSkKQEAgLTQ4LDYgKzUwLDE1IEBAIE1l
c3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBkYXRhLCBjb25zdCBTdHJpbmcmCiB7CiB9CiAKK01lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50
KGNvbnN0IFN0cmluZyYgZGF0YSkKKyAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZl
bnQsIGZhbHNlLCBmYWxzZSkKKyAgICAsIG1fZGF0YVR5cGUoRGF0YVR5cGVTdHJpbmcpCisgICAg
LCBtX2RhdGFBc1N0cmluZyhkYXRhKQorICAgICwgbV9vcmlnaW4oIiIpCisgICAgLCBtX2xhc3RF
dmVudElkKCIiKQoreworfQorCiBNZXNzYWdlRXZlbnQ6On5NZXNzYWdlRXZlbnQoKQogewogfQpA
QCAtNTgsMTQgKzY5LDIzIEBAIHZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvCiAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCiAgICAgaW5pdEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSk7
Ci0gICAgCi0gICAgbV9kYXRhID0gZGF0YTsKKworICAgIG1fZGF0YVR5cGUgPSBEYXRhVHlwZVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKyAgICBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9
IGRhdGE7CiAgICAgbV9vcmlnaW4gPSBvcmlnaW47CiAgICAgbV9sYXN0RXZlbnRJZCA9IGxhc3RF
dmVudElkOwogICAgIG1fc291cmNlID0gc291cmNlOwogICAgIG1fcG9ydHMgPSBwb3J0czsKIH0K
IAorLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gd2UgaGF2ZSBjdXN0b20gT2JqQyBiaW5kaW5n
IHN1cHBvcnQuCitTZXJpYWxpemVkU2NyaXB0VmFsdWUqIE1lc3NhZ2VFdmVudDo6ZGF0YSgpIGNv
bnN0Cit7CisgICAgLy8gV2ViU29ja2V0IGlzIG5vdCBleHBvc2VkIGluIE9iakMgYmluZGluZ3Ms
IHRodXMgdGhlIGRhdGEgdHlwZSBzaG91bGQgYWx3YXlzIGJlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS4KKyAgICBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSk7CisgICAgcmV0dXJuIG1fZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlLmdldCgpOworfQor
CiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3Mg
KGJ1ZyAjMjg3NzQpLgogTWVzc2FnZVBvcnQqIE1lc3NhZ2VFdmVudDo6bWVzc2FnZVBvcnQoKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IGI3ZjliMDI5MmUzNDI5NDhkOTEyNGM3
ZjcwZGY0MmU1Yjc2MTZkYTYuLjNhOTBiMWUzYWJjZGEyNTgxMWY2NjUwYWZjZDk2MjllNTNhNjlk
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTQ3LDE2ICs0NywyMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgTWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgcG9ydHMp
KTsKICAgICAgICAgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTWVzc2FnZUV2ZW50KGRhdGEpKTsKKyAgICAgICAgfQogICAgICAgICB2aXJ0
dWFsIH5NZXNzYWdlRXZlbnQoKTsKIAogICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKIAotICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KICAgICAgICAgY29uc3QgU3Ry
aW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgICAgICBjb25zdCBT
dHJpbmcmIGxhc3RFdmVudElkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RXZlbnRJZDsgfQogICAg
ICAgICBET01XaW5kb3cqIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9
CiAgICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb3J0
cy5nZXQoKTsgfQogCisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHdlIGhhdmUg
Y3VzdG9tIE9iakMgYmluZGluZyBzdXBwb3J0LgorICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIGRhdGEoKSBjb25zdDsKKwogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3
ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogICAgICAgICBNZXNzYWdl
UG9ydCogbWVzc2FnZVBvcnQoKTsKICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4g
d2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KQEAgLTY0LDExICs3MCwy
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTWVzc2Fn
ZUV2ZW50KCkgY29uc3Q7CiAKKyAgICAgICAgZW51bSBEYXRhVHlwZSB7CisgICAgICAgICAgICBE
YXRhVHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwKKyAgICAgICAgICAgIERhdGFUeXBlU3RyaW5n
CisgICAgICAgIH07CisgICAgICAgIERhdGFUeXBlIGRhdGFUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhVHlwZTsgfQorICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGRhdGFBc1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUFzU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmdldCgpOyB9CisgICAgICAgIFN0cmluZyBkYXRhQXNTdHJpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFBc1N0cmluZzsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgTWVzc2FnZUV2
ZW50KCk7CiAgICAgICAgIE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRB
cnJheT4pOworICAgICAgICBleHBsaWNpdCBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRh
KTsKIAotICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX2RhdGE7CisgICAg
ICAgIERhdGFUeXBlIG1fZGF0YVR5cGU7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1fZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlOworICAgICAgICBTdHJpbmcgbV9k
YXRhQXNTdHJpbmc7CiAgICAgICAgIFN0cmluZyBtX29yaWdpbjsKICAgICAgICAgU3RyaW5nIG1f
bGFzdEV2ZW50SWQ7CiAgICAgICAgIFJlZlB0cjxET01XaW5kb3c+IG1fc291cmNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmlkbAppbmRleCBjZjQ1YmI0NDdkZDc0Y2YzZGNlYzdlYzFiMWUx
Mjg0NzZmMzgwNTM5Li45Njk0ZGVlZmYyZGY4MjI2ZDIxYTZkMzhlZjliNDk5YTA4ZjMwOGQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbApAQCAtMjksMTIgKzI5LDExIEBAIG1vZHVs
ZSBldmVudHMgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAg
XSBNZXNzYWdlRXZlbnQgOiBFdmVudCB7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ2Fj
aGVkQXR0cmlidXRlXSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YTsKLQogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG9yaWdpbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBsYXN0RXZlbnRJZDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVdpbmRvdyBzb3VyY2U7CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5H
VUFHRV9KQVZBU0NSSVBUCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ2FjaGVkQXR0cmli
dXRlLCBDdXN0b21HZXR0ZXJdIGFueSBkYXRhOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W0N1c3RvbUdldHRlcl0gQXJyYXkgcG9ydHM7CiAKICAgICAgICAgW0N1c3RvbV0gdm9pZCBpbml0
TWVzc2FnZUV2ZW50KGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5n
IHR5cGVBcmcsIApAQCAtNDYsNiArNDUsMTAgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0
VmFsdWVdIERPTVdpbmRvdyBzb3VyY2VBcmcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBBcnJheSBtZXNz
YWdlUG9ydHMpOwogI2Vsc2UKKyAgICAgICAgLy8gQ29kZSBnZW5lcmF0b3IgZm9yIE9iakMgYmlu
ZGluZ3MgZG9lcyBub3Qgc3VwcG9ydCBjdXN0b20gYmluZGluZ3MsIHRodXMgdGhlcmUgaXMgbm8g
Z29vZCB3YXkgdG8KKyAgICAgICAgLy8gcmV0dXJuIGEgdmFyaWFudCB2YWx1ZS4gQXMgd29ya2Fy
b3VuZCwgZXhwb3NlIHRoZSBkYXRhIGF0dHJpYnV0ZSBhcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUu
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YTsK
KwogICAgICAgICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGV4cG9zZSBhbiBhcnJheSB2aWEg
dGhlIE9iakMgYmluZGluZ3MsIHNvIGZvciBub3cganVzdCBleHBvc2UgYSBzaW5nbGUgcG9ydC4K
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggZjE3OTdmMDg0YWNmNDAx
OGMyZDM2NDU3N2ExOGIyOGU0ODZkZmY2ZC4uMTM5MjQ5YTY2ZjA2YTYzODFjZDFkNmExYTlmM2Ix
NDA2ZTc3Yjc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAt
MzkzLDkgKzM5Myw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBT
dHJpbmcmIG1zZykKICAgICBpZiAobV9zdGF0ZSAhPSBPUEVOICYmIG1fc3RhdGUgIT0gQ0xPU0lO
RykKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OwotICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2dCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKCk7
Ci0gICAgZXZ0LT5pbml0TWVzc2FnZUV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZh
bHNlLCBmYWxzZSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUobXNnKSwgIiIsICIiLCAw
LCAwKTsKLSAgICBkaXNwYXRjaEV2ZW50KGV2dCk7CisgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdl
RXZlbnQ6OmNyZWF0ZShtc2cpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNz
YWdlRXJyb3IoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105143</attachid>
            <date>2011-08-25 01:25:42 -0700</date>
            <delta_ts>2011-08-25 02:25:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-66841-20110825172540.patch</filename>
            <type>text/plain</type>
            <size>14518</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM3MDUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL1dpbmRvdy9zY3JpcHQtdGVzdHMvcG9zdG1lc3NhZ2UtdGVzdC5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy9zY3JpcHQtdGVzdHMvcG9zdG1lc3NhZ2UtdGVzdC5qcwppbmRleCA0
YWNiNGVlOGZlZWZiZGIxODgyZTZlNzEyODhlZmUwZGJlMjhjODM4Li43NjNjODVhNDgwMjczNmJj
NWZlMGEwYzQwMjRmNzgxZjk2NDU4ZjJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvc2NyaXB0LXRlc3RzL3Bvc3RtZXNzYWdlLXRlc3QuanMKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3NjcmlwdC10ZXN0cy9wb3N0bWVzc2FnZS10ZXN0LmpzCkBAIC0x
MTEsNyArMTExLDcgQEAgd2luZG93LmRvUGFzc0ZhaWwgPSBmdW5jdGlvbihyZXN1bHQsIG1zZykg
ewogZnVuY3Rpb24gb25tZXNzYWdlKGV2dCkgewogICAgIGV2ZW50RGF0YSA9IGV2dC5kYXRhOwog
ICAgIGlmIChldnQuZGF0YSAhPT0gZXZ0LmRhdGEpCi0gICAgICAgIGNvbnNvbGUuaW5uZXJIVE1M
ICs9ICJNZXNzYWdlRXZlbnQuZGF0YSBkb2VzIG5vdCBwcm9kdWNlIHRoZSBzYW1lIHZhbHVlIG9u
IG11bHRpcGxlIHF1ZXJpZXMuPGJyPiI7CisgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9ICJN
ZXNzYWdlRXZlbnQuZGF0YSBkb2VzIG5vdCBwcm9kdWNlIHRoZSBzYW1lIHZhbHVlIG9uIG11bHRp
cGxlIHF1ZXJpZXMuICIgKyBldnQuZGF0YSArICIsICIgKyBldnQuZGF0YSArICI8YnI+IjsKICAg
ICB2YXIgbWVzc2FnZSA9IG1lc3NhZ2VzLnNoaWZ0KCk7CiAgICAgc3dpdGNoIChtZXNzYWdlKSB7
CiAgICAgY2FzZSAiY3ljbGljT2JqZWN0IjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYTY4MTQ3MjEyYmEyM2M1
MWUxYzVjMGZkOGU2NTI1YWYxNDg5YWJkLi5iNTVmMDM1YWExOTQ1MjcwNzQwNmM3NzZkODY4NzY1
MWJiOGE5N2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDgtMjUgIFl1dGEg
S2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTGV0IE1lc3NhZ2VFdmVu
dC5kYXRhIGhvbGQgU2VyaWFsaXplZFNjcmlwdFZhbHVlIG9yIFN0cmluZyBzZWxlY3RpdmVseQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIE1lc3NhZ2VFdmVudCBm
cm9tIFdlYlNvY2tldCBjb250YWlucyBhIFN0cmluZyBpbiBpdHMgImRhdGEiIGF0dHJpYnV0ZSwg
YnV0IGl0IGRvZXMgbm90IGhhdmUKKyAgICAgICAgdG8gYmUgc2VyaWFsaXplZC4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYXJlIGFkZGVkLCBiZWNhdXNlIHRoaXMgaXMgcmVmYWN0b3JpbmcgYW5k
IHRoZSBiZWhhdmlvciBzaG91bGQgbm90IGNoYW5nZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZUV2
ZW50OjpkYXRhKToKKyAgICAgICAgVG8gY2FsbCBwdXRBbm9ueW1vdXNWYWx1ZSgpLCAidGhpcyIg
bmVlZHMgdG8gYmUgY29udmVydGVkIHRvIG5vbi1jb25zdCB1c2luZyBjb25zdF9jYXN0PD4uCisg
ICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudCk6CisgICAg
ICAgIFVwZGF0ZSB0aGUgY2FjaGUgdmFsdWUgYXMgd2VsbC4KKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhN
ZXNzYWdlRXZlbnQ6OmRhdGFBY2Nlc3NvckdldHRlcik6CisgICAgICAgIEZvcmNlU2V0KCkgaXMg
dXNlZCB0byBjYWNoZSBhIHZhbHVlLiBUaGlzIGlzIHRoZSBzYW1lIGFzIHdoYXQgdGhlIGNvZGUg
Z2VuZXJhdGVkIGJ5CisgICAgICAgIENvZGVHZW5lcmF0b3JWOCBkb2VzLgorICAgICAgICAoV2Vi
Q29yZTo6VjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayk6CisgICAgICAg
ICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6
Ok1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmluaXRNZXNz
YWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpkYXRhKToKKyAgICAg
ICAgVGhpcyBpcyBvbmx5IHVzZWQgd2l0aGluIHRoZSBPYmplY3RpdmUtQyBiaW5kaW5ncyAoSlND
IGFuZCBWOCBoYXZlIHRoZSBjdXN0b20gZnVuY3Rpb25zKS4KKyAgICAgICAgU2luY2UgT2JqZWN0
aXZlLUMgY29kZSBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydCBbQ3VzdG9tR2V0dGVyXSBJREwg
YXR0cmlidXRlLCB0aGVyZSBpcworICAgICAgICBubyBnb29kIHdheSB0byByZXR1cm4gYSB2YXJp
YW50IHZhbHVlIGZvciBPYmplY3RpdmUtQyBiaW5kaW5ncy4KKyAgICAgICAgKiBkb20vTWVzc2Fn
ZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmRhdGFUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lc3NhZ2VFdmVudDo6ZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VFdmVudDo6ZGF0YUFzU3RyaW5nKToKKyAgICAgICAgKiBkb20vTWVzc2Fn
ZUV2ZW50LmlkbDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgQ29uc3Ry
dWN0IGEgTWVzc2FnZUV2ZW50IHdpdGhvdXQgc2VyaWFsaXppbmcgdGhlIHJlY2VpdmVkIG1lc3Nh
Z2UuCisKIDIwMTEtMDgtMjQgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4dHJhY3QgQ29uc29sZU1lc3NhZ2UgaW50byBhIHNl
cGFyYXRlIGZpbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
c3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VFdmVudEN1c3RvbS5jcHAKaW5kZXggMjE1ZTE1ZjBhODk2N2IxMzcxM2VhNTg0NmVmNTlkMWQ5
MzFjYTJjYi4uYjA4NGNmY2YzNzNhOTg0ODE5NmRiMWJhYzg1ODlhMDg4ODAwYzc3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cApAQCAtNDIsNiArNDIsMzEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50OjpkYXRhKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKK3sKKyAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGdldEFub255bW91c1ZhbHVl
KEpTTWVzc2FnZUV2ZW50OjpkYXRhU2xvdCkpCisgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTsK
KworICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBzdGF0aWNfY2FzdDxNZXNzYWdlRXZlbnQqPihp
bXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0OworICAgIHN3aXRjaCAoZXZlbnQtPmRhdGFUeXBl
KCkpIHsKKyAgICBjYXNlIE1lc3NhZ2VFdmVudDo6RGF0YVR5cGVTZXJpYWxpemVkU2NyaXB0VmFs
dWU6CisgICAgICAgIGlmIChTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRWYWx1ZSA9
IGV2ZW50LT5kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSkKKyAgICAgICAgICAgIHJlc3Vs
dCA9IHNlcmlhbGl6ZWRWYWx1ZS0+ZGVzZXJpYWxpemUoZXhlYywgZ2xvYmFsT2JqZWN0KCksIE5v
blRocm93aW5nKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0ganNOdWxsKCk7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNZXNzYWdlRXZlbnQ6OkRhdGFUeXBlU3RyaW5n
OgorICAgICAgICByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBldmVudC0+ZGF0YUFzU3RyaW5nKCkp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBTYXZlIHRoZSByZXN1bHQgc28gd2Ug
ZG9uJ3QgaGF2ZSB0byBkZXNlcmlhbGl6ZSB0aGUgdmFsdWUgYWdhaW4uCisgICAgY29uc3RfY2Fz
dDxKU01lc3NhZ2VFdmVudCo+KHRoaXMpLT5wdXRBbm9ueW1vdXNWYWx1ZShleGVjLT5nbG9iYWxE
YXRhKCksIEpTTWVzc2FnZUV2ZW50OjpkYXRhU2xvdCwgcmVzdWx0KTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiBKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50Ojpwb3J0cyhFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiB7CiAgICAgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMgPSBzdGF0aWNfY2FzdDxNZXNz
YWdlRXZlbnQqPihpbXBsKCkpLT5wb3J0cygpOwpAQCAtNzUsNiArMTAwLDEyIEBAIEpTQzo6SlNW
YWx1ZSBKU01lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChKU0M6OkV4ZWNTdGF0ZSogZXhl
YykKIAogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBzdGF0aWNfY2FzdDxNZXNzYWdlRXZlbnQq
Pih0aGlzLT5pbXBsKCkpOwogICAgIGV2ZW50LT5pbml0TWVzc2FnZUV2ZW50KHVzdHJpbmdUb0F0
b21pY1N0cmluZyh0eXBlQXJnKSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJn
LnJlbGVhc2UoKSwgdXN0cmluZ1RvU3RyaW5nKG9yaWdpbkFyZyksIHVzdHJpbmdUb1N0cmluZyhs
YXN0RXZlbnRJZEFyZyksIHNvdXJjZUFyZywgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSk7CisgICAg
SlNWYWx1ZSByZXN1bHQ7CisgICAgaWYgKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXpl
ZFZhbHVlID0gZXZlbnQtPmRhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpKQorICAgICAgICBy
ZXN1bHQgPSBzZXJpYWxpemVkVmFsdWUtPmRlc2VyaWFsaXplKGV4ZWMsIGdsb2JhbE9iamVjdCgp
LCBOb25UaHJvd2luZyk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBqc051bGwoKTsKKyAg
ICBwdXRBbm9ueW1vdXNWYWx1ZShleGVjLT5nbG9iYWxEYXRhKCksIEpTTWVzc2FnZUV2ZW50Ojpk
YXRhU2xvdCwgcmVzdWx0KTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVu
dEN1c3RvbS5jcHAKaW5kZXggNDc1ZGUyYTA5OTlkYjFkYjVhMzM3ZWI2OGFiNTQ0NjhiNGRmMGJh
MS4uYzRkYjc3MzQ3NGYyMmNkMTBmNjI3NzE0ZTMwYzJkZjYzNGQzMWVhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRD
dXN0b20uY3BwCkBAIC00Miw2ICs0MiwzNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6ZGF0YUFjY2Vzc29yR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVudC5kYXRhIik7CisgICAgTWVzc2FnZUV2
ZW50KiBldmVudCA9IFY4TWVzc2FnZUV2ZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKwor
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQ7CisgICAgc3dpdGNoIChldmVudC0+ZGF0
YVR5cGUoKSkgeworICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZToKKyAgICAgICAgaWYgKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFZh
bHVlID0gZXZlbnQtPmRhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpKQorICAgICAgICAgICAg
cmVzdWx0ID0gc2VyaWFsaXplZFZhbHVlLT5kZXNlcmlhbGl6ZSgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICByZXN1bHQgPSB2ODo6TnVsbCgpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZVN0cmluZzogeworICAgICAgICBTdHJpbmcgc3RyaW5n
VmFsdWUgPSBldmVudC0+ZGF0YUFzU3RyaW5nKCk7CisgICAgICAgIHJlc3VsdCA9IHY4OjpTdHJp
bmc6Ok5ldyhmcm9tV2ViQ29yZVN0cmluZyhzdHJpbmdWYWx1ZSksIHN0cmluZ1ZhbHVlLmxlbmd0
aCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKworICAgIC8vIE92ZXJ3cml0ZSB0
aGUgZGF0YSBhdHRyaWJ1dGUgc28gaXQgcmV0dXJucyB0aGUgY2FjaGVkIHJlc3VsdCBpbiBmdXR1
cmUgaW52b2NhdGlvbnMuCisgICAgLy8gVGhpcyBjdXN0b20gaGFuZGxlciAoZGF0YUFjY2Vzc0dl
dHRlcikgd2lsbCBub3QgYmUgY2FsbGVkIGFnYWluLgorICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZSBkYXRhQXR0ciA9IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6OkRvbnRE
ZWxldGUgfCB2ODo6UmVhZE9ubHkpOworICAgIGluZm8uSG9sZGVyKCktPkZvcmNlU2V0KG5hbWUs
IHJlc3VsdCwgZGF0YUF0dHIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6cG9ydHNBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5NZXNzYWdlRXZlbnQucG9ydHMiKTsKQEAgLTg1LDcgKzExMyw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgfQogICAgIGV2ZW50LT5pbml0TWVzc2FnZUV2ZW50
KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgZGF0YUFyZy5yZWxlYXNlKCks
IG9yaWdpbkFyZywgbGFzdEV2ZW50SWRBcmcsIHNvdXJjZUFyZywgcG9ydEFycmF5LnJlbGVhc2Uo
KSk7CiAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGRhdGFBdHRyID0gc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6RG9udERlbGV0ZSB8IHY4OjpSZWFkT25seSk7Ci0gICAg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KGFyZ3MuSG9s
ZGVyKCksICJkYXRhIiwgZGF0YUF0dHIsIGV2ZW50LT5kYXRhKCkpOworICAgIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eShhcmdzLkhvbGRlcigpLCAiZGF0
YSIsIGRhdGFBdHRyLCBldmVudC0+ZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlKCkpOwogICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50
LmNwcAppbmRleCBiNDMzMzgxYjc1YmNhZDc3ZjkyM2ZjY2ZlOTcwYTJiOWVjZTc2MGYzLi44ZDRl
OGYwODY0MTRjNjk3MzcxZTJlMzk5MGFkMjJmMDA2NWU2NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmNwcApAQCAtMzQsMTMgKzM0LDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KCkKLSAgICA6IG1fZGF0YShTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZSgpKQorICAgIDogbV9kYXRhVHlwZShEYXRhVHlwZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSkKKyAgICAsIG1fZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCkpCiB7CiB9CiAKIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2
ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxET01XaW5kb3c+
IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKICAgICA6IEV2ZW50
KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNlLCBmYWxzZSkKLSAgICAsIG1fZGF0YShk
YXRhKQorICAgICwgbV9kYXRhVHlwZShEYXRhVHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKKyAg
ICAsIG1fZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlKGRhdGEpCiAgICAgLCBtX29yaWdpbihv
cmlnaW4pCiAgICAgLCBtX2xhc3RFdmVudElkKGxhc3RFdmVudElkKQogICAgICwgbV9zb3VyY2Uo
c291cmNlKQpAQCAtNDgsNiArNTAsMTUgQEAgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYKIHsKIH0K
IAorTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhKQorICAgIDog
RXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNlKQorICAgICwgbV9k
YXRhVHlwZShEYXRhVHlwZVN0cmluZykKKyAgICAsIG1fZGF0YUFzU3RyaW5nKGRhdGEpCisgICAg
LCBtX29yaWdpbigiIikKKyAgICAsIG1fbGFzdEV2ZW50SWQoIiIpCit7Cit9CisKIE1lc3NhZ2VF
dmVudDo6fk1lc3NhZ2VFdmVudCgpCiB7CiB9CkBAIC01OCwxNCArNjksMjMgQEAgdm9pZCBNZXNz
YWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm8KICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBpbml0RXZlbnQo
dHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKTsKLSAgICAKLSAgICBtX2RhdGEgPSBkYXRhOwor
CisgICAgbV9kYXRhVHlwZSA9IERhdGFUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlOworICAgIG1f
ZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlID0gZGF0YTsKICAgICBtX29yaWdpbiA9IG9yaWdp
bjsKICAgICBtX2xhc3RFdmVudElkID0gbGFzdEV2ZW50SWQ7CiAgICAgbV9zb3VyY2UgPSBzb3Vy
Y2U7CiAgICAgbV9wb3J0cyA9IHBvcnRzOwogfQogCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hl
biB3ZSBoYXZlIGN1c3RvbSBPYmpDIGJpbmRpbmcgc3VwcG9ydC4KK1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSogTWVzc2FnZUV2ZW50OjpkYXRhKCkgY29uc3QKK3sKKyAgICAvLyBXZWJTb2NrZXQgaXMg
bm90IGV4cG9zZWQgaW4gT2JqQyBiaW5kaW5ncywgdGh1cyB0aGUgZGF0YSB0eXBlIHNob3VsZCBh
bHdheXMgYmUgU2VyaWFsaXplZFNjcmlwdFZhbHVlLgorICAgIEFTU0VSVChtX2RhdGFUeXBlID09
IERhdGFUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICByZXR1cm4gbV9kYXRhQXNTZXJp
YWxpemVkU2NyaXB0VmFsdWUuZ2V0KCk7Cit9CisKIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVu
IHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiBNZXNzYWdlUG9ydCog
TWVzc2FnZUV2ZW50OjptZXNzYWdlUG9ydCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgK
aW5kZXggYjdmOWIwMjkyZTM0Mjk0OGQ5MTI0YzdmNzBkZjQyZTViNzYxNmRhNi4uM2E5MGIxZTNh
YmNkYTI1ODExZjY2NTBhZmNkOTYyOWU1M2E2OWRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuaApAQCAtNDcsMTYgKzQ3LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2lu
LCBsYXN0RXZlbnRJZCwgc291cmNlLCBwb3J0cykpOwogICAgICAgICB9CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0
YSkpOworICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgfk1lc3NhZ2VFdmVudCgpOwogCiAgICAg
ICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJ
ZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogCi0g
ICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5nZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fb3JpZ2luOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQoKSBjb25zdCB7
IHJldHVybiBtX2xhc3RFdmVudElkOyB9CiAgICAgICAgIERPTVdpbmRvdyogc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KICAgICAgICAgTWVzc2FnZVBvcnRBcnJheSog
cG9ydHMoKSBjb25zdCB7IHJldHVybiBtX3BvcnRzLmdldCgpOyB9CiAKKyAgICAgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIHdoZW4gd2UgaGF2ZSBjdXN0b20gT2JqQyBiaW5kaW5nIHN1cHBvcnQu
CisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YSgpIGNvbnN0OworCiAgICAgICAg
IC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAo
YnVnICMyODc3NCkuCiAgICAgICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCgpOwogICAgICAg
ICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3Mg
KGJ1ZyAjMjg3NzQpLgpAQCAtNjQsMTEgKzcwLDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNZXNzYWdlRXZlbnQoKSBjb25zdDsKIAorICAgICAgICBl
bnVtIERhdGFUeXBlIHsKKyAgICAgICAgICAgIERhdGFUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVl
LAorICAgICAgICAgICAgRGF0YVR5cGVTdHJpbmcKKyAgICAgICAgfTsKKyAgICAgICAgRGF0YVR5
cGUgZGF0YVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFUeXBlOyB9CisgICAgICAgIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSogZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUuZ2V0KCk7IH0KKyAgICAgICAgU3Ry
aW5nIGRhdGFBc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUFzU3RyaW5nOyB9CisKICAg
ICBwcml2YXRlOgogICAgICAgICBNZXNzYWdlRXZlbnQoKTsKICAgICAgICAgTWVzc2FnZUV2ZW50
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNv
dXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CisgICAgICAgIGV4cGxpY2l0IE1l
c3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEpOwogCi0gICAgICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1fZGF0YTsKKyAgICAgICAgRGF0YVR5cGUgbV9kYXRhVHlwZTsKKyAg
ICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9kYXRhQXNTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CisgICAgICAgIFN0cmluZyBtX2RhdGFBc1N0cmluZzsKICAgICAgICAgU3RyaW5n
IG1fb3JpZ2luOwogICAgICAgICBTdHJpbmcgbV9sYXN0RXZlbnRJZDsKICAgICAgICAgUmVmUHRy
PERPTVdpbmRvdz4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsCmluZGV4
IGNmNDViYjQ0N2RkNzRjZjNkY2VjN2VjMWIxZTEyODQ3NmYzODA1MzkuLjk2OTRkZWVmZjJkZjgy
MjZkMjFhNmQzOGVmOWI0OTlhMDhmMzA4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
aWRsCkBAIC0yOSwxMiArMjksMTEgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgaW50ZXJmYWNlIFsK
ICAgICAgICAgTm9TdGF0aWNUYWJsZXMKICAgICBdIE1lc3NhZ2VFdmVudCA6IEV2ZW50IHsKLSAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDYWNoZWRBdHRyaWJ1dGVdIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSBkYXRhOwotCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgb3Jp
Z2luOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhc3RFdmVudElkOwog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93IHNvdXJjZTsKICNpZiBkZWZpbmVk
KExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtDYWNoZWRBdHRyaWJ1dGUsIEN1c3RvbUdldHRlcl0gYW55IGRhdGE7
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSBBcnJheSBwb3J0czsK
IAogICAgICAgICBbQ3VzdG9tXSB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4gW09wdGlvbmFsPUNh
bGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgdHlwZUFyZywgCkBAIC00Niw2ICs0NSwxMCBA
QCBtb2R1bGUgZXZlbnRzIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NV2luZG93IHNvdXJjZUFyZywg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2Fs
bFdpdGhEZWZhdWx0VmFsdWVdIEFycmF5IG1lc3NhZ2VQb3J0cyk7CiAjZWxzZQorICAgICAgICAv
LyBDb2RlIGdlbmVyYXRvciBmb3IgT2JqQyBiaW5kaW5ncyBkb2VzIG5vdCBzdXBwb3J0IGN1c3Rv
bSBiaW5kaW5ncywgdGh1cyB0aGVyZSBpcyBubyBnb29kIHdheSB0bworICAgICAgICAvLyByZXR1
cm4gYSB2YXJpYW50IHZhbHVlLiBBcyB3b3JrYXJvdW5kLCBleHBvc2UgdGhlIGRhdGEgYXR0cmli
dXRlIGFzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4KKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhOworCiAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29v
ZCB3YXkgdG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5v
dyBqdXN0IGV4cG9zZSBhIHNpbmdsZSBwb3J0LgogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
TWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcAppbmRleCBmMTc5N2YwODRhY2Y0MDE4YzJkMzY0NTc3YTE4YjI4ZTQ4NmRmZjZkLi4x
MzkyNDlhNjZmMDZhNjM4MWNkMWQ2YTFhOWYzYjE0MDZlNzdiNzg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0zOTMsOSArMzkzLDcgQEAgdm9pZCBXZWJTb2Nr
ZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQogICAgIGlmIChtX3N0YXRl
ICE9IE9QRU4gJiYgbV9zdGF0ZSAhPSBDTE9TSU5HKQogICAgICAgICByZXR1cm47CiAgICAgQVNT
RVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgUmVmUHRyPE1lc3NhZ2VFdmVudD4g
ZXZ0ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoKTsKLSAgICBldnQtPmluaXRNZXNzYWdlRXZlbnQo
ZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNlLCBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShtc2cpLCAiIiwgIiIsIDAsIDApOwotICAgIGRpc3BhdGNoRXZlbnQoZXZ0
KTsKKyAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1zZykpOwogfQogCiB2
b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>