<?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>83561</bug_id>
          
          <creation_ts>2012-04-10 04:01:56 -0700</creation_ts>
          <short_desc>[V8] Calendar Picker: Add a helper function to expose PagePopupClient::setValueAndClosePopup() to JavaScript</short_desc>
          <delta_ts>2012-04-11 03:07:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>81081</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>599136</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-10 04:01:56 -0700</bug_when>
    <thetext>Add a helper function to expose PagePopupClient::setValueAndClosePopup() to JavaScript</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599144</commentid>
    <comment_count>1</comment_count>
      <attachid>136425</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-10 04:13:20 -0700</bug_when>
    <thetext>Created attachment 136425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599154</commentid>
    <comment_count>2</comment_count>
      <attachid>136425</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-10 04:28:10 -0700</bug_when>
    <thetext>Comment on attachment 136425
Patch

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

I am not familiar with the DOMWindowPagePopup part, and just commented on the V8 bindings part.

&gt; Source/WebCore/bindings/v8/ScriptController.cpp:249
&gt; +    DOMWindow* imp = V8DOMWindow::toNative(args.Data()-&gt;ToObject());

Is this correct? Maybe toNative(args.Holder())?

&gt; Source/WebCore/bindings/v8/ScriptController.cpp:250
&gt; +    DOMWindowPagePopupClient::setValueAndClosePopup(imp, toInt32(args[0]), toWebCoreString(args, 1));

Just a confirmation: If args[1] is undefined, toWebCoreString(args, 1) will convert it to a WebCore string &quot;undefined&quot;. Is it expected? If you want to convert it to an empty WebCore string, you can write toWebCoreString(MAYBE_MISSING_PARAMETER(args, 1, DefaultIsNullString)).

&gt; Source/WebCore/bindings/v8/ScriptController.cpp:251
&gt; +    // setValeuAndClosePopup() deletes the window. Do not access it.

Nit: setVal*ue*ClosePopup()

&gt; Source/WebCore/page/DOMWindowPagePopupClient.cpp:56
&gt; +    // setValeuAndClosePopup() deletes the window and this object. Do not access them.

Nit: setVal*ue*AndClosePopup()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599213</commentid>
    <comment_count>3</comment_count>
      <attachid>136425</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-10 06:22:25 -0700</bug_when>
    <thetext>Comment on attachment 136425
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/ScriptController.cpp:249
&gt;&gt; +    DOMWindow* imp = V8DOMWindow::toNative(args.Data()-&gt;ToObject());
&gt; 
&gt; Is this correct? Maybe toNative(args.Holder())?

Yes, it is.
Both of toNative(args.Holder()) and toNative(args.This()) didn&apos;t work.  They crashed in V8DOMWindow::toNative().
I don&apos;t understand what&apos;s &apos;Holder&apos;, but probably the function registration to context-&gt;Global() is not compatible with V8DOMWindow::(args.Holder()).

&gt;&gt; Source/WebCore/bindings/v8/ScriptController.cpp:250
&gt;&gt; +    DOMWindowPagePopupClient::setValueAndClosePopup(imp, toInt32(args[0]), toWebCoreString(args, 1));
&gt; 
&gt; Just a confirmation: If args[1] is undefined, toWebCoreString(args, 1) will convert it to a WebCore string &quot;undefined&quot;. Is it expected? If you want to convert it to an empty WebCore string, you can write toWebCoreString(MAYBE_MISSING_PARAMETER(args, 1, DefaultIsNullString)).

This is ok.  All of the code calling setValueAndClosePopup() is controllable.  The code will be provided by WebCore.  e.g. WebCore/Resource/calendarPicker.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599219</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-10 06:35:56 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt;&gt; Source/WebCore/bindings/v8/ScriptController.cpp:249
&gt; &gt;&gt; +    DOMWindow* imp = V8DOMWindow::toNative(args.Data()-&gt;ToObject());
&gt; &gt; 
&gt; &gt; Is this correct? Maybe toNative(args.Holder())?
&gt; 
&gt; Yes, it is.
&gt; Both of toNative(args.Holder()) and toNative(args.This()) didn&apos;t work.  They crashed in V8DOMWindow::toNative().
&gt; I don&apos;t understand what&apos;s &apos;Holder&apos;, but probably the function registration to context-&gt;Global() is not compatible with V8DOMWindow::(args.Holder()).

args.Holder() points to the object on which the method is defined; i.e. in case of div.appendChild(), args.Holder() points to the prototype object of Node, where appendChild() is defined. So in this case, as you mentioned, args.Holder() is not correct here. But I don&apos;t understand what args.Data() represents. abarth@ might know it well...

&gt; &gt;&gt; Source/WebCore/bindings/v8/ScriptController.cpp:250
&gt; &gt;&gt; +    DOMWindowPagePopupClient::setValueAndClosePopup(imp, toInt32(args[0]), toWebCoreString(args, 1));
&gt; &gt; 
&gt; &gt; Just a confirmation: If args[1] is undefined, toWebCoreString(args, 1) will convert it to a WebCore string &quot;undefined&quot;. Is it expected? If you want to convert it to an empty WebCore string, you can write toWebCoreString(MAYBE_MISSING_PARAMETER(args, 1, DefaultIsNullString)).
&gt; 
&gt; This is ok.  All of the code calling setValueAndClosePopup() is controllable.  The code will be provided by WebCore.  e.g. WebCore/Resource/calendarPicker.js.

Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599259</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-10 07:33:44 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; &gt;&gt; Source/WebCore/bindings/v8/ScriptController.cpp:249
&gt; &gt; &gt;&gt; +    DOMWindow* imp = V8DOMWindow::toNative(args.Data()-&gt;ToObject());
&gt; &gt; &gt; 
&gt; &gt; &gt; Is this correct? Maybe toNative(args.Holder())?
&gt; &gt; 
&gt; &gt; Yes, it is.
&gt; &gt; Both of toNative(args.Holder()) and toNative(args.This()) didn&apos;t work.  They crashed in V8DOMWindow::toNative().
&gt; &gt; I don&apos;t understand what&apos;s &apos;Holder&apos;, but probably the function registration to context-&gt;Global() is not compatible with V8DOMWindow::(args.Holder()).
&gt; 
&gt; args.Holder() points to the object on which the method is defined; i.e. in case of div.appendChild(), args.Holder() points to the prototype object of Node, where appendChild() is defined. So in this case, as you mentioned, args.Holder() is not correct here. But I don&apos;t understand what args.Data() represents. abarth@ might know it well...

args.Data() is the second argument of FunctionTemplate::New().

&gt; v8::Local&lt;v8::FunctionTemplate&gt; templ = v8::FunctionTemplate::New(setValueAndClosePopupCallback, V8DOMWindow::wrap(frame-&gt;existingDOMWindow()));

