<?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>101904</bug_id>
          
          <creation_ts>2012-11-11 23:30:45 -0800</creation_ts>
          <short_desc>[EFL][WK2] Add API to execute js script</short_desc>
          <delta_ts>2014-01-08 17:03:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jongseok Yang">js45.yang</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>764098</commentid>
    <comment_count>0</comment_count>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-11-11 23:30:45 -0800</bug_when>
    <thetext>Add the API to execute the specific javascript</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764099</commentid>
    <comment_count>1</comment_count>
      <attachid>173571</attachid>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-11-11 23:32:48 -0800</bug_when>
    <thetext>Created attachment 173571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764151</commentid>
    <comment_count>2</comment_count>
      <attachid>173587</attachid>
    <who name="Jongseok Yang">js45.yang</who>
    <bug_when>2012-11-12 01:40:36 -0800</bug_when>
    <thetext>Created attachment 173587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791331</commentid>
    <comment_count>3</comment_count>
      <attachid>173587</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-12-13 22:10:45 -0800</bug_when>
    <thetext>Comment on attachment 173587
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:926
&gt; +struct _Ewk_View_Script_Execute_Callback_Context {

I think ewk_view_private.h or EwkViewImpl.h is more better place for this struct.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:939
&gt; +    if (!ewkView || error)

What is error role here ? It looks QT and GTK ports don&apos;t take care of error.

Beside don&apos;t you need to delete callbackContext here ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:943
&gt; +    JSGlobalContextRef jsGlobalContext = impl-&gt;ewkContext()-&gt;jsGlobalContext();

Don&apos;t you need to free jsGlobalContext using JSGlobalContextRelease() after finishing to use it ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:945
&gt; +    if (!callbackContext-&gt;scriptExecuteCallback)

I think this line should be placed before above two lines.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:975
&gt; +

Unneeded line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791362</commentid>
    <comment_count>4</comment_count>
      <attachid>173587</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-13 23:13:11 -0800</bug_when>
    <thetext>Comment on attachment 173587
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:926
&gt;&gt; +struct _Ewk_View_Script_Execute_Callback_Context {
&gt; 
&gt; I think ewk_view_private.h or EwkViewImpl.h is more better place for this struct.

Why? if this struct is used only in ewk_view.cpp, then I think this is the right place for it. However, we don&apos;t use _ prefix for such structures anymore.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:936
&gt; +    Ewk_View_Script_Execute_Callback_Context* callbackContext = static_cast&lt;Ewk_View_Script_Execute_Callback_Context*&gt;(context);

It is a good idea to use OwnPtr here and adopt to avoid having to call delete manually.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:943
&gt;&gt; +    JSGlobalContextRef jsGlobalContext = impl-&gt;ewkContext()-&gt;jsGlobalContext();
&gt; 
&gt; Don&apos;t you need to free jsGlobalContext using JSGlobalContextRelease() after finishing to use it ?

Looks like the global context object is owned by Ewk_Context so I don&apos;t think we should free it here.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:950
&gt; +        JSRetainPtr&lt;JSStringRef&gt; jsStringValue(JSValueToStringCopy(jsGlobalContext, value, 0));

Looks like you may be leaking here. Don&apos;t you need to adopt the value returned by JSValueToStringCopy() ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:822
&gt; + * The result value for the executeion can be got from the asynchronous callback.

&quot;execution&quot;
&quot;got&quot; -&gt; &quot;retrieved&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791385</commentid>
    <comment_count>5</comment_count>
      <attachid>173587</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-12-13 23:56:53 -0800</bug_when>
    <thetext>Comment on attachment 173587
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:926
&gt;&gt;&gt; +struct _Ewk_View_Script_Execute_Callback_Context {
&gt;&gt; 
&gt;&gt; I think ewk_view_private.h or EwkViewImpl.h is more better place for this struct.
&gt; 
&gt; Why? if this struct is used only in ewk_view.cpp, then I think this is the right place for it. However, we don&apos;t use _ prefix for such structures anymore.

If so, what do you think ewk_view_private.h role ? Do you think it isn&apos;t for internal data type or struct ?

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:943
&gt;&gt;&gt; +    JSGlobalContextRef jsGlobalContext = impl-&gt;ewkContext()-&gt;jsGlobalContext();
&gt;&gt; 
&gt;&gt; Don&apos;t you need to free jsGlobalContext using JSGlobalContextRelease() after finishing to use it ?
&gt; 
&gt; Looks like the global context object is owned by Ewk_Context so I don&apos;t think we should free it here.

Ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791425</commentid>
    <comment_count>6</comment_count>
      <attachid>173587</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-14 00:34:45 -0800</bug_when>
    <thetext>Comment on attachment 173587
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:926
&gt;&gt;&gt;&gt; +struct _Ewk_View_Script_Execute_Callback_Context {
&gt;&gt;&gt; 
&gt;&gt;&gt; I think ewk_view_private.h or EwkViewImpl.h is more better place for this struct.
&gt;&gt; 
&gt;&gt; Why? if this struct is used only in ewk_view.cpp, then I think this is the right place for it. However, we don&apos;t use _ prefix for such structures anymore.
&gt; 
&gt; If so, what do you think ewk_view_private.h role ? Do you think it isn&apos;t for internal data type or struct ?

ewk_view_private.h should be used for structures / macros that need to be shared between several files.
In this case, Ewk_View_Script_Execute_Callback_Context is only used internally by ewk_view.cpp. There is no point in sharing it with other implementation files since none of them will use it. It would only make compile time longer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791471</commentid>
    <comment_count>7</comment_count>
      <attachid>173587</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-12-14 01:54:44 -0800</bug_when>
    <thetext>Comment on attachment 173587
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:931
&gt; +typedef struct _Ewk_View_Script_Execute_Callback_Context Ewk_View_Script_Execute_Callback_Context;

could be just &apos;struct EwkViewScriptExecuteCallbackContext&apos;

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:935
&gt; +    EINA_SAFETY_ON_NULL_RETURN(context);

maybe assert is better since &apos;runJavaScriptCallback&apos; is always invoked internally? How context can be &apos;0&apos;?

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:936
&gt;&gt; +    Ewk_View_Script_Execute_Callback_Context* callbackContext = static_cast&lt;Ewk_View_Script_Execute_Callback_Context*&gt;(context);
&gt; 
&gt; It is a good idea to use OwnPtr here and adopt to avoid having to call delete manually.

indeed.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:961
&gt; +Eina_Bool ewk_view_script_execute(Evas_Object* ewkView, const char* script, Ewk_View_Script_Execute_Cb callback, void* userData)

isn&apos;t it worth mentioning where the script will be executed?  like &quot;runJavaScriptInMainFrame&quot;

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:967
&gt; +    context-&gt;scriptExecuteCallback = callback;

maybe this could be done inside structure constructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791475</commentid>
    <comment_count>8</comment_count>
      <attachid>173587</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-12-14 01:59:01 -0800</bug_when>
    <thetext>Comment on attachment 173587
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:926
&gt;&gt;&gt;&gt;&gt; +struct _Ewk_View_Script_Execute_Callback_Context {
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I think ewk_view_private.h or EwkViewImpl.h is more better place for this struct.
&gt;&gt;&gt; 
&gt;&gt;&gt; Why? if this struct is used only in ewk_view.cpp, then I think this is the right place for it. However, we don&apos;t use _ prefix for such structures anymore.
&gt;&gt; 
&gt;&gt; If so, what do you think ewk_view_private.h role ? Do you think it isn&apos;t for internal data type or struct ?
&gt; 
&gt; ewk_view_private.h should be used for structures / macros that need to be shared between several files.
&gt; In this case, Ewk_View_Script_Execute_Callback_Context is only used internally by ewk_view.cpp. There is no point in sharing it with other implementation files since none of them will use it. It would only make compile time longer.

I agree. Thanks.

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:943
&gt;&gt;&gt;&gt; +    JSGlobalContextRef jsGlobalContext = impl-&gt;ewkContext()-&gt;jsGlobalContext();
&gt;&gt;&gt; 
&gt;&gt;&gt; Don&apos;t you need to free jsGlobalContext using JSGlobalContextRelease() after finishing to use it ?
&gt;&gt; 
&gt;&gt; Looks like the global context object is owned by Ewk_Context so I don&apos;t think we should free it here.
&gt; 
&gt; Ok

BTW, could you explain why jsGlobalContext should be maintained by ewkContext ? Because, it seems jsGlobalContext() is just used by this callback now.
If there is no reason, is below code enough ?

JSGlobalContextRef jsGlobalContext = JSGlobalContextCreate(0);
...
...
JSGlobalContextRelease(jsGlobalContext);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871366</commentid>
    <comment_count>9</comment_count>
      <attachid>173587</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-04-08 19:09:51 -0700</bug_when>
    <thetext>Comment on attachment 173587
Patch

Cleared review? from attachment 173587 [details] so that this bug does not appear in http://webkit.org/pending-review. If you would like this patch reviewed, please attach it to a new bug or this bug again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964542</commentid>
    <comment_count>10</comment_count>
      <attachid>220411</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-01-05 19:59:02 -0800</bug_when>
    <thetext>Created attachment 220411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964545</commentid>
    <comment_count>11</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-01-05 20:05:36 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=220411) [details]
&gt; Patch

I tried to follow almost comments except below comment.

(In reply to comment #7)
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:961
&gt; &gt; +Eina_Bool ewk_view_script_execute(Evas_Object* ewkView, const char* script, Ewk_View_Script_Execute_Cb callback, void* userData)
&gt; 
&gt; isn&apos;t it worth mentioning where the script will be executed?  like &quot;runJavaScriptInMainFrame&quot;

I think that we can assume MainFrame from the *ewk_view* becaus ewk_view implicitly represents Page or MainFrame.

And we don&apos;t have plan to support this API for each frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965287</commentid>
    <comment_count>12</comment_count>
      <attachid>220578</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-01-07 18:26:43 -0800</bug_when>
    <thetext>Created attachment 220578
improve testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965671</commentid>
    <comment_count>13</comment_count>
      <attachid>220578</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-01-08 15:56:05 -0800</bug_when>
    <thetext>Comment on attachment 220578
improve testcase

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:76
&gt; +    , m_jsGlobalContext(0)

Please use *nullptr* instead of 0. As you know, we are talking about using *nullptr* instead of 0 or NULL in webkit-dev.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:648
&gt; +    if (error)

Isn&apos;t it better to add a log here ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965683</commentid>
    <comment_count>14</comment_count>
      <attachid>220675</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-01-08 16:46:38 -0800</bug_when>
    <thetext>Created attachment 220675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965684</commentid>
    <comment_count>15</comment_count>
      <attachid>220578</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-01-08 16:47:27 -0800</bug_when>
    <thetext>Comment on attachment 220578
improve testcase

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:76
&gt;&gt; +    , m_jsGlobalContext(0)
&gt; 
&gt; Please use *nullptr* instead of 0. As you know, we are talking about using *nullptr* instead of 0 or NULL in webkit-dev.

Done

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:648
&gt;&gt; +    if (error)
&gt; 
&gt; Isn&apos;t it better to add a log here ?

I realized that this callback does not need error.
I removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965689</commentid>
    <comment_count>16</comment_count>
      <attachid>220675</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-01-08 17:03:12 -0800</bug_when>
    <thetext>Comment on attachment 220675
Patch

Clearing flags on attachment: 220675

Committed r161527: &lt;http://trac.webkit.org/changeset/161527&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965690</commentid>
    <comment_count>17</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-01-08 17:03:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173571</attachid>
            <date>2012-11-11 23:32:48 -0800</date>
            <delta_ts>2012-11-12 01:40:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101904-20121112163050.patch</filename>
            <type>text/plain</type>
            <size>10096</size>
            <attacher name="Jongseok Yang">js45.yang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWMxMGE0ZTczNzgxMWNh
NzIxOWQ0YzA5ZWQ4OTAzYWIyNGZmODc1MC4uNmFhNDI4NTcwMjg2YjNjZTNhMTA0MjkzZTA1OThl
M2I1ZDJhNzVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTExLTA3ICBKb25n
c2VvayBZYW5nICA8anM0NS55YW5nQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0g
QWRkIEFQSSB0byBleGVjdXRlIGpzIHNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxOTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGV3a192aWV3X3NjcmlwdF9leGVjdXRlKCkgdG8gZXhl
Y3V0ZSBhIGphdmFzY3JpcHQgYW5kIHVuaXQgdGVzdHMuCisgICAgICAgIEl0IGlzIGFuIHN5bmNo
cm9ub3VzIGZ1bmN0aW9uIGFuZCB0aGUgb3V0cHV0IGZvciB0aGUgamF2YXNjcmlwdCBpcyByZXR1
cm5lZCBmcm9tIHRoZSBjYWxsYmFjay4KKworICAgICAgICBUaGUgSlMgR2xvYmFsIENvbnRleHQs
IHdoaWNoIGlzIHJlcXVpcmVkIHRvIGRlc2VyaWFsaXplIHRvIHRoZSBzY3JpcHQgdmFsdWUgZnJv
bSB0aGUgY2FsbGJhY2ssIGlzIG1hbmFnZWQKKyAgICAgICAgaW4gdGhlIEV3a0NvbnRleHQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChF
d2tDb250ZXh0OjpFd2tDb250ZXh0KToKKyAgICAgICAgKEV3a0NvbnRleHQ6OmpzR2xvYmFsQ29u
dGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5o
OgorICAgICAgICAoRXdrQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwOgorICAgICAgICAoX0V3a19WaWV3X1NjcmlwdF9FeGVjdXRlX0NhbGxiYWNrX0Nv
bnRleHQpOgorICAgICAgICAocnVuSmF2YVNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKGV3a192
aWV3X3NjcmlwdF9leGVjdXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNw
cDoKKyAgICAgICAgKHNjcmlwdEV4ZWN1dGVDYWxsYmFjayk6CisgICAgICAgIChURVNUX0YpOgor
CiAyMDEyLTExLTA2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXBkYXRlIEphdmEgcmVsYXRlZCBXS1NJIGZ1bmN0aW9uIG5hbWVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggMmRiZjM3
ODU3YzY5N2MwNWE1YjhlOWViZWE2NjBmM2MyMjcyMjI1MC4uYmQzNWU2MzZhNGM5OTBhOTdmM2I3
YjE0MmExMzhhZDM1ZTM4NWFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtNzgsNiArNzgsNyBAQCBFd2tDb250ZXh0OjpFd2tD
b250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQogICAgICwgbV9kb3dubG9hZE1hbmFnZXIoRG93
bmxvYWRNYW5hZ2VyRWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3JlcXVlc3RNYW5hZ2VyQ2xp
ZW50KFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2hpc3Rv
cnlDbGllbnQoQ29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmNyZWF0ZShjb250ZXh0KSkKKyAgICAs
IG1fanNHbG9iYWxDb250ZXh0KEFkb3B0LCBKU0dsb2JhbENvbnRleHRDcmVhdGUoMCkpCiB7CiAg
ICAgQ29udGV4dE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGNvbnRleHRNYXAoKS5hZGQoY29udGV4
dCwgdGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
QEAgLTI2OCw2ICsyNjksMTEgQEAgQ29udGV4dEhpc3RvcnlDbGllbnRFZmwqIEV3a0NvbnRleHQ6
Omhpc3RvcnlDbGllbnQoKQogICAgIHJldHVybiBtX2hpc3RvcnlDbGllbnQuZ2V0KCk7CiB9CiAK
K0pTR2xvYmFsQ29udGV4dFJlZiBFd2tDb250ZXh0Ojpqc0dsb2JhbENvbnRleHQoKQoreworICAg
IHJldHVybiBtX2pzR2xvYmFsQ29udGV4dC5nZXQoKTsKK30KKwogRXdrX0NvbnRleHQqIGV3a19j
b250ZXh0X2RlZmF1bHRfZ2V0KCkKIHsKICAgICByZXR1cm4gRXdrQ29udGV4dDo6ZGVmYXVsdENv
bnRleHQoKS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAppbmRleCA0ZGRiNjUzMjRkM2Q0MDk2NDM3MDUwNTQ2
OGZiMzU2OTZlNDE0OTFlLi5kMThjNTg1Mzk3NjM4MmY1YWZkMjk5YjIzNGRiZmIwNmY5MzUzOTY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHRfcHJpdmF0ZS5oCkBAIC0yMSw2ICsyMSw3IEBACiAjZGVmaW5lIGV3a19jb250ZXh0X3By
aXZhdGVfaAogCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyRWZsLmgiCisjaW5jbHVkZSAiSlNS
ZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS1JldGFpblB0
ci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCkBAIC04Miw2ICs4Myw4IEBAIHB1YmxpYzoK
IAogICAgIFdlYktpdDo6Q29udGV4dEhpc3RvcnlDbGllbnRFZmwqIGhpc3RvcnlDbGllbnQoKTsK
IAorICAgIEpTR2xvYmFsQ29udGV4dFJlZiBqc0dsb2JhbENvbnRleHQoKTsKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBFd2tDb250ZXh0KFdLQ29udGV4dFJlZik7CiAKQEAgLTEwNiw2ICsxMDks
OCBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
PiBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50OwogCiAgICAgT3duUHRyPFdlYktpdDo6Q29udGV4dEhp
c3RvcnlDbGllbnRFZmw+IG1faGlzdG9yeUNsaWVudDsKKworICAgIEpTUmV0YWluUHRyPEpTR2xv
YmFsQ29udGV4dFJlZj4gbV9qc0dsb2JhbENvbnRleHQ7CiB9OwogCiAjZW5kaWYgLy8gZXdrX2Nv
bnRleHRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5jcHAKaW5kZXggNmMzM2U5ZGNiOGU1NmE5MjI3OTFhMmUzOGNiMWNkNWY4MTIwN2E5MC4u
YWY2NGRiOGQ0ZTdlOTcxM2I3N2Q0ODQyODgyMzYyOTg0NWM5ZDZmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgogI2luY2x1ZGUgIldLRmluZE9wdGlvbnMu
aCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgIldLU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCkBAIC05MDUsMyArOTA2LDU0IEBAIEV3a19QYWdp
bmF0aW9uX01vZGUgZXdrX3ZpZXdfcGFnaW5hdGlvbl9tb2RlX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldykKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFd2tfUGFnaW5hdGlvbl9Nb2Rl
PihpbXBsLT5wYWdlKCktPnBhZ2luYXRpb25Nb2RlKCkpOwogfQorCitzdHJ1Y3QgX0V3a19WaWV3
X1NjcmlwdF9FeGVjdXRlX0NhbGxiYWNrX0NvbnRleHQgeworICAgIEV3a19WaWV3X1NjcmlwdF9F
eGVjdXRlX0NiIHNjcmlwdEV4ZWN1dGVDYWxsYmFjazsKKyAgICBXS1BhZ2VSZWYgcGFnZTsKKyAg
ICB2b2lkKiB1c2VyRGF0YTsKK307Cit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU2NyaXB0X0V4
ZWN1dGVfQ2FsbGJhY2tfQ29udGV4dCBFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFja19D
b250ZXh0OworCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0Q2FsbGJhY2soV0tTZXJpYWxpemVk
U2NyaXB0VmFsdWVSZWYgc2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGNvbnRl
eHQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY29udGV4dCk7CisgICAgRXdr
X1ZpZXdfU2NyaXB0X0V4ZWN1dGVfQ2FsbGJhY2tfQ29udGV4dCogY2FsbGJhY2tDb250ZXh0ID0g
c3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU2NyaXB0X0V4ZWN1dGVfQ2FsbGJhY2tfQ29udGV4dCo+KGNv
bnRleHQpOworCisgICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBjb25zdF9jYXN0PEV2YXNfT2Jq
ZWN0Kj4oRXdrVmlld0ltcGw6OnZpZXdGcm9tUGFnZVZpZXdNYXAoY2FsbGJhY2tDb250ZXh0LT5w
YWdlKSk7CisgICAgaWYgKCFld2tWaWV3IHx8IGVycm9yKQorICAgICAgICByZXR1cm47CisKKyAg
ICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1wbCk7CisgICAgSlNHbG9i
YWxDb250ZXh0UmVmIGpzR2xvYmFsQ29udGV4dCA9IGltcGwtPmV3a0NvbnRleHQoKS0+anNHbG9i
YWxDb250ZXh0KCk7CisKKyAgICBpZiAoIWNhbGxiYWNrQ29udGV4dC0+c2NyaXB0RXhlY3V0ZUNh
bGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc2NyaXB0VmFsdWUpIHsKKyAgICAg
ICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUo
c2NyaXB0VmFsdWUsIGpzR2xvYmFsQ29udGV4dCwgMCk7CisgICAgICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBqc1N0cmluZ1ZhbHVlKEpTVmFsdWVUb1N0cmluZ0NvcHkoanNHbG9iYWxDb250
ZXh0LCB2YWx1ZSwgMCkpOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhp
bXVtVVRGOENTdHJpbmdTaXplKGpzU3RyaW5nVmFsdWUuZ2V0KCkpOworICAgICAgICBPd25BcnJh
eVB0cjxjaGFyPiBidWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW2xlbmd0aF0pOworICAg
ICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGpzU3RyaW5nVmFsdWUuZ2V0KCksIGJ1ZmZlci5n
ZXQoKSwgbGVuZ3RoKTsKKyAgICAgICAgY2FsbGJhY2tDb250ZXh0LT5zY3JpcHRFeGVjdXRlQ2Fs
bGJhY2soZXdrVmlldywgYnVmZmVyLmdldCgpLCBjYWxsYmFja0NvbnRleHQtPnVzZXJEYXRhKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgY2FsbGJhY2tDb250ZXh0LT5zY3JpcHRFeGVjdXRlQ2FsbGJh
Y2soZXdrVmlldywgMCwgY2FsbGJhY2tDb250ZXh0LT51c2VyRGF0YSk7CisKKyAgICBkZWxldGUg
Y2FsbGJhY2tDb250ZXh0OworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHNjcmlwdCwgRXdrX1ZpZXdfU2NyaXB0
X0V4ZWN1dGVfQ2IgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEVXS19WSUVXX0lN
UExfR0VUX09SX1JFVFVSTihld2tWaWV3LCBpbXBsLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNjcmlwdCwgZmFsc2UpOworCisgICAgRXdrX1ZpZXdfU2NyaXB0
X0V4ZWN1dGVfQ2FsbGJhY2tfQ29udGV4dCogY29udGV4dCA9IG5ldyBFd2tfVmlld19TY3JpcHRf
RXhlY3V0ZV9DYWxsYmFja19Db250ZXh0OworICAgIGNvbnRleHQtPnNjcmlwdEV4ZWN1dGVDYWxs
YmFjayA9IGNhbGxiYWNrOworICAgIGNvbnRleHQtPnBhZ2UgPSB0b0FQSShpbXBsLT5wYWdlKCkp
OworICAgIGNvbnRleHQtPnVzZXJEYXRhID0gdXNlckRhdGE7CisKKyAgICBpbXBsLT5wYWdlKCkt
PnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIFNjcmlw
dFZhbHVlQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBydW5KYXZhU2NyaXB0Q2FsbGJhY2spKTsK
KworICAgIHJldHVybiB0cnVlOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaAppbmRleCAxNzVjMjhjZjJlYzA2NTIyM2MxMGQ5M2Q4NzlmYzRiYmMzZTYx
YmM5Li42YjJjMWFlNmY0ZTIyMDIwMGNmMzJmNGEwMDY4YmVlYzNjOTE0MWI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTI5MCw2ICsyOTAsMTIg
QEAgdHlwZWRlZiBlbnVtIHsKIH0gRXdrX1BhZ2luYXRpb25fTW9kZTsKIAogLyoqCisgKiBAdHlw
ZWRlZiBFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYiBFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9D
YgorICogQGJyaWVmIENhbGxiYWNrIHR5cGUgZm9yIHVzZSB3aXRoIGV3a192aWV3X3NjcmlwdF9l
eGVjdXRlKCkKKyAqLwordHlwZWRlZiB2b2lkICgqRXdrX1ZpZXdfU2NyaXB0X0V4ZWN1dGVfQ2Ip
KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpyZXR1cm5fdmFsdWUsIHZvaWQgKnVzZXJfZGF0
YSk7CisKKy8qKgogICogU2V0cyB0aGUgc21hcnQgY2xhc3MgQVBJcywgZW5hYmxpbmcgdmlldyB0
byBiZSBpbmhlcml0ZWQuCiAgKgogICogQHBhcmFtIGFwaSBjbGFzcyBkZWZpbml0aW9uIHRvIHNl
dCwgYWxsIG1lbWJlcnMgd2l0aCB0aGUKQEAgLTc5Niw2ICs4MDIsMjAgQEAgRUFQSSBFaW5hX0Jv
b2wgZXdrX3ZpZXdfcGFnaW5hdGlvbl9tb2RlX3NldChFdmFzX09iamVjdCAqbywgRXdrX1BhZ2lu
YXRpb25fTW9kZQogICovCiBFQVBJIEV3a19QYWdpbmF0aW9uX01vZGUgZXdrX3ZpZXdfcGFnaW5h
dGlvbl9tb2RlX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAKKy8qKgorICogUmVxdWVzdHMg
ZXhlY3V0aW9uIG9mIHRoZSBnaXZlbiBzY3JpcHQuCisgKgorICogVGhlIHJlc3VsdCB2YWx1ZSBm
b3IgdGhlIGV4ZWN1dGVpb24gY2FuIGJlIGdvdCBmcm9tIHRoZSBhc3luY2hyb25vdXMgY2FsbGJh
Y2suCisgKgorICogQHBhcmFtIG8gVGhlIHZpZXcgdG8gZXhlY3V0ZSBzY3JpcHQKKyAqIEBwYXJh
bSBzY3JpcHQgSmF2YVNjcmlwdCB0byBleGVjdXRlCisgKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGZ1
bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZXhlY3V0aW9uIGlzIGNvbXBsZXRlZCwgbWF5IGJlIEBj
IE5VTEwKKyAqIEBwYXJhbSB1c2VyX2RhdGEgVXNlciBkYXRhLCBtYXkgYmUgQGMgTlVMTAorICoK
KyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBm
YWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3NjcmlwdF9leGVjdXRlKEV2YXNf
T2JqZWN0ICpvLCBjb25zdCBjaGFyICpzY3JpcHQsIEV3a19WaWV3X1NjcmlwdF9FeGVjdXRlX0Ni
IGNhbGxiYWNrLCB2b2lkICp1c2VyX2RhdGEpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
dGVzdF9ld2syX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvdGVzdF9ld2syX3ZpZXcuY3BwCmluZGV4IDgwMjQwZDJhZTRhODFhMWQ1YTlhZDA2NjFiNzlh
NjA1YjJiY2U1YmMuLmRhNjFlOGJiOWQzOGYzOTVhMGM0YjllNmVmMGJlMGRmNjNkNmI0NjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdr
Ml92aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90
ZXN0X2V3azJfdmlldy5jcHAKQEAgLTc5NywzICs3OTcsNTIgQEAgVEVTVF9GKEVXSzJVbml0VGVz
dEJhc2UsIGV3a192aWV3X3BhZ2luYXRpb24pCiAgICAgQVNTRVJUX1RSVUUobG9hZFVybFN5bmMo
ZW52aXJvbm1lbnQtPmRlZmF1bHRUZXN0UGFnZVVybCgpKSk7CiAgICAgQVNTRVJUX0VRKEVXS19Q
QUdJTkFUSU9OX01PREVfVU5QQUdJTkFURUQsIGV3a192aWV3X3BhZ2luYXRpb25fbW9kZV9nZXQo
d2ViVmlldygpKSk7CiB9CisKK3N0YXRpYyB2b2lkIHNjcmlwdEV4ZWN1dGVDYWxsYmFjayhFdmFz
X09iamVjdCosIGNvbnN0IGNoYXIqIHJldHVyblZhbHVlLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAg
ICBFaW5hX1N0cmJ1ZiogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RWluYV9TdHJidWYqPih1c2VyRGF0
YSk7CisgICAgZWluYV9zdHJidWZfcmVzZXQoYnVmZmVyKTsKKworICAgIGlmIChyZXR1cm5WYWx1
ZSkKKyAgICAgICAgZWluYV9zdHJidWZfYXBwZW5kKGJ1ZmZlciwgcmV0dXJuVmFsdWUpOworCisg
ICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2Us
IGV3a192aWV3X3NjcmlwdF9leGVjdXRlKQoreworICAgIGNvbnN0IGNoYXIgc2NyaXB0RXhlY3V0
ZUhUTUxbXSA9CisgICAgICAgICI8IURPQ1RZUEUgaHRtbD4iCisgICAgICAgICI8Ym9keT4iCisg
ICAgICAgICI8cCBpZD1cIlRlc3RDb250ZW50XCI+dGVzdCBjb250ZW50PC9wPiIKKyAgICAgICAg
IjwvYm9keT4iOworCisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHNj
cmlwdEV4ZWN1dGVIVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKwor
ICAgIEVpbmFfU3RyYnVmKiByZXN1bHQgPSBlaW5hX3N0cmJ1Zl9uZXcoKTsKKworICAgIC8vIDEu
IEdldCB0aGUgaW5uZXJIVE1MIGZvciAiVGVzdENvbnRlbnQiCisgICAgY29uc3QgY2hhciBnZXRE
YXRhU2NyaXB0W10gPQorICAgICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnVGVzdENvbnRlbnQn
KS5pbm5lckhUTUwiOworCisgICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUo
d2ViVmlldygpLCBnZXREYXRhU2NyaXB0LCBzY3JpcHRFeGVjdXRlQ2FsbGJhY2ssIHN0YXRpY19j
YXN0PHZvaWQqPihyZXN1bHQpKSk7CisgICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7CisgICAg
QVNTRVJUX1NUUkVRKCJ0ZXN0IGNvbnRlbnQiLCBlaW5hX3N0cmJ1Zl9zdHJpbmdfZ2V0KHJlc3Vs
dCkpOworCisgICAgLy8gMi4gQ2hhbmdlIHRoZSBpbm5lckhUTUwgZm9yICJUZXN0Q29udGVudCIK
KyAgICBjb25zdCBjaGFyIGNoYW5nZURhdGFTY3JpcHRbXSA9CisgICAgImRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdUZXN0Q29udGVudCcpLmlubmVySFRNTCA9IFwidGVzdFwiOyI7CisgICAgQVNT
RVJUX1RSVUUoZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUod2ViVmlldygpLCBjaGFuZ2VEYXRhU2Ny
aXB0LCAwLCAwKSk7CisKKyAgICAvLyAzLiBDaGVjayB0aGUgY2hhbmdlIG9mIHRoZSBpbm5lckhU
TUwuCisgICAgZWluYV9zdHJidWZfcmVzZXQocmVzdWx0KTsKKyAgICBBU1NFUlRfVFJVRShld2tf
dmlld19zY3JpcHRfZXhlY3V0ZSh3ZWJWaWV3KCksIGdldERhdGFTY3JpcHQsIHNjcmlwdEV4ZWN1
dGVDYWxsYmFjaywgc3RhdGljX2Nhc3Q8dm9pZCo+KHJlc3VsdCkpKTsKKyAgICBlY29yZV9tYWlu
X2xvb3BfYmVnaW4oKTsKKyAgICBBU1NFUlRfU1RSRVEoInRlc3QiLCBlaW5hX3N0cmJ1Zl9zdHJp
bmdfZ2V0KHJlc3VsdCkpOworCisgICAgZWluYV9zdHJidWZfZnJlZShyZXN1bHQpOworCisgICAg
QVNTRVJUX0ZBTFNFKGV3a192aWV3X3NjcmlwdF9leGVjdXRlKHdlYlZpZXcoKSwgMCwgMCwgMCkp
OworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173587</attachid>
            <date>2012-11-12 01:40:36 -0800</date>
            <delta_ts>2014-01-05 19:58:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101904-20121112183839.patch</filename>
            <type>text/plain</type>
            <size>10005</size>
            <attacher name="Jongseok Yang">js45.yang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzgwMjJlMDU0NDRkNzBh
ZWFlMDc1MmRmMWIwZWEyYzNiMWY5MTg4NC4uNmNmZjk0M2FjYTMzNjUwZWQyZTMwZjI2NGYyNDY5
OGZjMWE4ZWE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTExLTEyICBKb25n
c2VvayBZYW5nICA8anM0NS55YW5nQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0g
QWRkIEFQSSB0byBleGVjdXRlIGpzIHNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxOTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGV3a192aWV3X3NjcmlwdF9leGVjdXRlKCkgdG8gZXhl
Y3V0ZSBhIGphdmFzY3JpcHQgYW5kIHVuaXQgdGVzdHMuCisgICAgICAgIEl0IGlzIGFuIHN5bmNo
cm9ub3VzIGZ1bmN0aW9uIGFuZCB0aGUgb3V0cHV0IGZvciB0aGUgamF2YXNjcmlwdCBpcyByZXR1
cm5lZCBmcm9tIHRoZSBjYWxsYmFjay4KKworICAgICAgICBUaGUgSlMgR2xvYmFsIENvbnRleHQs
IHdoaWNoIGlzIHJlcXVpcmVkIHRvIGRlc2VyaWFsaXplIHRvIHRoZSBzY3JpcHQgdmFsdWUgZnJv
bSB0aGUgY2FsbGJhY2ssIGlzIG1hbmFnZWQKKyAgICAgICAgaW4gdGhlIEV3a0NvbnRleHQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChF
d2tDb250ZXh0OjpFd2tDb250ZXh0KToKKyAgICAgICAgKEV3a0NvbnRleHQ6OmpzR2xvYmFsQ29u
dGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5o
OgorICAgICAgICAoRXdrQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwOgorICAgICAgICAoX0V3a19WaWV3X1NjcmlwdF9FeGVjdXRlX0NhbGxiYWNrX0Nv
bnRleHQpOgorICAgICAgICAocnVuSmF2YVNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKGV3a192
aWV3X3NjcmlwdF9leGVjdXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNw
cDoKKyAgICAgICAgKHNjcmlwdEV4ZWN1dGVDYWxsYmFjayk6CisgICAgICAgIChURVNUX0YpOgor
CiAyMDEyLTExLTExICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbU2hhZG93XSBFbGVtZW50U2hhZG93IHNob3VsZCBoYXZlIFJ1bGVGZWF0dXJlU2V0
IGZvciBzZWxlY3QgYXR0cmlidXRlIHNlbGVjdG9ycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCAxMzUzNDk4OGEwYzVlZjU1OTEx
Yzk5ZWQ4NjU2N2QyMTBkNzQ4NDJjLi4zOWJhMjZkMGNlMjU4YTFiOGYxMjZkZGQ4MGJhNTlhMjA1
ODQzZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHQuY3BwCkBAIC03NCw2ICs3NCw3IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRleHQoUGFzc1Jl
ZlB0cjxXZWJDb250ZXh0PiBjb250ZXh0KQogICAgICwgbV9kb3dubG9hZE1hbmFnZXIoRG93bmxv
YWRNYW5hZ2VyRWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50
KFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2hpc3RvcnlD
bGllbnQoQ29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmNyZWF0ZShtX2NvbnRleHQpKQorICAgICwg
bV9qc0dsb2JhbENvbnRleHQoQWRvcHQsIEpTR2xvYmFsQ29udGV4dENyZWF0ZSgwKSkKIHsKICAg
ICBDb250ZXh0TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gY29udGV4dE1hcCgpLmFkZChtX2NvbnRl
eHQuZ2V0KCksIHRoaXMpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7CkBAIC0yNTMsNiArMjU0LDExIEBAIENvbnRleHRIaXN0b3J5Q2xpZW50RWZsKiBFd2tD
b250ZXh0OjpoaXN0b3J5Q2xpZW50KCkKICAgICByZXR1cm4gbV9oaXN0b3J5Q2xpZW50LmdldCgp
OwogfQogCitKU0dsb2JhbENvbnRleHRSZWYgRXdrQ29udGV4dDo6anNHbG9iYWxDb250ZXh0KCkK
K3sKKyAgICByZXR1cm4gbV9qc0dsb2JhbENvbnRleHQuZ2V0KCk7Cit9CisKIEV3a19Db250ZXh0
KiBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpCiB7CiAgICAgcmV0dXJuIEV3a0NvbnRleHQ6OmRl
ZmF1bHRDb250ZXh0KCkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKaW5kZXggYzNiMGJhMmUwNzE1ODEzN2U3
MDNiMTBmZGZlZTE0MWExYjI0ODk5Ni4uYjQ3NGYwYTdiNWQ0MDgwZjVkOWYzM2E1NGVlOGIzNGU2
ZmVkMjRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHRfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X3ByaXZhdGUuaApAQCAtMjEsNiArMjEsNyBAQAogI2RlZmluZSBld2tfY29u
dGV4dF9wcml2YXRlX2gKIAogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlckVmbC5oIgorI2luY2x1
ZGUgIkpTUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tS
ZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCkBAIC04Miw2ICs4Myw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEFkZGl0aW9uYWxQbHVnaW5QYXRoKGNvbnN0IFN0cmluZyYpOwog
I2VuZGlmCiAKKyAgICBKU0dsb2JhbENvbnRleHRSZWYganNHbG9iYWxDb250ZXh0KCk7CisKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgRXdrQ29udGV4dChQYXNzUmVmUHRyPFdlYkNvbnRleHQ+KTsK
IApAQCAtMTAzLDYgKzEwNiw4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6UmVxdWVz
dE1hbmFnZXJDbGllbnRFZmw+IG1fcmVxdWVzdE1hbmFnZXJDbGllbnQ7CiAKICAgICBPd25QdHI8
V2ViS2l0OjpDb250ZXh0SGlzdG9yeUNsaWVudEVmbD4gbV9oaXN0b3J5Q2xpZW50OworCisgICAg
SlNSZXRhaW5QdHI8SlNHbG9iYWxDb250ZXh0UmVmPiBtX2pzR2xvYmFsQ29udGV4dDsKIH07CiAK
ICNlbmRpZiAvLyBld2tfY29udGV4dF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA5MDU2ZTFjYmFmZGI4YjI1OTkwMTBlYWVj
ZDdhYzUxMTNjMGIwMTQwLi4zOTk3Njk4YTU2OTViYTZlN2RjOWE5YzgwM2NjZDBhMTgzYjE0Nzc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiV0tGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAi
V0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1
ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lmgi
CkBAIC05MjEsMyArOTIyLDU0IEBAIEVpbmFfQm9vbCBld2tfdmlld19mdWxsc2NyZWVuX2V4aXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CisKK3N0
cnVjdCBfRXdrX1ZpZXdfU2NyaXB0X0V4ZWN1dGVfQ2FsbGJhY2tfQ29udGV4dCB7CisgICAgRXdr
X1ZpZXdfU2NyaXB0X0V4ZWN1dGVfQ2Igc2NyaXB0RXhlY3V0ZUNhbGxiYWNrOworICAgIFdLUGFn
ZVJlZiBwYWdlOworICAgIHZvaWQqIHVzZXJEYXRhOworfTsKK3R5cGVkZWYgc3RydWN0IF9Fd2tf
Vmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFja19Db250ZXh0IEV3a19WaWV3X1NjcmlwdF9FeGVj
dXRlX0NhbGxiYWNrX0NvbnRleHQ7CisKK3N0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRDYWxsYmFj
ayhXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJv
ciwgdm9pZCogY29udGV4dCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjb250
ZXh0KTsKKyAgICBFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFja19Db250ZXh0KiBjYWxs
YmFja0NvbnRleHQgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFj
a19Db250ZXh0Kj4oY29udGV4dCk7CisKKyAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IGNvbnN0
X2Nhc3Q8RXZhc19PYmplY3QqPihFd2tWaWV3SW1wbDo6dmlld0Zyb21QYWdlVmlld01hcChjYWxs
YmFja0NvbnRleHQtPnBhZ2UpKTsKKyAgICBpZiAoIWV3a1ZpZXcgfHwgZXJyb3IpCisgICAgICAg
IHJldHVybjsKKworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihld2tWaWV3LCBpbXBs
KTsKKyAgICBKU0dsb2JhbENvbnRleHRSZWYganNHbG9iYWxDb250ZXh0ID0gaW1wbC0+ZXdrQ29u
dGV4dCgpLT5qc0dsb2JhbENvbnRleHQoKTsKKworICAgIGlmICghY2FsbGJhY2tDb250ZXh0LT5z
Y3JpcHRFeGVjdXRlQ2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzY3JpcHRW
YWx1ZSkgeworICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlID0gV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWVEZXNlcmlhbGl6ZShzY3JpcHRWYWx1ZSwganNHbG9iYWxDb250ZXh0LCAwKTsKKyAgICAgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzU3RyaW5nVmFsdWUoSlNWYWx1ZVRvU3RyaW5nQ29w
eShqc0dsb2JhbENvbnRleHQsIHZhbHVlLCAwKSk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBK
U1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoanNTdHJpbmdWYWx1ZS5nZXQoKSk7Cisg
ICAgICAgIE93bkFycmF5UHRyPGNoYXI+IGJ1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3IGNoYXJb
bGVuZ3RoXSk7CisgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoanNTdHJpbmdWYWx1ZS5n
ZXQoKSwgYnVmZmVyLmdldCgpLCBsZW5ndGgpOworICAgICAgICBjYWxsYmFja0NvbnRleHQtPnNj
cmlwdEV4ZWN1dGVDYWxsYmFjayhld2tWaWV3LCBidWZmZXIuZ2V0KCksIGNhbGxiYWNrQ29udGV4
dC0+dXNlckRhdGEpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsYmFja0NvbnRleHQtPnNjcmlw
dEV4ZWN1dGVDYWxsYmFjayhld2tWaWV3LCAwLCBjYWxsYmFja0NvbnRleHQtPnVzZXJEYXRhKTsK
KworICAgIGRlbGV0ZSBjYWxsYmFja0NvbnRleHQ7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19z
Y3JpcHRfZXhlY3V0ZShFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogc2NyaXB0LCBF
d2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYiBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIGltcGwsIGZhbHNlKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2NyaXB0LCBmYWxzZSk7CisKKyAgICBF
d2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFja19Db250ZXh0KiBjb250ZXh0ID0gbmV3IEV3
a19WaWV3X1NjcmlwdF9FeGVjdXRlX0NhbGxiYWNrX0NvbnRleHQ7CisgICAgY29udGV4dC0+c2Ny
aXB0RXhlY3V0ZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgY29udGV4dC0+cGFnZSA9IHRvQVBJ
KGltcGwtPnBhZ2UoKSk7CisgICAgY29udGV4dC0+dXNlckRhdGEgPSB1c2VyRGF0YTsKKworICAg
IGltcGwtPnBhZ2UoKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZzo6ZnJvbVVURjgo
c2NyaXB0KSwgU2NyaXB0VmFsdWVDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIHJ1bkphdmFTY3Jp
cHRDYWxsYmFjaykpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDg1Yjk3NjI5MWY4NTZlMjMxZWZiMTRj
Mzk2YWE3ZTVmM2ViZThmNDYuLmE3MDY2MTJhN2EzMDEyMTAwNTkwNDJjYzUzMWRlZTRkNDRlYWVk
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAt
Mjk1LDYgKzI5NSwxMiBAQCB0eXBlZGVmIGVudW0gewogfSBFd2tfUGFnaW5hdGlvbl9Nb2RlOwog
CiAvKioKKyAqIEB0eXBlZGVmIEV3a19WaWV3X1NjcmlwdF9FeGVjdXRlX0NiIEV3a19WaWV3X1Nj
cmlwdF9FeGVjdXRlX0NiCisgKiBAYnJpZWYgQ2FsbGJhY2sgdHlwZSBmb3IgdXNlIHdpdGggZXdr
X3ZpZXdfc2NyaXB0X2V4ZWN1dGUoKQorICovCit0eXBlZGVmIHZvaWQgKCpFd2tfVmlld19TY3Jp
cHRfRXhlY3V0ZV9DYikoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnJldHVybl92YWx1ZSwg
dm9pZCAqdXNlcl9kYXRhKTsKKworLyoqCiAgKiBTZXRzIHRoZSBzbWFydCBjbGFzcyBBUElzLCBl
bmFibGluZyB2aWV3IHRvIGJlIGluaGVyaXRlZC4KICAqCiAgKiBAcGFyYW0gYXBpIGNsYXNzIGRl
ZmluaXRpb24gdG8gc2V0LCBhbGwgbWVtYmVycyB3aXRoIHRoZQpAQCAtODEwLDYgKzgxNiwyMCBA
QCBFQVBJIEV3a19QYWdpbmF0aW9uX01vZGUgZXdrX3ZpZXdfcGFnaW5hdGlvbl9tb2RlX2dldChj
b25zdCBFdmFzX09iamVjdCAqbyk7CiAgKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X2Z1bGxz
Y3JlZW5fZXhpdChFdmFzX09iamVjdCAqbyk7CiAKKy8qKgorICogUmVxdWVzdHMgZXhlY3V0aW9u
IG9mIHRoZSBnaXZlbiBzY3JpcHQuCisgKgorICogVGhlIHJlc3VsdCB2YWx1ZSBmb3IgdGhlIGV4
ZWN1dGVpb24gY2FuIGJlIGdvdCBmcm9tIHRoZSBhc3luY2hyb25vdXMgY2FsbGJhY2suCisgKgor
ICogQHBhcmFtIG8gVGhlIHZpZXcgdG8gZXhlY3V0ZSBzY3JpcHQKKyAqIEBwYXJhbSBzY3JpcHQg
SmF2YVNjcmlwdCB0byBleGVjdXRlCisgKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRv
IGNhbGwgd2hlbiB0aGUgZXhlY3V0aW9uIGlzIGNvbXBsZXRlZCwgbWF5IGJlIEBjIE5VTEwKKyAq
IEBwYXJhbSB1c2VyX2RhdGEgVXNlciBkYXRhLCBtYXkgYmUgQGMgTlVMTAorICoKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisg
Ki8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3NjcmlwdF9leGVjdXRlKEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBjaGFyICpzY3JpcHQsIEV3a19WaWV3X1NjcmlwdF9FeGVjdXRlX0NiIGNhbGxiYWNr
LCB2b2lkICp1c2VyX2RhdGEpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2sy
X3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX3ZpZXcuY3BwCmluZGV4IGVkNWJiYjFiYjFhMDdjYjU1NmY1Y2QyMGY2ZWU4YmEyMTdmMDg0
NGUuLmE2NWE0NzRiZjE2ZmI5MGI2YTdkYmMyM2Q1MGRjMDRkNmIxOGZhNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
dmlldy5jcHAKQEAgLTg4NywzICs4ODcsNTEgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3
a19jb250ZXh0X3ZpYnJhdGlvbl9jbGllbnRfY2FsbGJhY2tzX3NldCkKICAgICBBU1NFUlRfRkFM
U0UoZGF0YS5kaWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9uKTsKIH0KIAorc3RhdGljIHZvaWQgc2Ny
aXB0RXhlY3V0ZUNhbGxiYWNrKEV2YXNfT2JqZWN0KiwgY29uc3QgY2hhciogcmV0dXJuVmFsdWUs
IHZvaWQqIHVzZXJEYXRhKQoreworICAgIEVpbmFfU3RyYnVmKiBidWZmZXIgPSBzdGF0aWNfY2Fz
dDxFaW5hX1N0cmJ1Zio+KHVzZXJEYXRhKTsKKyAgICBlaW5hX3N0cmJ1Zl9yZXNldChidWZmZXIp
OworCisgICAgaWYgKHJldHVyblZhbHVlKQorICAgICAgICBlaW5hX3N0cmJ1Zl9hcHBlbmQoYnVm
ZmVyLCByZXR1cm5WYWx1ZSk7CisKKyAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworfQorCitU
RVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUpCit7CisgICAg
Y29uc3QgY2hhciBzY3JpcHRFeGVjdXRlSFRNTFtdID0KKyAgICAgICAgIjwhRE9DVFlQRSBodG1s
PiIKKyAgICAgICAgIjxib2R5PiIKKyAgICAgICAgIjxwIGlkPVwiVGVzdENvbnRlbnRcIj50ZXN0
IGNvbnRlbnQ8L3A+IgorICAgICAgICAiPC9ib2R5PiI7CisKKyAgICBld2tfdmlld19odG1sX3N0
cmluZ19sb2FkKHdlYlZpZXcoKSwgc2NyaXB0RXhlY3V0ZUhUTUwsIDAsIDApOworICAgIHdhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgRWluYV9TdHJidWYqIHJlc3VsdCA9IGVpbmFfc3Ry
YnVmX25ldygpOworCisgICAgLy8gMS4gR2V0IHRoZSBpbm5lckhUTUwgZm9yICJUZXN0Q29udGVu
dCIKKyAgICBjb25zdCBjaGFyIGdldERhdGFTY3JpcHRbXSA9CisgICAgImRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdUZXN0Q29udGVudCcpLmlubmVySFRNTCI7CisKKyAgICBBU1NFUlRfVFJVRShl
d2tfdmlld19zY3JpcHRfZXhlY3V0ZSh3ZWJWaWV3KCksIGdldERhdGFTY3JpcHQsIHNjcmlwdEV4
ZWN1dGVDYWxsYmFjaywgc3RhdGljX2Nhc3Q8dm9pZCo+KHJlc3VsdCkpKTsKKyAgICBlY29yZV9t
YWluX2xvb3BfYmVnaW4oKTsKKyAgICBBU1NFUlRfU1RSRVEoInRlc3QgY29udGVudCIsIGVpbmFf
c3RyYnVmX3N0cmluZ19nZXQocmVzdWx0KSk7CisKKyAgICAvLyAyLiBDaGFuZ2UgdGhlIGlubmVy
SFRNTCBmb3IgIlRlc3RDb250ZW50IgorICAgIGNvbnN0IGNoYXIgY2hhbmdlRGF0YVNjcmlwdFtd
ID0KKyAgICAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1Rlc3RDb250ZW50JykuaW5uZXJIVE1M
ID0gXCJ0ZXN0XCI7IjsKKyAgICBBU1NFUlRfVFJVRShld2tfdmlld19zY3JpcHRfZXhlY3V0ZSh3
ZWJWaWV3KCksIGNoYW5nZURhdGFTY3JpcHQsIDAsIDApKTsKKworICAgIC8vIDMuIENoZWNrIHRo
ZSBjaGFuZ2Ugb2YgdGhlIGlubmVySFRNTC4KKyAgICBlaW5hX3N0cmJ1Zl9yZXNldChyZXN1bHQp
OworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3NjcmlwdF9leGVjdXRlKHdlYlZpZXcoKSwgZ2V0
RGF0YVNjcmlwdCwgc2NyaXB0RXhlY3V0ZUNhbGxiYWNrLCBzdGF0aWNfY2FzdDx2b2lkKj4ocmVz
dWx0KSkpOworICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigpOworICAgIEFTU0VSVF9TVFJFUSgi
dGVzdCIsIGVpbmFfc3RyYnVmX3N0cmluZ19nZXQocmVzdWx0KSk7CisKKyAgICBlaW5hX3N0cmJ1
Zl9mcmVlKHJlc3VsdCk7CisKKyAgICBBU1NFUlRfRkFMU0UoZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1
dGUod2ViVmlldygpLCAwLCAwLCAwKSk7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220411</attachid>
            <date>2014-01-05 19:59:02 -0800</date>
            <delta_ts>2014-01-07 18:26:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101904-20140106125900.patch</filename>
            <type>text/plain</type>
            <size>11073</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2ZmMzlmOGM4NDU0MGRm
M2I4NTRlOTI0OGU0ZmM1MzZhMTUxNjIxYS4uNTBhMjI2YzZjYzA5ZjU3MjU4N2FhZTlhYWIxNzI3
ZjEwYTFjMzg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE0LTAxLTA1ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBBUEkgdG8gZXhlY3V0ZSBqcyBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTkwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBld2tfdmlld19zY3JpcHRfZXhlY3V0ZSgpIHdoaWNoIHBy
b3ZpZGVzIGEgd2F5IHRvIGV4ZWN1dGUgdXNlcgorICAgICAgICBzY3JpcHQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIEFkZGVkIEpTIEds
b2JhbCBDb250ZXh0YSB3aGljaCBpcyByZXF1aXJlZCB0byBkZXNlcmlhbGl6ZSB0byB0aGUgc2Ny
aXB0CisgICAgICAgIHZhbHVlIGZyb20gdGhlIGNhbGxiYWNrLgorICAgICAgICAoRXdrQ29udGV4
dDo6RXdrQ29udGV4dCk6CisgICAgICAgIChFd2tDb250ZXh0Ojp+RXdrQ29udGV4dCk6CisgICAg
ICAgIChFd2tDb250ZXh0Ojpqc0dsb2JhbENvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHA6CisgICAgICAgIChFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFj
a19Db250ZXh0OjpFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFja19Db250ZXh0KToKKyAg
ICAgICAgKHJ1bkphdmFTY3JpcHRDYWxsYmFjayk6CisgICAgICAgIChld2tfdmlld19zY3JpcHRf
ZXhlY3V0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6CisgICAgICAg
IEFkZGVkIHVuaXQgdGVzdCBmb3IgZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUuCisgICAgICAgIChz
Y3JpcHRFeGVjdXRlQ2FsbGJhY2spOgorICAgICAgICAoVEVTVF9GKToKKwogMjAxNC0wMS0wNSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gU3RvcCBpbnN0YWxsaW5nIFdlYktpdDIgQyBBUEkgaGVhZGVycwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmluZGV4IGY0ZGExZWFjZDAw
OGQ2MWM3YTM5MWE4NWQxYTEwNjkyYTIzNmYxOTkuLjE0ZDI4MGY1ZWQ3YmVkMzU2YmI1NDgxYWUw
NzI3Nzg4NzBiZjY4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJld2tfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgImV3a19zdG9yYWdlX21hbmFnZXJfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ29udGV4dFJlZi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
QEAgLTcyLDYgKzczLDcgQEAgRXdrQ29udGV4dDo6RXdrQ29udGV4dChXS0NvbnRleHRSZWYgY29u
dGV4dCkKICAgICAsIG1fZG93bmxvYWRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRN
YW5hZ2VyRWZsPihjb250ZXh0KSkKICAgICAsIG1fcmVxdWVzdE1hbmFnZXJDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxSZXF1ZXN0TWFuYWdlckNsaWVudEVmbD4oY29udGV4dCkpCiAgICAgLCBtX2hp
c3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0SGlzdG9yeUNsaWVudEVmbD4oY29u
dGV4dCkpCisgICAgLCBtX2pzR2xvYmFsQ29udGV4dCgwKQogewogICAgIENvbnRleHRNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBjb250ZXh0TWFwKCkuYWRkKGNvbnRleHQsIHRoaXMpOwogICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CkBAIC05Niw2ICs5OCwxMCBA
QCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQogRXdrQ29udGV4
dDo6fkV3a0NvbnRleHQoKQogewogICAgIEFTU0VSVChjb250ZXh0TWFwKCkuZ2V0KG1fY29udGV4
dC5nZXQoKSkgPT0gdGhpcyk7CisKKyAgICBpZiAobV9qc0dsb2JhbENvbnRleHQpCisgICAgICAg
IEpTR2xvYmFsQ29udGV4dFJlbGVhc2UobV9qc0dsb2JhbENvbnRleHQpOworCiAgICAgY29udGV4
dE1hcCgpLnJlbW92ZShtX2NvbnRleHQuZ2V0KCkpOwogfQogCkBAIC0yMTQsNiArMjIwLDE1IEBA
IHZvaWQgRXdrQ29udGV4dDo6Y2xlYXJSZXNvdXJjZUNhY2hlKCkKICAgICBXS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tDb250ZXh0R2V0UmVzb3VyY2VDYWNo
ZU1hbmFnZXIobV9jb250ZXh0LmdldCgpKSwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXJBbGwpOwog
fQogCisKK0pTR2xvYmFsQ29udGV4dFJlZiBFd2tDb250ZXh0Ojpqc0dsb2JhbENvbnRleHQoKQor
eworICAgIGlmICghbV9qc0dsb2JhbENvbnRleHQpCisgICAgICAgIG1fanNHbG9iYWxDb250ZXh0
ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlKDApOworCisgICAgcmV0dXJuIG1fanNHbG9iYWxDb250
ZXh0OworfQorCiBFd2tfQ29va2llX01hbmFnZXIqIGV3a19jb250ZXh0X2Nvb2tpZV9tYW5hZ2Vy
X2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKIHsKICAgICBFV0tfT0JKX0dFVF9J
TVBMX09SX1JFVFVSTihjb25zdCBFd2tDb250ZXh0LCBld2tDb250ZXh0LCBpbXBsLCAwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3By
aXZhdGUuaAppbmRleCA1MjVkODU5NjA2NjlkNDU2YjkzOTU2MjUyZmVjN2Q3MGNiZWZiNDNlLi5l
MjAyM2QxODkzM2I0N2ZmY2FhMTUyNGJjMzRlMGYwMjQ4OWExOTljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCkBA
IC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3
a19vYmplY3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJl
Zi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTg1LDYgKzg2LDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjbGVhclJlc291cmNlQ2FjaGUoKTsKIAorICAgIEpTR2xvYmFsQ29u
dGV4dFJlZiBqc0dsb2JhbENvbnRleHQoKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBFd2tD
b250ZXh0KFdLQ29udGV4dFJlZik7CiAKQEAgLTEwNiw2ICsxMDksOCBAQCBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsPiBtX3JlcXVl
c3RNYW5hZ2VyQ2xpZW50OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6Q29udGV4dEhp
c3RvcnlDbGllbnRFZmw+IG1faGlzdG9yeUNsaWVudDsKKworICAgIEpTR2xvYmFsQ29udGV4dFJl
ZiBtX2pzR2xvYmFsQ29udGV4dDsKIH07CiAKICNlbmRpZiAvLyBld2tfY29udGV4dF9wcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRl
eCAxYjA5YTFhZjUzYzFlMTU0YmRlOTkxYWQxM2JlZDY4NDkwMzU1MzAxLi5kZjFhMThjYThlMmJh
YjNiOTY2YTY5MmNiY2M4NTcwZmQzZDZjYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiZXdr
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3NfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
PEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPFdlYktpdDIvV0tBUElDYXN0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0RhdGEu
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLRWluYVNoYXJlZFN0cmluZy5oPgpAQCAtNDcsNiArNDgs
NyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tJbnNwZWN0b3IuaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTC5oPgogI2luY2x1ZGUgPFdlYktp
dDIvV0tWaWV3Lmg+CkBAIC02MjUsMyArNjI3LDU0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zb3Vy
Y2VfbW9kZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKICAgICByZXR1cm4gV0tW
aWV3R2V0U2hvd3NBc1NvdXJjZShpbXBsLT53a1ZpZXcoKSk7CiB9CisKK3N0cnVjdCBFd2tfVmll
d19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFja19Db250ZXh0IHsKKyAgICBFd2tfVmlld19TY3JpcHRf
RXhlY3V0ZV9DYWxsYmFja19Db250ZXh0KEV3a19WaWV3X1NjcmlwdF9FeGVjdXRlX0NiIGNhbGxi
YWNrLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogdXNlckRhdGEpCisgICAgICAgIDogbV9j
YWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgLCBtX3ZpZXcoZXdrVmlldykKKyAgICAgICAgLCBt
X3VzZXJEYXRhKHVzZXJEYXRhKQorICAgIHsKKyAgICB9CisKKyAgICBFd2tfVmlld19TY3JpcHRf
RXhlY3V0ZV9DYiBtX2NhbGxiYWNrOworICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7CisgICAgdm9p
ZCogbV91c2VyRGF0YTsKK307CisKK3N0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRDYWxsYmFjayhX
S1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvciwg
dm9pZCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dCk7CisKKyAgICBpZiAoZXJyb3Ip
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY2FsbGJhY2tDb250ZXh0ID0gc3RkOjp1bmlx
dWVfcHRyPEV3a19WaWV3X1NjcmlwdF9FeGVjdXRlX0NhbGxiYWNrX0NvbnRleHQ+KHN0YXRpY19j
YXN0PEV3a19WaWV3X1NjcmlwdF9FeGVjdXRlX0NhbGxiYWNrX0NvbnRleHQqPihjb250ZXh0KSk7
CisgICAgQVNTRVJUKGNhbGxiYWNrQ29udGV4dC0+bV92aWV3KTsKKworICAgIGlmICghY2FsbGJh
Y2tDb250ZXh0LT5tX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc2NyaXB0
VmFsdWUpIHsKKyAgICAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGNhbGxiYWNrQ29u
dGV4dC0+bV92aWV3LCBpbXBsKTsKKyAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGpzR2xvYmFs
Q29udGV4dCA9IGltcGwtPmV3a0NvbnRleHQoKS0+anNHbG9iYWxDb250ZXh0KCk7CisKKyAgICAg
ICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUo
c2NyaXB0VmFsdWUsIGpzR2xvYmFsQ29udGV4dCwgMCk7CisgICAgICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBqc1N0cmluZ1ZhbHVlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGpzR2xv
YmFsQ29udGV4dCwgdmFsdWUsIDApKTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IEpTU3RyaW5n
R2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShqc1N0cmluZ1ZhbHVlLmdldCgpKTsKKyAgICAgICAg
YXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obGVuZ3RoKTsKKyAgICAgICAg
SlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhqc1N0cmluZ1ZhbHVlLmdldCgpLCBidWZmZXIuZ2V0KCks
IGxlbmd0aCk7CisgICAgICAgIGNhbGxiYWNrQ29udGV4dC0+bV9jYWxsYmFjayhjYWxsYmFja0Nv
bnRleHQtPm1fdmlldywgYnVmZmVyLmdldCgpLCBjYWxsYmFja0NvbnRleHQtPm1fdXNlckRhdGEp
OworICAgIH0gZWxzZQorICAgICAgICBjYWxsYmFja0NvbnRleHQtPm1fY2FsbGJhY2soY2FsbGJh
Y2tDb250ZXh0LT5tX3ZpZXcsIDAsIGNhbGxiYWNrQ29udGV4dC0+bV91c2VyRGF0YSk7Cit9CisK
K0VpbmFfQm9vbCBld2tfdmlld19zY3JpcHRfZXhlY3V0ZShFdmFzX09iamVjdCogZXdrVmlldywg
Y29uc3QgY2hhciogc2NyaXB0LCBFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYiBjYWxsYmFjaywg
dm9pZCogdXNlckRhdGEpCit7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIGltcGwsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2Ny
aXB0LCBmYWxzZSk7CisKKyAgICBFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFja19Db250
ZXh0KiBjb250ZXh0ID0gbmV3IEV3a19WaWV3X1NjcmlwdF9FeGVjdXRlX0NhbGxiYWNrX0NvbnRl
eHQoY2FsbGJhY2ssIGV3a1ZpZXcsIHVzZXJEYXRhKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gc2NyaXB0U3RyaW5nKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KHNjcmlwdCkpOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShpbXBsLT53a1Bh
Z2UoKSwgc2NyaXB0U3RyaW5nLmdldCgpLCBjb250ZXh0LCBydW5KYXZhU2NyaXB0Q2FsbGJhY2sp
OworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmgKaW5kZXggMjQ0ZTQzNzBhM2FlZThhYWE5NWI5MTUzZmFhYzFlZTJmMTY4ZjQy
OC4uYmI5NjY1ZjVkYzQxMmQxMDg2MDFmMGNmOGFmOGY5M2Q4OTA1Y2U2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0yNzksNiArMjc5LDEyIEBA
IHR5cGVkZWYgZW51bSB7CiB9IEV3a19QYWdpbmF0aW9uX01vZGU7CiAKIC8qKgorICogQHR5cGVk
ZWYgRXdrX1ZpZXdfU2NyaXB0X0V4ZWN1dGVfQ2IgRXdrX1ZpZXdfU2NyaXB0X0V4ZWN1dGVfQ2IK
KyAqIEBicmllZiBDYWxsYmFjayB0eXBlIGZvciB1c2Ugd2l0aCBld2tfdmlld19zY3JpcHRfZXhl
Y3V0ZSgpCisgKi8KK3R5cGVkZWYgdm9pZCAoKkV3a19WaWV3X1NjcmlwdF9FeGVjdXRlX0NiKShF
dmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcmV0dXJuX3ZhbHVlLCB2b2lkICp1c2VyX2RhdGEp
OworCisvKioKICAqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIHRoZSBjYWxsYmFjayBmdW5jdGlv
biB1c2VkIHRvIGdldCB0aGUgcGFnZSBjb250ZW50cy4KICAqCiAgKiBAcGFyYW0gdHlwZSB0eXBl
IG9mIHRoZSBjb250ZW50cwpAQCAtODg0LDYgKzg5MCwyMCBAQCBFQVBJIEVpbmFfQm9vbCBld2tf
dmlld19zb3VyY2VfbW9kZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGVkKTsK
ICAqLwogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfc291cmNlX21vZGVfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0ICpvKTsKIAorLyoqCisgKiBSZXF1ZXN0cyBleGVjdXRpb24gb2YgdGhlIGdpdmVuIHNj
cmlwdC4KKyAqCisgKiBUaGUgcmVzdWx0IHZhbHVlIGZvciB0aGUgZXhlY3V0aW9uIGNhbiBiZSBy
ZXRyaWV2ZWQgZnJvbSB0aGUgYXN5bmNocm9ub3VzIGNhbGxiYWNrLgorICoKKyAqIEBwYXJhbSBv
IFRoZSB2aWV3IHRvIGV4ZWN1dGUgc2NyaXB0CisgKiBAcGFyYW0gc2NyaXB0IEphdmFTY3JpcHQg
dG8gZXhlY3V0ZQorICogQHBhcmFtIGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4g
dGhlIGV4ZWN1dGlvbiBpcyBjb21wbGV0ZWQsIG1heSBiZSBAYyBOVUxMCisgKiBAcGFyYW0gdXNl
cl9kYXRhIFVzZXIgZGF0YSwgbWF5IGJlIEBjIE5VTEwKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVp
bmFfQm9vbCBld2tfdmlld19zY3JpcHRfZXhlY3V0ZShFdmFzX09iamVjdCAqbywgY29uc3QgY2hh
ciAqc2NyaXB0LCBFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYiBjYWxsYmFjaywgdm9pZCAqdXNl
cl9kYXRhKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNw
cAppbmRleCBjMWViZjRjMDA1MDFiZTU5ZTJlZGMzZTFmMmJjYWJiODUxMGM2YTMwLi41MWE0ODQw
YjhlZmViYTEzNWNhMzYyZTY0ODcxYzIyYjhkN2U0Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBA
IC0xMDI5LDMgKzEwMjksNTEgQEAgVEVTVF9GKEVXSzJWaWV3VGVzdCwgZXdrX3ZpZXdfdXNlcl9h
Z2VudCkKICAgICBBU1NFUlRfU1RSRVEoZGVmYXVsdFVzZXJBZ2VudCwgZXdrX3ZpZXdfdXNlcl9h
Z2VudF9nZXQod2ViVmlldygpKSk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoZGVmYXVsdFVz
ZXJBZ2VudCk7CiB9CisKK3N0YXRpYyB2b2lkIHNjcmlwdEV4ZWN1dGVDYWxsYmFjayhFdmFzX09i
amVjdCosIGNvbnN0IGNoYXIqIHJldHVyblZhbHVlLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBF
aW5hX1N0cmJ1ZiogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RWluYV9TdHJidWYqPih1c2VyRGF0YSk7
CisgICAgZWluYV9zdHJidWZfcmVzZXQoYnVmZmVyKTsKKworICAgIGlmIChyZXR1cm5WYWx1ZSkK
KyAgICAgICAgZWluYV9zdHJidWZfYXBwZW5kKGJ1ZmZlciwgcmV0dXJuVmFsdWUpOworCisgICAg
ZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3
a192aWV3X3NjcmlwdF9leGVjdXRlKQoreworICAgIGNvbnN0IGNoYXIgc2NyaXB0RXhlY3V0ZUhU
TUxbXSA9CisgICAgICAgICI8IURPQ1RZUEUgaHRtbD4iCisgICAgICAgICI8Ym9keT4iCisgICAg
ICAgICI8cCBpZD1cIlRlc3RDb250ZW50XCI+dGVzdCBjb250ZW50PC9wPiIKKyAgICAgICAgIjwv
Ym9keT4iOworCisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHNjcmlw
dEV4ZWN1dGVIVE1MLCAwLCAwKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxMb2FkRmluaXNo
ZWQoKSk7CisKKyAgICBFaW5hX1N0cmJ1ZiogcmVzdWx0ID0gZWluYV9zdHJidWZfbmV3KCk7CisK
KyAgICAvLyAxLiBHZXQgdGhlIGlubmVySFRNTCBmb3IgIlRlc3RDb250ZW50IgorICAgIGNvbnN0
IGNoYXIgZ2V0RGF0YVNjcmlwdFtdID0KKyAgICAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1Rl
c3RDb250ZW50JykuaW5uZXJIVE1MIjsKKworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3Njcmlw
dF9leGVjdXRlKHdlYlZpZXcoKSwgZ2V0RGF0YVNjcmlwdCwgc2NyaXB0RXhlY3V0ZUNhbGxiYWNr
LCBzdGF0aWNfY2FzdDx2b2lkKj4ocmVzdWx0KSkpOworICAgIGVjb3JlX21haW5fbG9vcF9iZWdp
bigpOworICAgIEFTU0VSVF9TVFJFUSgidGVzdCBjb250ZW50IiwgZWluYV9zdHJidWZfc3RyaW5n
X2dldChyZXN1bHQpKTsKKworICAgIC8vIDIuIENoYW5nZSB0aGUgaW5uZXJIVE1MIGZvciAiVGVz
dENvbnRlbnQiCisgICAgY29uc3QgY2hhciBjaGFuZ2VEYXRhU2NyaXB0W10gPQorICAgICJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnVGVzdENvbnRlbnQnKS5pbm5lckhUTUwgPSBcInRlc3RcIjsi
OworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3NjcmlwdF9leGVjdXRlKHdlYlZpZXcoKSwgY2hh
bmdlRGF0YVNjcmlwdCwgMCwgMCkpOworCisgICAgLy8gMy4gQ2hlY2sgdGhlIGNoYW5nZSBvZiB0
aGUgaW5uZXJIVE1MLgorICAgIGVpbmFfc3RyYnVmX3Jlc2V0KHJlc3VsdCk7CisgICAgQVNTRVJU
X1RSVUUoZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUod2ViVmlldygpLCBnZXREYXRhU2NyaXB0LCBz
Y3JpcHRFeGVjdXRlQ2FsbGJhY2ssIHN0YXRpY19jYXN0PHZvaWQqPihyZXN1bHQpKSk7CisgICAg
ZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7CisgICAgQVNTRVJUX1NUUkVRKCJ0ZXN0IiwgZWluYV9z
dHJidWZfc3RyaW5nX2dldChyZXN1bHQpKTsKKworICAgIGVpbmFfc3RyYnVmX2ZyZWUocmVzdWx0
KTsKKworICAgIEFTU0VSVF9GQUxTRShld2tfdmlld19zY3JpcHRfZXhlY3V0ZSh3ZWJWaWV3KCks
IDAsIDAsIDApKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220578</attachid>
            <date>2014-01-07 18:26:43 -0800</date>
            <delta_ts>2014-01-08 16:47:27 -0800</delta_ts>
            <desc>improve testcase</desc>
            <filename>bug-101904-20140108112642.patch</filename>
            <type>text/plain</type>
            <size>11513</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxNDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjYxM2EyZTliODFjYTVi
NWI2NjMxYjVlOWU0ZDQwNDM0M2E3Nzc0Ny4uNWZhNjJmYzBkNjYzMGE4Y2UzZWY3NmI1ZTI0MzZj
MjdiYTgwMWQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE0LTAxLTA3ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBBUEkgdG8gZXhlY3V0ZSBqcyBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTkwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBld2tfdmlld19zY3JpcHRfZXhlY3V0ZSgpIHdoaWNoIHBy
b3ZpZGVzIGEgd2F5IHRvIGV4ZWN1dGUgdXNlcgorICAgICAgICBzY3JpcHQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIEFkZGVkIEpTIEds
b2JhbCBDb250ZXh0YSB3aGljaCBpcyByZXF1aXJlZCB0byBkZXNlcmlhbGl6ZSB0byB0aGUgc2Ny
aXB0CisgICAgICAgIHZhbHVlIGZyb20gdGhlIGNhbGxiYWNrLgorICAgICAgICAoRXdrQ29udGV4
dDo6RXdrQ29udGV4dCk6CisgICAgICAgIChFd2tDb250ZXh0Ojp+RXdrQ29udGV4dCk6CisgICAg
ICAgIChFd2tDb250ZXh0Ojpqc0dsb2JhbENvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHA6CisgICAgICAgIChFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFj
a19Db250ZXh0OjpFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFja19Db250ZXh0KToKKyAg
ICAgICAgKHJ1bkphdmFTY3JpcHRDYWxsYmFjayk6CisgICAgICAgIChld2tfdmlld19zY3JpcHRf
ZXhlY3V0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6CisgICAgICAg
IEFkZGVkIHVuaXQgdGVzdCBmb3IgZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUuCisgICAgICAgIChz
Y3JpcHRFeGVjdXRlQ2FsbGJhY2spOgorICAgICAgICAoVEVTVF9GKToKKwogMjAxNC0wMS0wNyAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhl
IGJ1aWxkLiBUaGUgV2ViS2l0MiBwcm9qZWN0IGNvcGllZCBhbGwgb2YgV2ViS2l0Mi9TY3JpcHRz
L3dlYmtpdDIgaW50byBXZWJLaXQyLmZyYW1ld29yay9Qcml2YXRlSGVhZGVycywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCBmNGRh
MWVhY2QwMDhkNjFjN2EzOTFhODVkMWExMDY5MmEyMzZmMTk5Li4xNGQyODBmNWVkN2JlZDM1NmJi
NTQ4MWFlMDcyNzc4ODcwYmY2OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiZXdr
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc3RvcmFnZV9tYW5hZ2VyX3ByaXZhdGUuaCIKICNp
bmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CkBAIC03Miw2ICs3Myw3IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0
UmVmIGNvbnRleHQpCiAgICAgLCBtX2Rvd25sb2FkTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPERv
d25sb2FkTWFuYWdlckVmbD4oY29udGV4dCkpCiAgICAgLCBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw+KGNvbnRleHQpKQogICAg
ICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dEhpc3RvcnlDbGllbnRF
Zmw+KGNvbnRleHQpKQorICAgICwgbV9qc0dsb2JhbENvbnRleHQoMCkKIHsKICAgICBDb250ZXh0
TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gY29udGV4dE1hcCgpLmFkZChjb250ZXh0LCB0aGlzKTsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwpAQCAtOTYsNiAr
OTgsMTAgQEAgRXdrQ29udGV4dDo6RXdrQ29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dCkKIEV3
a0NvbnRleHQ6On5Fd2tDb250ZXh0KCkKIHsKICAgICBBU1NFUlQoY29udGV4dE1hcCgpLmdldCht
X2NvbnRleHQuZ2V0KCkpID09IHRoaXMpOworCisgICAgaWYgKG1fanNHbG9iYWxDb250ZXh0KQor
ICAgICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKG1fanNHbG9iYWxDb250ZXh0KTsKKwogICAg
IGNvbnRleHRNYXAoKS5yZW1vdmUobV9jb250ZXh0LmdldCgpKTsKIH0KIApAQCAtMjE0LDYgKzIy
MCwxNSBAQCB2b2lkIEV3a0NvbnRleHQ6OmNsZWFyUmVzb3VyY2VDYWNoZSgpCiAgICAgV0tSZXNv
dXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKFdLQ29udGV4dEdldFJlc291
cmNlQ2FjaGVNYW5hZ2VyKG1fY29udGV4dC5nZXQoKSksIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFy
QWxsKTsKIH0KIAorCitKU0dsb2JhbENvbnRleHRSZWYgRXdrQ29udGV4dDo6anNHbG9iYWxDb250
ZXh0KCkKK3sKKyAgICBpZiAoIW1fanNHbG9iYWxDb250ZXh0KQorICAgICAgICBtX2pzR2xvYmFs
Q29udGV4dCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZSgwKTsKKworICAgIHJldHVybiBtX2pzR2xv
YmFsQ29udGV4dDsKK30KKwogRXdrX0Nvb2tpZV9NYW5hZ2VyKiBld2tfY29udGV4dF9jb29raWVf
bWFuYWdlcl9nZXQoY29uc3QgRXdrX0NvbnRleHQqIGV3a0NvbnRleHQpCiB7CiAgICAgRVdLX09C
Sl9HRVRfSU1QTF9PUl9SRVRVUk4oY29uc3QgRXdrQ29udGV4dCwgZXdrQ29udGV4dCwgaW1wbCwg
MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dF9wcml2YXRlLmgKaW5kZXggNTI1ZDg1OTYwNjY5ZDQ1NmI5Mzk1NjI1MmZlYzdkNzBjYmVm
YjQzZS4uZTIwMjNkMTg5MzNiNDdmZmNhYTE1MjRiYzM0ZTBmMDI0ODlhMTk5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZh
dGUuaApAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNs
dWRlICJld2tfb2JqZWN0X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Nv
bnRleHRSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogI2luY2x1ZGUgPFdlYktp
dDIvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC04NSw2ICs4Niw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZUNhY2hlKCk7CiAKKyAgICBKU0ds
b2JhbENvbnRleHRSZWYganNHbG9iYWxDb250ZXh0KCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgRXdrQ29udGV4dChXS0NvbnRleHRSZWYpOwogCkBAIC0xMDYsNiArMTA5LDggQEAgcHJpdmF0
ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpSZXF1ZXN0TWFuYWdlckNsaWVudEVmbD4g
bV9yZXF1ZXN0TWFuYWdlckNsaWVudDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkNv
bnRleHRIaXN0b3J5Q2xpZW50RWZsPiBtX2hpc3RvcnlDbGllbnQ7CisKKyAgICBKU0dsb2JhbENv
bnRleHRSZWYgbV9qc0dsb2JhbENvbnRleHQ7CiB9OwogCiAjZW5kaWYgLy8gZXdrX2NvbnRleHRf
cHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAKaW5kZXggMWIwOWExYWY1M2MxZTE1NGJkZTk5MWFkMTNiZWQ2ODQ5MDM1NTMwMS4uZGYxYTE4
Y2E4ZTJiYWIzYjk2NmE2OTJjYmNjODU3MGZkM2Q2Y2M2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1
ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzX3ByaXZhdGUuaCIKICNp
bmNsdWRlIDxFY29yZV9FdmFzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQVBJQ2FzdC5oPgogI2luY2x1ZGUgPFdlYktpdDIv
V0tEYXRhLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0VpbmFTaGFyZWRTdHJpbmcuaD4KQEAgLTQ3
LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLSW5zcGVjdG9yLmg+CiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4K
KyNpbmNsdWRlIDxXZWJLaXQyL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS1N0cmluZy5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tVUkwuaD4KICNpbmNsdWRl
IDxXZWJLaXQyL1dLVmlldy5oPgpAQCAtNjI1LDMgKzYyNyw1NCBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc291cmNlX21vZGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiAgICAgcmV0
dXJuIFdLVmlld0dldFNob3dzQXNTb3VyY2UoaW1wbC0+d2tWaWV3KCkpOwogfQorCitzdHJ1Y3Qg
RXdrX1ZpZXdfU2NyaXB0X0V4ZWN1dGVfQ2FsbGJhY2tfQ29udGV4dCB7CisgICAgRXdrX1ZpZXdf
U2NyaXB0X0V4ZWN1dGVfQ2FsbGJhY2tfQ29udGV4dChFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9D
YiBjYWxsYmFjaywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIHVzZXJEYXRhKQorICAgICAg
ICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgICAgICwgbV92aWV3KGV3a1ZpZXcpCisgICAg
ICAgICwgbV91c2VyRGF0YSh1c2VyRGF0YSkKKyAgICB7CisgICAgfQorCisgICAgRXdrX1ZpZXdf
U2NyaXB0X0V4ZWN1dGVfQ2IgbV9jYWxsYmFjazsKKyAgICBFdmFzX09iamVjdCogbV92aWV3Owor
ICAgIHZvaWQqIG1fdXNlckRhdGE7Cit9OworCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0Q2Fs
bGJhY2soV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYg
ZXJyb3IsIHZvaWQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQpOworCisgICAgaWYg
KGVycm9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNhbGxiYWNrQ29udGV4dCA9IHN0
ZDo6dW5pcXVlX3B0cjxFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFja19Db250ZXh0Pihz
dGF0aWNfY2FzdDxFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFja19Db250ZXh0Kj4oY29u
dGV4dCkpOworICAgIEFTU0VSVChjYWxsYmFja0NvbnRleHQtPm1fdmlldyk7CisKKyAgICBpZiAo
IWNhbGxiYWNrQ29udGV4dC0+bV9jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KHNjcmlwdFZhbHVlKSB7CisgICAgICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihjYWxs
YmFja0NvbnRleHQtPm1fdmlldywgaW1wbCk7CisgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlZiBq
c0dsb2JhbENvbnRleHQgPSBpbXBsLT5ld2tDb250ZXh0KCktPmpzR2xvYmFsQ29udGV4dCgpOwor
CisgICAgICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZURlc2Vy
aWFsaXplKHNjcmlwdFZhbHVlLCBqc0dsb2JhbENvbnRleHQsIDApOworICAgICAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4ganNTdHJpbmdWYWx1ZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29w
eShqc0dsb2JhbENvbnRleHQsIHZhbHVlLCAwKSk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBK
U1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoanNTdHJpbmdWYWx1ZS5nZXQoKSk7Cisg
ICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGxlbmd0aCk7Cisg
ICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoanNTdHJpbmdWYWx1ZS5nZXQoKSwgYnVmZmVy
LmdldCgpLCBsZW5ndGgpOworICAgICAgICBjYWxsYmFja0NvbnRleHQtPm1fY2FsbGJhY2soY2Fs
bGJhY2tDb250ZXh0LT5tX3ZpZXcsIGJ1ZmZlci5nZXQoKSwgY2FsbGJhY2tDb250ZXh0LT5tX3Vz
ZXJEYXRhKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbGJhY2tDb250ZXh0LT5tX2NhbGxiYWNr
KGNhbGxiYWNrQ29udGV4dC0+bV92aWV3LCAwLCBjYWxsYmFja0NvbnRleHQtPm1fdXNlckRhdGEp
OworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGNvbnN0IGNoYXIqIHNjcmlwdCwgRXdrX1ZpZXdfU2NyaXB0X0V4ZWN1dGVfQ2IgY2Fs
bGJhY2ssIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBpbXBsLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNjcmlwdCwgZmFsc2UpOworCisgICAgRXdrX1ZpZXdfU2NyaXB0X0V4ZWN1dGVfQ2FsbGJh
Y2tfQ29udGV4dCogY29udGV4dCA9IG5ldyBFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFj
a19Db250ZXh0KGNhbGxiYWNrLCBld2tWaWV3LCB1c2VyRGF0YSk7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHNjcmlwdFN0cmluZyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhzY3JpcHQpKTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoaW1w
bC0+d2tQYWdlKCksIHNjcmlwdFN0cmluZy5nZXQoKSwgY29udGV4dCwgcnVuSmF2YVNjcmlwdENh
bGxiYWNrKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDI0NGU0MzcwYTNhZWU4YWFhOTViOTE1M2ZhYWMxZWUy
ZjE2OGY0MjguLmJiOTY2NWY1ZGM0MTJkMTA4NjAxZjBjZjhhZjhmOTNkODkwNWNlNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMjc5LDYgKzI3
OSwxMiBAQCB0eXBlZGVmIGVudW0gewogfSBFd2tfUGFnaW5hdGlvbl9Nb2RlOwogCiAvKioKKyAq
IEB0eXBlZGVmIEV3a19WaWV3X1NjcmlwdF9FeGVjdXRlX0NiIEV3a19WaWV3X1NjcmlwdF9FeGVj
dXRlX0NiCisgKiBAYnJpZWYgQ2FsbGJhY2sgdHlwZSBmb3IgdXNlIHdpdGggZXdrX3ZpZXdfc2Ny
aXB0X2V4ZWN1dGUoKQorICovCit0eXBlZGVmIHZvaWQgKCpFd2tfVmlld19TY3JpcHRfRXhlY3V0
ZV9DYikoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnJldHVybl92YWx1ZSwgdm9pZCAqdXNl
cl9kYXRhKTsKKworLyoqCiAgKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciB0aGUgY2FsbGJhY2sg
ZnVuY3Rpb24gdXNlZCB0byBnZXQgdGhlIHBhZ2UgY29udGVudHMuCiAgKgogICogQHBhcmFtIHR5
cGUgdHlwZSBvZiB0aGUgY29udGVudHMKQEAgLTg4NCw2ICs4OTAsMjAgQEAgRUFQSSBFaW5hX0Jv
b2wgZXdrX3ZpZXdfc291cmNlX21vZGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5h
YmxlZCk7CiAgKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3NvdXJjZV9tb2RlX2dldChjb25z
dCBFdmFzX09iamVjdCAqbyk7CiAKKy8qKgorICogUmVxdWVzdHMgZXhlY3V0aW9uIG9mIHRoZSBn
aXZlbiBzY3JpcHQuCisgKgorICogVGhlIHJlc3VsdCB2YWx1ZSBmb3IgdGhlIGV4ZWN1dGlvbiBj
YW4gYmUgcmV0cmlldmVkIGZyb20gdGhlIGFzeW5jaHJvbm91cyBjYWxsYmFjay4KKyAqCisgKiBA
cGFyYW0gbyBUaGUgdmlldyB0byBleGVjdXRlIHNjcmlwdAorICogQHBhcmFtIHNjcmlwdCBKYXZh
U2NyaXB0IHRvIGV4ZWN1dGUKKyAqIEBwYXJhbSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdG8gY2Fs
bCB3aGVuIHRoZSBleGVjdXRpb24gaXMgY29tcGxldGVkLCBtYXkgYmUgQGMgTlVMTAorICogQHBh
cmFtIHVzZXJfZGF0YSBVc2VyIGRhdGEsIG1heSBiZSBAYyBOVUxMCisgKgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqLwor
RUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUoRXZhc19PYmplY3QgKm8sIGNv
bnN0IGNoYXIgKnNjcmlwdCwgRXdrX1ZpZXdfU2NyaXB0X0V4ZWN1dGVfQ2IgY2FsbGJhY2ssIHZv
aWQgKnVzZXJfZGF0YSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
dmlldy5jcHAKaW5kZXggYzFlYmY0YzAwNTAxYmU1OWUyZWRjM2UxZjJiY2FiYjg1MTBjNmEzMC4u
OTBjYWEyNzgyZDhmMzRiNzljNzExNTEzOGMxODU0NThjZjgzYTJmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3
LmNwcApAQCAtMzAsNiArMzAsNyBAQCBleHRlcm4gRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQqIGVu
dmlyb25tZW50OwogCiBzdGF0aWMgYm9vbCBmdWxsU2NyZWVuQ2FsbGJhY2tDYWxsZWQ7CiBzdGF0
aWMgYm9vbCBvYnRhaW5lZFBhZ2VDb250ZW50cyA9IGZhbHNlOworc3RhdGljIGJvb2wgc2NyaXB0
RXhlY3V0ZUNhbGxiYWNrQ2FsbGVkOwogCiBzdGF0aWMgc3RydWN0IHsKICAgICBjb25zdCBjaGFy
KiBleHBlY3RlZE1lc3NhZ2U7CkBAIC0xMDI5LDMgKzEwMzAsNTMgQEAgVEVTVF9GKEVXSzJWaWV3
VGVzdCwgZXdrX3ZpZXdfdXNlcl9hZ2VudCkKICAgICBBU1NFUlRfU1RSRVEoZGVmYXVsdFVzZXJB
Z2VudCwgZXdrX3ZpZXdfdXNlcl9hZ2VudF9nZXQod2ViVmlldygpKSk7CiAgICAgZWluYV9zdHJp
bmdzaGFyZV9kZWwoZGVmYXVsdFVzZXJBZ2VudCk7CiB9CisKK3N0YXRpYyB2b2lkIHNjcmlwdEV4
ZWN1dGVDYWxsYmFjayhFdmFzX09iamVjdCosIGNvbnN0IGNoYXIqIHJldHVyblZhbHVlLCB2b2lk
KiB1c2VyRGF0YSkKK3sKKyAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RWlu
YV9TdHJidWYqPih1c2VyRGF0YSk7CisgICAgZWluYV9zdHJidWZfcmVzZXQoYnVmZmVyKTsKKwor
ICAgIGlmIChyZXR1cm5WYWx1ZSkKKyAgICAgICAgZWluYV9zdHJidWZfYXBwZW5kKGJ1ZmZlciwg
cmV0dXJuVmFsdWUpOworCisgICAgc2NyaXB0RXhlY3V0ZUNhbGxiYWNrQ2FsbGVkID0gdHJ1ZTsK
K30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X3NjcmlwdF9leGVjdXRlKQor
eworICAgIGNvbnN0IGNoYXIgc2NyaXB0RXhlY3V0ZUhUTUxbXSA9CisgICAgICAgICI8IURPQ1RZ
UEUgaHRtbD4iCisgICAgICAgICI8Ym9keT4iCisgICAgICAgICI8cCBpZD1cIlRlc3RDb250ZW50
XCI+dGVzdCBjb250ZW50PC9wPiIKKyAgICAgICAgIjwvYm9keT4iOworCisgICAgZXdrX3ZpZXdf
aHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHNjcmlwdEV4ZWN1dGVIVE1MLCAwLCAwKTsKKyAg
ICBBU1NFUlRfVFJVRSh3YWl0VW50aWxMb2FkRmluaXNoZWQoKSk7CisKKyAgICBFaW5hX1N0cmJ1
ZiogcmVzdWx0ID0gZWluYV9zdHJidWZfbmV3KCk7CisKKyAgICAvLyAxLiBHZXQgdGhlIGlubmVy
SFRNTCBmb3IgIlRlc3RDb250ZW50IgorICAgIGNvbnN0IGNoYXIgZ2V0RGF0YVNjcmlwdFtdID0K
KyAgICAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1Rlc3RDb250ZW50JykuaW5uZXJIVE1MIjsK
KworICAgIHNjcmlwdEV4ZWN1dGVDYWxsYmFja0NhbGxlZCA9IGZhbHNlOworICAgIEFTU0VSVF9U
UlVFKGV3a192aWV3X3NjcmlwdF9leGVjdXRlKHdlYlZpZXcoKSwgZ2V0RGF0YVNjcmlwdCwgc2Ny
aXB0RXhlY3V0ZUNhbGxiYWNrLCBzdGF0aWNfY2FzdDx2b2lkKj4ocmVzdWx0KSkpOworICAgIHdh
aXRVbnRpbFRydWUoc2NyaXB0RXhlY3V0ZUNhbGxiYWNrQ2FsbGVkKTsKKyAgICBBU1NFUlRfU1RS
RVEoInRlc3QgY29udGVudCIsIGVpbmFfc3RyYnVmX3N0cmluZ19nZXQocmVzdWx0KSk7CisKKyAg
ICAvLyAyLiBDaGFuZ2UgdGhlIGlubmVySFRNTCBmb3IgIlRlc3RDb250ZW50IgorICAgIGNvbnN0
IGNoYXIgY2hhbmdlRGF0YVNjcmlwdFtdID0KKyAgICAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J1Rlc3RDb250ZW50JykuaW5uZXJIVE1MID0gXCJ0ZXN0XCI7IjsKKyAgICBBU1NFUlRfVFJVRShl
d2tfdmlld19zY3JpcHRfZXhlY3V0ZSh3ZWJWaWV3KCksIGNoYW5nZURhdGFTY3JpcHQsIDAsIDAp
KTsKKworICAgIC8vIDMuIENoZWNrIHRoZSBjaGFuZ2Ugb2YgdGhlIGlubmVySFRNTC4KKyAgICBl
aW5hX3N0cmJ1Zl9yZXNldChyZXN1bHQpOworICAgIHNjcmlwdEV4ZWN1dGVDYWxsYmFja0NhbGxl
ZCA9IGZhbHNlOworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X3NjcmlwdF9leGVjdXRlKHdlYlZp
ZXcoKSwgZ2V0RGF0YVNjcmlwdCwgc2NyaXB0RXhlY3V0ZUNhbGxiYWNrLCBzdGF0aWNfY2FzdDx2
b2lkKj4ocmVzdWx0KSkpOworICAgIHdhaXRVbnRpbFRydWUoc2NyaXB0RXhlY3V0ZUNhbGxiYWNr
Q2FsbGVkKTsKKyAgICBBU1NFUlRfU1RSRVEoInRlc3QiLCBlaW5hX3N0cmJ1Zl9zdHJpbmdfZ2V0
KHJlc3VsdCkpOworCisgICAgZWluYV9zdHJidWZfZnJlZShyZXN1bHQpOworCisgICAgQVNTRVJU
X0ZBTFNFKGV3a192aWV3X3NjcmlwdF9leGVjdXRlKHdlYlZpZXcoKSwgMCwgMCwgMCkpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220675</attachid>
            <date>2014-01-08 16:46:38 -0800</date>
            <delta_ts>2014-01-08 17:03:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101904-20140109094636.patch</filename>
            <type>text/plain</type>
            <size>11412</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxNTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2EzNWM4OTA3MmFiMGEz
ZjdmOTRjNWUyZjA2NzE5YWRjOWFjYTMwNy4uOTc3NGJmNzI4OWY5ZDdjM2ZmZGNhYzdjNDNjZjdk
NzNmZWU1YmI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE0LTAxLTA4ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBBUEkgdG8gZXhlY3V0ZSBqcyBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTkwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBld2tfdmlld19zY3JpcHRfZXhlY3V0ZSgpIHdoaWNoIHBy
b3ZpZGVzIGEgd2F5IHRvIGV4ZWN1dGUgdXNlcgorICAgICAgICBzY3JpcHQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIEFkZGVkIEpTIEds
b2JhbCBDb250ZXh0YSB3aGljaCBpcyByZXF1aXJlZCB0byBkZXNlcmlhbGl6ZSB0byB0aGUgc2Ny
aXB0CisgICAgICAgIHZhbHVlIGZyb20gdGhlIGNhbGxiYWNrLgorICAgICAgICAoRXdrQ29udGV4
dDo6RXdrQ29udGV4dCk6CisgICAgICAgIChFd2tDb250ZXh0Ojp+RXdrQ29udGV4dCk6CisgICAg
ICAgIChFd2tDb250ZXh0Ojpqc0dsb2JhbENvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHA6CisgICAgICAgIChFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFj
a19Db250ZXh0OjpFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFja19Db250ZXh0KToKKyAg
ICAgICAgKHJ1bkphdmFTY3JpcHRDYWxsYmFjayk6CisgICAgICAgIChld2tfdmlld19zY3JpcHRf
ZXhlY3V0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6CisgICAgICAg
IEFkZGVkIHVuaXQgdGVzdCBmb3IgZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUuCisgICAgICAgIChz
Y3JpcHRFeGVjdXRlQ2FsbGJhY2spOgorICAgICAgICAoVEVTVF9GKToKKwogMjAxNC0wMS0wOCAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBXVEY6
OlN0cmluZ1ZpZXcgYW5kIHVzZSBpdCBmb3IgZ3JhbW1hciBjaGVja2luZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCmluZGV4IGY0ZGExZWFj
ZDAwOGQ2MWM3YTM5MWE4NWQxYTEwNjkyYTIzNmYxOTkuLmQ4ZTQ4ZDlkODBjY2JkMzU2YWM3ZTRl
ZmI0M2E1MGYyOGZkYzc3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJld2tfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19zdG9yYWdlX21hbmFnZXJfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ29udGV4dFJlZi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KQEAgLTcyLDYgKzczLDcgQEAgRXdrQ29udGV4dDo6RXdrQ29udGV4dChXS0NvbnRleHRSZWYg
Y29udGV4dCkKICAgICAsIG1fZG93bmxvYWRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8RG93bmxv
YWRNYW5hZ2VyRWZsPihjb250ZXh0KSkKICAgICAsIG1fcmVxdWVzdE1hbmFnZXJDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxSZXF1ZXN0TWFuYWdlckNsaWVudEVmbD4oY29udGV4dCkpCiAgICAgLCBt
X2hpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0SGlzdG9yeUNsaWVudEVmbD4o
Y29udGV4dCkpCisgICAgLCBtX2pzR2xvYmFsQ29udGV4dChudWxscHRyKQogewogICAgIENvbnRl
eHRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBjb250ZXh0TWFwKCkuYWRkKGNvbnRleHQsIHRoaXMp
OwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CkBAIC05Niw2
ICs5OCwxMCBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQog
RXdrQ29udGV4dDo6fkV3a0NvbnRleHQoKQogewogICAgIEFTU0VSVChjb250ZXh0TWFwKCkuZ2V0
KG1fY29udGV4dC5nZXQoKSkgPT0gdGhpcyk7CisKKyAgICBpZiAobV9qc0dsb2JhbENvbnRleHQp
CisgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UobV9qc0dsb2JhbENvbnRleHQpOworCiAg
ICAgY29udGV4dE1hcCgpLnJlbW92ZShtX2NvbnRleHQuZ2V0KCkpOwogfQogCkBAIC0yMTQsNiAr
MjIwLDE1IEBAIHZvaWQgRXdrQ29udGV4dDo6Y2xlYXJSZXNvdXJjZUNhY2hlKCkKICAgICBXS1Jl
c291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tDb250ZXh0R2V0UmVz
b3VyY2VDYWNoZU1hbmFnZXIobV9jb250ZXh0LmdldCgpKSwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xl
YXJBbGwpOwogfQogCisKK0pTR2xvYmFsQ29udGV4dFJlZiBFd2tDb250ZXh0Ojpqc0dsb2JhbENv
bnRleHQoKQoreworICAgIGlmICghbV9qc0dsb2JhbENvbnRleHQpCisgICAgICAgIG1fanNHbG9i
YWxDb250ZXh0ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlKDApOworCisgICAgcmV0dXJuIG1fanNH
bG9iYWxDb250ZXh0OworfQorCiBFd2tfQ29va2llX01hbmFnZXIqIGV3a19jb250ZXh0X2Nvb2tp
ZV9tYW5hZ2VyX2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4dCkKIHsKICAgICBFV0tf
T0JKX0dFVF9JTVBMX09SX1JFVFVSTihjb25zdCBFd2tDb250ZXh0LCBld2tDb250ZXh0LCBpbXBs
LCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0X3ByaXZhdGUuaAppbmRleCA1MjVkODU5NjA2NjlkNDU2YjkzOTU2MjUyZmVjN2Q3MGNi
ZWZiNDNlLi5lMjAyM2QxODkzM2I0N2ZmY2FhMTUyNGJjMzRlMGYwMjQ4OWExOTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJp
dmF0ZS5oCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2lu
Y2x1ZGUgImV3a19vYmplY3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q29udGV4dFJlZi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTg1LDYgKzg2
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhclJlc291cmNlQ2FjaGUoKTsKIAorICAgIEpT
R2xvYmFsQ29udGV4dFJlZiBqc0dsb2JhbENvbnRleHQoKTsKKwogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBFd2tDb250ZXh0KFdLQ29udGV4dFJlZik7CiAKQEAgLTEwNiw2ICsxMDksOCBAQCBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
PiBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6
Q29udGV4dEhpc3RvcnlDbGllbnRFZmw+IG1faGlzdG9yeUNsaWVudDsKKworICAgIEpTR2xvYmFs
Q29udGV4dFJlZiBtX2pzR2xvYmFsQ29udGV4dDsKIH07CiAKICNlbmRpZiAvLyBld2tfY29udGV4
dF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcAppbmRleCAxYjA5YTFhZjUzYzFlMTU0YmRlOTkxYWQxM2JlZDY4NDkwMzU1MzAxLi42M2Jh
ZmNhMWIyMTg1ZmZiNTZiNjYzY2QzZjU0NGQwM2EyODRkZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3NfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tBUElDYXN0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0
Mi9XS0RhdGEuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLRWluYVNoYXJlZFN0cmluZy5oPgpAQCAt
NDcsNiArNDgsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tJbnNwZWN0b3IuaD4KICNpbmNsdWRl
IDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRl
IDxXZWJLaXQyL1dLU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTC5oPgogI2luY2x1
ZGUgPFdlYktpdDIvV0tWaWV3Lmg+CkBAIC02MjUsMyArNjI3LDUxIEBAIEVpbmFfQm9vbCBld2tf
dmlld19zb3VyY2VfbW9kZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKICAgICBy
ZXR1cm4gV0tWaWV3R2V0U2hvd3NBc1NvdXJjZShpbXBsLT53a1ZpZXcoKSk7CiB9CisKK3N0cnVj
dCBFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFja19Db250ZXh0IHsKKyAgICBFd2tfVmll
d19TY3JpcHRfRXhlY3V0ZV9DYWxsYmFja19Db250ZXh0KEV3a19WaWV3X1NjcmlwdF9FeGVjdXRl
X0NiIGNhbGxiYWNrLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogdXNlckRhdGEpCisgICAg
ICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgLCBtX3ZpZXcoZXdrVmlldykKKyAg
ICAgICAgLCBtX3VzZXJEYXRhKHVzZXJEYXRhKQorICAgIHsKKyAgICB9CisKKyAgICBFd2tfVmll
d19TY3JpcHRfRXhlY3V0ZV9DYiBtX2NhbGxiYWNrOworICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7
CisgICAgdm9pZCogbV91c2VyRGF0YTsKK307CisKK3N0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRD
YWxsYmFjayhXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzY3JpcHRWYWx1ZSwgV0tFcnJvclJl
Ziwgdm9pZCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dCk7CisKKyAgICBhdXRvIGNh
bGxiYWNrQ29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9D
YWxsYmFja19Db250ZXh0PihzdGF0aWNfY2FzdDxFd2tfVmlld19TY3JpcHRfRXhlY3V0ZV9DYWxs
YmFja19Db250ZXh0Kj4oY29udGV4dCkpOworICAgIEFTU0VSVChjYWxsYmFja0NvbnRleHQtPm1f
dmlldyk7CisKKyAgICBpZiAoIWNhbGxiYWNrQ29udGV4dC0+bV9jYWxsYmFjaykKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKHNjcmlwdFZhbHVlKSB7CisgICAgICAgIEVXS19WSUVXX0lNUExf
R0VUX09SX1JFVFVSTihjYWxsYmFja0NvbnRleHQtPm1fdmlldywgaW1wbCk7CisgICAgICAgIEpT
R2xvYmFsQ29udGV4dFJlZiBqc0dsb2JhbENvbnRleHQgPSBpbXBsLT5ld2tDb250ZXh0KCktPmpz
R2xvYmFsQ29udGV4dCgpOworCisgICAgICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBXS1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZURlc2VyaWFsaXplKHNjcmlwdFZhbHVlLCBqc0dsb2JhbENvbnRleHQsIDAp
OworICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4ganNTdHJpbmdWYWx1ZShBZG9wdCwg
SlNWYWx1ZVRvU3RyaW5nQ29weShqc0dsb2JhbENvbnRleHQsIHZhbHVlLCAwKSk7CisgICAgICAg
IHNpemVfdCBsZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoanNTdHJp
bmdWYWx1ZS5nZXQoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxj
aGFyW10+KGxlbmd0aCk7CisgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoanNTdHJpbmdW
YWx1ZS5nZXQoKSwgYnVmZmVyLmdldCgpLCBsZW5ndGgpOworICAgICAgICBjYWxsYmFja0NvbnRl
eHQtPm1fY2FsbGJhY2soY2FsbGJhY2tDb250ZXh0LT5tX3ZpZXcsIGJ1ZmZlci5nZXQoKSwgY2Fs
bGJhY2tDb250ZXh0LT5tX3VzZXJEYXRhKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbGJhY2tD
b250ZXh0LT5tX2NhbGxiYWNrKGNhbGxiYWNrQ29udGV4dC0+bV92aWV3LCAwLCBjYWxsYmFja0Nv
bnRleHQtPm1fdXNlckRhdGEpOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1
dGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHNjcmlwdCwgRXdrX1ZpZXdfU2Ny
aXB0X0V4ZWN1dGVfQ2IgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEVXS19WSUVX
X0lNUExfR0VUX09SX1JFVFVSTihld2tWaWV3LCBpbXBsLCBmYWxzZSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNjcmlwdCwgZmFsc2UpOworCisgICAgRXdrX1ZpZXdfU2Ny
aXB0X0V4ZWN1dGVfQ2FsbGJhY2tfQ29udGV4dCogY29udGV4dCA9IG5ldyBFd2tfVmlld19TY3Jp
cHRfRXhlY3V0ZV9DYWxsYmFja19Db250ZXh0KGNhbGxiYWNrLCBld2tWaWV3LCB1c2VyRGF0YSk7
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNjcmlwdFN0cmluZyhBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHQpKTsKKyAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoaW1wbC0+d2tQYWdlKCksIHNjcmlwdFN0cmluZy5nZXQoKSwgY29udGV4
dCwgcnVuSmF2YVNjcmlwdENhbGxiYWNrKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDI0NGU0MzcwYTNhZWU4
YWFhOTViOTE1M2ZhYWMxZWUyZjE2OGY0MjguLmJiOTY2NWY1ZGM0MTJkMTA4NjAxZjBjZjhhZjhm
OTNkODkwNWNlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaApAQCAtMjc5LDYgKzI3OSwxMiBAQCB0eXBlZGVmIGVudW0gewogfSBFd2tfUGFnaW5hdGlv
bl9Nb2RlOwogCiAvKioKKyAqIEB0eXBlZGVmIEV3a19WaWV3X1NjcmlwdF9FeGVjdXRlX0NiIEV3
a19WaWV3X1NjcmlwdF9FeGVjdXRlX0NiCisgKiBAYnJpZWYgQ2FsbGJhY2sgdHlwZSBmb3IgdXNl
IHdpdGggZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUoKQorICovCit0eXBlZGVmIHZvaWQgKCpFd2tf
Vmlld19TY3JpcHRfRXhlY3V0ZV9DYikoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnJldHVy
bl92YWx1ZSwgdm9pZCAqdXNlcl9kYXRhKTsKKworLyoqCiAgKiBDcmVhdGVzIGEgdHlwZSBuYW1l
IGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdXNlZCB0byBnZXQgdGhlIHBhZ2UgY29udGVudHMu
CiAgKgogICogQHBhcmFtIHR5cGUgdHlwZSBvZiB0aGUgY29udGVudHMKQEAgLTg4NCw2ICs4OTAs
MjAgQEAgRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfc291cmNlX21vZGVfc2V0KEV2YXNfT2JqZWN0
ICpvLCBFaW5hX0Jvb2wgZW5hYmxlZCk7CiAgKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3Nv
dXJjZV9tb2RlX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAKKy8qKgorICogUmVxdWVzdHMg
ZXhlY3V0aW9uIG9mIHRoZSBnaXZlbiBzY3JpcHQuCisgKgorICogVGhlIHJlc3VsdCB2YWx1ZSBm
b3IgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlIGFzeW5jaHJvbm91cyBj
YWxsYmFjay4KKyAqCisgKiBAcGFyYW0gbyBUaGUgdmlldyB0byBleGVjdXRlIHNjcmlwdAorICog
QHBhcmFtIHNjcmlwdCBKYXZhU2NyaXB0IHRvIGV4ZWN1dGUKKyAqIEBwYXJhbSBjYWxsYmFjayBU
aGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBleGVjdXRpb24gaXMgY29tcGxldGVkLCBtYXkg
YmUgQGMgTlVMTAorICogQHBhcmFtIHVzZXJfZGF0YSBVc2VyIGRhdGEsIG1heSBiZSBAYyBOVUxM
CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNF
IG9uIGZhaWx1cmUKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUo
RXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnNjcmlwdCwgRXdrX1ZpZXdfU2NyaXB0X0V4ZWN1
dGVfQ2IgY2FsbGJhY2ssIHZvaWQgKnVzZXJfZGF0YSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKaW5kZXggZmVmMzFmMDkyNWQ3NTBhNmI5MDY5MTE1
MTI4MTljYTcxN2M5NjY0YS4uOWZjMTRjYjYxYTg1NWY1ODlhMzI1NDI2NGVkOTlkYzUwNGE5ZTNk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtMzAsNiArMzAsNyBAQCBleHRlcm4gRVdLMlVuaXRU
ZXN0RW52aXJvbm1lbnQqIGVudmlyb25tZW50OwogCiBzdGF0aWMgYm9vbCBmdWxsU2NyZWVuQ2Fs
bGJhY2tDYWxsZWQ7CiBzdGF0aWMgYm9vbCBvYnRhaW5lZFBhZ2VDb250ZW50cyA9IGZhbHNlOwor
c3RhdGljIGJvb2wgc2NyaXB0RXhlY3V0ZUNhbGxiYWNrQ2FsbGVkOwogCiBzdGF0aWMgc3RydWN0
IHsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZE1lc3NhZ2U7CkBAIC0xMDMzLDMgKzEwMzQsNTIg
QEAgVEVTVF9GKEVXSzJWaWV3VGVzdCwgZXdrX3ZpZXdfdXNlcl9hZ2VudCkKICAgICBBU1NFUlRf
U1RSRVEoZGVmYXVsdFVzZXJBZ2VudCwgZXdrX3ZpZXdfdXNlcl9hZ2VudF9nZXQod2ViVmlldygp
KSk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoZGVmYXVsdFVzZXJBZ2VudCk7CiB9CisKK3N0
YXRpYyB2b2lkIHNjcmlwdEV4ZWN1dGVDYWxsYmFjayhFdmFzX09iamVjdCosIGNvbnN0IGNoYXIq
IHJldHVyblZhbHVlLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBFaW5hX1N0cmJ1ZiogYnVmZmVy
ID0gc3RhdGljX2Nhc3Q8RWluYV9TdHJidWYqPih1c2VyRGF0YSk7CisgICAgZWluYV9zdHJidWZf
cmVzZXQoYnVmZmVyKTsKKworICAgIGlmIChyZXR1cm5WYWx1ZSkKKyAgICAgICAgZWluYV9zdHJi
dWZfYXBwZW5kKGJ1ZmZlciwgcmV0dXJuVmFsdWUpOworCisgICAgc2NyaXB0RXhlY3V0ZUNhbGxi
YWNrQ2FsbGVkID0gdHJ1ZTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3
X3NjcmlwdF9leGVjdXRlKQoreworICAgIGNvbnN0IGNoYXIgc2NyaXB0RXhlY3V0ZUhUTUxbXSA9
CisgICAgICAgICI8IURPQ1RZUEUgaHRtbD4iCisgICAgICAgICI8Ym9keT4iCisgICAgICAgICI8
cCBpZD1cIlRlc3RDb250ZW50XCI+dGVzdCBjb250ZW50PC9wPiIKKyAgICAgICAgIjwvYm9keT4i
OworCisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHNjcmlwdEV4ZWN1
dGVIVE1MLCAwLCAwKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxMb2FkRmluaXNoZWQoKSk7
CisKKyAgICBFaW5hX1N0cmJ1ZiogcmVzdWx0ID0gZWluYV9zdHJidWZfbmV3KCk7CisKKyAgICAv
LyAxLiBHZXQgdGhlIGlubmVySFRNTCBmb3IgIlRlc3RDb250ZW50IgorICAgIGNvbnN0IGNoYXIg
Z2V0RGF0YVNjcmlwdFtdID0gImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdUZXN0Q29udGVudCcp
LmlubmVySFRNTCI7CisKKyAgICBzY3JpcHRFeGVjdXRlQ2FsbGJhY2tDYWxsZWQgPSBmYWxzZTsK
KyAgICBBU1NFUlRfVFJVRShld2tfdmlld19zY3JpcHRfZXhlY3V0ZSh3ZWJWaWV3KCksIGdldERh
dGFTY3JpcHQsIHNjcmlwdEV4ZWN1dGVDYWxsYmFjaywgc3RhdGljX2Nhc3Q8dm9pZCo+KHJlc3Vs
dCkpKTsKKyAgICB3YWl0VW50aWxUcnVlKHNjcmlwdEV4ZWN1dGVDYWxsYmFja0NhbGxlZCk7Cisg
ICAgQVNTRVJUX1NUUkVRKCJ0ZXN0IGNvbnRlbnQiLCBlaW5hX3N0cmJ1Zl9zdHJpbmdfZ2V0KHJl
c3VsdCkpOworCisgICAgLy8gMi4gQ2hhbmdlIHRoZSBpbm5lckhUTUwgZm9yICJUZXN0Q29udGVu
dCIKKyAgICBjb25zdCBjaGFyIGNoYW5nZURhdGFTY3JpcHRbXSA9CisgICAgImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdUZXN0Q29udGVudCcpLmlubmVySFRNTCA9IFwidGVzdFwiOyI7CisgICAg
QVNTRVJUX1RSVUUoZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUod2ViVmlldygpLCBjaGFuZ2VEYXRh
U2NyaXB0LCAwLCAwKSk7CisKKyAgICAvLyAzLiBDaGVjayB0aGUgY2hhbmdlIG9mIHRoZSBpbm5l
ckhUTUwuCisgICAgZWluYV9zdHJidWZfcmVzZXQocmVzdWx0KTsKKyAgICBzY3JpcHRFeGVjdXRl
Q2FsbGJhY2tDYWxsZWQgPSBmYWxzZTsKKyAgICBBU1NFUlRfVFJVRShld2tfdmlld19zY3JpcHRf
ZXhlY3V0ZSh3ZWJWaWV3KCksIGdldERhdGFTY3JpcHQsIHNjcmlwdEV4ZWN1dGVDYWxsYmFjaywg
c3RhdGljX2Nhc3Q8dm9pZCo+KHJlc3VsdCkpKTsKKyAgICB3YWl0VW50aWxUcnVlKHNjcmlwdEV4
ZWN1dGVDYWxsYmFja0NhbGxlZCk7CisgICAgQVNTRVJUX1NUUkVRKCJ0ZXN0IiwgZWluYV9zdHJi
dWZfc3RyaW5nX2dldChyZXN1bHQpKTsKKworICAgIGVpbmFfc3RyYnVmX2ZyZWUocmVzdWx0KTsK
KworICAgIEFTU0VSVF9GQUxTRShld2tfdmlld19zY3JpcHRfZXhlY3V0ZSh3ZWJWaWV3KCksIDAs
IDAsIDApKTsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>