Probably I should register the function to V8DOMWindow, not context-&gt;Global().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599835</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-10 17:30:23 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; v8::Local&lt;v8::FunctionTemplate&gt; templ = v8::FunctionTemplate::New(setValueAndClosePopupCallback, V8DOMWindow::wrap(frame-&gt;existingDOMWindow()));
&gt; 
&gt; Probably I should register the function to V8DOMWindow, not context-&gt;Global().

I tried:
A) V8DOMWindow::wrap(window)-&gt;Set(v8::String::New(&quot;setValueAndClosePopup&quot;), ...) and imp = V8DOMWindow::toNative(args.Holder())
B) V8DOMWindow::wrap(window)-&gt;Set(v8::String::New(&quot;setValueAndClosePopup&quot;), ...) and imp = V8DOMWindow::toNative(args.This())
C) V8DOMWindow::wrap(window)-&gt;GetPrototype()-&gt;ToObject()-&gt;Set(v8::String::New(&quot;setValueAndClosePopup&quot;), ...) and imp = V8DOMWindow::toNative(args.Holder())
D) V8DOMWindow::wrap(window)-&gt;GetPrototype()-&gt;ToObject()-&gt;Set(v8::String::New(&quot;setValueAndClosePopup&quot;), ...) and imp = V8DOMWindow::toNative(args.This())

All of them called setValueAndClosePopupCallback(), but crashed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599850</commentid>
    <comment_count>7</comment_count>
      <attachid>136586</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-10 17:43:04 -0700</bug_when>
    <thetext>Created attachment 136586
Patch 2

Fix typos in comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600119</commentid>
    <comment_count>8</comment_count>
      <attachid>136586</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-11 01:01:25 -0700</bug_when>
    <thetext>Comment on attachment 136586
Patch 2

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

&gt; Source/WebCore/bindings/v8/ScriptController.cpp:250
&gt; +    DOMWindowPagePopupClient::setValueAndClosePopup(imp, toInt32(args[0]), toWebCoreString(args, 1));

What if this stuff throws an exception?  This feels like a strange place for custom bindings.  Is there really no way for the code generator to do this work for us?

&gt; Source/WebCore/page/DOMWindowPagePopupClient.cpp:45
&gt; +const AtomicString&amp; DOMWindowPagePopupClient::name()

I think we usually call this supplementName()

&gt; Source/WebCore/page/DOMWindowPagePopupClient.h:42
&gt; +class DOMWindowPagePopupClient : public Supplement&lt;DOMWindow&gt; {

This name seems to imply that this class is a client, but it&apos;s not really.  Maybe DOMWindowPagePopup is a better name?

&gt; Source/WebCore/page/DOMWindowPagePopupClient.h:44
&gt; +    static void setValueAndClosePopup(DOMWindow*, int intValue, const String&amp; stringValue);

intValue and stringValue are kind of meaningless variable names.  What do these values represent?

&gt; Source/WebCore/page/DOMWindowPagePopupClient.h:48
&gt; +    DOMWindowPagePopupClient(PagePopupClient*);

One-argument constructors should have the explicit keyword.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600121</commentid>
    <comment_count>9</comment_count>
      <attachid>136586</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-11 01:11:17 -0700</bug_when>
    <thetext>Comment on attachment 136586
Patch 2

Ok.  I&apos;ve warmed up to this patch.  If you&apos;re willing to fix the nits above and the exception handling, then I think this is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600145</commentid>
    <comment_count>10</comment_count>
      <attachid>136645</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-11 01:59:42 -0700</bug_when>
    <thetext>Created attachment 136645
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600146</commentid>
    <comment_count>11</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-11 02:08:27 -0700</bug_when>
    <thetext>Thank you for the review.

(In reply to comment #8)
&gt; &gt; +    DOMWindowPagePopupClient::setValueAndClosePopup(imp, toInt32(args[0]), toWebCoreString(args, 1));
&gt; 
&gt; What if this stuff throws an exception?  This feels like a strange place for custom bindings.  Is there really no way for the code generator to do this work for us?

I have added exception handlings for arguments.
I have no good idea to use the code generator. If we do it, we need to check a per-page or per-window setting in V8DOMWindow::ConfigureV8DOMWindowTemplate().  It looks very difficult.

&gt; &gt; Source/WebCore/page/DOMWindowPagePopupClient.cpp:45
&gt; &gt; +const AtomicString&amp; DOMWindowPagePopupClient::name()
&gt; I think we usually call this supplementName()

Renamed.

&gt; &gt; Source/WebCore/page/DOMWindowPagePopupClient.h:42
&gt; &gt; +class DOMWindowPagePopupClient : public Supplement&lt;DOMWindow&gt; {
&gt; 
&gt; This name seems to imply that this class is a client, but it&apos;s not really.  Maybe DOMWindowPagePopup is a better name?

Renamed.

&gt; &gt; Source/WebCore/page/DOMWindowPagePopupClient.h:44
&gt; &gt; +    static void setValueAndClosePopup(DOMWindow*, int intValue, const String&amp; stringValue);
&gt; 
&gt; intValue and stringValue are kind of meaningless variable names.  What do these values represent?

We can&apos;t know their meanings because they are defined by a PagePopupClient implementation.  For the calendar picker, the integer value means -1:cancel and 0:set the string value.  Other PagePopupClient implementations will have different meanings.

&gt; &gt; Source/WebCore/page/DOMWindowPagePopupClient.h:48
&gt; &gt; +    DOMWindowPagePopupClient(PagePopupClient*);
&gt; 
&gt; One-argument constructors should have the explicit keyword.

Added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600174</commentid>
    <comment_count>12</comment_count>
      <attachid>136645</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-11 03:06:49 -0700</bug_when>
    <thetext>Comment on attachment 136645
Patch for landing

Clearing flags on attachment: 136645

Committed r113846: &lt;http://trac.webkit.org/changeset/113846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600175</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-11 03:07:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136425</attachid>
            <date>2012-04-10 04:13:20 -0700</date>
            <delta_ts>2012-04-10 17:42:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83561-20120410201318.patch</filename>
            <type>text/plain</type>
            <size>11036</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTExNWE3MGZkYjUwY2Qz
ZjliYTlmNGU1NDZhNzM4ZWExMzQ1YmNiZi4uYjA2ZDIxMmM1NDJjODcyMmE0NWY2MzY0NjFjOGFh
N2Y4YTAxNGM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA0LTEwICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIENhbGVuZGFyIFBp
Y2tlcjogQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGV4cG9zZSBQYWdlUG9wdXBDbGllbnQ6OnNl
dFZhbHVlQW5kQ2xvc2VQb3B1cCgpIHRvIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFNjcmlwdENvbnRyb2xsZXI6Omluc3RhbGxG
dW5jdGlvbnNGb3JQYWdlUG9wdXAoKSwgd2hpY2ggYWRkCisgICAgICAgIHdpbmRvdy5zZXRWYWx1
ZUFuZENsb3NlUG9wdXAoKSBmb3IgSmF2YVNjcmlwdCBjb2RlIGluIFBhZ2VQb3B1cAorICAgICAg
ICBlbnZpcm9ubWVudCwgYW5kIHRoZSBmdW5jdGlvbiBjYWxscworICAgICAgICBXZWJDb3JlOjpQ
YWdlUG9wdXBDbGllbnQ6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cCgpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW50cm9kdWNlcyBTdXBwbGVtZW50PERPTVdpbmRvdz4gb2JqZWN0IHRvIGhvbGQgYQor
ICAgICAgICBQYWdlUG9wdXBDbGllbnQgb2JqZWN0LiBJdCBtYWtlcyBrZWVwaW5nIGEgUGFnZVBv
cHVwQ2xpZW50IGVhc2llci4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaTogQWRkIERPTVdpbmRv
d1BhZ2VQb3B1cENsaWVudC57Y3BwLGh9CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRWYWx1ZUFuZENsb3NlUG9wdXBDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppbnN0YWxsRnVuY3Rp
b25zRm9yUGFnZVBvcHVwKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
Lmg6CisgICAgICAgIChTY3JpcHRDb250cm9sbGVyKTogQWRkIGluc3RhbGxGdW5jdGlvbnNGb3JQ
YWdlUG9wdXAoKS4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd1BhZ2VQb3B1cENsaWVudC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UGFnZVBvcHVwQ2xpZW50OjpET01X
aW5kb3dQYWdlUG9wdXBDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UGFnZVBv
cHVwQ2xpZW50OjpuYW1lKToKKyAgICAgICAgUmV0dXJucyAiRE9NV2luZG93UGFnZVBvcHVwQ2xp
ZW50IiBhcyBhIGtleSBvZiB0aGlzIFN1cHBsZW1lbnQ8RE9NV2luZG93Pi4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvd1BhZ2VQb3B1cENsaWVudDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKToK
KyAgICAgICAgR2V0cyBhIERPTVdpbmRvd1BhZ2VQb3B1cENsaWVudCBmcm9tIHRoZSB3aW5kb3cs
IHRoZW4gY2FsbHMKKyAgICAgICAgUGFnZVBvcHVwQ2xpZW50OjpzZXRWYWx1ZUFuZENsb3NlUG9w
dXAoKS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1BhZ2VQb3B1cENsaWVudDo6aW5zdGFs
bCk6CisgICAgICAgIE9uLWRlbWFuZCBjcmVhdGlvbiBvZiBET01XaW5kb3dQYWdlUG9wdXBDbGll
bnQgZG9lc24ndCB3b3JrIGJlY2F1c2UgaXQKKyAgICAgICAgbXVzdCBoYXZlIGEgUGFnZVBvcHVw
Q2xpZW50IG9iamVjdC4gV2UgbmVlZCB0byBpbnN0YWxsCisgICAgICAgIERPTVdpbmRvd1BhZ2VQ
b3B1cENsaWVudCBleHBsaWNpdGx5LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93UGFnZVBvcHVw
Q2xpZW50Lmg6IEFkZGVkLgorCiAyMDEyLTA0LTEwICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9n
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDTWFrZV0gQWRkIG1pc3Npbmcgc291cmNlIGZpbGVz
IHRvIGJ1aWxkIHN5c3RlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGYwYTkxZTE0MTFmNDdhNTAwMWI4
ZGYzZDFjNzg4MzBjMjkzMDNmYTAuLmVjNWM1NTVkNjVjODExMzcwMTJjOGZmNjg5MjA3MmM2MTNl
YjQ0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI5MzgsNiArMjkzOCw4IEBACiAgICAgICAgICAg
ICAncGFnZS9ET01UaW1lci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NVGltZXIuaCcsCiAg
ICAgICAgICAgICAncGFnZS9ET01XaW5kb3cuY3BwJywKKyAgICAgICAgICAgICdwYWdlL0RPTVdp
bmRvd1BhZ2VQb3B1cENsaWVudC5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93UGFn
ZVBvcHVwQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3Bw
JywKICAgICAgICAgICAgICdwYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmgnLAogICAgICAgICAgICAg
J3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYzM4NDI1ZTdhM2JmYzg3ZGE4Y2RmOGNmMzIy
YTJlM2JmMzgxZjMwYi4uZDI5ZDNlYjUwOTVlOGJlZjZmNTYwZTQ1N2ViNTMwZDRkOTQ3MjE0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAj
aW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93
LmgiCisjaW5jbHVkZSAiRE9NV2luZG93UGFnZVBvcHVwQ2xpZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgpAQCAtMjQwLDYgKzI0MSwzNCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmJpbmRUb1dpbmRv
d09iamVjdChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYga2V5LCBOUE9iagogICAgIGdsb2Jh
bC0+U2V0KHY4U3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAorI2lmIEVOQUJMRShQQUdFX1BPUFVQ
KQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRWYWx1ZUFuZENsb3NlUG9wdXBDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIGlmIChhcmdzLkxlbmd0aCgp
IDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwg
VjhQcm94eTo6VHlwZUVycm9yKTsKKyAgICBET01XaW5kb3cqIGltcCA9IFY4RE9NV2luZG93Ojp0
b05hdGl2ZShhcmdzLkRhdGEoKS0+VG9PYmplY3QoKSk7CisgICAgRE9NV2luZG93UGFnZVBvcHVw
Q2xpZW50OjpzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW1wLCB0b0ludDMyKGFyZ3NbMF0pLCB0b1dl
YkNvcmVTdHJpbmcoYXJncywgMSkpOworICAgIC8vIHNldFZhbGV1QW5kQ2xvc2VQb3B1cCgpIGRl
bGV0ZXMgdGhlIHdpbmRvdy4gRG8gbm90IGFjY2VzcyBpdC4KKyAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOworfQorCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6Omluc3RhbGxGdW5jdGlvbnNGb3JQ
YWdlUG9wdXAoRnJhbWUqIGZyYW1lLCBQYWdlUG9wdXBDbGllbnQqIHBvcHVwQ2xpZW50KQorewor
ICAgIEFTU0VSVChmcmFtZSk7CisgICAgQVNTRVJUKHBvcHVwQ2xpZW50KTsKKyAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4
dCA9IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQoZnJhbWUpOworICAgIGlmIChjb250ZXh0Lklz
RW1wdHkoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAgRE9N
V2luZG93UGFnZVBvcHVwQ2xpZW50OjppbnN0YWxsKGZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygp
LCBwb3B1cENsaWVudCk7CisgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1w
bCA9IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoc2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJh
Y2ssIFY4RE9NV2luZG93Ojp3cmFwKGZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpKSk7CisgICAg
Y29udGV4dC0+R2xvYmFsKCktPlNldCh2ODo6U3RyaW5nOjpOZXcoInNldFZhbHVlQW5kQ2xvc2VQ
b3B1cCIpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4odGVtcGwtPkdldEZ1bmN0aW9uKCkpKTsK
K30KKyNlbmRpZgorCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RHYXJiYWdlKCkKIHsK
ICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNzQzYjEyYmRiNzQ3M2I4OWU4NDgyYzc5
YmQ5MzgwYzdkYTQxNTc1Mi4uN2I5ZTZiYWNhYTNkYTczMThhMzE1ZTg5Y2YwYzMwYWFjMmI0MDk0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaApA
QCAtNTksNiArNTksNyBAQCBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBFdmVudDsKIGNs
YXNzIEZyYW1lOwogY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CitjbGFzcyBQYWdlUG9wdXBDbGll
bnQ7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogY2xhc3MgV2lkZ2V0OwogCkBAIC0xMjAsNiAr
MTIxLDkgQEAgcHVibGljOgogICAgIHZvaWQgYmluZFRvV2luZG93T2JqZWN0KEZyYW1lKiwgY29u
c3QgU3RyaW5nJiBrZXksIE5QT2JqZWN0Kik7CiAKICAgICBQYXNzU2NyaXB0SW5zdGFuY2UgY3Jl
YXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoV2lkZ2V0Kik7CisjaWYgRU5BQkxFKFBBR0VfUE9Q
VVApCisgICAgdm9pZCBpbnN0YWxsRnVuY3Rpb25zRm9yUGFnZVBvcHVwKEZyYW1lKiwgUGFnZVBv
cHVwQ2xpZW50Kik7CisjZW5kaWYKIAogICAgIC8vIENoZWNrIGlmIHRoZSBqYXZhc2NyaXB0IGVu
Z2luZSBoYXMgYmVlbiBpbml0aWFsaXplZC4KICAgICBib29sIGhhdmVJbnRlcnByZXRlcigpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXBD
bGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXBDbGllbnQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE2OTMyZWY1MGNjYWNiZTVmZmU1N2Y1ZmIxOTI1MzM2YWEzM2E3ODUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1BhZ2VQb3B1
cENsaWVudC5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
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
ICJET01XaW5kb3dQYWdlUG9wdXBDbGllbnQuaCIKKworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQor
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0RPTVdpbmRvd1BhZ2VQb3B1cENsaWVudDo6RE9NV2luZG93
UGFnZVBvcHVwQ2xpZW50KFBhZ2VQb3B1cENsaWVudCogcG9wdXBDbGllbnQpCisgICAgOiBtX3Bv
cHVwQ2xpZW50KHBvcHVwQ2xpZW50KQoreworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIERPTVdp
bmRvd1BhZ2VQb3B1cENsaWVudDo6bmFtZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIG5hbWUsICgiRE9NV2luZG93UGFnZVBvcHVwQ2xpZW50IikpOworICAgIHJl
dHVybiBuYW1lOworfQorCit2b2lkIERPTVdpbmRvd1BhZ2VQb3B1cENsaWVudDo6c2V0VmFsdWVB
bmRDbG9zZVBvcHVwKERPTVdpbmRvdyogd2luZG93LCBpbnQgaW50VmFsdWUsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nVmFsdWUpCit7CisgICAgRE9NV2luZG93UGFnZVBvcHVwQ2xpZW50KiBjbGllbnQg
PSBzdGF0aWNfY2FzdDxET01XaW5kb3dQYWdlUG9wdXBDbGllbnQqPihET01XaW5kb3dQYWdlUG9w
dXBDbGllbnQ6OmZyb20od2luZG93LCBuYW1lKCkpKTsKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAg
ICBjbGllbnQtPm1fcG9wdXBDbGllbnQtPnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnRWYWx1ZSwg
c3RyaW5nVmFsdWUpOworICAgIC8vIHNldFZhbGV1QW5kQ2xvc2VQb3B1cCgpIGRlbGV0ZXMgdGhl
IHdpbmRvdyBhbmQgdGhpcyBvYmplY3QuIERvIG5vdCBhY2Nlc3MgdGhlbS4KK30KKwordm9pZCBE
T01XaW5kb3dQYWdlUG9wdXBDbGllbnQ6Omluc3RhbGwoRE9NV2luZG93KiB3aW5kb3csIFBhZ2VQ
b3B1cENsaWVudCogcG9wdXBDbGllbnQpCit7CisgICAgQVNTRVJUKHdpbmRvdyk7CisgICAgQVNT
RVJUKHBvcHVwQ2xpZW50KTsKKyAgICBwcm92aWRlVG8od2luZG93LCBuYW1lKCksIGFkb3B0UHRy
KG5ldyBET01XaW5kb3dQYWdlUG9wdXBDbGllbnQocG9wdXBDbGllbnQpKSk7Cit9CisKK30KKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXBD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UGFnZVBvcHVwQ2xpZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjk1NTQxODczNDg2NjQ1ZjBjY2NiNTU2ODEwYTY4ZmJhOWQ2OTQ0NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UGFnZVBvcHVwQ2xp
ZW50LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRE9NV2luZG93UGFnZVBvcHVwQ2xpZW50X2gK
KyNkZWZpbmUgRE9NV2luZG93UGFnZVBvcHVwQ2xpZW50X2gKKworI2lmIEVOQUJMRShQQUdFX1BP
UFVQKQorI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRE9NV2luZG93OworY2xhc3MgUGFnZVBvcHVwQ2xpZW50OworCitjbGFzcyBET01X
aW5kb3dQYWdlUG9wdXBDbGllbnQgOiBwdWJsaWMgU3VwcGxlbWVudDxET01XaW5kb3c+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUFuZENsb3NlUG9wdXAoRE9NV2luZG93Kiwg
aW50IGludFZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlKTsKKyAgICBzdGF0aWMgdm9p
ZCBpbnN0YWxsKERPTVdpbmRvdyosIFBhZ2VQb3B1cENsaWVudCopOworCitwcml2YXRlOgorICAg
IERPTVdpbmRvd1BhZ2VQb3B1cENsaWVudChQYWdlUG9wdXBDbGllbnQqKTsKKyAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCk7CisKKyAgICBQYWdlUG9wdXBDbGllbnQqIG1fcG9w
dXBDbGllbnQ7Cit9OworCit9CisjZW5kaWYKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136586</attachid>
            <date>2012-04-10 17:43:04 -0700</date>
            <delta_ts>2012-04-11 01:59:36 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-83561-20120411094303.patch</filename>
            <type>text/plain</type>
            <size>11035</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU2NjM2ZjE1MDVkYjdk
NjQ3YTJkNmUyNjQwNDlhMTAyODg5MmY0MC4uZTIzYzg5NDQ1NGQxMDJkZGIxODAwNTliOThjODI1
OGJlZGQ4NDE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA0LTEwICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIENhbGVuZGFyIFBp
Y2tlcjogQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGV4cG9zZSBQYWdlUG9wdXBDbGllbnQ6OnNl
dFZhbHVlQW5kQ2xvc2VQb3B1cCgpIHRvIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFNjcmlwdENvbnRyb2xsZXI6Omluc3RhbGxG
dW5jdGlvbnNGb3JQYWdlUG9wdXAoKSwgd2hpY2ggYWRkCisgICAgICAgIHdpbmRvdy5zZXRWYWx1
ZUFuZENsb3NlUG9wdXAoKSBmb3IgSmF2YVNjcmlwdCBjb2RlIGluIFBhZ2VQb3B1cAorICAgICAg
ICBlbnZpcm9ubWVudCwgYW5kIHRoZSBmdW5jdGlvbiBjYWxscworICAgICAgICBXZWJDb3JlOjpQ
YWdlUG9wdXBDbGllbnQ6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cCgpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW50cm9kdWNlcyBTdXBwbGVtZW50PERPTVdpbmRvdz4gb2JqZWN0IHRvIGhvbGQgYQor
ICAgICAgICBQYWdlUG9wdXBDbGllbnQgb2JqZWN0LiBJdCBtYWtlcyBrZWVwaW5nIGEgUGFnZVBv
cHVwQ2xpZW50IGVhc2llci4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaTogQWRkIERPTVdpbmRv
d1BhZ2VQb3B1cENsaWVudC57Y3BwLGh9CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRWYWx1ZUFuZENsb3NlUG9wdXBDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppbnN0YWxsRnVuY3Rp
b25zRm9yUGFnZVBvcHVwKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
Lmg6CisgICAgICAgIChTY3JpcHRDb250cm9sbGVyKTogQWRkIGluc3RhbGxGdW5jdGlvbnNGb3JQ
YWdlUG9wdXAoKS4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd1BhZ2VQb3B1cENsaWVudC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UGFnZVBvcHVwQ2xpZW50OjpET01X
aW5kb3dQYWdlUG9wdXBDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UGFnZVBv
cHVwQ2xpZW50OjpuYW1lKToKKyAgICAgICAgUmV0dXJucyAiRE9NV2luZG93UGFnZVBvcHVwQ2xp
ZW50IiBhcyBhIGtleSBvZiB0aGlzIFN1cHBsZW1lbnQ8RE9NV2luZG93Pi4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvd1BhZ2VQb3B1cENsaWVudDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKToK
KyAgICAgICAgR2V0cyBhIERPTVdpbmRvd1BhZ2VQb3B1cENsaWVudCBmcm9tIHRoZSB3aW5kb3cs
IHRoZW4gY2FsbHMKKyAgICAgICAgUGFnZVBvcHVwQ2xpZW50OjpzZXRWYWx1ZUFuZENsb3NlUG9w
dXAoKS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1BhZ2VQb3B1cENsaWVudDo6aW5zdGFs
bCk6CisgICAgICAgIE9uLWRlbWFuZCBjcmVhdGlvbiBvZiBET01XaW5kb3dQYWdlUG9wdXBDbGll
bnQgZG9lc24ndCB3b3JrIGJlY2F1c2UgaXQKKyAgICAgICAgbXVzdCBoYXZlIGEgUGFnZVBvcHVw
Q2xpZW50IG9iamVjdC4gV2UgbmVlZCB0byBpbnN0YWxsCisgICAgICAgIERPTVdpbmRvd1BhZ2VQ
b3B1cENsaWVudCBleHBsaWNpdGx5LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93UGFnZVBvcHVw
Q2xpZW50Lmg6IEFkZGVkLgorCiAyMDEyLTA0LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTGltaXQgLWFwcGxlLSBhbmQgLWtodG1sLSB0byBFTkFCTEUoREFT
SEJPQVJEX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZjBhOTFlMTQxMWY0N2E1MDAxYjhk
ZjNkMWM3ODgzMGMyOTMwM2ZhMC4uZWM1YzU1NWQ2NWM4MTEzNzAxMmM4ZmY2ODkyMDcyYzYxM2Vi
NDQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjkzOCw2ICsyOTM4LDggQEAKICAgICAgICAgICAg
ICdwYWdlL0RPTVRpbWVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9ET01UaW1lci5oJywKICAg
ICAgICAgICAgICdwYWdlL0RPTVdpbmRvdy5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvRE9NV2lu
ZG93UGFnZVBvcHVwQ2xpZW50LmNwcCcsCisgICAgICAgICAgICAncGFnZS9ET01XaW5kb3dQYWdl
UG9wdXBDbGllbnQuaCcsCiAgICAgICAgICAgICAncGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5jcHAn
LAogICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93UHJvcGVydHkuaCcsCiAgICAgICAgICAgICAn
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBjMzg0MjVlN2EzYmZjODdkYThjZGY4Y2YzMjJh
MmUzYmYzODFmMzBiLi44NzQ4Y2E5OWY3ZTY5ZDM5ZTQ4ZDc2Njk3MDI4Y2E3OTQzMWRiMGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNp
bmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKKyNpbmNsdWRlICJET01XaW5kb3dQYWdlUG9wdXBDbGllbnQuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CkBAIC0yNDAsNiArMjQxLDM0IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6YmluZFRvV2luZG93
T2JqZWN0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIE5QT2JqCiAgICAgZ2xvYmFs
LT5TZXQodjhTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCisjaWYgRU5BQkxFKFBBR0VfUE9QVVAp
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldFZhbHVlQW5kQ2xvc2VQb3B1cENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBW
OFByb3h5OjpUeXBlRXJyb3IpOworICAgIERPTVdpbmRvdyogaW1wID0gVjhET01XaW5kb3c6OnRv
TmF0aXZlKGFyZ3MuRGF0YSgpLT5Ub09iamVjdCgpKTsKKyAgICBET01XaW5kb3dQYWdlUG9wdXBD
bGllbnQ6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbXAsIHRvSW50MzIoYXJnc1swXSksIHRvV2Vi
Q29yZVN0cmluZyhhcmdzLCAxKSk7CisgICAgLy8gc2V0VmFsdWVBbmRDbG9zZVBvcHVwKCkgZGVs
ZXRlcyB0aGUgd2luZG93LiBEbyBub3QgYWNjZXNzIGl0LgorICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7Cit9CisKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6aW5zdGFsbEZ1bmN0aW9uc0ZvclBh
Z2VQb3B1cChGcmFtZSogZnJhbWUsIFBhZ2VQb3B1cENsaWVudCogcG9wdXBDbGllbnQpCit7Cisg
ICAgQVNTRVJUKGZyYW1lKTsKKyAgICBBU1NFUlQocG9wdXBDbGllbnQpOworICAgIHY4OjpIYW5k
bGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0
ID0gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChmcmFtZSk7CisgICAgaWYgKGNvbnRleHQuSXNF
bXB0eSgpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKKyAgICBET01X
aW5kb3dQYWdlUG9wdXBDbGllbnQ6Omluc3RhbGwoZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93KCks
IHBvcHVwQ2xpZW50KTsKKyAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBs
ID0gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhzZXRWYWx1ZUFuZENsb3NlUG9wdXBDYWxsYmFj
aywgVjhET01XaW5kb3c6OndyYXAoZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93KCkpKTsKKyAgICBj
b250ZXh0LT5HbG9iYWwoKS0+U2V0KHY4OjpTdHJpbmc6Ok5ldygic2V0VmFsdWVBbmRDbG9zZVBv
cHVwIiksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPih0ZW1wbC0+R2V0RnVuY3Rpb24oKSkpOwor
fQorI2VuZGlmCisKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdEdhcmJhZ2UoKQogewog
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCA3NDNiMTJiZGI3NDczYjg5ZTg0ODJjNzli
ZDkzODBjN2RhNDE1NzUyLi43YjllNmJhY2FhM2RhNzMxOGEzMTVlODljZjBjMzBhYWMyYjQwOTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBA
IC01OSw2ICs1OSw3IEBAIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIEV2ZW50OwogY2xh
c3MgRnJhbWU7CiBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKK2NsYXNzIFBhZ2VQb3B1cENsaWVu
dDsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBjbGFzcyBXaWRnZXQ7CiAKQEAgLTEyMCw2ICsx
MjEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBiaW5kVG9XaW5kb3dPYmplY3QoRnJhbWUqLCBjb25z
dCBTdHJpbmcmIGtleSwgTlBPYmplY3QqKTsKIAogICAgIFBhc3NTY3JpcHRJbnN0YW5jZSBjcmVh
dGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldChXaWRnZXQqKTsKKyNpZiBFTkFCTEUoUEFHRV9QT1BV
UCkKKyAgICB2b2lkIGluc3RhbGxGdW5jdGlvbnNGb3JQYWdlUG9wdXAoRnJhbWUqLCBQYWdlUG9w
dXBDbGllbnQqKTsKKyNlbmRpZgogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGphdmFzY3JpcHQgZW5n
aW5lIGhhcyBiZWVuIGluaXRpYWxpemVkLgogICAgIGJvb2wgaGF2ZUludGVycHJldGVyKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1BhZ2VQb3B1cENs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1BhZ2VQb3B1cENsaWVudC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjI3MTllMDNiMTAzOTRjNWQ0ODk0MGE4ZWEzZmFiOTA1MjcyM2Q5OQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UGFnZVBvcHVw
Q2xpZW50LmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRPTVdpbmRvd1BhZ2VQb3B1cENsaWVudC5oIgorCisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisj
aW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRE9NV2luZG93UGFnZVBvcHVwQ2xpZW50OjpET01XaW5kb3dQ
YWdlUG9wdXBDbGllbnQoUGFnZVBvcHVwQ2xpZW50KiBwb3B1cENsaWVudCkKKyAgICA6IG1fcG9w
dXBDbGllbnQocG9wdXBDbGllbnQpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgRE9NV2lu
ZG93UGFnZVBvcHVwQ2xpZW50OjpuYW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgbmFtZSwgKCJET01XaW5kb3dQYWdlUG9wdXBDbGllbnQiKSk7CisgICAgcmV0
dXJuIG5hbWU7Cit9CisKK3ZvaWQgRE9NV2luZG93UGFnZVBvcHVwQ2xpZW50OjpzZXRWYWx1ZUFu
ZENsb3NlUG9wdXAoRE9NV2luZG93KiB3aW5kb3csIGludCBpbnRWYWx1ZSwgY29uc3QgU3RyaW5n
JiBzdHJpbmdWYWx1ZSkKK3sKKyAgICBET01XaW5kb3dQYWdlUG9wdXBDbGllbnQqIGNsaWVudCA9
IHN0YXRpY19jYXN0PERPTVdpbmRvd1BhZ2VQb3B1cENsaWVudCo+KERPTVdpbmRvd1BhZ2VQb3B1
cENsaWVudDo6ZnJvbSh3aW5kb3csIG5hbWUoKSkpOworICAgIEFTU0VSVChjbGllbnQpOworICAg
IGNsaWVudC0+bV9wb3B1cENsaWVudC0+c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludFZhbHVlLCBz
dHJpbmdWYWx1ZSk7CisgICAgLy8gc2V0VmFsdWVBbmRDbG9zZVBvcHVwKCkgZGVsZXRlcyB0aGUg
d2luZG93IGFuZCB0aGlzIG9iamVjdC4gRG8gbm90IGFjY2VzcyB0aGVtLgorfQorCit2b2lkIERP
TVdpbmRvd1BhZ2VQb3B1cENsaWVudDo6aW5zdGFsbChET01XaW5kb3cqIHdpbmRvdywgUGFnZVBv
cHVwQ2xpZW50KiBwb3B1cENsaWVudCkKK3sKKyAgICBBU1NFUlQod2luZG93KTsKKyAgICBBU1NF
UlQocG9wdXBDbGllbnQpOworICAgIHByb3ZpZGVUbyh3aW5kb3csIG5hbWUoKSwgYWRvcHRQdHIo
bmV3IERPTVdpbmRvd1BhZ2VQb3B1cENsaWVudChwb3B1cENsaWVudCkpKTsKK30KKworfQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1BhZ2VQb3B1cENs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXBDbGllbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iOTU1NDE4NzM0ODY2NDVmMGNjY2I1NTY4MTBhNjhmYmE5ZDY5NDQ1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXBDbGll
bnQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET01XaW5kb3dQYWdlUG9wdXBDbGllbnRfaAor
I2RlZmluZSBET01XaW5kb3dQYWdlUG9wdXBDbGllbnRfaAorCisjaWYgRU5BQkxFKFBBR0VfUE9Q
VVApCisjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBET01XaW5kb3c7CitjbGFzcyBQYWdlUG9wdXBDbGllbnQ7CisKK2NsYXNzIERPTVdp
bmRvd1BhZ2VQb3B1cENsaWVudCA6IHB1YmxpYyBTdXBwbGVtZW50PERPTVdpbmRvdz4geworcHVi
bGljOgorICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChET01XaW5kb3cqLCBp
bnQgaW50VmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUpOworICAgIHN0YXRpYyB2b2lk
IGluc3RhbGwoRE9NV2luZG93KiwgUGFnZVBvcHVwQ2xpZW50Kik7CisKK3ByaXZhdGU6CisgICAg
RE9NV2luZG93UGFnZVBvcHVwQ2xpZW50KFBhZ2VQb3B1cENsaWVudCopOworICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKTsKKworICAgIFBhZ2VQb3B1cENsaWVudCogbV9wb3B1
cENsaWVudDsKK307CisKK30KKyNlbmRpZgorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136645</attachid>
            <date>2012-04-11 01:59:42 -0700</date>
            <delta_ts>2012-04-11 03:06:48 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-83561-20120411175941.patch</filename>
            <type>text/plain</type>
            <size>11301</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWFkNWU4NzI5NGU3ZGQx
M2EyOWJkNzlkMmYzOTYwNjAxYzVkMTNiNC4uYTc5NzA5MmExZWU4ZTY2ZWE5ZDlmNTY0NDIwZDky
MDVkMzQ0MDhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA0LTEwICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIENhbGVuZGFyIFBp
Y2tlcjogQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGV4cG9zZSBQYWdlUG9wdXBDbGllbnQ6OnNl
dFZhbHVlQW5kQ2xvc2VQb3B1cCgpIHRvIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KKworICAgICAgICBBZGQgU2NyaXB0Q29udHJvbGxlcjo6aW5zdGFsbEZ1bmN0
aW9uc0ZvclBhZ2VQb3B1cCgpLCB3aGljaCBhZGQKKyAgICAgICAgd2luZG93LnNldFZhbHVlQW5k
Q2xvc2VQb3B1cCgpIGZvciBKYXZhU2NyaXB0IGNvZGUgaW4gUGFnZVBvcHVwCisgICAgICAgIGVu
dmlyb25tZW50LCBhbmQgdGhlIGZ1bmN0aW9uIGNhbGxzCisgICAgICAgIFdlYkNvcmU6OlBhZ2VQ
b3B1cENsaWVudDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKCkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBpbnRyb2R1Y2VzIFN1cHBsZW1lbnQ8RE9NV2luZG93PiBvYmplY3QgdG8gaG9sZCBhCisgICAg
ICAgIFBhZ2VQb3B1cENsaWVudCBvYmplY3QuIEl0IG1ha2VzIGtlZXBpbmcgYSBQYWdlUG9wdXBD
bGllbnQgZWFzaWVyLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGQgRE9NV2luZG93UGFn
ZVBvcHVwLntjcHAsaH0KKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cENhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6Omluc3RhbGxGdW5jdGlvbnNGb3JQYWdl
UG9wdXApOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKFNjcmlwdENvbnRyb2xsZXIpOiBBZGQgaW5zdGFsbEZ1bmN0aW9uc0ZvclBhZ2VQb3B1cCgp
LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93UGFnZVBvcHVwLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3dQYWdlUG9wdXA6OkRPTVdpbmRvd1BhZ2VQb3B1cCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3dQYWdlUG9wdXA6OnN1cHBsZW1lbnROYW1lKToKKyAgICAg
ICAgUmV0dXJucyAiRE9NV2luZG93UGFnZVBvcHVwIiBhcyBhIGtleSBvZiB0aGlzIFN1cHBsZW1l
bnQ8RE9NV2luZG93Pi4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1BhZ2VQb3B1cDo6c2V0
VmFsdWVBbmRDbG9zZVBvcHVwKToKKyAgICAgICAgR2V0cyBhIERPTVdpbmRvd1BhZ2VQb3B1cCBm
cm9tIHRoZSB3aW5kb3csIHRoZW4gY2FsbHMgUGFnZVBvcHVwQ2xpZW50OjpzZXRWYWx1ZUFuZENs
b3NlUG9wdXAoKS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1BhZ2VQb3B1cDo6aW5zdGFs
bCk6CisgICAgICAgIE9uLWRlbWFuZCBjcmVhdGlvbiBvZiBET01XaW5kb3dQYWdlUG9wdXAgZG9l
c24ndCB3b3JrIGJlY2F1c2UgaXQKKyAgICAgICAgbXVzdCBoYXZlIGEgUGFnZVBvcHVwQ2xpZW50
IG9iamVjdC4gV2UgbmVlZCB0byBpbnN0YWxsCisgICAgICAgIERPTVdpbmRvd1BhZ2VQb3B1cCBl
eHBsaWNpdGx5LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93UGFnZVBvcHVwLmg6IEFkZGVkLgor
CiAyMDEyLTA0LTEwICBOb2VsIEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KIAogICAg
ICAgICBbY2hyb21pdW1dIEltYWdlQnVmZmVyIG1pbm9yIHN0eWxlIGZpeDogcmVtb3ZlIGNvbXBv
dW5kIGRlY2xhcmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZjE5ZDBjZjVkODQwYjdiMTQ3MGJl
MzE3Yjc4MmYzYmE4ZDgzMmRlNi4uMTY5MzI1M2VkMTI3OTU1NmZmNjBhMmE2YjEyYzhhNGQ1OWI1
NjE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjkzOSw2ICsyOTM5LDggQEAKICAgICAgICAgICAg
ICdwYWdlL0RPTVRpbWVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9ET01UaW1lci5oJywKICAg
ICAgICAgICAgICdwYWdlL0RPTVdpbmRvdy5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvRE9NV2lu
ZG93UGFnZVBvcHVwLmNwcCcsCisgICAgICAgICAgICAncGFnZS9ET01XaW5kb3dQYWdlUG9wdXAu
aCcsCiAgICAgICAgICAgICAncGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5jcHAnLAogICAgICAgICAg
ICAgJ3BhZ2UvRE9NV2luZG93UHJvcGVydHkuaCcsCiAgICAgICAgICAgICAncGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250
cm9sbGVyLmNwcAppbmRleCBjMzg0MjVlN2EzYmZjODdkYThjZGY4Y2YzMjJhMmUzYmYzODFmMzBi
Li45YzAxNjVkNDI5ODc1MGIxZGNjNDQxMDQ1ZmI3ZmE5MjFiMTZlMzYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzgsNiArMzgs
NyBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJET01XaW5kb3dQYWdlUG9wdXAuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC01NCw2ICs1NSw3IEBA
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5o
IgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgog
I2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKICNp
bmNsdWRlICJWOEV2ZW50LmgiCkBAIC0yNDAsNiArMjQyLDM2IEBAIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6YmluZFRvV2luZG93T2JqZWN0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBrZXks
IE5QT2JqCiAgICAgZ2xvYmFsLT5TZXQodjhTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCisjaWYg
RU5BQkxFKFBBR0VfUE9QVVApCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldFZhbHVl
QW5kQ2xvc2VQb3B1cENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVu
b3VnaCBhcmd1bWVudHMiLCBWOFByb3h5OjpUeXBlRXJyb3IpOworICAgIERPTVdpbmRvdyogaW1w
ID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuRGF0YSgpLT5Ub09iamVjdCgpKTsKKyAgICBF
WENFUFRJT05fQkxPQ0soaW50LCBpbnRWYWx1ZSwgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgU1RSSU5HX1RPX1Y4UEFS
QU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBzdHJpbmdWYWx1ZSwgTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgRE9N
V2luZG93UGFnZVBvcHVwOjpzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW1wLCBpbnRWYWx1ZSwgc3Ry
aW5nVmFsdWUpOworICAgIC8vIHNldFZhbHVlQW5kQ2xvc2VQb3B1cCgpIGRlbGV0ZXMgdGhlIHdp
bmRvdy4gRG8gbm90IGFjY2VzcyBpdC4KKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQor
Cit2b2lkIFNjcmlwdENvbnRyb2xsZXI6Omluc3RhbGxGdW5jdGlvbnNGb3JQYWdlUG9wdXAoRnJh
bWUqIGZyYW1lLCBQYWdlUG9wdXBDbGllbnQqIHBvcHVwQ2xpZW50KQoreworICAgIEFTU0VSVChm
cmFtZSk7CisgICAgQVNTRVJUKHBvcHVwQ2xpZW50KTsKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFu
ZGxlU2NvcGU7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IFY4UHJveHk6
Om1haW5Xb3JsZENvbnRleHQoZnJhbWUpOworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAgRE9NV2luZG93UGFnZVBv
cHVwOjppbnN0YWxsKGZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpLCBwb3B1cENsaWVudCk7Cisg
ICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoc2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2ssIFY4RE9NV2luZG93Ojp3
cmFwKGZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpKSk7CisgICAgY29udGV4dC0+R2xvYmFsKCkt
PlNldCh2ODo6U3RyaW5nOjpOZXcoInNldFZhbHVlQW5kQ2xvc2VQb3B1cCIpLCB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvbj4odGVtcGwtPkdldEZ1bmN0aW9uKCkpKTsKK30KKyNlbmRpZgorCiB2b2lk
IFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RHYXJiYWdlKCkKIHsKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250
cm9sbGVyLmgKaW5kZXggNzQzYjEyYmRiNzQ3M2I4OWU4NDgyYzc5YmQ5MzgwYzdkYTQxNTc1Mi4u
N2I5ZTZiYWNhYTNkYTczMThhMzE1ZTg5Y2YwYzMwYWFjMmI0MDk0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNTksNiArNTksNyBAQCBj
bGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
SFRNTFBsdWdJbkVsZW1lbnQ7CitjbGFzcyBQYWdlUG9wdXBDbGllbnQ7CiBjbGFzcyBTY3JpcHRT
b3VyY2VDb2RlOwogY2xhc3MgV2lkZ2V0OwogCkBAIC0xMjAsNiArMTIxLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYmluZFRvV2luZG93T2JqZWN0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiBrZXksIE5Q
T2JqZWN0Kik7CiAKICAgICBQYXNzU2NyaXB0SW5zdGFuY2UgY3JlYXRlU2NyaXB0SW5zdGFuY2VG
b3JXaWRnZXQoV2lkZ2V0Kik7CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgdm9pZCBpbnN0
YWxsRnVuY3Rpb25zRm9yUGFnZVBvcHVwKEZyYW1lKiwgUGFnZVBvcHVwQ2xpZW50Kik7CisjZW5k
aWYKIAogICAgIC8vIENoZWNrIGlmIHRoZSBqYXZhc2NyaXB0IGVuZ2luZSBoYXMgYmVlbiBpbml0
aWFsaXplZC4KICAgICBib29sIGhhdmVJbnRlcnByZXRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3dQYWdlUG9wdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5NGNkMzk2ZTUxNTdk
MzAyMjgyNjkyMTM5NDE3NGFlMzcwYzBiMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvd1BhZ2VQb3B1cC5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJET01XaW5kb3dQYWdlUG9wdXAuaCIKKworI2lmIEVOQUJM
RShQQUdFX1BPUFVQKQorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1
cENsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RPTVdpbmRvd1BhZ2VQb3B1cDo6
RE9NV2luZG93UGFnZVBvcHVwKFBhZ2VQb3B1cENsaWVudCogcG9wdXBDbGllbnQpCisgICAgOiBt
X3BvcHVwQ2xpZW50KHBvcHVwQ2xpZW50KQoreworICAgIEFTU0VSVChwb3B1cENsaWVudCk7Cit9
CisKK2NvbnN0IEF0b21pY1N0cmluZyYgRE9NV2luZG93UGFnZVBvcHVwOjpzdXBwbGVtZW50TmFt
ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiRE9N
V2luZG93UGFnZVBvcHVwIikpOworICAgIHJldHVybiBuYW1lOworfQorCit2b2lkIERPTVdpbmRv
d1BhZ2VQb3B1cDo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKERPTVdpbmRvdyogd2luZG93LCBpbnQg
aW50VmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUpCit7CisgICAgRE9NV2luZG93UGFn
ZVBvcHVwKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93UGFnZVBvcHVwKj4oZnJv
bSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKKyAgICBBU1NFUlQoc3VwcGxlbWVudCk7Cisg
ICAgc3VwcGxlbWVudC0+bV9wb3B1cENsaWVudC0+c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludFZh
bHVlLCBzdHJpbmdWYWx1ZSk7CisgICAgLy8gc2V0VmFsdWVBbmRDbG9zZVBvcHVwKCkgZGVsZXRl
cyB0aGUgd2luZG93IGFuZCB0aGlzIG9iamVjdC4gRG8gbm90IGFjY2VzcyB0aGVtLgorfQorCit2
b2lkIERPTVdpbmRvd1BhZ2VQb3B1cDo6aW5zdGFsbChET01XaW5kb3cqIHdpbmRvdywgUGFnZVBv
cHVwQ2xpZW50KiBwb3B1cENsaWVudCkKK3sKKyAgICBBU1NFUlQod2luZG93KTsKKyAgICBBU1NF
UlQocG9wdXBDbGllbnQpOworICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCks
IGFkb3B0UHRyKG5ldyBET01XaW5kb3dQYWdlUG9wdXAocG9wdXBDbGllbnQpKSk7Cit9CisKK30K
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQYWdlUG9w
dXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UGFnZVBvcHVwLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTFmYjg1YWIxNzAxYWUyM2Q4ODFkNjViYzZkZWIwN2IzMDAzMmIwMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UGFnZVBvcHVwLmgKQEAgLTAsMCAr
MSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgRE9NV2luZG93UGFnZVBvcHVwX2gKKyNkZWZpbmUgRE9NV2luZG93UGFn
ZVBvcHVwX2gKKworI2lmIEVOQUJMRShQQUdFX1BPUFVQKQorI2luY2x1ZGUgIlN1cHBsZW1lbnRh
YmxlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV2luZG93OworY2xhc3Mg
UGFnZVBvcHVwQ2xpZW50OworCitjbGFzcyBET01XaW5kb3dQYWdlUG9wdXAgOiBwdWJsaWMgU3Vw
cGxlbWVudDxET01XaW5kb3c+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUFu
ZENsb3NlUG9wdXAoRE9NV2luZG93KiwgaW50IGludFZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmlu
Z1ZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsKERPTVdpbmRvdyosIFBhZ2VQb3B1cENs
aWVudCopOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERPTVdpbmRvd1BhZ2VQb3B1cChQYWdl
UG9wdXBDbGllbnQqKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdXBwbGVtZW50
TmFtZSgpOworCisgICAgUGFnZVBvcHVwQ2xpZW50KiBtX3BvcHVwQ2xpZW50OworfTsKKworfQor
I2VuZGlmCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>