<?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>107101</bug_id>
          
          <creation_ts>2013-01-17 00:30:40 -0800</creation_ts>
          <short_desc>[EFL][WK2] Implement pan and flick gesture.</short_desc>
          <delta_ts>2013-09-16 05:50:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102643</dependson>
          <blocked>107631</blocked>
    
    <blocked>111702</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eunmi Lee">enmi.lee</reporter>
          <assigned_to name="Eunmi Lee">enmi.lee</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hugo.lima</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>luciano.wolf</cc>
    
    <cc>luiz</cc>
    
    <cc>marcelo.lira</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>809144</commentid>
    <comment_count>0</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-01-17 00:30:40 -0800</bug_when>
    <thetext>Implement pan gesture to scroll page during touch point is moving on the page,
and flick gesture to scroll page continuously and stop smoothly after pan gesture ends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809153</commentid>
    <comment_count>1</comment_count>
      <attachid>183136</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-01-17 00:41:43 -0800</bug_when>
    <thetext>Created attachment 183136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849799</commentid>
    <comment_count>2</comment_count>
      <attachid>191934</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-06 23:49:36 -0800</bug_when>
    <thetext>Created attachment 191934
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856958</commentid>
    <comment_count>3</comment_count>
      <attachid>191934</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-18 03:43:28 -0700</bug_when>
    <thetext>Comment on attachment 191934
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EasingUtilities.cpp:2
&gt; +/*
&gt; + * Copyright (C) 2001 Robert Penner All rights reserved.

EasingUtilities? why not EasingCurves?

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:969
&gt; +    FloatPoint oldPagePosition = m_pagePosition;
&gt; +    FloatPoint newPagePosition = boundContentsPosition(m_pagePosition + offset);

why not just currentPosition and newPosition

this could sounds as &apos;new page&apos; position instead of new &apos;page position&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856981</commentid>
    <comment_count>4</comment_count>
      <attachid>191934</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-18 04:27:26 -0700</bug_when>
    <thetext>Comment on attachment 191934
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EasingUtilities.cpp:2
&gt;&gt; + * Copyright (C) 2001 Robert Penner All rights reserved.
&gt; 
&gt; EasingUtilities? why not EasingCurves?

I agree that EasingCurves is more accurate than EasingUtilities. I will change the name :)

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:969
&gt;&gt; +    FloatPoint newPagePosition = boundContentsPosition(m_pagePosition + offset);
&gt; 
&gt; why not just currentPosition and newPosition
&gt; 
&gt; this could sounds as &apos;new page&apos; position instead of new &apos;page position&apos;

Yes, it can be confused with new &apos;page position&apos;, I will change the name of variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857000</commentid>
    <comment_count>5</comment_count>
      <attachid>193534</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-18 04:54:35 -0700</bug_when>
    <thetext>Created attachment 193534
Patch

Rebase and Update for comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858131</commentid>
    <comment_count>6</comment_count>
      <attachid>193780</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-19 03:55:11 -0700</bug_when>
    <thetext>Created attachment 193780
Patch

Rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906078</commentid>
    <comment_count>7</comment_count>
      <attachid>206058</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-07-04 01:05:06 -0700</bug_when>
    <thetext>Created attachment 206058
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912388</commentid>
    <comment_count>8</comment_count>
      <attachid>207620</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-07-28 23:45:22 -0700</bug_when>
    <thetext>Created attachment 207620
Patch

Rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912459</commentid>
    <comment_count>9</comment_count>
      <attachid>207646</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-07-29 06:21:50 -0700</bug_when>
    <thetext>Created attachment 207646
Patch

Modify scrollBy() to not use webview().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915397</commentid>
    <comment_count>10</comment_count>
      <attachid>208330</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-08 05:28:46 -0700</bug_when>
    <thetext>Created attachment 208330
Patch

Rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915670</commentid>
    <comment_count>11</comment_count>
      <attachid>208388</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-08 19:09:21 -0700</bug_when>
    <thetext>Created attachment 208388
Patch

Rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915675</commentid>
    <comment_count>12</comment_count>
      <attachid>208389</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-08 19:15:25 -0700</bug_when>
    <thetext>Created attachment 208389
Patch

Rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916165</commentid>
    <comment_count>13</comment_count>
      <attachid>208389</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-08-11 19:41:00 -0700</bug_when>
    <thetext>Comment on attachment 208389
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:160
&gt; +    HistoryItem item = {m_currentPoint, ecore_time_get()};

{ m_currentPoint, ecore_time_get() }; ?

&gt; Source/WebKit2/UIProcess/efl/EasingCurves.cpp:2
&gt; + * Copyright (C) 2001 Robert Penner All rights reserved.

2001 Robert Penner. ? Missing . after Robert Penner.

&gt; Source/WebKit2/UIProcess/efl/EasingCurves.h:33
&gt; +float easeInOutQuad(float time, const float base, const float constant, const unsigned duration);

Could you explain why you need to use this function ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919006</commentid>
    <comment_count>14</comment_count>
      <attachid>208389</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-20 04:05:37 -0700</bug_when>
    <thetext>Comment on attachment 208389
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:160
&gt;&gt; +    HistoryItem item = {m_currentPoint, ecore_time_get()};
&gt; 
&gt; { m_currentPoint, ecore_time_get() }; ?

Yes, I will fix.

&gt;&gt; Source/WebKit2/UIProcess/efl/EasingCurves.cpp:2
&gt;&gt; + * Copyright (C) 2001 Robert Penner All rights reserved.
&gt; 
&gt; 2001 Robert Penner. ? Missing . after Robert Penner.

Thanks, I will add.

&gt;&gt; Source/WebKit2/UIProcess/efl/EasingCurves.h:33
&gt;&gt; +float easeInOutQuad(float time, const float base, const float constant, const unsigned duration);
&gt; 
&gt; Could you explain why you need to use this function ?

The easeInOutQuad function is used for flick.
I want to stop scrolling smoothly - that is flick, and flick with easeInOutQuad graph is looks good than linear graph, so I use that function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919008</commentid>
    <comment_count>15</comment_count>
      <attachid>209181</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-20 04:15:16 -0700</bug_when>
    <thetext>Created attachment 209181
Patch

Update for comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919009</commentid>
    <comment_count>16</comment_count>
      <attachid>209181</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-08-20 04:32:20 -0700</bug_when>
    <thetext>Comment on attachment 209181
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1407
&gt; +        return false;

return (oldPosition != position);

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:79
&gt; +    typedef struct {

why not just &quot;struct HistoryItem&quot;?

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:107
&gt; +        ecore_animator_del(m_panAnimator);

looks like it would be nice to have OwnPtr&lt;Ecore_Animator&gt;

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:165
&gt; +        if (m_firstHistoryItemIndex == m_history.capacity())

how this m_history is supposed to work? from what I see we&apos;re always working with m_history[m_firstHistoryItemIndex] only, how other items are used?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919331</commentid>
    <comment_count>17</comment_count>
      <attachid>209181</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-20 21:36:16 -0700</bug_when>
    <thetext>Comment on attachment 209181
Patch

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

Thanks for comments.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1407
&gt;&gt; +        return false;
&gt; 
&gt; return (oldPosition != position);

That&apos;s simple.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:79
&gt;&gt; +    typedef struct {
&gt; 
&gt; why not just &quot;struct HistoryItem&quot;?

OK, I will modify to &quot;struct HistoryItem&quot;.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:107
&gt;&gt; +        ecore_animator_del(m_panAnimator);
&gt; 
&gt; looks like it would be nice to have OwnPtr&lt;Ecore_Animator&gt;

Yes, that&apos;s good idea. I will make OwnPtr&lt;Ecore_Animator&gt; as a separated patch. :)

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:165
&gt;&gt; +        if (m_firstHistoryItemIndex == m_history.capacity())
&gt; 
&gt; how this m_history is supposed to work? from what I see we&apos;re always working with m_history[m_firstHistoryItemIndex] only, how other items are used?

Yes, m_firstHistoryItemIndex is only used and others are not used.
I want to get oldest item from the m_history (at most 5 points ago) and calculate difference between oldest item and current item, so m_history array is needed.

When I started to implement flick, I thought that I could get more correct velocity if I use older point than point right before current point.
I&apos;ve tested using point right before current point after getting your comment and I could get the reasonable velocity, so I don&apos;t have to maintain the history array.
I will modify codes for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919346</commentid>
    <comment_count>18</comment_count>
      <attachid>209251</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-20 23:06:31 -0700</bug_when>
    <thetext>Created attachment 209251
Patch

Update for comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919347</commentid>
    <comment_count>19</comment_count>
      <attachid>209252</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-20 23:23:59 -0700</bug_when>
    <thetext>Created attachment 209252
Patch

Remove s_historyCapacity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919353</commentid>
    <comment_count>20</comment_count>
      <attachid>209252</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-08-20 23:39:58 -0700</bug_when>
    <thetext>Comment on attachment 209252
Patch

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

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp:117
&gt; +void WebView::setContentPosition(const WebCore::FloatPoint&amp; position)

I think we need to get an agreement from coordinatedgraphics folks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919704</commentid>
    <comment_count>21</comment_count>
      <attachid>209181</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-21 19:12:08 -0700</bug_when>
    <thetext>Comment on attachment 209181
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:107
&gt;&gt;&gt; +        ecore_animator_del(m_panAnimator);
&gt;&gt; 
&gt;&gt; looks like it would be nice to have OwnPtr&lt;Ecore_Animator&gt;
&gt; 
&gt; Yes, that&apos;s good idea. I will make OwnPtr&lt;Ecore_Animator&gt; as a separated patch. :)

Dear Mikhail,

I&apos;ve found patch to stop using smart pointers for Ecore_Timer - https://bugs.webkit.org/show_bug.cgi?id=109409.
Like Ecore_Timer, Ecore_Animator also can become invalid when callback returns ECORE_CALLBACK_CANCEL and crash will occur when OwnPtr calls ecore_animator_del() on an invalid handle.
So, I decide to not make OwnPtr for Ecore_Animator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919722</commentid>
    <comment_count>22</comment_count>
      <attachid>209181</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-21 21:41:19 -0700</bug_when>
    <thetext>Comment on attachment 209181
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:165
&gt;&gt;&gt; +        if (m_firstHistoryItemIndex == m_history.capacity())
&gt;&gt; 
&gt;&gt; how this m_history is supposed to work? from what I see we&apos;re always working with m_history[m_firstHistoryItemIndex] only, how other items are used?
&gt; 
&gt; Yes, m_firstHistoryItemIndex is only used and others are not used.
&gt; I want to get oldest item from the m_history (at most 5 points ago) and calculate difference between oldest item and current item, so m_history array is needed.
&gt; 
&gt; When I started to implement flick, I thought that I could get more correct velocity if I use older point than point right before current point.
&gt; I&apos;ve tested using point right before current point after getting your comment and I could get the reasonable velocity, so I don&apos;t have to maintain the history array.
&gt; I will modify codes for that.

Dear Mikhail,
I&apos;m sorry but I have to modify patch to use history again.
I&apos;ve tested on target device, the flick is sometimes too slow on target even though it is OK in the MiniBrowser.
I think that&apos;s because target is slower than PC, so last two touched point can be got at a time and they are not reliable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919730</commentid>
    <comment_count>23</comment_count>
      <attachid>209325</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-21 22:23:24 -0700</bug_when>
    <thetext>Created attachment 209325
Patch

Modify codes to use history again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919737</commentid>
    <comment_count>24</comment_count>
      <attachid>209252</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-21 22:42:57 -0700</bug_when>
    <thetext>Comment on attachment 209252
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp:117
&gt;&gt; +void WebView::setContentPosition(const WebCore::FloatPoint&amp; position)
&gt; 
&gt; I think we need to get an agreement from coordinatedgraphics folks.

Dear Luciano Wolf and Marcelo Lira,
Could you look at this change?
I modified UIProcess/CoordinatedGraphics/WebView.cpp&apos;s setContentPosition() function in order to check boundary of position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919790</commentid>
    <comment_count>25</comment_count>
    <who name="Luciano Wolf">luciano.wolf</who>
    <bug_when>2013-08-22 04:29:58 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 209252 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=209252&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp:117
&gt; &gt;&gt; +void WebView::setContentPosition(const WebCore::FloatPoint&amp; position)
&gt; &gt; 
&gt; &gt; I think we need to get an agreement from coordinatedgraphics folks.
&gt; 
&gt; Dear Luciano Wolf and Marcelo Lira,
&gt; Could you look at this change?
&gt; I modified UIProcess/CoordinatedGraphics/WebView.cpp&apos;s setContentPosition() function in order to check boundary of position.

Hi. My concern is about panning. Our MiniBrowser allows the user to freely move and only applies the check for boundaries on handlePanningFinished. It relies on WKViewSetContentPosition to do the panning, so it would be restricted by boundaries check during the panning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920085</commentid>
    <comment_count>26</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-22 19:36:10 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; (From update of attachment 209252 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=209252&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp:117
&gt; &gt; &gt;&gt; +void WebView::setContentPosition(const WebCore::FloatPoint&amp; position)
&gt; &gt; &gt; 
&gt; &gt; &gt; I think we need to get an agreement from coordinatedgraphics folks.
&gt; &gt; 
&gt; &gt; Dear Luciano Wolf and Marcelo Lira,
&gt; &gt; Could you look at this change?
&gt; &gt; I modified UIProcess/CoordinatedGraphics/WebView.cpp&apos;s setContentPosition() function in order to check boundary of position.
&gt; 
&gt; Hi. My concern is about panning. Our MiniBrowser allows the user to freely move and only applies the check for boundaries on handlePanningFinished. It relies on WKViewSetContentPosition to do the panning, so it would be restricted by boundaries check during the panning.

Thanks for your answer :)
I understand what you mean.
In the EFL, I want to restrict boundary for panning so, it is better to move boundary checking codes to the EwkView, not WebView.
I will update patch with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920151</commentid>
    <comment_count>27</comment_count>
      <attachid>209443</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-08-23 01:52:24 -0700</bug_when>
    <thetext>Created attachment 209443
Patch

Move boundary checking code to the EwkView from WebView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922429</commentid>
    <comment_count>28</comment_count>
      <attachid>209443</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-08-29 06:24:57 -0700</bug_when>
    <thetext>Comment on attachment 209443
Patch

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

It looks this patch need to be done refactoring a little further.

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:138
&gt; +    gestureHandler-&gt;m_ewkView-&gt;scrollBy(gestureHandler-&gt;m_lastPoint - gestureHandler-&gt;m_currentPoint);

It would be good if you make view() to return m_ewkView.

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:151
&gt; +    m_history.resize(0);

Can&apos;t we reset these variables in handlePanFinished() ? I don&apos;t think we need to keep it until panning is started again.

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:164
&gt; +        m_history[m_firstHistoryItemIndex++] = item;

I wonder if we should use m_firstHistoryItemIndex memeber variable. Can&apos;t we simplify this as below ?

if (m_history.size() &lt; m_history.capacity())
    m_history.append(item)
else
    m_history.clear();

Then, find first item.

const HistoryItem&amp; firstHistoryItem = m_history[m_firstHistoryItemIndex];
=&gt; const HistoryItem&amp; firstHistoryItem = m_history.first();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928190</commentid>
    <comment_count>29</comment_count>
      <attachid>209443</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-09-12 01:05:11 -0700</bug_when>
    <thetext>Comment on attachment 209443
Patch

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

Thanks for review.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:138
&gt;&gt; +    gestureHandler-&gt;m_ewkView-&gt;scrollBy(gestureHandler-&gt;m_lastPoint - gestureHandler-&gt;m_currentPoint);
&gt; 
&gt; It would be good if you make view() to return m_ewkView.

OK, I will make that.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:151
&gt;&gt; +    m_history.resize(0);
&gt; 
&gt; Can&apos;t we reset these variables in handlePanFinished() ? I don&apos;t think we need to keep it until panning is started again.

Yes, it can be moved to the PanFinished().

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:164
&gt;&gt; +        m_history[m_firstHistoryItemIndex++] = item;
&gt; 
&gt; I wonder if we should use m_firstHistoryItemIndex memeber variable. Can&apos;t we simplify this as below ?
&gt; 
&gt; if (m_history.size() &lt; m_history.capacity())
&gt;     m_history.append(item)
&gt; else
&gt;     m_history.clear();
&gt; 
&gt; Then, find first item.
&gt; 
&gt; const HistoryItem&amp; firstHistoryItem = m_history[m_firstHistoryItemIndex];
&gt; =&gt; const HistoryItem&amp; firstHistoryItem = m_history.first();

The m_firstHistoryItemIndex is needed because I want to get the oldest point in the history.
That means, if the history grows as follows:
[10] -&gt; [10, 20] -&gt; [10, 20, 30] -&gt; [10, 20, 30, 40] -&gt; [10, 20, 30, 40, 50].
Until this moment, the m_firstHistoryItemIndex is 0, and I can get &quot;10&quot;.
&quot;60&quot; is added to the history, the m_history can be [60, 20, 30, 40, 50], and m_firstHistoryItemIndex is 1 and the vaule is &quot;20&quot;.

I think the variable name &quot;m_firstHistoryItemIndex&quot; can be confused, so I will change that to &quot;m_oldestHistoryItemIndex&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928197</commentid>
    <comment_count>30</comment_count>
      <attachid>211409</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-09-12 02:08:10 -0700</bug_when>
    <thetext>Created attachment 211409
Patch

Update for Gyuyoung&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928208</commentid>
    <comment_count>31</comment_count>
      <attachid>211409</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-09-12 02:44:58 -0700</bug_when>
    <thetext>Comment on attachment 211409
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1400
&gt; +    FloatPoint newPosition = FloatPoint(oldPosition.x + offset.width(), oldPosition.y + offset.height());

FloatPoint newPosition(oldPosition.x + offset.width(), oldPosition.y + offset.height());

This is not the same thing.

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1412
&gt; +    // If the page position is not changed, notify that using returning value.

// If the page position has not changed, notify the caller using the return value.

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1413
&gt; +    return !(oldPosition == position);

return oldPosition != position;

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:58
&gt; +    void handleFlick(const WebCore::IntSize&amp;);

useless WebCore::

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:72
&gt; +    WebCore::IntPoint m_lastPoint;

Useless WebCore::

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:73
&gt; +    WebCore::IntPoint m_currentPoint;

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:75
&gt; +    Ecore_Animator* m_panAnimator;

Would be nice to use WTF::OwnPtr for this (adding the right specialization if needed)

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:76
&gt; +    Ecore_Animator* m_flickAnimator;

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:77
&gt; +    WebCore::IntSize m_flickOffset;

useless WebCore::

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:82
&gt; +        WebCore::IntPoint point;

useless WebCore::

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:86
&gt; +    unsigned m_oldestHistoryItemIndex;

size_t

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:98
&gt; +    m_history.reserveCapacity(s_historyCapacity);

reserveInitialCapacity()

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:106
&gt; +void GestureHandler::reset()

Can be cleaned up once we use smart pointers

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:205
&gt; +        return false;

Would be nicer to use the EINA equavalent in callback (e.g. *_RENEW)

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:208
&gt; +    return true;

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:214
&gt; +    m_flickIndex = m_flickDuration = 1 / ecore_animator_frametime_get();

m_flickIndex and m_flickDuration are integers, 1/ecore_animator_frametime_get() returns a floating point value. It is likely m_flickIndex and m_flickDuration are always 0, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928209</commentid>
    <comment_count>32</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-09-12 02:45:30 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 211409 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=211409&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1400
&gt; &gt; +    FloatPoint newPosition = FloatPoint(oldPosition.x + offset.width(), oldPosition.y + offset.height());
&gt; 
&gt; FloatPoint newPosition(oldPosition.x + offset.width(), oldPosition.y + offset.height());
&gt; 
&gt; This is not the same thing.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1412
&gt; &gt; +    // If the page position is not changed, notify that using returning value.
&gt; 
&gt; // If the page position has not changed, notify the caller using the return value.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1413
&gt; &gt; +    return !(oldPosition == position);
&gt; 
&gt; return oldPosition != position;
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:58
&gt; &gt; +    void handleFlick(const WebCore::IntSize&amp;);
&gt; 
&gt; useless WebCore::
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:72
&gt; &gt; +    WebCore::IntPoint m_lastPoint;
&gt; 
&gt; Useless WebCore::
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:73
&gt; &gt; +    WebCore::IntPoint m_currentPoint;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:75
&gt; &gt; +    Ecore_Animator* m_panAnimator;
&gt; 
&gt; Would be nice to use WTF::OwnPtr for this (adding the right specialization if needed)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:76
&gt; &gt; +    Ecore_Animator* m_flickAnimator;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:77
&gt; &gt; +    WebCore::IntSize m_flickOffset;
&gt; 
&gt; useless WebCore::
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:82
&gt; &gt; +        WebCore::IntPoint point;
&gt; 
&gt; useless WebCore::
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:86
&gt; &gt; +    unsigned m_oldestHistoryItemIndex;
&gt; 
&gt; size_t
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:98
&gt; &gt; +    m_history.reserveCapacity(s_historyCapacity);
&gt; 
&gt; reserveInitialCapacity()
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:106
&gt; &gt; +void GestureHandler::reset()
&gt; 
&gt; Can be cleaned up once we use smart pointers
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:205
&gt; &gt; +        return false;
&gt; 
&gt; Would be nicer to use the EINA equavalent in callback (e.g. *_RENEW)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:208
&gt; &gt; +    return true;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:214
&gt; &gt; +    m_flickIndex = m_flickDuration = 1 / ecore_animator_frametime_get();
&gt; 
&gt; m_flickIndex and m_flickDuration are integers, 1/ecore_animator_frametime_get() returns a floating point value. It is likely m_flickIndex and m_flickDuration are always 0, right?

I published by mistake, sorry. I am still reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928216</commentid>
    <comment_count>33</comment_count>
      <attachid>211409</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-09-12 02:58:18 -0700</bug_when>
    <thetext>Comment on attachment 211409
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:75
&gt;&gt; +    Ecore_Animator* m_panAnimator;
&gt; 
&gt; Would be nice to use WTF::OwnPtr for this (adding the right specialization if needed)

Nevermind this comment. Since they get destroyed when the callback returns false, using smart pointers is bug prone.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:106
&gt;&gt; +void GestureHandler::reset()
&gt; 
&gt; Can be cleaned up once we use smart pointers

ignore.

&gt; Source/WebKit2/UIProcess/efl/EasingCurves.h:33
&gt; +float easeInOutQuad(float time, const float base, const float constant, const unsigned duration);

No namespace?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928726</commentid>
    <comment_count>34</comment_count>
      <attachid>211409</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-09-13 02:40:37 -0700</bug_when>
    <thetext>Comment on attachment 211409
Patch

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

Thanks for review :)

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1400
&gt;&gt;&gt; +    FloatPoint newPosition = FloatPoint(oldPosition.x + offset.width(), oldPosition.y + offset.height());
&gt;&gt; 
&gt;&gt; FloatPoint newPosition(oldPosition.x + offset.width(), oldPosition.y + offset.height());
&gt;&gt; 
&gt;&gt; This is not the same thing.
&gt; 
&gt; I published by mistake, sorry. I am still reviewing.

Yes, right. I will modify the codes.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1412
&gt;&gt; +    // If the page position is not changed, notify that using returning value.
&gt; 
&gt; // If the page position has not changed, notify the caller using the return value.

Thanks for correction.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1413
&gt;&gt; +    return !(oldPosition == position);
&gt; 
&gt; return oldPosition != position;

I use !(oldPosition == position) because there is no &quot;!=&quot; operator for WKPoint.
Is it better to add &quot;!=&quot; operator to the WKPoint?

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:58
&gt;&gt; +    void handleFlick(const WebCore::IntSize&amp;);
&gt; 
&gt; useless WebCore::

Yes, I will remove all &quot;WebCore::&quot;.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:86
&gt;&gt; +    unsigned m_oldestHistoryItemIndex;
&gt; 
&gt; size_t

I will change that.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:98
&gt;&gt; +    m_history.reserveCapacity(s_historyCapacity);
&gt; 
&gt; reserveInitialCapacity()

Thanks, I will use that.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:205
&gt;&gt; +        return false;
&gt; 
&gt; Would be nicer to use the EINA equavalent in callback (e.g. *_RENEW)

Right. I will use ECORE_CALLBACK_{RENEW, CANCEL}.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:214
&gt;&gt; +    m_flickIndex = m_flickDuration = 1 / ecore_animator_frametime_get();
&gt; 
&gt; m_flickIndex and m_flickDuration are integers, 1/ecore_animator_frametime_get() returns a floating point value. It is likely m_flickIndex and m_flickDuration are always 0, right?

If the FPS is 60, the ecore_animator_frametime_get() returns 1/60 (= 0.016..), so I can get the FPS from &quot;1/ecore_animator_frametime_get()&quot; and convert that value to integer.

&gt;&gt; Source/WebKit2/UIProcess/efl/EasingCurves.h:33
&gt;&gt; +float easeInOutQuad(float time, const float base, const float constant, const unsigned duration);
&gt; 
&gt; No namespace?

I need namespace WebKit :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928728</commentid>
    <comment_count>35</comment_count>
      <attachid>211524</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-09-13 02:46:56 -0700</bug_when>
    <thetext>Created attachment 211524
Patch

Modify for Christophe&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928732</commentid>
    <comment_count>36</comment_count>
      <attachid>211409</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-09-13 02:54:58 -0700</bug_when>
    <thetext>Comment on attachment 211409
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1413
&gt;&gt;&gt; +    return !(oldPosition == position);
&gt;&gt; 
&gt;&gt; return oldPosition != position;
&gt; 
&gt; I use !(oldPosition == position) because there is no &quot;!=&quot; operator for WKPoint.
&gt; Is it better to add &quot;!=&quot; operator to the WKPoint?

Ok, I thought those were FloatPoint. Nevermind then.

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:189
&gt; +    m_history.resize(0);

Shouldn&apos;t this be in the if()? If m_history.isEmpty() then this call is useless.

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:214
&gt;&gt;&gt; +    m_flickIndex = m_flickDuration = 1 / ecore_animator_frametime_get();
&gt;&gt; 
&gt;&gt; m_flickIndex and m_flickDuration are integers, 1/ecore_animator_frametime_get() returns a floating point value. It is likely m_flickIndex and m_flickDuration are always 0, right?
&gt; 
&gt; If the FPS is 60, the ecore_animator_frametime_get() returns 1/60 (= 0.016..), so I can get the FPS from &quot;1/ecore_animator_frametime_get()&quot; and convert that value to integer.

Ok, thanks for clarifying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928736</commentid>
    <comment_count>37</comment_count>
      <attachid>211524</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-09-13 03:00:25 -0700</bug_when>
    <thetext>Comment on attachment 211524
Patch

No big issue for me anymore but I&apos;ll let Gyuyoung review since he started.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928744</commentid>
    <comment_count>38</comment_count>
      <attachid>211524</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-09-13 03:26:05 -0700</bug_when>
    <thetext>Comment on attachment 211524
Patch

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

It looks there is no big issue as well.

&gt; Source/WebKit2/UIProcess/API/efl/GestureRecognizer.cpp:181
&gt; +        const HistoryItem&amp; firstHistoryItem = m_history[m_oldestHistoryItemIndex];

&gt; Until this moment, the m_firstHistoryItemIndex is 0, and I can get &quot;10&quot;. &quot;60&quot; is added to the history, the m_history can be [60, 20, 30, 40, 50], and m_firstHistoryItemIndex is 1 and the vaule is &quot;20&quot;.

Thank you for your explanation. Don&apos;t you need to change *firstHistoryItem* with *oldestHistoryItem* as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929596</commentid>
    <comment_count>39</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-09-16 03:15:13 -0700</bug_when>
    <thetext>Christophe and Gyuyoung, thanks for review :)

I will upload new patch after fixing as follows:
1. check history size before resize.
2. change name first -&gt; oldest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929599</commentid>
    <comment_count>40</comment_count>
      <attachid>211751</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-09-16 03:18:46 -0700</bug_when>
    <thetext>Created attachment 211751
Patch

Update for Christophe and Gyuyoung&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929656</commentid>
    <comment_count>41</comment_count>
      <attachid>211751</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-16 05:50:36 -0700</bug_when>
    <thetext>Comment on attachment 211751
Patch

Clearing flags on attachment: 211751

Committed r155852: &lt;http://trac.webkit.org/changeset/155852&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929657</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-16 05:50:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183136</attachid>
            <date>2013-01-17 00:41:43 -0800</date>
            <delta_ts>2013-03-06 23:49:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130117173842.patch</filename>
            <type>text/plain</type>
            <size>18485</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGJlYjEyYzM5NTdlYmYx
Y2EyOTg3ZDc3NjFmMWNlZDUyN2YyZjdhNC4uZWY3NWM1ODdhNzM1ODdjMjI3NTBjY2FmZDk4YTRh
ZjRjNTM3ZDdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAxLTE3ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFuIGdlc3R1cmUgdG8gc2Nyb2xsIHBh
Z2UgYnkgbW92ZW1lbnQgb2YgcG9pbnQgYW5kIHN0b3AKKyAgICAgICAgc2Nyb2xsaW5nIHNtb290
aGx5IHVzaW5nIGVhc2UtaW4tb3V0LXF1YWQgYWxnb3JpdGhtIGFmdGVyIHRvdWNoZWQKKyAgICAg
ICAgcG9pbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY3JlZW4uCisKKyAgICAgICAgKiBQbGF0Zm9y
bUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6
CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2Nyb2xsQnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChFd2tWaWV3SW1wbCk6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9FYXNpbmdVdGlsaXRpZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKGVhc2VJ
bk91dFF1YWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRWFzaW5nVXRpbGl0aWVzLmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuaDoKKyAgICAgICAg
KFBhZ2VDbGllbnRCYXNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZh
dWx0SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnREZWZhdWx0SW1wbDo6dXBk
YXRlVmlld3BvcnRQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvUGFnZUNsaWVudERlZmF1bHRJbXBsLmg6CisgICAgICAgIChQYWdlQ2xpZW50RGVm
YXVsdEltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50TGVnYWN5SW1wbDo6dXBkYXRlVmlld3Bv
cnRQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudExlZ2FjeUltcGwuaDoKKyAgICAgICAgKFBhZ2VDbGllbnRMZWdhY3lJbXBsKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1Bhbkdlc3R1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGFuR2VzdHVyZUhhbmRsZXI6OlBhbkdlc3R1cmVIYW5kbGVyKToKKyAgICAgICAg
KFdlYktpdDo6UGFuR2VzdHVyZUhhbmRsZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UGFu
R2VzdHVyZUhhbmRsZXI6OnVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhbkdlc3R1cmVIYW5k
bGVyOjplbmQpOgorICAgICAgICAoV2ViS2l0OjpQYW5HZXN0dXJlSGFuZGxlcjo6Y2FuY2VsKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBhbkdlc3R1cmVIYW5kbGVyOjpw
YW5BbmltYXRvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UGFuR2VzdHVyZUhhbmRsZXI6
OnByb2Nlc3NQYW4pOgorICAgICAgICAoV2ViS2l0OjpQYW5HZXN0dXJlSGFuZGxlcjo6c3RhcnRG
bGljayk6CisgICAgICAgIChXZWJLaXQ6OlBhbkdlc3R1cmVIYW5kbGVyOjpmbGlja0FuaW1hdG9y
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpQYW5HZXN0dXJlSGFuZGxlcjo6cHJvY2Vzc0Zs
aWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1Bhbkdlc3R1cmVIYW5kbGVyLmg6CisgICAg
ICAgIChQYW5HZXN0dXJlSGFuZGxlcik6CisKIDIwMTMtMDEtMTQgIEV1bm1pIExlZSAgPGV1bm1p
MTUubGVlQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gUHJvY2VzcyBzaW5nbGUg
dGFwIHVzaW5nIFdlYkV2ZW50OjpHZXN0dXJlU2luZ2xlVGFwLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCBlYzI1OThhMmU1NjJmZmRhM2YwYzliYThhYmNlYzk0YWU2ZjhkOTNkLi5iNzkw
YjhhOWU2ZjJjMzdmNDg2ZTk1ZTNmOGI5MWIzZGFkOGU4YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQpAQCAtODIsNiArODIsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAg
ICBVSVByb2Nlc3MvZWZsL0NvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Eb3dubG9h
ZE1hbmFnZXJFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9FYXNpbmdVdGlsaXRpZXMuY3BwCiAg
ICAgVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRm9y
bUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0dlc3R1cmVIYW5kbGVyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4
IDVhMDZiOWRjMzUyNzg5ZmQ2YjE2YTUzZjM1MTAxMTM1OGI0NDU4ZTcuLmE4Y2NlZmFlNzBkZGIw
MzBlNDNlNzI1ZjRhOTkxMjQ4M2RjNjA5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTg4NCw2ICs4ODQsMjQgQEAgdW5zaWdu
ZWQgbG9uZyBsb25nIEV3a1ZpZXdJbXBsOjppbmZvcm1EYXRhYmFzZVF1b3RhUmVhY2hlZChjb25z
dCBTdHJpbmcmIGRhdGFiYXMKIH0KICNlbmRpZgogCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCitib29sIEV3a1ZpZXdJbXBsOjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7
CisgICAgRmxvYXRQb2ludCBvbGRQYWdlUG9zaXRpb24gPSBtX3BhZ2VQb3NpdGlvbjsKKworICAg
IEludFBvaW50IG5ld1ZpZXdwb3J0UG9zaXRpb24gPSByb3VuZGVkSW50UG9pbnQobV9wYWdlUG9z
aXRpb24pOworICAgIG5ld1ZpZXdwb3J0UG9zaXRpb24ubW92ZShvZmZzZXQpOworICAgIG5ld1Zp
ZXdwb3J0UG9zaXRpb24uc2NhbGUoMSAvIG1fc2NhbGVGYWN0b3IsIDEgLyBtX3NjYWxlRmFjdG9y
KTsKKyAgICBtX3BhZ2VDbGllbnQtPnVwZGF0ZVZpZXdwb3J0UG9zaXRpb24obmV3Vmlld3BvcnRQ
b3NpdGlvbik7CisKKyAgICAvLyBJZiB0aGUgcGFnZSBwb3NpdGlvbiBpcyBub3QgY2hhbmdlZCwg
bm90aWZ5IHRoYXQgdXNpbmcgcmV0dXJuaW5nIHZhbHVlLgorICAgIGlmIChvbGRQYWdlUG9zaXRp
b24gPT0gbV9wYWdlUG9zaXRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOworfQorI2VuZGlmCisKIC8qKgogICogQGludGVybmFsCiAgKiBUaGUgdXJsIG9mIHZp
ZXcgd2FzIGNoYW5nZWQgYnkgdGhlIGZyYW1lIGxvYWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCmluZGV4IDFmNjliYTg2MDE4MTZmN2QwODgz
ZjUwZWNhNGRkNTQ2OTE1MWUzMTIuLjU5YzczZDFkYzJjM2FkMjE5ZjI3MGQ1MzZjNDMxNTlkODQ0
Mjc4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0lt
cGwuaApAQCAtMjExLDYgKzIxMSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UGFnZVBvc2l0
aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fcGFnZVBvc2l0aW9u
ID0gcG9zaXRpb247IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50IHBhZ2VQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVBvc2l0aW9uOyB9CisgICAgYm9vbCBzY3JvbGxCeShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBuZWVkcyBy
ZWZhY3RvcmluZyAoc3BsaXQgY2FsbGJhY2sgaW52b2tlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9FYXNpbmdVdGlsaXRpZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2Y2NmNDZmOTc2
MTVhNjBkYmMzMzY1OTkxN2E4NWNkNTljYThmZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ1V0aWxpdGllcy5jcHAKQEAgLTAsMCArMSw0NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1
dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAgIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisg
KiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLyoKKyAqIFJvYmVydCBQZW5uZXIncyBlYXNpbmcgZXF1YXRpb25zLiBodHRwOi8vd3d3LnJv
YmVydHBlbm5lci5jb20vZWFzaW5nLworICogc3RhdGljIGZ1bmN0aW9uIGVhc2VJbk91dFF1YWQg
KHQ6TnVtYmVyLCBiOk51bWJlciwgYzpOdW1iZXIsIGQ6TnVtYmVyKTpOdW1iZXIgeworICogICAg
IGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0ICsgYjsKKyAqICAgICByZXR1cm4gLWMv
MiAqICgoLS10KSoodC0yKSAtIDEpICsgYjsKKyAqIH0KKyAqLworZmxvYXQgZWFzZUluT3V0UXVh
ZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25zdCBmbG9hdCBjb25zdGFudCwgY29u
c3QgdW5zaWduZWQgZHVyYXRpb24pCit7CisgICAgaWYgKHRpbWUgPiBkdXJhdGlvbiB8fCB0aW1l
IDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoKHRpbWUgLz0gKGR1cmF0aW9uIC8g
MikpIDwgMSkKKyAgICAgICAgcmV0dXJuIChjb25zdGFudCAvIDIpICogdGltZSAqIHRpbWUgKyBi
YXNlOworCisgICAgdGltZSAtPSAxOworICAgIHJldHVybiAtMSAqIChjb25zdGFudCAvIDIpICog
KHRpbWUgKiAodGltZSAtIDIpIC0gMSkgKyBiYXNlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvRWFzaW5nVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI2MDQ5MTZjZDNhZmNm
NDU1YzE3NWJiZGMxODAzNzNjMzg1ODRkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nVXRpbGl0aWVzLmgKQEAgLTAsMCArMSwzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBu
b3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAgIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAq
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBFYXNpbmdVdGlsaXRpZXNfaAorI2RlZmluZSBFYXNpbmdVdGlsaXRpZXNfaAorCitmbG9h
dCBlYXNlSW5PdXRRdWFkKGZsb2F0IHRpbWUsIGNvbnN0IGZsb2F0IGJhc2UsIGNvbnN0IGZsb2F0
IGNvbnN0YW50LCBjb25zdCB1bnNpZ25lZCBkdXJhdGlvbik7CisKKyNlbmRpZiAvLyBFYXNpbmdV
dGlsaXRpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdl
Q2xpZW50QmFzZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFz
ZS5oCmluZGV4IGI4NzczY2M5OTA3NzQzNDZhNjRlMGU2ZDg5ZTljNTE5MzIwMjEwYjguLjFlOWQ0
OGNlNWNiMGQ3ODE1M2E1NjAyOTE4YTJiNDFmNGY2YzA4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmgKQEAgLTQxLDYgKzQxLDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVWaWV3cG9ydFNpemUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNv
bnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOworI2lmIFVTRShUSUxFRF9C
QUNLSU5HX1NUT1JFKQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydFBvc2l0aW9uKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JikgPSAwOworI2VuZGlmCiAKICAgICBFd2tWaWV3SW1wbCog
dmlld0ltcGwoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3BwCmluZGV4IDc0ZDAwY2JmODEyOTY4MjJlYzVl
YWQ4MTM0ODZkZjBhYjI2YWU2MTEuLmI0ZWI4NDExNjE3ZDlhYzZhMGQyMDMwOTU4NGFjNGQ2ZjQ4
YzRiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVu
dERlZmF1bHRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VD
bGllbnREZWZhdWx0SW1wbC5jcHAKQEAgLTk5LDYgKzk5LDEyIEBAIHZvaWQgUGFnZUNsaWVudERl
ZmF1bHRJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2l6ZSkKIH0KIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQordm9pZCBQYWdlQ2xpZW50
RGVmYXVsdEltcGw6OnVwZGF0ZVZpZXdwb3J0UG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHBvc2l0
aW9uKQoreworICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOworICAgIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlci0+cGFnZURpZFJlcXVlc3RTY3JvbGwocG9zaXRpb24pOworfQor
CiB2b2lkIFBhZ2VDbGllbnREZWZhdWx0SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uKQogewogICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50
RGVmYXVsdEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudERl
ZmF1bHRJbXBsLmgKaW5kZXggMzFhZTkwZDBiZWQyYzIwNDQyMDE5MmI2ZjQ5OWFkODYwMTkzODU5
Zi4uZDJlMmJhODU0ODNiOWQxN2NmM2YxOGJjMDhiNDg0ZGFhZWRhMTBhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5oCkBA
IC01NSw2ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdw
b3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KTsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Vmlld3BvcnRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZpcnR1YWwg
dm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250
ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwCmluZGV4IDgy
YWJlNmVjMjcxYzM2ODMwYzgwN2EzMzk3OTQzNjE4NjIxNGU5YTcuLmNkOGY2NzE0N2ZkZTFiMzJh
YTQwNWQ2ODZjZTkzNWEzNmJmY2NkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwCkBAIC04Miw2ICs4MiwxMiBAQCB2
b2lkIFBhZ2VDbGllbnRMZWdhY3lJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2l6ZSkKIH0KIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQor
dm9pZCBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6dXBkYXRlVmlld3BvcnRQb3NpdGlvbihjb25zdCBJ
bnRQb2ludCYgcG9zaXRpb24pCit7CisgICAgbV92aWV3SW1wbC0+c2V0UGFnZVBvc2l0aW9uKEZs
b2F0UG9pbnQocG9zaXRpb24pKTsKKyAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKK30KKwogdm9p
ZCBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9p
bnQmIHBvc2l0aW9uKQogewogICAgIG1fdmlld0ltcGwtPnNldFBhZ2VQb3NpdGlvbihGbG9hdFBv
aW50KHBvc2l0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VDbGllbnRMZWdhY3lJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Bh
Z2VDbGllbnRMZWdhY3lJbXBsLmgKaW5kZXggZWI5ZmJiMjljYTgwNTkxNWJhMTcwODgwNDJmMzE0
MThjZGRkZWI4ZS4uMGZlMjRlYmJkZTdhNDZmYTRkMTdiM2EyZDNiOTQ3NzIxYjI3NzMyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUlt
cGwuaApAQCAtNTIsNiArNTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7
CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJik7CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVZpZXdwb3J0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2
aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7CiAg
ICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYW5HZXN0dXJlSGFuZGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Bhbkdlc3R1cmVIYW5kbGVyLmNwcAppbmRleCAw
NjY4NDNhNmNjMzdiMjk1OTYzNDQwOTU4MDQyNjYzNzc0NWMwNGNlLi5mZWMzZDE3MTBiYWQ1MGNh
OGIyY2Q4Y2QwYzZmMGQ2M2E2NDkyYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1Bhbkdlc3R1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1Bhbkdlc3R1cmVIYW5kbGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAKKyNpbmNsdWRlICJFYXNpbmdVdGlsaXRpZXMuaCIK
ICNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC0zOCw3ICszOSwxMyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogUGFuR2VzdHVyZUhhbmRsZXI6OlBhbkdlc3R1cmVIYW5kbGVy
KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKICAgICA6IEdlc3R1cmVIYW5kbGVyKHZpZXdJbXBsKQor
ICAgICwgbV9wYW5BbmltYXRvcigwKQorICAgICwgbV9mbGlja0FuaW1hdG9yKDApCisgICAgLCBt
X2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCgwKQorICAgICwgbV9mbGlja0R1cmF0aW9uKDApCisgICAg
LCBtX2ZsaWNrSW5kZXgoMCkKIHsKKyAgICBtX2hpc3RvcnkucmVzZXJ2ZUNhcGFjaXR5KHNfaGlz
dG9yeUNhcGFjaXR5KTsKIH0KIAogdm9pZCBQYW5HZXN0dXJlSGFuZGxlcjo6c3RhcnQoY29uc3Qg
VmVjdG9yPEludFBvaW50PiYgcG9pbnRzKQpAQCAtNDgsNyArNTUsMTAgQEAgdm9pZCBQYW5HZXN0
dXJlSGFuZGxlcjo6c3RhcnQoY29uc3QgVmVjdG9yPEludFBvaW50PiYgcG9pbnRzKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2N1cnJlbnRQ
b2ludCA9IG1fbGFzdFBvaW50ID0gcG9pbnRzWzBdOworICAgIG1fcGFuQW5pbWF0b3IgPSBlY29y
ZV9hbmltYXRvcl9hZGQocGFuQW5pbWF0b3JDYWxsYmFjaywgdGhpcyk7CisgICAgbV9maXJzdEhp
c3RvcnlJdGVtSW5kZXggPSAwOworICAgIG1faGlzdG9yeS5yZXNpemUoMCk7CiB9CiAKIHZvaWQg
UGFuR2VzdHVyZUhhbmRsZXI6OnVwZGF0ZShjb25zdCBWZWN0b3I8SW50UG9pbnQ+JiBwb2ludHMp
CkBAIC01OCwxNyArNjgsOTMgQEAgdm9pZCBQYW5HZXN0dXJlSGFuZGxlcjo6dXBkYXRlKGNvbnN0
IFZlY3RvcjxJbnRQb2ludD4mIHBvaW50cykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9jdXJyZW50UG9pbnQgPSBwb2ludHNbMF07CisKKyAg
ICAvLyBTYXZlIGN1cnJlbnQgcG9pbnQgdG8gdXNlIHRvIGNhbGN1bGF0ZSBvZmZzZXQgZm9yIGZs
aWNrLgorICAgIEhpc3RvcnlJdGVtIGl0ZW0gPSB7bV9jdXJyZW50UG9pbnQsIGVjb3JlX3RpbWVf
Z2V0KCl9OworICAgIGlmIChtX2hpc3Rvcnkuc2l6ZSgpIDwgbV9oaXN0b3J5LmNhcGFjaXR5KCkp
CisgICAgICAgIG1faGlzdG9yeS5hcHBlbmQoaXRlbSk7CisgICAgZWxzZSB7CisgICAgICAgIG1f
aGlzdG9yeVttX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCsrXSA9IGl0ZW07CisgICAgICAgIGlmICht
X2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCA+PSBtX2hpc3RvcnkuY2FwYWNpdHkoKSkKKyAgICAgICAg
ICAgIG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4ICU9IG1faGlzdG9yeS5jYXBhY2l0eSgpOworICAg
IH0KIH0KIAogdm9pZCBQYW5HZXN0dXJlSGFuZGxlcjo6ZW5kKCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIGlmIChtX3BhbkFuaW1hdG9yKSB7CisgICAgICAgIGVjb3JlX2FuaW1hdG9y
X2RlbChtX3BhbkFuaW1hdG9yKTsKKyAgICAgICAgbV9wYW5BbmltYXRvciA9IDA7CisKKyAgICAg
ICAgc3RhcnRGbGljaygpOworICAgIH0KIH0KIAogdm9pZCBQYW5HZXN0dXJlSGFuZGxlcjo6Y2Fu
Y2VsKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChtX3BhbkFuaW1hdG9yKSB7
CisgICAgICAgIGVjb3JlX2FuaW1hdG9yX2RlbChtX3BhbkFuaW1hdG9yKTsKKyAgICAgICAgbV9w
YW5BbmltYXRvciA9IDA7CisgICAgfQorCisgICAgaWYgKG1fZmxpY2tBbmltYXRvcikgeworICAg
ICAgICBlY29yZV9hbmltYXRvcl9kZWwobV9mbGlja0FuaW1hdG9yKTsKKyAgICAgICAgbV9mbGlj
a0FuaW1hdG9yID0gMDsKKyAgICB9Cit9CisKK0VpbmFfQm9vbCBQYW5HZXN0dXJlSGFuZGxlcjo6
cGFuQW5pbWF0b3JDYWxsYmFjayh2b2lkKiBkYXRhKQoreworICAgIHN0YXRpY19jYXN0PFBhbkdl
c3R1cmVIYW5kbGVyKj4oZGF0YSktPnByb2Nlc3NQYW4oKTsKKyAgICByZXR1cm4gRUNPUkVfQ0FM
TEJBQ0tfUkVORVc7Cit9CisKK3ZvaWQgUGFuR2VzdHVyZUhhbmRsZXI6OnByb2Nlc3NQYW4oKQor
eworICAgIGlmIChtX2xhc3RQb2ludCA9PSBtX2N1cnJlbnRQb2ludCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV92aWV3SW1wbC0+c2Nyb2xsQnkobV9sYXN0UG9pbnQgLSBtX2N1cnJlbnRQb2lu
dCk7CisgICAgbV9sYXN0UG9pbnQgPSBtX2N1cnJlbnRQb2ludDsKK30KKwordm9pZCBQYW5HZXN0
dXJlSGFuZGxlcjo6c3RhcnRGbGljaygpCit7CisgICAgaWYgKG1faGlzdG9yeS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIENhbGN1bGF0ZSBvZmZzZXQgdG8gbW92ZSBkdXJp
bmcgb25lIGZyYW1lLgorICAgIGNvbnN0IEhpc3RvcnlJdGVtJiBmaXJzdEhpc3RvcnlJdGVtID0g
bV9oaXN0b3J5W21fZmlyc3RIaXN0b3J5SXRlbUluZGV4XTsKKyAgICBkb3VibGUgZnJhbWUgPSAo
ZWNvcmVfdGltZV9nZXQoKSAtIGZpcnN0SGlzdG9yeUl0ZW0udGltZXN0YW1wKSAvIGVjb3JlX2Fu
aW1hdG9yX2ZyYW1ldGltZV9nZXQoKTsKKyAgICBtX2ZsaWNrT2Zmc2V0ID0gZmlyc3RIaXN0b3J5
SXRlbS5wb2ludCAtIG1fY3VycmVudFBvaW50OworICAgIG1fZmxpY2tPZmZzZXQuc2NhbGUoMSAv
IGZyYW1lKTsKKworICAgIG1fZmxpY2tJbmRleCA9IG1fZmxpY2tEdXJhdGlvbiA9IDEgLyBlY29y
ZV9hbmltYXRvcl9mcmFtZXRpbWVfZ2V0KCk7CisgICAgbV9mbGlja0FuaW1hdG9yID0gZWNvcmVf
YW5pbWF0b3JfYWRkKGZsaWNrQW5pbWF0b3JDYWxsYmFjaywgdGhpcyk7Cit9CisKK0VpbmFfQm9v
bCBQYW5HZXN0dXJlSGFuZGxlcjo6ZmxpY2tBbmltYXRvckNhbGxiYWNrKHZvaWQqIGRhdGEpCit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhbkdlc3R1cmVIYW5kbGVyKj4oZGF0YSktPnByb2Nl
c3NGbGljaygpOworfQorCitib29sIFBhbkdlc3R1cmVIYW5kbGVyOjpwcm9jZXNzRmxpY2soKQor
eworICAgIGZsb2F0IG11bHRpcGxpZXIgPSBlYXNlSW5PdXRRdWFkKG1fZmxpY2tJbmRleCwgMCwg
MS4wLCBtX2ZsaWNrRHVyYXRpb24pOworICAgIGZsb2F0IG9mZnNldFdpZHRoID0gbV9mbGlja09m
ZnNldC53aWR0aCgpICogbXVsdGlwbGllcjsKKyAgICBmbG9hdCBvZmZzZXRIZWlnaHQgPSBtX2Zs
aWNrT2Zmc2V0LmhlaWdodCgpICogbXVsdGlwbGllcjsKKyAgICBvZmZzZXRXaWR0aCA9IChvZmZz
ZXRXaWR0aCA+IDApID8gY2VpbGYob2Zmc2V0V2lkdGgpIDogZmxvb3JmKG9mZnNldFdpZHRoKTsK
KyAgICBvZmZzZXRIZWlnaHQgPSAob2Zmc2V0SGVpZ2h0ID4gMCkgPyBjZWlsZihvZmZzZXRIZWln
aHQpIDogZmxvb3JmKG9mZnNldEhlaWdodCk7CisgICAgSW50U2l6ZSBvZmZzZXQob2Zmc2V0V2lk
dGgsIG9mZnNldEhlaWdodCk7CisgICAgbV9mbGlja0luZGV4LS07CisKKyAgICBpZiAob2Zmc2V0
LmlzWmVybygpIHx8ICFtX3ZpZXdJbXBsLT5zY3JvbGxCeShvZmZzZXQpIHx8ICFtX2ZsaWNrSW5k
ZXgpIHsKKyAgICAgICAgbV9mbGlja0FuaW1hdG9yID0gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFuR2VzdHVyZUhhbmRs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFuR2VzdHVyZUhhbmRsZXIuaApp
bmRleCA5MWI4ZWM1MDJhYWY1ZWJhYTUzYzA0MTYyYzgxZjE2NTNiYjJiZDY4Li42OTZiZTI2M2Y5
MzU3N2Y4MzBjMmRkODBmNDNjYTVhNDAwM2I1ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1Bhbkdlc3R1cmVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYW5HZXN0dXJlSGFuZGxlci5oCkBAIC0yOSwxMCArMjksOCBAQAogI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogCiAjaW5jbHVkZSAiR2VzdHVyZUhhbmRsZXIuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW50UG9pbnQ7Ci19CisjaW5jbHVkZSA8RWNv
cmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC00NCw2ICs0MiwzMiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGUoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkludFBvaW50PiYpOwogICAgIHZvaWQgZW5kKCk7CiAgICAgdm9pZCBjYW5j
ZWwoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgRWluYV9Cb29sIHBhbkFuaW1hdG9yQ2FsbGJh
Y2sodm9pZCopOworICAgIHN0YXRpYyBFaW5hX0Jvb2wgZmxpY2tBbmltYXRvckNhbGxiYWNrKHZv
aWQqKTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQgc19oaXN0b3J5Q2FwYWNpdHkgPSA1OworCisg
ICAgdm9pZCBwcm9jZXNzUGFuKCk7CisgICAgdm9pZCBzdGFydEZsaWNrKCk7CisgICAgYm9vbCBw
cm9jZXNzRmxpY2soKTsKKworICAgIEVjb3JlX0FuaW1hdG9yKiBtX3BhbkFuaW1hdG9yOworICAg
IEVjb3JlX0FuaW1hdG9yKiBtX2ZsaWNrQW5pbWF0b3I7CisgICAgV2ViQ29yZTo6SW50UG9pbnQg
bV9sYXN0UG9pbnQ7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9jdXJyZW50UG9pbnQ7CisKKyAg
ICB0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50OworICAg
ICAgICBkb3VibGUgdGltZXN0YW1wOworICAgIH0gSGlzdG9yeUl0ZW07CisgICAgVmVjdG9yPEhp
c3RvcnlJdGVtPiBtX2hpc3Rvcnk7CisgICAgdW5zaWduZWQgbV9maXJzdEhpc3RvcnlJdGVtSW5k
ZXg7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fZmxpY2tPZmZzZXQ7CisgICAgdW5zaWduZWQg
bV9mbGlja0R1cmF0aW9uOworICAgIHVuc2lnbmVkIG1fZmxpY2tJbmRleDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191934</attachid>
            <date>2013-03-06 23:49:36 -0800</date>
            <delta_ts>2013-03-18 04:54:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130307164539.patch</filename>
            <type>text/plain</type>
            <size>15996</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTg0NjRiNGE5ZGZiMDgw
ZWI5YjUxOGM4Mjg2ZWViNzY1NGVjZDk2YS4uNjkyZjQ2ZDY1M2RlNzJiMmYyYWY0MWU2YjRjY2Q0
Mjc3MmI1ODEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTAzLTA2ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFuIGdlc3R1cmUgdG8gc2Nyb2xsIHBh
Z2UgYnkgbW92ZW1lbnQgb2YgcG9pbnQgYW5kIHN0b3AKKyAgICAgICAgc2Nyb2xsaW5nIHNtb290
aGx5IHVzaW5nIGVhc2UtaW4tb3V0LXF1YWQgYWxnb3JpdGhtIGFmdGVyIHRvdWNoZWQKKyAgICAg
ICAgcG9pbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY3JlZW4uCisKKyAgICAgICAgKiBQbGF0Zm9y
bUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FYXNpbmdVdGlsaXRpZXMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKGVhc2VJbk91dFF1YWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL0Vhc2luZ1V0aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmNwcDoKKyAgICAgICAgKEV3a1ZpZXc6OmJvdW5kQ29udGVudHNQb3Np
dGlvbik6CisgICAgICAgIChFd2tWaWV3OjpzY3JvbGxCeSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFd2tWaWV3
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9QYW5HZXN0dXJlSGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBhbkdlc3R1cmVIYW5kbGVyOjpQYW5HZXN0dXJlSGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlBhbkdlc3R1cmVIYW5kbGVyOjpzdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OlBhbkdlc3R1cmVIYW5kbGVyOjp1cGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpQYW5HZXN0
dXJlSGFuZGxlcjo6ZW5kKToKKyAgICAgICAgKFdlYktpdDo6UGFuR2VzdHVyZUhhbmRsZXI6OmNh
bmNlbCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYW5HZXN0dXJlSGFu
ZGxlcjo6cGFuQW5pbWF0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlBhbkdlc3R1cmVI
YW5kbGVyOjpwcm9jZXNzUGFuKToKKyAgICAgICAgKFdlYktpdDo6UGFuR2VzdHVyZUhhbmRsZXI6
OnN0YXJ0RmxpY2spOgorICAgICAgICAoV2ViS2l0OjpQYW5HZXN0dXJlSGFuZGxlcjo6ZmxpY2tB
bmltYXRvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UGFuR2VzdHVyZUhhbmRsZXI6OnBy
b2Nlc3NGbGljayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFuR2VzdHVyZUhhbmRs
ZXIuaDoKKyAgICAgICAgKFBhbkdlc3R1cmVIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZVZpZXdwb3J0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRD
b250cm9sbGVyOjpjb250ZW50c1NpemUpOgorICAgICAgICAoUGFnZVZpZXdwb3J0Q29udHJvbGxl
cik6CisKIDIwMTMtMDMtMDUgIEV1bm1pIExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtFRkxdW1dLMl0gUHJvY2VzcyBzaW5nbGUgdGFwIHVzaW5nIFdlYkV2ZW50OjpH
ZXN0dXJlU2luZ2xlVGFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA1NDhiMjY0MWU2
ZGU1ZGE5MzE3ZTk3OGU4YjA1MTdiZDM1NWQwM2RjLi45NDkxNTMyYjViODhmNWFiY2Y0Njk0NWZl
MDY0NmE0ZGQ3NGUyZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDksNiArNDks
NyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291
cC9XS0Nvb2tpZU1hbmFnZXJTb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291
cFJlcXVlc3RNYW5hZ2VyLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nVXRpbGl0
aWVzLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvRXZhc0dMQ29udGV4dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xT
dXJmYWNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RWFzaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0Vh
c2luZ1V0aWxpdGllcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZjY2Y0NmY5NzYxNWE2MGRiYzMzNjU5OTE3
YTg1Y2Q1OWNhOGZkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0Vhc2luZ1V0aWxpdGllcy5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhl
IG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAgIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIkFT
IElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIFJv
YmVydCBQZW5uZXIncyBlYXNpbmcgZXF1YXRpb25zLiBodHRwOi8vd3d3LnJvYmVydHBlbm5lci5j
b20vZWFzaW5nLworICogc3RhdGljIGZ1bmN0aW9uIGVhc2VJbk91dFF1YWQgKHQ6TnVtYmVyLCBi
Ok51bWJlciwgYzpOdW1iZXIsIGQ6TnVtYmVyKTpOdW1iZXIgeworICogICAgIGlmICgodC89ZC8y
KSA8IDEpIHJldHVybiBjLzIqdCp0ICsgYjsKKyAqICAgICByZXR1cm4gLWMvMiAqICgoLS10KSoo
dC0yKSAtIDEpICsgYjsKKyAqIH0KKyAqLworZmxvYXQgZWFzZUluT3V0UXVhZChmbG9hdCB0aW1l
LCBjb25zdCBmbG9hdCBiYXNlLCBjb25zdCBmbG9hdCBjb25zdGFudCwgY29uc3QgdW5zaWduZWQg
ZHVyYXRpb24pCit7CisgICAgaWYgKHRpbWUgPiBkdXJhdGlvbiB8fCB0aW1lIDwgMCkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBpZiAoKHRpbWUgLz0gKGR1cmF0aW9uIC8gMikpIDwgMSkKKyAg
ICAgICAgcmV0dXJuIChjb25zdGFudCAvIDIpICogdGltZSAqIHRpbWUgKyBiYXNlOworCisgICAg
dGltZSAtPSAxOworICAgIHJldHVybiAtMSAqIChjb25zdGFudCAvIDIpICogKHRpbWUgKiAodGlt
ZSAtIDIpIC0gMSkgKyBiYXNlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRWFzaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9FYXNpbmdVdGlsaXRpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjYwNDkxNmNkM2FmY2Y0NTVj
MTc1YmJkYzE4MDM3M2MzODU4NGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nVXRpbGl0aWVzLmgKQEAgLTAsMCArMSwzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBu
b3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAgIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAq
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBFYXNpbmdVdGlsaXRpZXNfaAorI2RlZmluZSBFYXNpbmdVdGlsaXRpZXNfaAorCitmbG9h
dCBlYXNlSW5PdXRRdWFkKGZsb2F0IHRpbWUsIGNvbnN0IGZsb2F0IGJhc2UsIGNvbnN0IGZsb2F0
IGNvbnN0YW50LCBjb25zdCB1bnNpZ25lZCBkdXJhdGlvbik7CisKKyNlbmRpZiAvLyBFYXNpbmdV
dGlsaXRpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNw
cAppbmRleCBjOWQ1OTUyZjk3NDMzNjYwYzA3NTI3OGNkZmZmYjIwMzQ3MmM5MzRkLi42NTM0OGFh
OTM5NDA4YjI1YzA5OTFhODYyYTI2NDhlYjhlZmMwZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtOTQ5LDYgKzk0OSwzNiBAQCB1bnNpZ25l
ZCBsb25nIGxvbmcgRXdrVmlldzo6aW5mb3JtRGF0YWJhc2VRdW90YVJlYWNoZWQoY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZU5hbQogfQogI2VuZGlmCiAKK0Zsb2F0UG9pbnQgRXdrVmlldzo6Ym91bmRD
b250ZW50c1Bvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBhZ2VQb3NpdGlvbikKK3sKKyAgICBG
bG9hdFJlY3QgYm91bmRzOworICAgIEZsb2F0U2l6ZSBjb250ZW50c1NpemUgPSBtX3BhZ2VWaWV3
cG9ydENvbnRyb2xsZXItPmNvbnRlbnRzU2l6ZSgpOworICAgIGJvdW5kcy5zZXRXaWR0aChzdGQ6
Om1heCgwLmYsIGNlaWxmKGNvbnRlbnRzU2l6ZS53aWR0aCgpICogbV9wYWdlU2NhbGVGYWN0b3Ip
KSAtIG1fc2l6ZS53aWR0aCgpKTsKKyAgICBib3VuZHMuc2V0SGVpZ2h0KHN0ZDo6bWF4KDAuZiwg
Y2VpbGYoY29udGVudHNTaXplLmhlaWdodCgpICogbV9wYWdlU2NhbGVGYWN0b3IpKSAtIG1fc2l6
ZS5oZWlnaHQoKSk7CisKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uOworICAgIHBvc2l0aW9uLnNl
dFgoY2xhbXBUbyhwYWdlUG9zaXRpb24ueCgpLCBib3VuZHMueCgpLCBib3VuZHMud2lkdGgoKSkp
OworICAgIHBvc2l0aW9uLnNldFkoY2xhbXBUbyhwYWdlUG9zaXRpb24ueSgpLCBib3VuZHMueSgp
LCBib3VuZHMuaGVpZ2h0KCkpKTsKKworICAgIHJldHVybiBwb3NpdGlvbjsKK30KKworYm9vbCBF
d2tWaWV3OjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgRmxvYXRQb2lu
dCBvbGRQYWdlUG9zaXRpb24gPSBtX3BhZ2VQb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50IG5ld1Bh
Z2VQb3NpdGlvbiA9IGJvdW5kQ29udGVudHNQb3NpdGlvbihtX3BhZ2VQb3NpdGlvbiArIG9mZnNl
dCk7CisgICAgc2V0UGFnZVBvc2l0aW9uKG5ld1BhZ2VQb3NpdGlvbik7CisKKyAgICBJbnRQb2lu
dCBjb250ZW50c1Bvc2l0aW9uID0gY2VpbGVkSW50UG9pbnQod2ViVmlldygpLT50cmFuc2Zvcm1G
cm9tU2NlbmUoKS5tYXBQb2ludChuZXdQYWdlUG9zaXRpb24pKTsKKyAgICBtX3BhZ2VWaWV3cG9y
dENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShjb250ZW50c1Bvc2l0aW9u
LCBtX3BhZ2VTY2FsZUZhY3Rvcik7CisKKyAgICAvLyBJZiB0aGUgcGFnZSBwb3NpdGlvbiBpcyBu
b3QgY2hhbmdlZCwgbm90aWZ5IHRoYXQgdXNpbmcgcmV0dXJuaW5nIHZhbHVlLgorICAgIGlmIChv
bGRQYWdlUG9zaXRpb24gPT0gbV9wYWdlUG9zaXRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOworfQorCiAvKioKICAqIEBpbnRlcm5hbAogICogVGhlIHVybCBv
ZiB2aWV3IHdhcyBjaGFuZ2VkIGJ5IHRoZSBmcmFtZSBsb2FkZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggYzE5Y2YyM2M3Mzk3MGM2MmE0ZTgyYzBm
MGRhZjY0OWM2MTY0MDYzMy4uY2U3NGU3ZWM5ZThlYjA2MjYxMzI4ZjJiMzdmOWJhNWM5OTRlZWFj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtODUs
NiArODUsNyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBDb2xvcjsKIGNsYXNzIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTsKIGNsYXNzIEN1cnNvcjsKK2NsYXNzIEZsb2F0UG9pbnQ7
CiBjbGFzcyBJbnRTaXplOwogfQogCkBAIC0yMTIsNiArMjEzLDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRQYWdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24p
IHsgbV9wYWdlUG9zaXRpb24gPSBwb3NpdGlvbjsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQgcGFnZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlUG9zaXRpb247IH0KKyAg
ICBXZWJDb3JlOjpGbG9hdFBvaW50IGJvdW5kQ29udGVudHNQb3NpdGlvbihjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50Jik7CisgICAgYm9vbCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jik7CiAKICAgICAvLyBGSVhNRTogbmVlZHMgcmVmYWN0b3JpbmcgKHNwbGl0IGNhbGxiYWNrIGlu
dm9rZSkKICAgICB2b2lkIGluZm9ybVVSTENoYW5nZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFuR2VzdHVyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFuR2VzdHVyZUhhbmRsZXIuY3BwCmluZGV4IGVjNGUy
ZTM4Mzc5ZmY2NDQwNmNhNjViZTQ0ZTBjZjRlMGVmODEwMzQuLjI2YzEzODg2MGJiZTUxNTcwYjA0
NDRiODY1ODMzMjY1M2NlZjFlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL1Bhbkdlc3R1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9QYW5HZXN0dXJlSGFuZGxlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYW5HZXN0dXJlSGFuZGxlci5oIgogCisjaW5j
bHVkZSAiRWFzaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRXdrVmlldy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvSW50UG9pbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CkBAIC0zNyw3ICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUGFuR2VzdHVyZUhhbmRs
ZXI6OlBhbkdlc3R1cmVIYW5kbGVyKEV3a1ZpZXcqIGV3a1ZpZXcpCiAgICAgOiBHZXN0dXJlSGFu
ZGxlcihld2tWaWV3KQorICAgICwgbV9wYW5BbmltYXRvcigwKQorICAgICwgbV9mbGlja0FuaW1h
dG9yKDApCisgICAgLCBtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCgwKQorICAgICwgbV9mbGlja0R1
cmF0aW9uKDApCisgICAgLCBtX2ZsaWNrSW5kZXgoMCkKIHsKKyAgICBtX2hpc3RvcnkucmVzZXJ2
ZUNhcGFjaXR5KHNfaGlzdG9yeUNhcGFjaXR5KTsKIH0KIAogdm9pZCBQYW5HZXN0dXJlSGFuZGxl
cjo6c3RhcnQoY29uc3QgVmVjdG9yPEludFBvaW50PiYgcG9pbnRzKQpAQCAtNDcsNyArNTQsMTAg
QEAgdm9pZCBQYW5HZXN0dXJlSGFuZGxlcjo6c3RhcnQoY29uc3QgVmVjdG9yPEludFBvaW50PiYg
cG9pbnRzKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBtX2N1cnJlbnRQb2ludCA9IG1fbGFzdFBvaW50ID0gcG9pbnRzWzBdOworICAgIG1fcGFu
QW5pbWF0b3IgPSBlY29yZV9hbmltYXRvcl9hZGQocGFuQW5pbWF0b3JDYWxsYmFjaywgdGhpcyk7
CisgICAgbV9maXJzdEhpc3RvcnlJdGVtSW5kZXggPSAwOworICAgIG1faGlzdG9yeS5yZXNpemUo
MCk7CiB9CiAKIHZvaWQgUGFuR2VzdHVyZUhhbmRsZXI6OnVwZGF0ZShjb25zdCBWZWN0b3I8SW50
UG9pbnQ+JiBwb2ludHMpCkBAIC01NywxNyArNjcsOTMgQEAgdm9pZCBQYW5HZXN0dXJlSGFuZGxl
cjo6dXBkYXRlKGNvbnN0IFZlY3RvcjxJbnRQb2ludD4mIHBvaW50cykKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9jdXJyZW50UG9pbnQgPSBw
b2ludHNbMF07CisKKyAgICAvLyBTYXZlIGN1cnJlbnQgcG9pbnQgdG8gdXNlIHRvIGNhbGN1bGF0
ZSBvZmZzZXQgZm9yIGZsaWNrLgorICAgIEhpc3RvcnlJdGVtIGl0ZW0gPSB7bV9jdXJyZW50UG9p
bnQsIGVjb3JlX3RpbWVfZ2V0KCl9OworICAgIGlmIChtX2hpc3Rvcnkuc2l6ZSgpIDwgbV9oaXN0
b3J5LmNhcGFjaXR5KCkpCisgICAgICAgIG1faGlzdG9yeS5hcHBlbmQoaXRlbSk7CisgICAgZWxz
ZSB7CisgICAgICAgIG1faGlzdG9yeVttX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCsrXSA9IGl0ZW07
CisgICAgICAgIGlmIChtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCA+PSBtX2hpc3RvcnkuY2FwYWNp
dHkoKSkKKyAgICAgICAgICAgIG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4ICU9IG1faGlzdG9yeS5j
YXBhY2l0eSgpOworICAgIH0KIH0KIAogdm9pZCBQYW5HZXN0dXJlSGFuZGxlcjo6ZW5kKCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChtX3BhbkFuaW1hdG9yKSB7CisgICAgICAg
IGVjb3JlX2FuaW1hdG9yX2RlbChtX3BhbkFuaW1hdG9yKTsKKyAgICAgICAgbV9wYW5BbmltYXRv
ciA9IDA7CisKKyAgICAgICAgc3RhcnRGbGljaygpOworICAgIH0KIH0KIAogdm9pZCBQYW5HZXN0
dXJlSGFuZGxlcjo6Y2FuY2VsKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICht
X3BhbkFuaW1hdG9yKSB7CisgICAgICAgIGVjb3JlX2FuaW1hdG9yX2RlbChtX3BhbkFuaW1hdG9y
KTsKKyAgICAgICAgbV9wYW5BbmltYXRvciA9IDA7CisgICAgfQorCisgICAgaWYgKG1fZmxpY2tB
bmltYXRvcikgeworICAgICAgICBlY29yZV9hbmltYXRvcl9kZWwobV9mbGlja0FuaW1hdG9yKTsK
KyAgICAgICAgbV9mbGlja0FuaW1hdG9yID0gMDsKKyAgICB9Cit9CisKK0VpbmFfQm9vbCBQYW5H
ZXN0dXJlSGFuZGxlcjo6cGFuQW5pbWF0b3JDYWxsYmFjayh2b2lkKiBkYXRhKQoreworICAgIHN0
YXRpY19jYXN0PFBhbkdlc3R1cmVIYW5kbGVyKj4oZGF0YSktPnByb2Nlc3NQYW4oKTsKKyAgICBy
ZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfUkVORVc7Cit9CisKK3ZvaWQgUGFuR2VzdHVyZUhhbmRsZXI6
OnByb2Nlc3NQYW4oKQoreworICAgIGlmIChtX2xhc3RQb2ludCA9PSBtX2N1cnJlbnRQb2ludCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9ld2tWaWV3LT5zY3JvbGxCeShtX2xhc3RQb2ludCAt
IG1fY3VycmVudFBvaW50KTsKKyAgICBtX2xhc3RQb2ludCA9IG1fY3VycmVudFBvaW50OworfQor
Cit2b2lkIFBhbkdlc3R1cmVIYW5kbGVyOjpzdGFydEZsaWNrKCkKK3sKKyAgICBpZiAobV9oaXN0
b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ2FsY3VsYXRlIG9mZnNl
dCB0byBtb3ZlIGR1cmluZyBvbmUgZnJhbWUuCisgICAgY29uc3QgSGlzdG9yeUl0ZW0mIGZpcnN0
SGlzdG9yeUl0ZW0gPSBtX2hpc3RvcnlbbV9maXJzdEhpc3RvcnlJdGVtSW5kZXhdOworICAgIGRv
dWJsZSBmcmFtZSA9IChlY29yZV90aW1lX2dldCgpIC0gZmlyc3RIaXN0b3J5SXRlbS50aW1lc3Rh
bXApIC8gZWNvcmVfYW5pbWF0b3JfZnJhbWV0aW1lX2dldCgpOworICAgIG1fZmxpY2tPZmZzZXQg
PSBmaXJzdEhpc3RvcnlJdGVtLnBvaW50IC0gbV9jdXJyZW50UG9pbnQ7CisgICAgbV9mbGlja09m
ZnNldC5zY2FsZSgxIC8gZnJhbWUpOworCisgICAgbV9mbGlja0luZGV4ID0gbV9mbGlja0R1cmF0
aW9uID0gMSAvIGVjb3JlX2FuaW1hdG9yX2ZyYW1ldGltZV9nZXQoKTsKKyAgICBtX2ZsaWNrQW5p
bWF0b3IgPSBlY29yZV9hbmltYXRvcl9hZGQoZmxpY2tBbmltYXRvckNhbGxiYWNrLCB0aGlzKTsK
K30KKworRWluYV9Cb29sIFBhbkdlc3R1cmVIYW5kbGVyOjpmbGlja0FuaW1hdG9yQ2FsbGJhY2so
dm9pZCogZGF0YSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGFuR2VzdHVyZUhhbmRsZXIq
PihkYXRhKS0+cHJvY2Vzc0ZsaWNrKCk7Cit9CisKK2Jvb2wgUGFuR2VzdHVyZUhhbmRsZXI6OnBy
b2Nlc3NGbGljaygpCit7CisgICAgZmxvYXQgbXVsdGlwbGllciA9IGVhc2VJbk91dFF1YWQobV9m
bGlja0luZGV4LCAwLCAxLjAsIG1fZmxpY2tEdXJhdGlvbik7CisgICAgZmxvYXQgb2Zmc2V0V2lk
dGggPSBtX2ZsaWNrT2Zmc2V0LndpZHRoKCkgKiBtdWx0aXBsaWVyOworICAgIGZsb2F0IG9mZnNl
dEhlaWdodCA9IG1fZmxpY2tPZmZzZXQuaGVpZ2h0KCkgKiBtdWx0aXBsaWVyOworICAgIG9mZnNl
dFdpZHRoID0gKG9mZnNldFdpZHRoID4gMCkgPyBjZWlsZihvZmZzZXRXaWR0aCkgOiBmbG9vcmYo
b2Zmc2V0V2lkdGgpOworICAgIG9mZnNldEhlaWdodCA9IChvZmZzZXRIZWlnaHQgPiAwKSA/IGNl
aWxmKG9mZnNldEhlaWdodCkgOiBmbG9vcmYob2Zmc2V0SGVpZ2h0KTsKKyAgICBJbnRTaXplIG9m
ZnNldChvZmZzZXRXaWR0aCwgb2Zmc2V0SGVpZ2h0KTsKKyAgICBtX2ZsaWNrSW5kZXgtLTsKKwor
ICAgIGlmIChvZmZzZXQuaXNaZXJvKCkgfHwgIW1fZXdrVmlldy0+c2Nyb2xsQnkob2Zmc2V0KSB8
fCAhbV9mbGlja0luZGV4KSB7CisgICAgICAgIG1fZmxpY2tBbmltYXRvciA9IDA7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9QYW5HZXN0dXJlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
UGFuR2VzdHVyZUhhbmRsZXIuaAppbmRleCAwMjY3NzI0YjliMTIzYWExNzNkNDUzNjkyMWE4NDY5
MDRkY2Q4NGIxLi5lNmUxODhiNzc2YWJlOGMxNzE5NTVjNTVmZjg2NjZmZTQ5MjhkMDQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYW5HZXN0dXJlSGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Bhbkdlc3R1cmVIYW5k
bGVyLmgKQEAgLTI4LDEwICsyOCw4IEBACiAjZGVmaW5lIFBhbkdlc3R1cmVIYW5kbGVyX2gKIAog
I2luY2x1ZGUgIkdlc3R1cmVIYW5kbGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IEludFBvaW50OwotfQorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRQ
b2ludC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDMsNiArNDEsMzIgQEAgcHVibGlj
OgogICAgIHZvaWQgdXBkYXRlKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKTsKICAg
ICB2b2lkIGVuZCgpOwogICAgIHZvaWQgY2FuY2VsKCk7CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IEVpbmFfQm9vbCBwYW5BbmltYXRvckNhbGxiYWNrKHZvaWQqKTsKKyAgICBzdGF0aWMgRWluYV9C
b29sIGZsaWNrQW5pbWF0b3JDYWxsYmFjayh2b2lkKik7CisKKyAgICBzdGF0aWMgY29uc3QgaW50
IHNfaGlzdG9yeUNhcGFjaXR5ID0gNTsKKworICAgIHZvaWQgcHJvY2Vzc1BhbigpOworICAgIHZv
aWQgc3RhcnRGbGljaygpOworICAgIGJvb2wgcHJvY2Vzc0ZsaWNrKCk7CisKKyAgICBFY29yZV9B
bmltYXRvciogbV9wYW5BbmltYXRvcjsKKyAgICBFY29yZV9BbmltYXRvciogbV9mbGlja0FuaW1h
dG9yOworICAgIFdlYkNvcmU6OkludFBvaW50IG1fbGFzdFBvaW50OworICAgIFdlYkNvcmU6Oklu
dFBvaW50IG1fY3VycmVudFBvaW50OworCisgICAgdHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBwb2ludDsKKyAgICAgICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICB9
IEhpc3RvcnlJdGVtOworICAgIFZlY3RvcjxIaXN0b3J5SXRlbT4gbV9oaXN0b3J5OworICAgIHVu
c2lnbmVkIG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4OworCisgICAgV2ViQ29yZTo6SW50U2l6ZSBt
X2ZsaWNrT2Zmc2V0OworICAgIHVuc2lnbmVkIG1fZmxpY2tEdXJhdGlvbjsKKyAgICB1bnNpZ25l
ZCBtX2ZsaWNrSW5kZXg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oCmluZGV4IDM1ZDRi
NTMzZDIwNzAyZWIyOWEyYzIyZDczNDI5MGJkMjRiYmQ2MDMuLjZiZDg5MTRlZjU2MGRjMDc4Yzdi
M2VkNjU1NDQyMTUwYWJmZTZmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaApAQCAtNzIsNiArNzIsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldEhhZFVzZXJJbnRlcmFjdGlvbihib29sIGRpZFVzZXJJbnRlcmFjdCkgeyBtX2hh
ZFVzZXJJbnRlcmFjdGlvbiA9IGRpZFVzZXJJbnRlcmFjdDsgfQogCisgICAgV2ViQ29yZTo6Rmxv
YXRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNTaXplOyB9CisK
ICAgICAvLyBOb3RpZmljYXRpb25zIGZyb20gdGhlIHZpZXdwb3J0LgogICAgIHZvaWQgZGlkQ2hh
bmdlVmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbmV3U2l6ZSk7CiAgICAg
dm9pZCBkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVj
dG9yID0gV2ViQ29yZTo6RmxvYXRQb2ludDo6emVybygpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193534</attachid>
            <date>2013-03-18 04:54:35 -0700</date>
            <delta_ts>2013-03-19 03:55:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130318205026.patch</filename>
            <type>text/plain</type>
            <size>21970</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjFmMWQ5OGEyYmQzZjkw
MmM2ZmJiYzgwNWE5ZGQwNjMyNGJlN2NlZi4uNTBmYzhkOTkyOTY3YzIzNDk1MzBkZWI2ZTEzZTE2
MjYxMWEyNTJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU2IEBACiAyMDEzLTAzLTE4ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KIAorICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFuIGdlc3R1cmUgdG8gc2Nyb2xsIHBh
Z2UgYnkgbW92ZW1lbnQgb2YgcG9pbnQgYW5kIHN0b3AKKyAgICAgICAgc2Nyb2xsaW5nIHNtb290
aGx5IHVzaW5nIGVhc2UtaW4tb3V0LXF1YWQgYWxnb3JpdGhtIGFmdGVyIHRvdWNoZWQKKyAgICAg
ICAgcG9pbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY3JlZW4uCisKKyAgICAgICAgVXNlIEVjb3Jl
X0FuaW1hdG9yIGluIG9yZGVyIHRvIHByb2Nlc3Mgb25jZSBwZXIgZWFjaCBmcmFtaW5nIHRpbWUg
c2xvdHMKKyAgICAgICAgaW5zdGVhZCBvZiBwcm9jZXNzaW5nIGFsbCBtb3ZlbWVudC4KKworICAg
ICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0Vh
c2luZ0N1cnZlcy5jcHA6IEFkZGVkLgorICAgICAgICAoZWFzZUluT3V0UXVhZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAgICAoRXdrVmlldzo6RXdrVmlldyk6
CisgICAgICAgIChFd2tWaWV3Ojpib3VuZENvbnRlbnRzUG9zaXRpb24pOgorICAgICAgICAoRXdr
Vmlldzo6c2Nyb2xsQnkpOgorICAgICAgICAoRXdrVmlldzo6aGFuZGxlUGFuU3RhcnRlZCk6Cisg
ICAgICAgIChFd2tWaWV3OjpoYW5kbGVQYW4pOgorICAgICAgICAoRXdrVmlldzo6ZmxpY2tBbmlt
YXRvckNhbGxiYWNrKToKKyAgICAgICAgKEV3a1ZpZXc6OmhhbmRsZUZsaWNrKToKKyAgICAgICAg
KEV3a1ZpZXc6OmhhbmRsZUZsaWNrQ2FuY2VsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRXdrVmlldyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0dXJlKToKKyAgICAgICAgKFdlYktp
dDo6R2VzdHVyZVJlY29nbml6ZXI6OnNpbmdsZVRhcEdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0
OjpHZXN0dXJlUmVjb2duaXplcjo6ZG91YmxlVGFwR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6
Okdlc3R1cmVSZWNvZ25pemVyOjpwYW5HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVy
ZVJlY29nbml6ZXI6OnBpbmNoR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNv
Z25pemVyOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyOjpwYW5B
bmltYXRvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Okdl
c3R1cmVSZWNvZ25pemVyOjpoYW5kbGVQYW5TdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6R2Vz
dHVyZVJlY29nbml6ZXI6OnVwZGF0ZUN1cnJlbnRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6Okdl
c3R1cmVSZWNvZ25pemVyOjpoYW5kbGVQYW5GaW5pc2hlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJl
Y29nbml6ZXJDbGllbnQ6OmhhbmRsZUZsaWNrKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJl
Y29nbml6ZXJDbGllbnQ6OmhhbmRsZUZsaWNrQ2FuY2VsZWQpOgorICAgICAgICAoR2VzdHVyZVJl
Y29nbml6ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmg6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmNvbnRlbnRzU2l6ZSk6
CisgICAgICAgIChQYWdlVmlld3BvcnRDb250cm9sbGVyKToKKworMjAxMy0wMy0xOCAgRXVubWkg
TGVlICA8ZXVubWkxNS5sZWVAc2Ftc3VuZy5jb20+CisKICAgICAgICAgW0VGTF1bV0syXSBQcm9j
ZXNzIHNpbmdsZSB0YXAgdXNpbmcgV2ViRXZlbnQ6Okdlc3R1cmVTaW5nbGVUYXAuCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4NjQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCAwOTA4ZWY0MmQ5ZGE0MDRmZjFjNGNlZWM3YzIzYzRjOGRh
OGQyODExLi40OTUzMmVjMTU3N2Y1NjkyM2U3NTIzZDhkZjcxYmE5NWI2ZDg4ZmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDksNiArNDksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQy
X1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tpZU1hbmFnZXJTb3VwLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcAogCisg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVzLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXcuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMQ29udGV4dC5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xTdXJmYWNlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZj
Y2Y0NmY5NzYxNWE2MGRiYzMzNjU5OTE3YTg1Y2Q1OWNhOGZkNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKQEAgLTAs
MCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmlj
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAg
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv
ZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLyoKKyAqIFJvYmVydCBQZW5uZXIncyBlYXNpbmcgZXF1YXRpb25zLiBodHRw
Oi8vd3d3LnJvYmVydHBlbm5lci5jb20vZWFzaW5nLworICogc3RhdGljIGZ1bmN0aW9uIGVhc2VJ
bk91dFF1YWQgKHQ6TnVtYmVyLCBiOk51bWJlciwgYzpOdW1iZXIsIGQ6TnVtYmVyKTpOdW1iZXIg
eworICogICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0ICsgYjsKKyAqICAgICBy
ZXR1cm4gLWMvMiAqICgoLS10KSoodC0yKSAtIDEpICsgYjsKKyAqIH0KKyAqLworZmxvYXQgZWFz
ZUluT3V0UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25zdCBmbG9hdCBjb25z
dGFudCwgY29uc3QgdW5zaWduZWQgZHVyYXRpb24pCit7CisgICAgaWYgKHRpbWUgPiBkdXJhdGlv
biB8fCB0aW1lIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoKHRpbWUgLz0gKGR1
cmF0aW9uIC8gMikpIDwgMSkKKyAgICAgICAgcmV0dXJuIChjb25zdGFudCAvIDIpICogdGltZSAq
IHRpbWUgKyBiYXNlOworCisgICAgdGltZSAtPSAxOworICAgIHJldHVybiAtMSAqIChjb25zdGFu
dCAvIDIpICogKHRpbWUgKiAodGltZSAtIDIpIC0gMSkgKyBiYXNlOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FYXNpbmdDdXJ2ZXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzI2
YzZmYzQwNzYzMWQ2YWE4ZjNmNWJlMGI4Y2M1ZmFkNTJhNDAwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVzLmgKQEAgLTAsMCAr
MSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
dGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAgIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3
YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBFYXNpbmdDdXJ2ZXNfaAorI2RlZmluZSBFYXNpbmdDdXJ2ZXNfaAor
CitmbG9hdCBlYXNlSW5PdXRRdWFkKGZsb2F0IHRpbWUsIGNvbnN0IGZsb2F0IGJhc2UsIGNvbnN0
IGZsb2F0IGNvbnN0YW50LCBjb25zdCB1bnNpZ25lZCBkdXJhdGlvbik7CisKKyNlbmRpZiAvLyBF
YXNpbmdDdXJ2ZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
LmNwcAppbmRleCBlZWEzODI2ZjViZGMyMDBlYzEwOTYwMmZiOTA0MmNhN2FkZGJlYjliLi4wMTk5
ZDIwMmYyYzRjMWZmZTQ4MjEwZDAzY2EyNDYxZWI4ZDA3MWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1
ZGUgIkV3a1ZpZXcuaCIKIAogI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50RWZsLmgiCisjaW5j
bHVkZSAiRWFzaW5nQ3VydmVzLmgiCiAjaW5jbHVkZSAiRWZsU2NyZWVuVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiRmluZENsaWVudEVmbC5oIgogI2luY2x1ZGUgIkZvcm1DbGllbnRFZmwuaCIKQEAg
LTI2MCw2ICsyNjEsOSBAQCBFd2tWaWV3OjpFd2tWaWV3KEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0
LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZQogICAgICwgbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50KFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmNy
ZWF0ZSh0aGlzKSkKICAgICAsIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcihhZG9wdFB0cihuZXcg
UGFnZVZpZXdwb3J0Q29udHJvbGxlcihwYWdlKCksIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudC5nZXQoKSkpKQogICAgICwgbV9pc0FjY2VsZXJhdGVkKHRydWUpCisgICAgLCBtX2ZsaWNr
QW5pbWF0b3IoMCkKKyAgICAsIG1fZmxpY2tEdXJhdGlvbigwKQorICAgICwgbV9mbGlja0luZGV4
KDApCiB7CiAgICAgQVNTRVJUKG1fZXZhc09iamVjdCk7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7
CkBAIC0xMDAxLDYgKzEwMDUsMzUgQEAgdW5zaWduZWQgbG9uZyBsb25nIEV3a1ZpZXc6OmluZm9y
bURhdGFiYXNlUXVvdGFSZWFjaGVkKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW0KIH0KICNlbmRp
ZgogCitGbG9hdFBvaW50IEV3a1ZpZXc6OmJvdW5kQ29udGVudHNQb3NpdGlvbihjb25zdCBGbG9h
dFBvaW50JiBwYWdlUG9zaXRpb24pCit7CisgICAgRmxvYXRSZWN0IGJvdW5kczsKKyAgICBGbG9h
dFNpemUgY29udGVudHNTaXplID0gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5jb250ZW50c1Np
emUoKTsKKyAgICBib3VuZHMuc2V0V2lkdGgoc3RkOjptYXgoMC5mLCBjZWlsZihjb250ZW50c1Np
emUud2lkdGgoKSAqIG1fcGFnZVNjYWxlRmFjdG9yKSkgLSBzaXplKCkud2lkdGgoKSk7CisgICAg
Ym91bmRzLnNldEhlaWdodChzdGQ6Om1heCgwLmYsIGNlaWxmKGNvbnRlbnRzU2l6ZS5oZWlnaHQo
KSAqIG1fcGFnZVNjYWxlRmFjdG9yKSkgLSBzaXplKCkuaGVpZ2h0KCkpOworCisgICAgRmxvYXRQ
b2ludCBwb3NpdGlvbjsKKyAgICBwb3NpdGlvbi5zZXRYKGNsYW1wVG8ocGFnZVBvc2l0aW9uLngo
KSwgYm91bmRzLngoKSwgYm91bmRzLndpZHRoKCkpKTsKKyAgICBwb3NpdGlvbi5zZXRZKGNsYW1w
VG8ocGFnZVBvc2l0aW9uLnkoKSwgYm91bmRzLnkoKSwgYm91bmRzLmhlaWdodCgpKSk7CisKKyAg
ICByZXR1cm4gcG9zaXRpb247Cit9CisKK2Jvb2wgRXdrVmlldzo6c2Nyb2xsQnkoY29uc3QgSW50
U2l6ZSYgb2Zmc2V0KQoreworICAgIEZsb2F0UG9pbnQgY3VycmVudFBvc2l0aW9uID0gbV9wYWdl
UG9zaXRpb247CisgICAgRmxvYXRQb2ludCBuZXdQb3NpdGlvbiA9IGJvdW5kQ29udGVudHNQb3Np
dGlvbihtX3BhZ2VQb3NpdGlvbiArIG9mZnNldCk7CisgICAgc2V0UGFnZVBvc2l0aW9uKG5ld1Bv
c2l0aW9uKTsKKworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVu
dHNWaXNpYmlsaXR5KGNlaWxlZEludFBvaW50KHdlYlZpZXcoKS0+dHJhbnNmb3JtRnJvbVNjZW5l
KCkubWFwUG9pbnQobmV3UG9zaXRpb24pKSwgbV9wYWdlU2NhbGVGYWN0b3IpOworCisgICAgLy8g
SWYgdGhlIHBhZ2UgcG9zaXRpb24gaXMgbm90IGNoYW5nZWQsIG5vdGlmeSB0aGF0IHVzaW5nIHJl
dHVybmluZyB2YWx1ZS4KKyAgICBpZiAoY3VycmVudFBvc2l0aW9uID09IG1fcGFnZVBvc2l0aW9u
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogLyoqCiAg
KiBAaW50ZXJuYWwKICAqIFRoZSB1cmwgb2YgdmlldyB3YXMgY2hhbmdlZCBieSB0aGUgZnJhbWUg
bG9hZGVyLgpAQCAtMTM2NSwxNCArMTM5OCwxOCBAQCB2b2lkIEV3a1ZpZXc6OmhhbmRsZVRhcEFu
ZEhvbGQoY29uc3QgSW50UG9pbnQmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
RXdrVmlldzo6aGFuZGxlUGFuU3RhcnRlZChjb25zdCBJbnRQb2ludCYpCit2b2lkIEV3a1ZpZXc6
OmhhbmRsZVBhblN0YXJ0ZWQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgbV9sYXN0UG9pbnQgPSBwb2ludDsKIH0KIAogdm9pZCBFd2tWaWV3Ojpo
YW5kbGVQYW4oY29uc3QgSW50UG9pbnQmIHBvaW50KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgaWYgKG1fbGFzdFBvaW50ID09IHBvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBz
Y3JvbGxCeShtX2xhc3RQb2ludCAtIHBvaW50KTsKKyAgICBtX2xhc3RQb2ludCA9IHBvaW50Owog
fQogCiB2b2lkIEV3a1ZpZXc6OmhhbmRsZVBhbkZpbmlzaGVkKCkKQEAgLTEzODAsNiArMTQxNyw0
MCBAQCB2b2lkIEV3a1ZpZXc6OmhhbmRsZVBhbkZpbmlzaGVkKCkKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCitFaW5hX0Jvb2wgRXdrVmlldzo6ZmxpY2tBbmltYXRvckNhbGxiYWNrKHZvaWQq
IGRhdGEpCit7CisgICAgRXdrVmlldyogZXdrVmlldyA9IHN0YXRpY19jYXN0PEV3a1ZpZXcqPihk
YXRhKTsKKyAgICBmbG9hdCBtdWx0aXBsaWVyID0gZWFzZUluT3V0UXVhZChld2tWaWV3LT5tX2Zs
aWNrSW5kZXgsIDAsIDEuMCwgZXdrVmlldy0+bV9mbGlja0R1cmF0aW9uKTsKKyAgICBmbG9hdCBv
ZmZzZXRXaWR0aCA9IGV3a1ZpZXctPm1fZmxpY2tPZmZzZXQud2lkdGgoKSAqIG11bHRpcGxpZXI7
CisgICAgZmxvYXQgb2Zmc2V0SGVpZ2h0ID0gZXdrVmlldy0+bV9mbGlja09mZnNldC5oZWlnaHQo
KSAqIG11bHRpcGxpZXI7CisgICAgb2Zmc2V0V2lkdGggPSAob2Zmc2V0V2lkdGggPiAwKSA/IGNl
aWxmKG9mZnNldFdpZHRoKSA6IGZsb29yZihvZmZzZXRXaWR0aCk7CisgICAgb2Zmc2V0SGVpZ2h0
ID0gKG9mZnNldEhlaWdodCA+IDApID8gY2VpbGYob2Zmc2V0SGVpZ2h0KSA6IGZsb29yZihvZmZz
ZXRIZWlnaHQpOworICAgIEludFNpemUgb2Zmc2V0KG9mZnNldFdpZHRoLCBvZmZzZXRIZWlnaHQp
OworICAgIGV3a1ZpZXctPm1fZmxpY2tJbmRleC0tOworCisgICAgaWYgKG9mZnNldC5pc1plcm8o
KSB8fCAhZXdrVmlldy0+c2Nyb2xsQnkob2Zmc2V0KSB8fCAhZXdrVmlldy0+bV9mbGlja0luZGV4
KSB7CisgICAgICAgIGV3a1ZpZXctPm1fZmxpY2tBbmltYXRvciA9IDA7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBFd2tWaWV3Ojpo
YW5kbGVGbGljayhjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgbV9mbGlja09mZnNldCA9
IG9mZnNldDsKKyAgICBtX2ZsaWNrSW5kZXggPSBtX2ZsaWNrRHVyYXRpb24gPSAxIC8gZWNvcmVf
YW5pbWF0b3JfZnJhbWV0aW1lX2dldCgpOworICAgIG1fZmxpY2tBbmltYXRvciA9IGVjb3JlX2Fu
aW1hdG9yX2FkZChmbGlja0FuaW1hdG9yQ2FsbGJhY2ssIHRoaXMpOworfQorCit2b2lkIEV3a1Zp
ZXc6OmhhbmRsZUZsaWNrQ2FuY2VsZWQoKQoreworICAgIGlmIChtX2ZsaWNrQW5pbWF0b3IpIHsK
KyAgICAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKG1fZmxpY2tBbmltYXRvcik7CisgICAgICAgIG1f
ZmxpY2tBbmltYXRvciA9IDA7CisgICAgfQorfQorCiB2b2lkIEV3a1ZpZXc6OmhhbmRsZVBpbmNo
U3RhcnRlZChjb25zdCBWZWN0b3I8SW50UG9pbnQ+KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCmluZGV4IDhhNGQw
N2I1MDc0NzdiODE2MjEyYzAyNDM5MWNiNjY0MzhiNWE1ODIuLjcwNzZjMmQ3YWQ5ZTU5NTBiNjY1
NGQwMjhkMzA3ZDEyYTg4M2Y3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3LmgKQEAgLTgwLDYgKzgwLDcgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xh
c3MgQ29sb3I7CiBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU7CiBjbGFzcyBDdXJzb3I7
CitjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9u
TWF0cml4OwogfQpAQCAtMjA3LDYgKzIwOCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UGFn
ZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fcGFnZVBv
c2l0aW9uID0gcG9zaXRpb247IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50IHBhZ2VQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVBvc2l0aW9uOyB9CisgICAgV2ViQ29yZTo6
RmxvYXRQb2ludCBib3VuZENvbnRlbnRzUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYpOworICAgIGJvb2wgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCiAgICAg
Ly8gRklYTUU6IG5lZWRzIHJlZmFjdG9yaW5nIChzcGxpdCBjYWxsYmFjayBpbnZva2UpCiAgICAg
dm9pZCBpbmZvcm1VUkxDaGFuZ2UoKTsKQEAgLTIyMCw2ICsyMjMsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGhhbmRsZVBhblN0YXJ0ZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGFuKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZVBhbkZpbmlzaGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUZsaWNrKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlRmxpY2tDYW5jZWxlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQaW5jaFN0YXJ0ZWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFBvaW50PiopOwogICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVQaW5jaChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UG9pbnQ+Kik7CiAgICAgdmlydHVhbCB2
b2lkIGhhbmRsZVBpbmNoRmluaXNoZWQoKTsKQEAgLTI2MCw2ICsyNjUsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyB2b2lkIGhhbmRsZVRvdWNoTW92ZSh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19P
YmplY3QqLCB2b2lkKiBldmVudEluZm8pOwogI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgaGFuZGxl
RmF2aWNvbkNoYW5nZWQoY29uc3QgY2hhciogcGFnZVVSTCwgdm9pZCogZXZlbnRJbmZvKTsKKyAg
ICBzdGF0aWMgRWluYV9Cb29sIGZsaWNrQW5pbWF0b3JDYWxsYmFjayh2b2lkKiBkYXRhKTsKIAog
cHJpdmF0ZToKICAgICAvLyBOb3RlLCBpbml0aWFsaXphdGlvbiBvcmRlciBtYXR0ZXJzLgpAQCAt
MzA4LDYgKzMxNCwxMyBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKICAgICBib29sIG1faXNBY2Nl
bGVyYXRlZDsKIAorICAgIC8vIFZhcmlhYmxlcyBmb3IgR2VzdHVyZXMuCisgICAgRWNvcmVfQW5p
bWF0b3IqIG1fZmxpY2tBbmltYXRvcjsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2xhc3RQb2lu
dDsKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fZmxpY2tPZmZzZXQ7CisgICAgdW5zaWduZWQgbV9m
bGlja0R1cmF0aW9uOworICAgIHVuc2lnbmVkIG1fZmxpY2tJbmRleDsKKwogICAgIHN0YXRpYyBF
dmFzX1NtYXJ0X0NsYXNzIHBhcmVudFNtYXJ0Q2xhc3M7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHAKaW5kZXgg
NmFmZjJmMWMxODZlZWRhODRmNmNkZGMzNDk1YTNiNGFhYWViY2ZjMC4uYWM0MjJlNTFiY2M3NWVi
MzU1M2E0MDMwZjA0OGNkZjBjZDBlZGNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcApAQCAtNDIsNyArNDIsMTEg
QEAgR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVSZWNvZ25pemVyKEdlc3R1cmVSZWNvZ25pemVy
Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3RhcEFuZEhv
bGRUaW1lcigwKQogICAgICwgbV9kb3VibGVUYXBUaW1lcigwKQorICAgICwgbV9wYW5BbmltYXRv
cigwKQorICAgICwgbV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQoZmFsc2UpCisgICAgLCBtX2ZpcnN0
SGlzdG9yeUl0ZW1JbmRleCgwKQogeworICAgIG1faGlzdG9yeS5yZXNlcnZlQ2FwYWNpdHkoc19o
aXN0b3J5Q2FwYWNpdHkpOwogfQogCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpwcm9jZXNzVG91
Y2hFdmVudChXS1RvdWNoRXZlbnRSZWYgZXZlbnRSZWYpCkBAIC0xMDMsNiArMTA3LDggQEAgdm9p
ZCBHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0dXJlKFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlS
ZWYgdG91Y2hQb2ludHMpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBrV0tFdmVu
dFR5cGVUb3VjaFN0YXJ0OgorICAgICAgICBtX2NsaWVudC0+aGFuZGxlRmxpY2tDYW5jZWxlZCgp
OworCiAgICAgICAgIG1fc3RhdGUgPSAmR2VzdHVyZVJlY29nbml6ZXI6OnNpbmdsZVRhcEdlc3R1
cmU7CiAgICAgICAgIG1fZmlyc3RQcmVzc2VkUG9pbnQgPSB0b0ludFBvaW50KGdldFBvaW50QXRJ
bmRleCh0b3VjaFBvaW50cywgMCkpOwogICAgICAgICBBU1NFUlQobV90YXBBbmRIb2xkVGltZXIp
OwpAQCAtMTI3LDcgKzEzMyw3IEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnNpbmdsZVRhcEdl
c3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50CiAgICAgICAgIGlm
IChtX2ZpcnN0UHJlc3NlZFBvaW50LmRpc3RhbmNlU3F1YXJlZFRvUG9pbnQoY3VycmVudFBvaW50
KSA+IHNfc3F1YXJlZFBhblRocmVzaG9sZCkgewogICAgICAgICAgICAgc3RvcFRhcFRpbWVycygp
OwogICAgICAgICAgICAgbV9zdGF0ZSA9ICZHZXN0dXJlUmVjb2duaXplcjo6cGFuR2VzdHVyZTsK
LSAgICAgICAgICAgIG1fY2xpZW50LT5oYW5kbGVQYW5TdGFydGVkKGN1cnJlbnRQb2ludCk7Cisg
ICAgICAgICAgICBoYW5kbGVQYW5TdGFydGVkKGN1cnJlbnRQb2ludCk7CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTcyLDcgKzE3OCw3IEBAIHZvaWQgR2VzdHVyZVJlY29n
bml6ZXI6OmRvdWJsZVRhcEdlc3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3Vj
aFBvaW50CiAgICAgICAgIEludFBvaW50IGN1cnJlbnRQb2ludCA9IHRvSW50UG9pbnQoZ2V0UG9p
bnRBdEluZGV4KHRvdWNoUG9pbnRzLCAwKSk7CiAgICAgICAgIGlmIChtX2ZpcnN0UHJlc3NlZFBv
aW50LmRpc3RhbmNlU3F1YXJlZFRvUG9pbnQoY3VycmVudFBvaW50KSA+IHNfc3F1YXJlZFBhblRo
cmVzaG9sZCkgewogICAgICAgICAgICAgbV9zdGF0ZSA9ICZHZXN0dXJlUmVjb2duaXplcjo6cGFu
R2VzdHVyZTsKLSAgICAgICAgICAgIG1fY2xpZW50LT5oYW5kbGVQYW5TdGFydGVkKGN1cnJlbnRQ
b2ludCk7CisgICAgICAgICAgICBoYW5kbGVQYW5TdGFydGVkKGN1cnJlbnRQb2ludCk7CiAgICAg
ICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTkzLDEwICsxOTksMTAgQEAgdm9pZCBH
ZXN0dXJlUmVjb2duaXplcjo6cGFuR2VzdHVyZShXS0V2ZW50VHlwZSB0eXBlLCBXS0FycmF5UmVm
IHRvdWNoUG9pbnRzKQogICAgICAgICBtX2NsaWVudC0+aGFuZGxlUGluY2hTdGFydGVkKGFkb3B0
UHRyKGNyZWF0ZVZlY3RvcldpdGhXS0FycmF5KHRvdWNoUG9pbnRzLCAyKSkuZ2V0KCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoTW92ZToKLSAgICAgICAgbV9j
bGllbnQtPmhhbmRsZVBhbih0b0ludFBvaW50KGdldFBvaW50QXRJbmRleCh0b3VjaFBvaW50cywg
MCkpKTsKKyAgICAgICAgdXBkYXRlQ3VycmVudFBvaW50KHRvSW50UG9pbnQoZ2V0UG9pbnRBdElu
ZGV4KHRvdWNoUG9pbnRzLCAwKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtXS0V2ZW50
VHlwZVRvdWNoRW5kOgotICAgICAgICBtX2NsaWVudC0+aGFuZGxlUGFuRmluaXNoZWQoKTsKKyAg
ICAgICAgaGFuZGxlUGFuRmluaXNoZWQoKTsKICAgICAgICAgbV9zdGF0ZSA9ICZHZXN0dXJlUmVj
b2duaXplcjo6bm9HZXN0dXJlOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMjI2
LDcgKzIzMiw3IEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnBpbmNoR2VzdHVyZShXS0V2ZW50
VHlwZSB0eXBlLCBXS0FycmF5UmVmIHRvdWNoUG9pbnRzKQogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVChwb2ludFJlZik7Ci0gICAg
ICAgICAgICBtX2NsaWVudC0+aGFuZGxlUGFuU3RhcnRlZCh0b0ludFBvaW50KFdLVG91Y2hQb2lu
dEdldFBvc2l0aW9uKHBvaW50UmVmKSkpOworICAgICAgICAgICAgaGFuZGxlUGFuU3RhcnRlZCh0
b0ludFBvaW50KFdLVG91Y2hQb2ludEdldFBvc2l0aW9uKHBvaW50UmVmKSkpOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0yMzgsNiArMjQ0LDExIEBAIHZvaWQg
R2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0KCkKIHsKICAgICBzdG9wVGFwVGltZXJzKCk7CiAKKyAg
ICBpZiAobV9wYW5BbmltYXRvcikgeworICAgICAgICBlY29yZV9hbmltYXRvcl9kZWwobV9wYW5B
bmltYXRvcik7CisgICAgICAgIG1fcGFuQW5pbWF0b3IgPSAwOworICAgIH0KKwogICAgIG1fc3Rh
dGUgPSAmR2VzdHVyZVJlY29nbml6ZXI6Om5vR2VzdHVyZTsKIH0KIApAQCAtMjU0LDQgKzI2NSw2
MSBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpzdG9wVGFwVGltZXJzKCkKICAgICB9CiB9CiAK
K0VpbmFfQm9vbCBHZXN0dXJlUmVjb2duaXplcjo6cGFuQW5pbWF0b3JDYWxsYmFjayh2b2lkKiBk
YXRhKQoreworICAgIEdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciA9IHN0YXRp
Y19jYXN0PEdlc3R1cmVSZWNvZ25pemVyKj4oZGF0YSk7CisgICAgaWYgKCFnZXN0dXJlUmVjb2du
aXplci0+bV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQpCisgICAgICAgIHJldHVybiBFQ09SRV9DQUxM
QkFDS19SRU5FVzsKKworICAgIGdlc3R1cmVSZWNvZ25pemVyLT5tX2NsaWVudC0+aGFuZGxlUGFu
KGdlc3R1cmVSZWNvZ25pemVyLT5tX2N1cnJlbnRQb2ludCk7CisgICAgZ2VzdHVyZVJlY29nbml6
ZXItPm1faXNDdXJyZW50UG9pbnRVcGRhdGVkID0gZmFsc2U7CisKKyAgICByZXR1cm4gRUNPUkVf
Q0FMTEJBQ0tfUkVORVc7Cit9CisKK3ZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OmhhbmRsZVBhblN0
YXJ0ZWQoY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIEFTU0VSVCghbV9wYW5BbmltYXRv
cik7CisgICAgbV9wYW5BbmltYXRvciA9IGVjb3JlX2FuaW1hdG9yX2FkZChwYW5BbmltYXRvckNh
bGxiYWNrLCB0aGlzKTsKKyAgICBtX2N1cnJlbnRQb2ludCA9IHBvaW50OworICAgIG1fZmlyc3RI
aXN0b3J5SXRlbUluZGV4ID0gMDsKKyAgICBtX2hpc3RvcnkucmVzaXplKDApOworCisgICAgbV9j
bGllbnQtPmhhbmRsZVBhblN0YXJ0ZWQocG9pbnQpOworfQorCit2b2lkIEdlc3R1cmVSZWNvZ25p
emVyOjp1cGRhdGVDdXJyZW50UG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIG1f
Y3VycmVudFBvaW50ID0gcG9pbnQ7CisgICAgbV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQgPSB0cnVl
OworCisgICAgLy8gU2F2ZSBjdXJyZW50IHBvaW50IHRvIHVzZSB0byBjYWxjdWxhdGUgb2Zmc2V0
IG9mIGZsaWNrLgorICAgIEhpc3RvcnlJdGVtIGl0ZW0gPSB7bV9jdXJyZW50UG9pbnQsIGVjb3Jl
X3RpbWVfZ2V0KCl9OworICAgIGlmIChtX2hpc3Rvcnkuc2l6ZSgpIDwgbV9oaXN0b3J5LmNhcGFj
aXR5KCkpCisgICAgICAgIG1faGlzdG9yeS51bmNoZWNrZWRBcHBlbmQoaXRlbSk7CisgICAgZWxz
ZSB7CisgICAgICAgIG1faGlzdG9yeVttX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCsrXSA9IGl0ZW07
CisgICAgICAgIGlmIChtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCA+PSBtX2hpc3RvcnkuY2FwYWNp
dHkoKSkKKyAgICAgICAgICAgIG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4ICU9IG1faGlzdG9yeS5j
YXBhY2l0eSgpOworICAgIH0KK30KKwordm9pZCBHZXN0dXJlUmVjb2duaXplcjo6aGFuZGxlUGFu
RmluaXNoZWQoKQoreworICAgIEFTU0VSVChtX3BhbkFuaW1hdG9yKTsKKyAgICBlY29yZV9hbmlt
YXRvcl9kZWwobV9wYW5BbmltYXRvcik7CisgICAgbV9wYW5BbmltYXRvciA9IDA7CisKKyAgICBp
ZiAoIW1faGlzdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gQ2FsY3VsYXRlIG9mZnNldCB0
byBtb3ZlIGR1cmluZyBvbmUgZnJhbWUuCisgICAgICAgIGNvbnN0IEhpc3RvcnlJdGVtJiBmaXJz
dEhpc3RvcnlJdGVtID0gbV9oaXN0b3J5W21fZmlyc3RIaXN0b3J5SXRlbUluZGV4XTsKKyAgICAg
ICAgZG91YmxlIGZyYW1lID0gKGVjb3JlX3RpbWVfZ2V0KCkgLSBmaXJzdEhpc3RvcnlJdGVtLnRp
bWVzdGFtcCkgLyBlY29yZV9hbmltYXRvcl9mcmFtZXRpbWVfZ2V0KCk7CisgICAgICAgIEludFNp
emUgb2Zmc2V0ID0gZmlyc3RIaXN0b3J5SXRlbS5wb2ludCAtIG1fY3VycmVudFBvaW50OworICAg
ICAgICBvZmZzZXQuc2NhbGUoMSAvIGZyYW1lKTsKKyAgICAgICAgbV9jbGllbnQtPmhhbmRsZUZs
aWNrKG9mZnNldCk7CisgICAgfQorCisgICAgbV9jbGllbnQtPmhhbmRsZVBhbkZpbmlzaGVkKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmgKaW5kZXggMzFiMzkyZTk2ZTE3NDgz
YTljM2VkNjhmZGY3NjI1YTI0N2YzOTJiMi4uMmZlZjQ1YmYyNTRhYzBmMzFmMmZhMjg3N2Q0OTVh
MzM4NTQ2NGNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
R2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9HZXN0dXJlUmVjb2duaXplci5oCkBAIC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlUGFuU3RhcnRlZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQYW4oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGFuRmluaXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlRmxpY2soY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVGbGlja0NhbmNlbGVkKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
UGluY2hTdGFydGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRQb2ludD4qKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlUGluY2goY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFBvaW50Piop
IHsgfQpAQCAtNjcsOSArNjksMTEgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IHNfdGFwQW5kSG9sZFRpbWVvdXQ7CiAgICAgc3RhdGljIGNvbnN0IGludCBzX3NxdWFyZWREb3Vi
bGVUYXBUaHJlc2hvbGQgPSAxMDAwMDsKICAgICBzdGF0aWMgY29uc3QgaW50IHNfc3F1YXJlZFBh
blRocmVzaG9sZCA9IDEwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHNfaGlzdG9yeUNhcGFjaXR5
ID0gNTsKIAogICAgIHN0YXRpYyBFaW5hX0Jvb2wgZG91YmxlVGFwVGltZXJDYWxsYmFjayh2b2lk
Kik7CiAgICAgc3RhdGljIEVpbmFfQm9vbCB0YXBBbmRIb2xkVGltZXJDYWxsYmFjayh2b2lkKik7
CisgICAgc3RhdGljIEVpbmFfQm9vbCBwYW5BbmltYXRvckNhbGxiYWNrKHZvaWQqKTsKIAogICAg
IC8vIFN0YXRlIGZ1bmN0aW9ucy4KICAgICB2b2lkIG5vR2VzdHVyZShXS0V2ZW50VHlwZSwgV0tB
cnJheVJlZik7CkBAIC03OSw2ICs4Myw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwaW5jaEdlc3R1
cmUoV0tFdmVudFR5cGUsIFdLQXJyYXlSZWYpOwogCiAgICAgdm9pZCBzdG9wVGFwVGltZXJzKCk7
CisgICAgdm9pZCBoYW5kbGVQYW5TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7Cisg
ICAgdm9pZCB1cGRhdGVDdXJyZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAg
ICB2b2lkIGhhbmRsZVBhbkZpbmlzaGVkKCk7CiAKICAgICB0eXBlZGVmIHZvaWQgKEdlc3R1cmVS
ZWNvZ25pemVyOjoqU3RhdGVGdW5jdGlvbikoV0tFdmVudFR5cGUsIFdLQXJyYXlSZWYpOwogICAg
IFN0YXRlRnVuY3Rpb24gbV9zdGF0ZTsKQEAgLTg3LDYgKzk0LDE3IEBAIHByaXZhdGU6CiAgICAg
RWNvcmVfVGltZXIqIG1fdGFwQW5kSG9sZFRpbWVyOwogICAgIEVjb3JlX1RpbWVyKiBtX2RvdWJs
ZVRhcFRpbWVyOwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fZmlyc3RQcmVzc2VkUG9pbnQ7CisK
KyAgICBFY29yZV9BbmltYXRvciogbV9wYW5BbmltYXRvcjsKKyAgICBXZWJDb3JlOjpJbnRQb2lu
dCBtX2N1cnJlbnRQb2ludDsKKyAgICBib29sIG1faXNDdXJyZW50UG9pbnRVcGRhdGVkOworCisg
ICAgdHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBwb2ludDsKKyAg
ICAgICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICB9IEhpc3RvcnlJdGVtOworICAgIFZlY3RvcjxI
aXN0b3J5SXRlbT4gbV9oaXN0b3J5OworICAgIHVuc2lnbmVkIG1fZmlyc3RIaXN0b3J5SXRlbUlu
ZGV4OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaAppbmRleCAzNWQ0YjUzM2QyMDcwMmVi
MjlhMmMyMmQ3MzQyOTBiZDI0YmJkNjAzLi42YmQ4OTE0ZWY1NjBkYzA3OGM3YjNlZDY1NTQ0MjE1
MGFiZmU2ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdw
b3J0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3Bv
cnRDb250cm9sbGVyLmgKQEAgLTcyLDYgKzcyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRI
YWRVc2VySW50ZXJhY3Rpb24oYm9vbCBkaWRVc2VySW50ZXJhY3QpIHsgbV9oYWRVc2VySW50ZXJh
Y3Rpb24gPSBkaWRVc2VySW50ZXJhY3Q7IH0KIAorICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBjb250
ZW50c1NpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU2l6ZTsgfQorCiAgICAgLy8gTm90
aWZpY2F0aW9ucyBmcm9tIHRoZSB2aWV3cG9ydC4KICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0
U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG5ld1NpemUpOwogICAgIHZvaWQgZGlkQ2hh
bmdlQ29udGVudHNWaXNpYmlsaXR5KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBmbG9hdCBz
Y2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvciA9IFdlYkNv
cmU6OkZsb2F0UG9pbnQ6Onplcm8oKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193780</attachid>
            <date>2013-03-19 03:55:11 -0700</date>
            <delta_ts>2013-07-04 01:04:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130319195057.patch</filename>
            <type>text/plain</type>
            <size>23229</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWFhYWVkZjg2NzljYzhj
Nzc4ZjM4NzNkYjlkYjdhMWIyMmJmYmE1Ni4uODY1MWU0OWE1NjBmZGU4ZjcyNDllNmVmZjhmM2Qy
ZWE1NjA3NWJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYwIEBACiAyMDEzLTAzLTE5ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KIAorICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFuIGdlc3R1cmUgdG8gc2Nyb2xsIHBh
Z2UgYnkgbW92ZW1lbnQgb2YgcG9pbnQgYW5kIHN0b3AKKyAgICAgICAgc2Nyb2xsaW5nIHNtb290
aGx5IHVzaW5nIGVhc2UtaW4tb3V0LXF1YWQgYWxnb3JpdGhtIGFmdGVyIHRvdWNoZWQKKyAgICAg
ICAgcG9pbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY3JlZW4uCisKKyAgICAgICAgVXNlIEVjb3Jl
X0FuaW1hdG9yIGluIG9yZGVyIHRvIHByb2Nlc3Mgb25jZSBwZXIgZWFjaCBmcmFtaW5nIHRpbWUg
c2xvdHMKKyAgICAgICAgaW5zdGVhZCBvZiBwcm9jZXNzaW5nIGFsbCBtb3ZlbWVudC4KKworICAg
ICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0Vh
c2luZ0N1cnZlcy5jcHA6IEFkZGVkLgorICAgICAgICAoZWFzZUluT3V0UXVhZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAgICAoRXdrVmlldzo6Ym91bmRDb250
ZW50c1Bvc2l0aW9uKToKKyAgICAgICAgKEV3a1ZpZXc6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEV3a1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVy
LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25p
emVyOjpHZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25p
emVyOjpub0dlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6c2lu
Z2xlVGFwR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyOjpkb3Vi
bGVUYXBHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6OnBhbkdl
c3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6cGluY2hHZXN0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6OnBhbkFuaW1hdG9yQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6aGFuZGxlUGFuU3RhcnRlZCk6CisgICAgICAg
IChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyOjp1cGRhdGVDdXJyZW50UG9pbnQpOgorICAgICAg
ICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6aGFuZGxlUGFuRmluaXNoZWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmg6CisgICAgICAgIChXZWJL
aXQ6Okdlc3R1cmVSZWNvZ25pemVyQ2xpZW50OjpoYW5kbGVGbGljayk6CisgICAgICAgIChXZWJL
aXQ6Okdlc3R1cmVSZWNvZ25pemVyQ2xpZW50OjpoYW5kbGVGbGlja0NhbmNlbGVkKToKKyAgICAg
ICAgKEdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9HZXN0
dXJlUmVjb2duaXplckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNv
Z25pemVyQ2xpZW50RWZsOjpHZXN0dXJlUmVjb2duaXplckNsaWVudEVmbCk6CisgICAgICAgIChX
ZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyQ2xpZW50RWZsOjpoYW5kbGVQYW5TdGFydGVkKToKKyAg
ICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmw6OmhhbmRsZVBhbik6Cisg
ICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyQ2xpZW50RWZsOjpmbGlja0FuaW1hdG9y
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJl
Y29nbml6ZXJDbGllbnRFZmw6OmhhbmRsZUZsaWNrKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVy
ZVJlY29nbml6ZXJDbGllbnRFZmw6OmhhbmRsZUZsaWNrQ2FuY2VsZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyQ2xpZW50RWZsLmg6CisgICAgICAgIChH
ZXN0dXJlUmVjb2duaXplckNsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VWaWV3
cG9ydENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
cjo6Y29udGVudHNTaXplKToKKyAgICAgICAgKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOgorCisy
MDEzLTAzLTE5ICBFdW5taSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKwogICAgICAg
ICBbRUZMXVtXSzJdIFByb2Nlc3Mgc2luZ2xlIHRhcCB1c2luZyBXZWJFdmVudDo6R2VzdHVyZVNp
bmdsZVRhcC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNjg2NAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDNiNzM5NjllNjJkYjMzMzEw
M2RkOTY4MmU5NzBhOGFmMzEwNWFhYWUuLjYyZTA2ZTVmOTA1Y2MyYWQzYTM1MWI5NTA4NWZiYmVl
NjFmZjVkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC01MCw2ICs1MCw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29v
a2llTWFuYWdlclNvdXAuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVz
dE1hbmFnZXIuY3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9FYXNpbmdDdXJ2ZXMuY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9F
dmFzR0xDb250ZXh0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FYXNpbmdDdXJ2
ZXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNmNjZjQ2Zjk3NjE1YTYwZGJjMzM2NTk5MTdhODVjZDU5Y2E4ZmQ2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5n
Q3VydmVzLmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAxIFJv
YmVydCBQZW5uZXIgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBT
YW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
TmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgY29udHJpYnV0
b3JzIG1heSBiZQorICogICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMiQVMgSVMiCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKgorICogUm9iZXJ0IFBlbm5lcidzIGVhc2lu
ZyBlcXVhdGlvbnMuIGh0dHA6Ly93d3cucm9iZXJ0cGVubmVyLmNvbS9lYXNpbmcvCisgKiBzdGF0
aWMgZnVuY3Rpb24gZWFzZUluT3V0UXVhZCAodDpOdW1iZXIsIGI6TnVtYmVyLCBjOk51bWJlciwg
ZDpOdW1iZXIpOk51bWJlciB7CisgKiAgICAgaWYgKCh0Lz1kLzIpIDwgMSkgcmV0dXJuIGMvMip0
KnQgKyBiOworICogICAgIHJldHVybiAtYy8yICogKCgtLXQpKih0LTIpIC0gMSkgKyBiOworICog
fQorICovCitmbG9hdCBlYXNlSW5PdXRRdWFkKGZsb2F0IHRpbWUsIGNvbnN0IGZsb2F0IGJhc2Us
IGNvbnN0IGZsb2F0IGNvbnN0YW50LCBjb25zdCB1bnNpZ25lZCBkdXJhdGlvbikKK3sKKyAgICBp
ZiAodGltZSA+IGR1cmF0aW9uIHx8IHRpbWUgPCAwKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IGlmICgodGltZSAvPSAoZHVyYXRpb24gLyAyKSkgPCAxKQorICAgICAgICByZXR1cm4gKGNvbnN0
YW50IC8gMikgKiB0aW1lICogdGltZSArIGJhc2U7CisKKyAgICB0aW1lIC09IDE7CisgICAgcmV0
dXJuIC0xICogKGNvbnN0YW50IC8gMikgKiAodGltZSAqICh0aW1lIC0gMikgLSAxKSArIGJhc2U7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FYXNpbmdD
dXJ2ZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0Vhc2luZ0N1cnZlcy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI3MjZjNmZjNDA3NjMxZDZhYThmM2Y1YmUwYjhjYzVmYWQ1MmE0MDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FYXNpbmdD
dXJ2ZXMuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAxIFJvYmVy
dCBQZW5uZXIgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1z
dW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVp
dGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgY29udHJpYnV0b3Jz
IG1heSBiZQorICogICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEVhc2luZ0N1cnZlc19oCisjZGVmaW5l
IEVhc2luZ0N1cnZlc19oCisKK2Zsb2F0IGVhc2VJbk91dFF1YWQoZmxvYXQgdGltZSwgY29uc3Qg
ZmxvYXQgYmFzZSwgY29uc3QgZmxvYXQgY29uc3RhbnQsIGNvbnN0IHVuc2lnbmVkIGR1cmF0aW9u
KTsKKworI2VuZGlmIC8vIEVhc2luZ0N1cnZlc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXcuY3BwCmluZGV4IDg0MTkyODhmOGVkNzE1MWQ5ZGE5OTQ4YTJiMjEx
ZTk1MzdmMTNmMGEuLmY2ZjJlZmE2N2Q4ZTQzN2FjYjYyYmI3ZDBjOWUwMmM3ZGM5ZTBlNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC0xMDIy
LDYgKzEwMjIsMzUgQEAgdW5zaWduZWQgbG9uZyBsb25nIEV3a1ZpZXc6OmluZm9ybURhdGFiYXNl
UXVvdGFSZWFjaGVkKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW0KIH0KICNlbmRpZgogCitGbG9h
dFBvaW50IEV3a1ZpZXc6OmJvdW5kQ29udGVudHNQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBw
YWdlUG9zaXRpb24pCit7CisgICAgRmxvYXRSZWN0IGJvdW5kczsKKyAgICBGbG9hdFNpemUgY29u
dGVudHNTaXplID0gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5jb250ZW50c1NpemUoKTsKKyAg
ICBib3VuZHMuc2V0V2lkdGgoc3RkOjptYXgoMC5mLCBjZWlsZihjb250ZW50c1NpemUud2lkdGgo
KSAqIG1fcGFnZVNjYWxlRmFjdG9yKSkgLSBzaXplKCkud2lkdGgoKSk7CisgICAgYm91bmRzLnNl
dEhlaWdodChzdGQ6Om1heCgwLmYsIGNlaWxmKGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSAqIG1fcGFn
ZVNjYWxlRmFjdG9yKSkgLSBzaXplKCkuaGVpZ2h0KCkpOworCisgICAgRmxvYXRQb2ludCBwb3Np
dGlvbjsKKyAgICBwb3NpdGlvbi5zZXRYKGNsYW1wVG8ocGFnZVBvc2l0aW9uLngoKSwgYm91bmRz
LngoKSwgYm91bmRzLndpZHRoKCkpKTsKKyAgICBwb3NpdGlvbi5zZXRZKGNsYW1wVG8ocGFnZVBv
c2l0aW9uLnkoKSwgYm91bmRzLnkoKSwgYm91bmRzLmhlaWdodCgpKSk7CisKKyAgICByZXR1cm4g
cG9zaXRpb247Cit9CisKK2Jvb2wgRXdrVmlldzo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgb2Zm
c2V0KQoreworICAgIEZsb2F0UG9pbnQgY3VycmVudFBvc2l0aW9uID0gbV9wYWdlUG9zaXRpb247
CisgICAgRmxvYXRQb2ludCBuZXdQb3NpdGlvbiA9IGJvdW5kQ29udGVudHNQb3NpdGlvbihtX3Bh
Z2VQb3NpdGlvbiArIG9mZnNldCk7CisgICAgc2V0UGFnZVBvc2l0aW9uKG5ld1Bvc2l0aW9uKTsK
KworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmls
aXR5KGNlaWxlZEludFBvaW50KHdlYlZpZXcoKS0+dHJhbnNmb3JtRnJvbVNjZW5lKCkubWFwUG9p
bnQobmV3UG9zaXRpb24pKSwgbV9wYWdlU2NhbGVGYWN0b3IpOworCisgICAgLy8gSWYgdGhlIHBh
Z2UgcG9zaXRpb24gaXMgbm90IGNoYW5nZWQsIG5vdGlmeSB0aGF0IHVzaW5nIHJldHVybmluZyB2
YWx1ZS4KKyAgICBpZiAoY3VycmVudFBvc2l0aW9uID09IG1fcGFnZVBvc2l0aW9uKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogLyoqCiAgKiBAaW50ZXJu
YWwKICAqIFRoZSB1cmwgb2YgdmlldyB3YXMgY2hhbmdlZCBieSB0aGUgZnJhbWUgbG9hZGVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCmluZGV4IDQ3MTA4YzM5
YjQ4ZDYwYzAzMWJiYzk5MzY3OTAzNThkZDg0ZjFlM2EuLjc0Zjg4NDU5ZTc2Zjk3MjdiZWI1NTk3
ZjI3MmU2ZDU0M2NlMmY1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmgKQEAgLTg0LDYgKzg0LDcgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3Mg
Q29sb3I7CiBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU7CiBjbGFzcyBDdXJzb3I7Citj
bGFzcyBGbG9hdFBvaW50OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0
cml4OwogfQpAQCAtMjEzLDYgKzIxNCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UGFnZVBv
c2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fcGFnZVBvc2l0
aW9uID0gcG9zaXRpb247IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50IHBhZ2VQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVBvc2l0aW9uOyB9CisgICAgV2ViQ29yZTo6Rmxv
YXRQb2ludCBib3VuZENvbnRlbnRzUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
OworICAgIGJvb2wgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCiAgICAgLy8g
RklYTUU6IG5lZWRzIHJlZmFjdG9yaW5nIChzcGxpdCBjYWxsYmFjayBpbnZva2UpCiAgICAgdm9p
ZCBpbmZvcm1VUkxDaGFuZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcAppbmRleCBiYjI2OGNlMzZkZjk1OGIwOGU2
ZDczM2U4ODIzZWY1N2RiYmQ2ZjMxLi43OTg5NGJiZWUxY2RmMjA2ZWNjZmNmZmNjZDBjYWU3MTQ5
MDRiYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0
dXJlUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
R2VzdHVyZVJlY29nbml6ZXIuY3BwCkBAIC00MCwxMyArNDAsMTggQEAgY29uc3QgZG91YmxlIEdl
c3R1cmVSZWNvZ25pemVyOjpzX2RvdWJsZVRhcFRpbWVvdXRJblNlY29uZHMgPSAwLjQ7CiBjb25z
dCBkb3VibGUgR2VzdHVyZVJlY29nbml6ZXI6OnNfdGFwQW5kSG9sZFRpbWVvdXRJblNlY29uZHMg
PSAxLjA7CiBjb25zdCBpbnQgR2VzdHVyZVJlY29nbml6ZXI6OnNfc3F1YXJlZERvdWJsZVRhcFRo
cmVzaG9sZCA9IDEwMDAwOwogY29uc3QgaW50IEdlc3R1cmVSZWNvZ25pemVyOjpzX3NxdWFyZWRQ
YW5UaHJlc2hvbGQgPSAxMDA7Citjb25zdCBpbnQgR2VzdHVyZVJlY29nbml6ZXI6OnNfaGlzdG9y
eUNhcGFjaXR5ID0gNTsKIAogR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVSZWNvZ25pemVyKEdl
c3R1cmVSZWNvZ25pemVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX3JlY29nbml6ZXJGdW5jdGlv
bigmR2VzdHVyZVJlY29nbml6ZXI6Om5vR2VzdHVyZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkK
ICAgICAsIG1fdGFwQW5kSG9sZFRpbWVyKDApCiAgICAgLCBtX2RvdWJsZVRhcFRpbWVyKDApCisg
ICAgLCBtX3BhbkFuaW1hdG9yKDApCisgICAgLCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZChmYWxz
ZSkKKyAgICAsIG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4KDApCiB7CisgICAgbV9oaXN0b3J5LnJl
c2VydmVDYXBhY2l0eShzX2hpc3RvcnlDYXBhY2l0eSk7CiB9CiAKIHZvaWQgR2VzdHVyZVJlY29n
bml6ZXI6OnByb2Nlc3NUb3VjaEV2ZW50KFdLVG91Y2hFdmVudFJlZiBldmVudFJlZikKQEAgLTEw
Nyw2ICsxMTIsOCBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmUoV0tFdmVudFR5
cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50cykKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoU3RhcnQ6CisgICAgICAgIG1fY2xpZW50LT5oYW5k
bGVGbGlja0NhbmNlbGVkKCk7CisKICAgICAgICAgbV9yZWNvZ25pemVyRnVuY3Rpb24gPSAmR2Vz
dHVyZVJlY29nbml6ZXI6OnNpbmdsZVRhcEdlc3R1cmU7CiAgICAgICAgIG1fZmlyc3RQcmVzc2Vk
UG9pbnQgPSB0b0ludFBvaW50KGdldFBvaW50QXRJbmRleCh0b3VjaFBvaW50cywgMCkpOwogICAg
ICAgICBBU1NFUlQobV90YXBBbmRIb2xkVGltZXIpOwpAQCAtMTMxLDcgKzEzOCw3IEBAIHZvaWQg
R2VzdHVyZVJlY29nbml6ZXI6OnNpbmdsZVRhcEdlc3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tB
cnJheVJlZiB0b3VjaFBvaW50CiAgICAgICAgIGlmIChtX2ZpcnN0UHJlc3NlZFBvaW50LmRpc3Rh
bmNlU3F1YXJlZFRvUG9pbnQoY3VycmVudFBvaW50KSA+IHNfc3F1YXJlZFBhblRocmVzaG9sZCkg
ewogICAgICAgICAgICAgc3RvcFRhcFRpbWVycygpOwogICAgICAgICAgICAgbV9yZWNvZ25pemVy
RnVuY3Rpb24gPSAmR2VzdHVyZVJlY29nbml6ZXI6OnBhbkdlc3R1cmU7Ci0gICAgICAgICAgICBt
X2NsaWVudC0+aGFuZGxlUGFuU3RhcnRlZChjdXJyZW50UG9pbnQpOworICAgICAgICAgICAgaGFu
ZGxlUGFuU3RhcnRlZChjdXJyZW50UG9pbnQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTE3Niw3ICsxODMsNyBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpkb3VibGVU
YXBHZXN0dXJlKFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludAogICAgICAg
ICBJbnRQb2ludCBjdXJyZW50UG9pbnQgPSB0b0ludFBvaW50KGdldFBvaW50QXRJbmRleCh0b3Vj
aFBvaW50cywgMCkpOwogICAgICAgICBpZiAobV9maXJzdFByZXNzZWRQb2ludC5kaXN0YW5jZVNx
dWFyZWRUb1BvaW50KGN1cnJlbnRQb2ludCkgPiBzX3NxdWFyZWRQYW5UaHJlc2hvbGQpIHsKICAg
ICAgICAgICAgIG1fcmVjb2duaXplckZ1bmN0aW9uID0gJkdlc3R1cmVSZWNvZ25pemVyOjpwYW5H
ZXN0dXJlOwotICAgICAgICAgICAgbV9jbGllbnQtPmhhbmRsZVBhblN0YXJ0ZWQoY3VycmVudFBv
aW50KTsKKyAgICAgICAgICAgIGhhbmRsZVBhblN0YXJ0ZWQoY3VycmVudFBvaW50KTsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xOTcsMTAgKzIwNCwxMCBAQCB2b2lkIEdl
c3R1cmVSZWNvZ25pemVyOjpwYW5HZXN0dXJlKFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYg
dG91Y2hQb2ludHMpCiAgICAgICAgIG1fY2xpZW50LT5oYW5kbGVQaW5jaFN0YXJ0ZWQoKmFkb3B0
UHRyKGNyZWF0ZVZlY3RvcldpdGhXS0FycmF5KHRvdWNoUG9pbnRzLCAyKSkuZ2V0KCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoTW92ZToKLSAgICAgICAgbV9j
bGllbnQtPmhhbmRsZVBhbih0b0ludFBvaW50KGdldFBvaW50QXRJbmRleCh0b3VjaFBvaW50cywg
MCkpKTsKKyAgICAgICAgdXBkYXRlQ3VycmVudFBvaW50KHRvSW50UG9pbnQoZ2V0UG9pbnRBdElu
ZGV4KHRvdWNoUG9pbnRzLCAwKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtXS0V2ZW50
VHlwZVRvdWNoRW5kOgotICAgICAgICBtX2NsaWVudC0+aGFuZGxlUGFuRmluaXNoZWQoKTsKKyAg
ICAgICAgaGFuZGxlUGFuRmluaXNoZWQoKTsKICAgICAgICAgbV9yZWNvZ25pemVyRnVuY3Rpb24g
PSAmR2VzdHVyZVJlY29nbml6ZXI6Om5vR2VzdHVyZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKQEAgLTIzMCw3ICsyMzcsNyBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpwaW5jaEdl
c3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50cykKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQocG9p
bnRSZWYpOwotICAgICAgICAgICAgbV9jbGllbnQtPmhhbmRsZVBhblN0YXJ0ZWQodG9JbnRQb2lu
dChXS1RvdWNoUG9pbnRHZXRQb3NpdGlvbihwb2ludFJlZikpKTsKKyAgICAgICAgICAgIGhhbmRs
ZVBhblN0YXJ0ZWQodG9JbnRQb2ludChXS1RvdWNoUG9pbnRHZXRQb3NpdGlvbihwb2ludFJlZikp
KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMjQyLDYgKzI0
OSwxMSBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCgpCiB7CiAgICAgc3RvcFRhcFRp
bWVycygpOwogCisgICAgaWYgKG1fcGFuQW5pbWF0b3IpIHsKKyAgICAgICAgZWNvcmVfYW5pbWF0
b3JfZGVsKG1fcGFuQW5pbWF0b3IpOworICAgICAgICBtX3BhbkFuaW1hdG9yID0gMDsKKyAgICB9
CisKICAgICBtX3JlY29nbml6ZXJGdW5jdGlvbiA9ICZHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0
dXJlOwogfQogCkBAIC0yNTgsNiArMjcwLDYzIEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnN0
b3BUYXBUaW1lcnMoKQogICAgIH0KIH0KIAorRWluYV9Cb29sIEdlc3R1cmVSZWNvZ25pemVyOjpw
YW5BbmltYXRvckNhbGxiYWNrKHZvaWQqIGRhdGEpCit7CisgICAgR2VzdHVyZVJlY29nbml6ZXIq
IGdlc3R1cmVSZWNvZ25pemVyID0gc3RhdGljX2Nhc3Q8R2VzdHVyZVJlY29nbml6ZXIqPihkYXRh
KTsKKyAgICBpZiAoIWdlc3R1cmVSZWNvZ25pemVyLT5tX2lzQ3VycmVudFBvaW50VXBkYXRlZCkK
KyAgICAgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX1JFTkVXOworCisgICAgZ2VzdHVyZVJlY29n
bml6ZXItPm1fY2xpZW50LT5oYW5kbGVQYW4oZ2VzdHVyZVJlY29nbml6ZXItPm1fY3VycmVudFBv
aW50KTsKKyAgICBnZXN0dXJlUmVjb2duaXplci0+bV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQgPSBm
YWxzZTsKKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19SRU5FVzsKK30KKwordm9pZCBHZXN0
dXJlUmVjb2duaXplcjo6aGFuZGxlUGFuU3RhcnRlZChjb25zdCBJbnRQb2ludCYgcG9pbnQpCit7
CisgICAgQVNTRVJUKCFtX3BhbkFuaW1hdG9yKTsKKyAgICBtX3BhbkFuaW1hdG9yID0gZWNvcmVf
YW5pbWF0b3JfYWRkKHBhbkFuaW1hdG9yQ2FsbGJhY2ssIHRoaXMpOworICAgIG1fY3VycmVudFBv
aW50ID0gcG9pbnQ7CisgICAgbV9maXJzdEhpc3RvcnlJdGVtSW5kZXggPSAwOworICAgIG1faGlz
dG9yeS5yZXNpemUoMCk7CisKKyAgICBtX2NsaWVudC0+aGFuZGxlUGFuU3RhcnRlZChwb2ludCk7
Cit9CisKK3ZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnVwZGF0ZUN1cnJlbnRQb2ludChjb25zdCBJ
bnRQb2ludCYgcG9pbnQpCit7CisgICAgbV9jdXJyZW50UG9pbnQgPSBwb2ludDsKKyAgICBtX2lz
Q3VycmVudFBvaW50VXBkYXRlZCA9IHRydWU7CisKKyAgICAvLyBTYXZlIGN1cnJlbnQgcG9pbnQg
dG8gdXNlIHRvIGNhbGN1bGF0ZSBvZmZzZXQgb2YgZmxpY2suCisgICAgSGlzdG9yeUl0ZW0gaXRl
bSA9IHttX2N1cnJlbnRQb2ludCwgZWNvcmVfdGltZV9nZXQoKX07CisgICAgaWYgKG1faGlzdG9y
eS5zaXplKCkgPCBtX2hpc3RvcnkuY2FwYWNpdHkoKSkKKyAgICAgICAgbV9oaXN0b3J5LnVuY2hl
Y2tlZEFwcGVuZChpdGVtKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV9oaXN0b3J5W21fZmlyc3RI
aXN0b3J5SXRlbUluZGV4KytdID0gaXRlbTsKKyAgICAgICAgaWYgKG1fZmlyc3RIaXN0b3J5SXRl
bUluZGV4ID49IG1faGlzdG9yeS5jYXBhY2l0eSgpKQorICAgICAgICAgICAgbV9maXJzdEhpc3Rv
cnlJdGVtSW5kZXggJT0gbV9oaXN0b3J5LmNhcGFjaXR5KCk7CisgICAgfQorfQorCit2b2lkIEdl
c3R1cmVSZWNvZ25pemVyOjpoYW5kbGVQYW5GaW5pc2hlZCgpCit7CisgICAgQVNTRVJUKG1fcGFu
QW5pbWF0b3IpOworICAgIGVjb3JlX2FuaW1hdG9yX2RlbChtX3BhbkFuaW1hdG9yKTsKKyAgICBt
X3BhbkFuaW1hdG9yID0gMDsKKworICAgIGlmICghbV9oaXN0b3J5LmlzRW1wdHkoKSkgeworICAg
ICAgICAvLyBDYWxjdWxhdGUgb2Zmc2V0IHRvIG1vdmUgZHVyaW5nIG9uZSBmcmFtZS4KKyAgICAg
ICAgY29uc3QgSGlzdG9yeUl0ZW0mIGZpcnN0SGlzdG9yeUl0ZW0gPSBtX2hpc3RvcnlbbV9maXJz
dEhpc3RvcnlJdGVtSW5kZXhdOworICAgICAgICBkb3VibGUgZnJhbWUgPSAoZWNvcmVfdGltZV9n
ZXQoKSAtIGZpcnN0SGlzdG9yeUl0ZW0udGltZXN0YW1wKSAvIGVjb3JlX2FuaW1hdG9yX2ZyYW1l
dGltZV9nZXQoKTsKKyAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSBmaXJzdEhpc3RvcnlJdGVtLnBv
aW50IC0gbV9jdXJyZW50UG9pbnQ7CisgICAgICAgIG9mZnNldC5zY2FsZSgxIC8gZnJhbWUpOwor
ICAgICAgICBtX2NsaWVudC0+aGFuZGxlRmxpY2sob2Zmc2V0KTsKKyAgICB9CisKKyAgICBtX2Ns
aWVudC0+aGFuZGxlUGFuRmluaXNoZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmgKaW5kZXggMmUxZjJiNzEzOWUw
Y2QxYzAzZTc4OTI0MmRiNGZlNDA5MGMxZTllMy4uYzlmOGJhMDI3ZjQzZDI4Nzg3ZDE0NGFjZGFj
ZTY5NGFkMmQwZDllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvR2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9HZXN0dXJlUmVjb2duaXplci5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlUGFuU3RhcnRlZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQYW4oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGFuRmluaXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlRmxpY2soY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVGbGlja0NhbmNlbGVkKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlUGluY2hTdGFydGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGluY2goY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFBvaW50
PiYpIHsgfQpAQCAtNjksOSArNzEsMTEgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgZG91
YmxlIHNfdGFwQW5kSG9sZFRpbWVvdXRJblNlY29uZHM7CiAgICAgc3RhdGljIGNvbnN0IGludCBz
X3NxdWFyZWREb3VibGVUYXBUaHJlc2hvbGQ7CiAgICAgc3RhdGljIGNvbnN0IGludCBzX3NxdWFy
ZWRQYW5UaHJlc2hvbGQ7CisgICAgc3RhdGljIGNvbnN0IGludCBzX2hpc3RvcnlDYXBhY2l0eTsK
IAogICAgIHN0YXRpYyBFaW5hX0Jvb2wgZG91YmxlVGFwVGltZXJDYWxsYmFjayh2b2lkKik7CiAg
ICAgc3RhdGljIEVpbmFfQm9vbCB0YXBBbmRIb2xkVGltZXJDYWxsYmFjayh2b2lkKik7CisgICAg
c3RhdGljIEVpbmFfQm9vbCBwYW5BbmltYXRvckNhbGxiYWNrKHZvaWQqKTsKIAogICAgIC8vIFN0
YXRlIGZ1bmN0aW9ucy4KICAgICB2b2lkIG5vR2VzdHVyZShXS0V2ZW50VHlwZSwgV0tBcnJheVJl
Zik7CkBAIC04MSw2ICs4NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwaW5jaEdlc3R1cmUoV0tF
dmVudFR5cGUsIFdLQXJyYXlSZWYpOwogCiAgICAgdm9pZCBzdG9wVGFwVGltZXJzKCk7CisgICAg
dm9pZCBoYW5kbGVQYW5TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdm9p
ZCB1cGRhdGVDdXJyZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lk
IGhhbmRsZVBhbkZpbmlzaGVkKCk7CiAKICAgICB0eXBlZGVmIHZvaWQgKEdlc3R1cmVSZWNvZ25p
emVyOjoqUmVjb2duaXplckZ1bmN0aW9uKShXS0V2ZW50VHlwZSwgV0tBcnJheVJlZik7CiAgICAg
UmVjb2duaXplckZ1bmN0aW9uIG1fcmVjb2duaXplckZ1bmN0aW9uOwpAQCAtODksNiArOTYsMTcg
QEAgcHJpdmF0ZToKICAgICBFY29yZV9UaW1lciogbV90YXBBbmRIb2xkVGltZXI7CiAgICAgRWNv
cmVfVGltZXIqIG1fZG91YmxlVGFwVGltZXI7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9maXJz
dFByZXNzZWRQb2ludDsKKworICAgIEVjb3JlX0FuaW1hdG9yKiBtX3BhbkFuaW1hdG9yOworICAg
IFdlYkNvcmU6OkludFBvaW50IG1fY3VycmVudFBvaW50OworICAgIGJvb2wgbV9pc0N1cnJlbnRQ
b2ludFVwZGF0ZWQ7CisKKyAgICB0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgIFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50OworICAgICAgICBkb3VibGUgdGltZXN0YW1wOworICAgIH0gSGlzdG9yeUl0
ZW07CisgICAgVmVjdG9yPEhpc3RvcnlJdGVtPiBtX2hpc3Rvcnk7CisgICAgdW5zaWduZWQgbV9m
aXJzdEhpc3RvcnlJdGVtSW5kZXg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVy
Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVS
ZWNvZ25pemVyQ2xpZW50RWZsLmNwcAppbmRleCBiNjhjZDVkMjZjY2MyZjdiYjMyNjRlODliMzI3
OTU1YjUxZTQ2OTljLi5iZmFkNjk4YzBiNjcwNTg3MjMwNmU4ZmZmNDJjODE5MGJmMTgxNDk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2du
aXplckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
R2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmwuaCIKIAor
I2luY2x1ZGUgIkVhc2luZ0N1cnZlcy5oIgogI2luY2x1ZGUgIkV3a1ZpZXcuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0ludFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgpAQCAtMzksNiArNDAsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogR2VzdHVyZVJlY29nbml6
ZXJDbGllbnRFZmw6Okdlc3R1cmVSZWNvZ25pemVyQ2xpZW50RWZsKEV3a1ZpZXcqIHZpZXcpCiAg
ICAgOiBtX3ZpZXcodmlldykKKyAgICAsIG1fZmxpY2tBbmltYXRvcigwKQorICAgICwgbV9mbGlj
a0R1cmF0aW9uKDApCisgICAgLCBtX2ZsaWNrSW5kZXgoMCkKIHsKIH0KIApAQCAtNjEsMTQgKzY1
LDE4IEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmw6OmhhbmRsZVRhcEFuZEhvbGQo
Y29uc3QgSW50UG9pbnQmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgR2VzdHVy
ZVJlY29nbml6ZXJDbGllbnRFZmw6OmhhbmRsZVBhblN0YXJ0ZWQoY29uc3QgSW50UG9pbnQmKQor
dm9pZCBHZXN0dXJlUmVjb2duaXplckNsaWVudEVmbDo6aGFuZGxlUGFuU3RhcnRlZChjb25zdCBJ
bnRQb2ludCYgcG9pbnQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2xhc3RQb2lu
dCA9IHBvaW50OwogfQogCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2xpZW50RWZsOjpoYW5kbGVQ
YW4oY29uc3QgSW50UG9pbnQmIHBvaW50KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
aWYgKG1fbGFzdFBvaW50ID09IHBvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ZpZXct
PnNjcm9sbEJ5KG1fbGFzdFBvaW50IC0gcG9pbnQpOworICAgIG1fbGFzdFBvaW50ID0gcG9pbnQ7
CiB9CiAKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmw6OmhhbmRsZVBhbkZpbmlzaGVk
KCkKQEAgLTc2LDYgKzg0LDQwIEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmw6Omhh
bmRsZVBhbkZpbmlzaGVkKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitFaW5hX0Jvb2wg
R2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmw6OmZsaWNrQW5pbWF0b3JDYWxsYmFjayh2b2lkKiBk
YXRhKQoreworICAgIEdlc3R1cmVSZWNvZ25pemVyQ2xpZW50RWZsKiBjbGllbnQgPSBzdGF0aWNf
Y2FzdDxHZXN0dXJlUmVjb2duaXplckNsaWVudEVmbCo+KGRhdGEpOworICAgIGZsb2F0IG11bHRp
cGxpZXIgPSBlYXNlSW5PdXRRdWFkKGNsaWVudC0+bV9mbGlja0luZGV4LCAwLCAxLjAsIGNsaWVu
dC0+bV9mbGlja0R1cmF0aW9uKTsKKyAgICBmbG9hdCBvZmZzZXRXaWR0aCA9IGNsaWVudC0+bV9m
bGlja09mZnNldC53aWR0aCgpICogbXVsdGlwbGllcjsKKyAgICBmbG9hdCBvZmZzZXRIZWlnaHQg
PSBjbGllbnQtPm1fZmxpY2tPZmZzZXQuaGVpZ2h0KCkgKiBtdWx0aXBsaWVyOworICAgIG9mZnNl
dFdpZHRoID0gKG9mZnNldFdpZHRoID4gMCkgPyBjZWlsZihvZmZzZXRXaWR0aCkgOiBmbG9vcmYo
b2Zmc2V0V2lkdGgpOworICAgIG9mZnNldEhlaWdodCA9IChvZmZzZXRIZWlnaHQgPiAwKSA/IGNl
aWxmKG9mZnNldEhlaWdodCkgOiBmbG9vcmYob2Zmc2V0SGVpZ2h0KTsKKyAgICBJbnRTaXplIG9m
ZnNldChvZmZzZXRXaWR0aCwgb2Zmc2V0SGVpZ2h0KTsKKyAgICBjbGllbnQtPm1fZmxpY2tJbmRl
eC0tOworCisgICAgaWYgKG9mZnNldC5pc1plcm8oKSB8fCAhY2xpZW50LT5tX3ZpZXctPnNjcm9s
bEJ5KG9mZnNldCkgfHwgIWNsaWVudC0+bV9mbGlja0luZGV4KSB7CisgICAgICAgIGNsaWVudC0+
bV9mbGlja0FuaW1hdG9yID0gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2xpZW50RWZsOjpoYW5k
bGVGbGljayhjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgbV9mbGlja09mZnNldCA9IG9m
ZnNldDsKKyAgICBtX2ZsaWNrSW5kZXggPSBtX2ZsaWNrRHVyYXRpb24gPSAxIC8gZWNvcmVfYW5p
bWF0b3JfZnJhbWV0aW1lX2dldCgpOworICAgIG1fZmxpY2tBbmltYXRvciA9IGVjb3JlX2FuaW1h
dG9yX2FkZChmbGlja0FuaW1hdG9yQ2FsbGJhY2ssIHRoaXMpOworfQorCit2b2lkIEdlc3R1cmVS
ZWNvZ25pemVyQ2xpZW50RWZsOjpoYW5kbGVGbGlja0NhbmNlbGVkKCkKK3sKKyAgICBpZiAobV9m
bGlja0FuaW1hdG9yKSB7CisgICAgICAgIGVjb3JlX2FuaW1hdG9yX2RlbChtX2ZsaWNrQW5pbWF0
b3IpOworICAgICAgICBtX2ZsaWNrQW5pbWF0b3IgPSAwOworICAgIH0KK30KKwogdm9pZCBHZXN0
dXJlUmVjb2duaXplckNsaWVudEVmbDo6aGFuZGxlUGluY2hTdGFydGVkKGNvbnN0IFZlY3RvcjxJ
bnRQb2ludD4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplckNsaWVudEVmbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXJDbGllbnRF
ZmwuaAppbmRleCBjODMyZmFkOWNlMjE5N2M3MDUxZGZkZGRiNzAzOThlYTYwOTgwYjA1Li41Y2Y3
NWQxY2Q2ZmIxYjlhZWI5NTNmOGNmOThlZjdmZDZlNDY4ODE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplckNsaWVudEVmbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyQ2xp
ZW50RWZsLmgKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVQYW5TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lk
IGhhbmRsZVBhbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVQYW5GaW5pc2hlZCgpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGbGljayhjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJik7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUZsaWNrQ2FuY2VsZWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGluY2hTdGFydGVkKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRQb2ludD4mKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGluY2goY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkludFBvaW50PiYpOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQaW5jaEZp
bmlzaGVkKCk7CkBAIC02NCw3ICs2NiwxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IEdlc3R1cmVSZWNvZ25pemVyQ2xpZW50RWZsKEV3a1ZpZXcqKTsKIAorICAgIHN0YXRpYyBF
aW5hX0Jvb2wgZmxpY2tBbmltYXRvckNhbGxiYWNrKHZvaWQqIGRhdGEpOworCiAgICAgRXdrVmll
dyogbV92aWV3OworICAgIFdlYkNvcmU6OkludFBvaW50IG1fbGFzdFBvaW50OworICAgIEVjb3Jl
X0FuaW1hdG9yKiBtX2ZsaWNrQW5pbWF0b3I7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2ZsaWNr
T2Zmc2V0OworICAgIHVuc2lnbmVkIG1fZmxpY2tEdXJhdGlvbjsKKyAgICB1bnNpZ25lZCBtX2Zs
aWNrSW5kZXg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oCmluZGV4IDM1ZDRiNTMzZDIw
NzAyZWIyOWEyYzIyZDczNDI5MGJkMjRiYmQ2MDMuLjZiZDg5MTRlZjU2MGRjMDc4YzdiM2VkNjU1
NDQyMTUwYWJmZTZmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Vmlld3BvcnRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXIuaApAQCAtNzIsNiArNzIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldEhhZFVzZXJJbnRlcmFjdGlvbihib29sIGRpZFVzZXJJbnRlcmFjdCkgeyBtX2hhZFVzZXJJ
bnRlcmFjdGlvbiA9IGRpZFVzZXJJbnRlcmFjdDsgfQogCisgICAgV2ViQ29yZTo6RmxvYXRTaXpl
IGNvbnRlbnRzU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNTaXplOyB9CisKICAgICAv
LyBOb3RpZmljYXRpb25zIGZyb20gdGhlIHZpZXdwb3J0LgogICAgIHZvaWQgZGlkQ2hhbmdlVmll
d3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbmV3U2l6ZSk7CiAgICAgdm9pZCBk
aWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGZs
b2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yID0g
V2ViQ29yZTo6RmxvYXRQb2ludDo6emVybygpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206058</attachid>
            <date>2013-07-04 01:05:06 -0700</date>
            <delta_ts>2013-07-28 23:45:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130704170257.patch</filename>
            <type>text/plain</type>
            <size>23342</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTdlZGI3ZWI2NTY4ZTky
ZDg2MTcwMjdkMTdiZTcxNTQ2YjcxMTU1MC4uN2NhZWM2YThjOTgzNjIxZGU3OTQ3NDViNTMwNmIw
OThjNThjZTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEzLTA3LTA0ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFuIGdlc3R1cmUgdG8gc2Nyb2xsIHBh
Z2UgYnkgbW92ZW1lbnQgb2YgcG9pbnQgYW5kIHN0b3AKKyAgICAgICAgc2Nyb2xsaW5nIHNtb290
aGx5IHVzaW5nIGVhc2UtaW4tb3V0LXF1YWQgYWxnb3JpdGhtIGFmdGVyIHRvdWNoZWQKKyAgICAg
ICAgcG9pbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY3JlZW4uCisKKyAgICAgICAgVXNlIEVjb3Jl
X0FuaW1hdG9yIGluIG9yZGVyIHRvIHByb2Nlc3Mgb25jZSBwZXIgZWFjaCBmcmFtaW5nIHRpbWUg
c2xvdHMKKyAgICAgICAgaW5zdGVhZCBvZiBwcm9jZXNzaW5nIGFsbCBtb3ZlbWVudC4KKworICAg
ICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0Vh
c2luZ0N1cnZlcy5jcHA6IEFkZGVkLgorICAgICAgICAoZWFzZUluT3V0UXVhZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAgICAoRXdrVmlldzo6c2Nyb2xsQnkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdl
c3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJLaXQ6Okdl
c3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVj
b2duaXplcjo6c2luZ2xlVGFwR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNv
Z25pemVyOjpkb3VibGVUYXBHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29n
bml6ZXI6OnBhbkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6
cGluY2hHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0
KToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6OnBhbkFuaW1hdG9yQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6aGFuZGxlUGFuU3RhcnRl
ZCk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyOjp1cGRhdGVDdXJyZW50UG9p
bnQpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6aGFuZGxlUGFuRmluaXNo
ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmg6Cisg
ICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyQ2xpZW50OjpoYW5kbGVGbGljayk6Cisg
ICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyQ2xpZW50OjpoYW5kbGVGbGlja0NhbmNl
bGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplckNsaWVu
dEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyQ2xpZW50RWZsOjpH
ZXN0dXJlUmVjb2duaXplckNsaWVudEVmbCk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNv
Z25pemVyQ2xpZW50RWZsOjpoYW5kbGVQYW5TdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6R2Vz
dHVyZVJlY29nbml6ZXJDbGllbnRFZmw6OmhhbmRsZVBhbik6CisgICAgICAgIChXZWJLaXQ6Okdl
c3R1cmVSZWNvZ25pemVyQ2xpZW50RWZsOjpmbGlja0FuaW1hdG9yQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplckNsaWVudEVmbDo6aGFuZGxlRmxpY2spOgorICAg
ICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplckNsaWVudEVmbDo6aGFuZGxlRmxpY2tDYW5j
ZWxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXJDbGll
bnRFZmwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2V0Q29udGVudFBvc2l0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisKIDIwMTMt
MDctMDMgIEV1bm1pIExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdW1dLMl0gUHJvY2VzcyBzaW5nbGUgdGFwIHVzaW5nIFdlYkV2ZW50OjpHZXN0dXJlU2luZ2xl
VGFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA1NzU0Y2ZmNGJkNzgyMjM1ZjBmZDM0
NWIzODMyZDVmZDBjNWRhZTdjLi45NWY2NDU3ZjVjMzNkYjZlODRjZjY3YjQ1NGM5NzlkOTk2OGU4
MTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNjEsNiArNjEsNyBAQCBsaXN0KEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tpZU1h
bmFnZXJTb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5h
Z2VyLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVzLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dM
Q29udGV4dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xTdXJmYWNlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjZjY2Y0NmY5NzYxNWE2MGRiYzMzNjU5OTE3YTg1Y2Q1OWNhOGZkNgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0Vhc2luZ0N1cnZl
cy5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQg
UGVubmVyIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3Vu
ZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBt
YXkgYmUKKyAqICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIFJvYmVydCBQZW5uZXIncyBlYXNpbmcgZXF1
YXRpb25zLiBodHRwOi8vd3d3LnJvYmVydHBlbm5lci5jb20vZWFzaW5nLworICogc3RhdGljIGZ1
bmN0aW9uIGVhc2VJbk91dFF1YWQgKHQ6TnVtYmVyLCBiOk51bWJlciwgYzpOdW1iZXIsIGQ6TnVt
YmVyKTpOdW1iZXIgeworICogICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0ICsg
YjsKKyAqICAgICByZXR1cm4gLWMvMiAqICgoLS10KSoodC0yKSAtIDEpICsgYjsKKyAqIH0KKyAq
LworZmxvYXQgZWFzZUluT3V0UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25z
dCBmbG9hdCBjb25zdGFudCwgY29uc3QgdW5zaWduZWQgZHVyYXRpb24pCit7CisgICAgaWYgKHRp
bWUgPiBkdXJhdGlvbiB8fCB0aW1lIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAo
KHRpbWUgLz0gKGR1cmF0aW9uIC8gMikpIDwgMSkKKyAgICAgICAgcmV0dXJuIChjb25zdGFudCAv
IDIpICogdGltZSAqIHRpbWUgKyBiYXNlOworCisgICAgdGltZSAtPSAxOworICAgIHJldHVybiAt
MSAqIChjb25zdGFudCAvIDIpICogKHRpbWUgKiAodGltZSAtIDIpIC0gMSkgKyBiYXNlOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FYXNpbmdDdXJ2ZXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNzI2YzZmYzQwNzYzMWQ2YWE4ZjNmNWJlMGI4Y2M1ZmFkNTJhNDAwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVz
LmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVu
bmVyIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBF
bGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkg
YmUKKyAqICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFYXNpbmdDdXJ2ZXNfaAorI2RlZmluZSBFYXNp
bmdDdXJ2ZXNfaAorCitmbG9hdCBlYXNlSW5PdXRRdWFkKGZsb2F0IHRpbWUsIGNvbnN0IGZsb2F0
IGJhc2UsIGNvbnN0IGZsb2F0IGNvbnN0YW50LCBjb25zdCB1bnNpZ25lZCBkdXJhdGlvbik7CisK
KyNlbmRpZiAvLyBFYXNpbmdDdXJ2ZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3LmNwcAppbmRleCBhZTgyMmQzYjFlYjUxODZhODk3ZDJmZTQ2ZmQ2MWQ2NDFi
YTQ4MDg0Li41M2QxMTYwYTgzNjY5MmU3ZTQxNTllM2MyNzYwYWRkMWQ2ODUyYTVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtMTM5Miw2ICsx
MzkyLDIxIEBAIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBFd2tWaWV3Ojp0YWtlU25hcHNo
b3QoKQogICAgIHJldHVybiBzbmFwc2hvdC5yZWxlYXNlKCk7CiB9CiAKK2Jvb2wgRXdrVmlldzo6
c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIFdLUG9pbnQgY3VycmVudFBv
c2l0aW9uID0gV0tWaWV3R2V0Q29udGVudFBvc2l0aW9uKHdrVmlldygpKTsKKyAgICBGbG9hdFBv
aW50IG5ld1Bvc2l0aW9uID0gRmxvYXRQb2ludChjdXJyZW50UG9zaXRpb24ueCArIG9mZnNldC53
aWR0aCgpLCBjdXJyZW50UG9zaXRpb24ueSArIG9mZnNldC5oZWlnaHQoKSk7CisgICAgV0tWaWV3
U2V0Q29udGVudFBvc2l0aW9uKHdrVmlldygpLCBXS1BvaW50TWFrZShuZXdQb3NpdGlvbi54KCks
IG5ld1Bvc2l0aW9uLnkoKSkpOworCisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRD
aGFuZ2VDb250ZW50c1Zpc2liaWxpdHkoY2VpbGVkSW50UG9pbnQod2ViVmlldygpLT50cmFuc2Zv
cm1Gcm9tU2NlbmUoKS5tYXBQb2ludChuZXdQb3NpdGlvbikpLCBXS1ZpZXdHZXRDb250ZW50U2Nh
bGVGYWN0b3Iod2tWaWV3KCkpKTsKKworICAgIC8vIElmIHRoZSBwYWdlIHBvc2l0aW9uIGlzIG5v
dCBjaGFuZ2VkLCBub3RpZnkgdGhhdCB1c2luZyByZXR1cm5pbmcgdmFsdWUuCisgICAgaWYgKGN1
cnJlbnRQb3NpdGlvbiA9PSBXS1ZpZXdHZXRDb250ZW50UG9zaXRpb24od2tWaWV3KCkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRXZhc19TbWFydF9D
bGFzcyBFd2tWaWV3OjpwYXJlbnRTbWFydENsYXNzID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05V
TEw7CiAKIC8vIEZyZWUgRXdrIFZpZXcgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5oCmluZGV4IDBlYjQxNzE2YzZjN2Y2N2I0MDk0MzU3Yjc5OWVl
ZjA5YTNkYmE2NWMuLmExMWUzMDg4MWYwZDczMDhjMDI1Zjk2OWQ3Zjk4ZDBjMzM5YzExOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKQEAgLTIwNiw2ICsy
MDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmZvcm1VUkxDaGFuZ2UoKTsKIAogICAgIFBhc3NS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiB0YWtlU25hcHNob3QoKTsKKyAgICBib29sIHNjcm9sbEJ5
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKIAogcHJpdmF0ZToKICAgICBFd2tWaWV3KFdLVmll
d1JlZiwgRXZhc19PYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcAppbmRleCBiYjI2OGNlMzZkZjk1OGIwOGU2
ZDczM2U4ODIzZWY1N2RiYmQ2ZjMxLi43OTg5NGJiZWUxY2RmMjA2ZWNjZmNmZmNjZDBjYWU3MTQ5
MDRiYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0
dXJlUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
R2VzdHVyZVJlY29nbml6ZXIuY3BwCkBAIC00MCwxMyArNDAsMTggQEAgY29uc3QgZG91YmxlIEdl
c3R1cmVSZWNvZ25pemVyOjpzX2RvdWJsZVRhcFRpbWVvdXRJblNlY29uZHMgPSAwLjQ7CiBjb25z
dCBkb3VibGUgR2VzdHVyZVJlY29nbml6ZXI6OnNfdGFwQW5kSG9sZFRpbWVvdXRJblNlY29uZHMg
PSAxLjA7CiBjb25zdCBpbnQgR2VzdHVyZVJlY29nbml6ZXI6OnNfc3F1YXJlZERvdWJsZVRhcFRo
cmVzaG9sZCA9IDEwMDAwOwogY29uc3QgaW50IEdlc3R1cmVSZWNvZ25pemVyOjpzX3NxdWFyZWRQ
YW5UaHJlc2hvbGQgPSAxMDA7Citjb25zdCBpbnQgR2VzdHVyZVJlY29nbml6ZXI6OnNfaGlzdG9y
eUNhcGFjaXR5ID0gNTsKIAogR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVSZWNvZ25pemVyKEdl
c3R1cmVSZWNvZ25pemVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX3JlY29nbml6ZXJGdW5jdGlv
bigmR2VzdHVyZVJlY29nbml6ZXI6Om5vR2VzdHVyZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkK
ICAgICAsIG1fdGFwQW5kSG9sZFRpbWVyKDApCiAgICAgLCBtX2RvdWJsZVRhcFRpbWVyKDApCisg
ICAgLCBtX3BhbkFuaW1hdG9yKDApCisgICAgLCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZChmYWxz
ZSkKKyAgICAsIG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4KDApCiB7CisgICAgbV9oaXN0b3J5LnJl
c2VydmVDYXBhY2l0eShzX2hpc3RvcnlDYXBhY2l0eSk7CiB9CiAKIHZvaWQgR2VzdHVyZVJlY29n
bml6ZXI6OnByb2Nlc3NUb3VjaEV2ZW50KFdLVG91Y2hFdmVudFJlZiBldmVudFJlZikKQEAgLTEw
Nyw2ICsxMTIsOCBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmUoV0tFdmVudFR5
cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50cykKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoU3RhcnQ6CisgICAgICAgIG1fY2xpZW50LT5oYW5k
bGVGbGlja0NhbmNlbGVkKCk7CisKICAgICAgICAgbV9yZWNvZ25pemVyRnVuY3Rpb24gPSAmR2Vz
dHVyZVJlY29nbml6ZXI6OnNpbmdsZVRhcEdlc3R1cmU7CiAgICAgICAgIG1fZmlyc3RQcmVzc2Vk
UG9pbnQgPSB0b0ludFBvaW50KGdldFBvaW50QXRJbmRleCh0b3VjaFBvaW50cywgMCkpOwogICAg
ICAgICBBU1NFUlQobV90YXBBbmRIb2xkVGltZXIpOwpAQCAtMTMxLDcgKzEzOCw3IEBAIHZvaWQg
R2VzdHVyZVJlY29nbml6ZXI6OnNpbmdsZVRhcEdlc3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tB
cnJheVJlZiB0b3VjaFBvaW50CiAgICAgICAgIGlmIChtX2ZpcnN0UHJlc3NlZFBvaW50LmRpc3Rh
bmNlU3F1YXJlZFRvUG9pbnQoY3VycmVudFBvaW50KSA+IHNfc3F1YXJlZFBhblRocmVzaG9sZCkg
ewogICAgICAgICAgICAgc3RvcFRhcFRpbWVycygpOwogICAgICAgICAgICAgbV9yZWNvZ25pemVy
RnVuY3Rpb24gPSAmR2VzdHVyZVJlY29nbml6ZXI6OnBhbkdlc3R1cmU7Ci0gICAgICAgICAgICBt
X2NsaWVudC0+aGFuZGxlUGFuU3RhcnRlZChjdXJyZW50UG9pbnQpOworICAgICAgICAgICAgaGFu
ZGxlUGFuU3RhcnRlZChjdXJyZW50UG9pbnQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTE3Niw3ICsxODMsNyBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpkb3VibGVU
YXBHZXN0dXJlKFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludAogICAgICAg
ICBJbnRQb2ludCBjdXJyZW50UG9pbnQgPSB0b0ludFBvaW50KGdldFBvaW50QXRJbmRleCh0b3Vj
aFBvaW50cywgMCkpOwogICAgICAgICBpZiAobV9maXJzdFByZXNzZWRQb2ludC5kaXN0YW5jZVNx
dWFyZWRUb1BvaW50KGN1cnJlbnRQb2ludCkgPiBzX3NxdWFyZWRQYW5UaHJlc2hvbGQpIHsKICAg
ICAgICAgICAgIG1fcmVjb2duaXplckZ1bmN0aW9uID0gJkdlc3R1cmVSZWNvZ25pemVyOjpwYW5H
ZXN0dXJlOwotICAgICAgICAgICAgbV9jbGllbnQtPmhhbmRsZVBhblN0YXJ0ZWQoY3VycmVudFBv
aW50KTsKKyAgICAgICAgICAgIGhhbmRsZVBhblN0YXJ0ZWQoY3VycmVudFBvaW50KTsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xOTcsMTAgKzIwNCwxMCBAQCB2b2lkIEdl
c3R1cmVSZWNvZ25pemVyOjpwYW5HZXN0dXJlKFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYg
dG91Y2hQb2ludHMpCiAgICAgICAgIG1fY2xpZW50LT5oYW5kbGVQaW5jaFN0YXJ0ZWQoKmFkb3B0
UHRyKGNyZWF0ZVZlY3RvcldpdGhXS0FycmF5KHRvdWNoUG9pbnRzLCAyKSkuZ2V0KCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoTW92ZToKLSAgICAgICAgbV9j
bGllbnQtPmhhbmRsZVBhbih0b0ludFBvaW50KGdldFBvaW50QXRJbmRleCh0b3VjaFBvaW50cywg
MCkpKTsKKyAgICAgICAgdXBkYXRlQ3VycmVudFBvaW50KHRvSW50UG9pbnQoZ2V0UG9pbnRBdElu
ZGV4KHRvdWNoUG9pbnRzLCAwKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtXS0V2ZW50
VHlwZVRvdWNoRW5kOgotICAgICAgICBtX2NsaWVudC0+aGFuZGxlUGFuRmluaXNoZWQoKTsKKyAg
ICAgICAgaGFuZGxlUGFuRmluaXNoZWQoKTsKICAgICAgICAgbV9yZWNvZ25pemVyRnVuY3Rpb24g
PSAmR2VzdHVyZVJlY29nbml6ZXI6Om5vR2VzdHVyZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKQEAgLTIzMCw3ICsyMzcsNyBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpwaW5jaEdl
c3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50cykKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQocG9p
bnRSZWYpOwotICAgICAgICAgICAgbV9jbGllbnQtPmhhbmRsZVBhblN0YXJ0ZWQodG9JbnRQb2lu
dChXS1RvdWNoUG9pbnRHZXRQb3NpdGlvbihwb2ludFJlZikpKTsKKyAgICAgICAgICAgIGhhbmRs
ZVBhblN0YXJ0ZWQodG9JbnRQb2ludChXS1RvdWNoUG9pbnRHZXRQb3NpdGlvbihwb2ludFJlZikp
KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMjQyLDYgKzI0
OSwxMSBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCgpCiB7CiAgICAgc3RvcFRhcFRp
bWVycygpOwogCisgICAgaWYgKG1fcGFuQW5pbWF0b3IpIHsKKyAgICAgICAgZWNvcmVfYW5pbWF0
b3JfZGVsKG1fcGFuQW5pbWF0b3IpOworICAgICAgICBtX3BhbkFuaW1hdG9yID0gMDsKKyAgICB9
CisKICAgICBtX3JlY29nbml6ZXJGdW5jdGlvbiA9ICZHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0
dXJlOwogfQogCkBAIC0yNTgsNiArMjcwLDYzIEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnN0
b3BUYXBUaW1lcnMoKQogICAgIH0KIH0KIAorRWluYV9Cb29sIEdlc3R1cmVSZWNvZ25pemVyOjpw
YW5BbmltYXRvckNhbGxiYWNrKHZvaWQqIGRhdGEpCit7CisgICAgR2VzdHVyZVJlY29nbml6ZXIq
IGdlc3R1cmVSZWNvZ25pemVyID0gc3RhdGljX2Nhc3Q8R2VzdHVyZVJlY29nbml6ZXIqPihkYXRh
KTsKKyAgICBpZiAoIWdlc3R1cmVSZWNvZ25pemVyLT5tX2lzQ3VycmVudFBvaW50VXBkYXRlZCkK
KyAgICAgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX1JFTkVXOworCisgICAgZ2VzdHVyZVJlY29n
bml6ZXItPm1fY2xpZW50LT5oYW5kbGVQYW4oZ2VzdHVyZVJlY29nbml6ZXItPm1fY3VycmVudFBv
aW50KTsKKyAgICBnZXN0dXJlUmVjb2duaXplci0+bV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQgPSBm
YWxzZTsKKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19SRU5FVzsKK30KKwordm9pZCBHZXN0
dXJlUmVjb2duaXplcjo6aGFuZGxlUGFuU3RhcnRlZChjb25zdCBJbnRQb2ludCYgcG9pbnQpCit7
CisgICAgQVNTRVJUKCFtX3BhbkFuaW1hdG9yKTsKKyAgICBtX3BhbkFuaW1hdG9yID0gZWNvcmVf
YW5pbWF0b3JfYWRkKHBhbkFuaW1hdG9yQ2FsbGJhY2ssIHRoaXMpOworICAgIG1fY3VycmVudFBv
aW50ID0gcG9pbnQ7CisgICAgbV9maXJzdEhpc3RvcnlJdGVtSW5kZXggPSAwOworICAgIG1faGlz
dG9yeS5yZXNpemUoMCk7CisKKyAgICBtX2NsaWVudC0+aGFuZGxlUGFuU3RhcnRlZChwb2ludCk7
Cit9CisKK3ZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnVwZGF0ZUN1cnJlbnRQb2ludChjb25zdCBJ
bnRQb2ludCYgcG9pbnQpCit7CisgICAgbV9jdXJyZW50UG9pbnQgPSBwb2ludDsKKyAgICBtX2lz
Q3VycmVudFBvaW50VXBkYXRlZCA9IHRydWU7CisKKyAgICAvLyBTYXZlIGN1cnJlbnQgcG9pbnQg
dG8gdXNlIHRvIGNhbGN1bGF0ZSBvZmZzZXQgb2YgZmxpY2suCisgICAgSGlzdG9yeUl0ZW0gaXRl
bSA9IHttX2N1cnJlbnRQb2ludCwgZWNvcmVfdGltZV9nZXQoKX07CisgICAgaWYgKG1faGlzdG9y
eS5zaXplKCkgPCBtX2hpc3RvcnkuY2FwYWNpdHkoKSkKKyAgICAgICAgbV9oaXN0b3J5LnVuY2hl
Y2tlZEFwcGVuZChpdGVtKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV9oaXN0b3J5W21fZmlyc3RI
aXN0b3J5SXRlbUluZGV4KytdID0gaXRlbTsKKyAgICAgICAgaWYgKG1fZmlyc3RIaXN0b3J5SXRl
bUluZGV4ID49IG1faGlzdG9yeS5jYXBhY2l0eSgpKQorICAgICAgICAgICAgbV9maXJzdEhpc3Rv
cnlJdGVtSW5kZXggJT0gbV9oaXN0b3J5LmNhcGFjaXR5KCk7CisgICAgfQorfQorCit2b2lkIEdl
c3R1cmVSZWNvZ25pemVyOjpoYW5kbGVQYW5GaW5pc2hlZCgpCit7CisgICAgQVNTRVJUKG1fcGFu
QW5pbWF0b3IpOworICAgIGVjb3JlX2FuaW1hdG9yX2RlbChtX3BhbkFuaW1hdG9yKTsKKyAgICBt
X3BhbkFuaW1hdG9yID0gMDsKKworICAgIGlmICghbV9oaXN0b3J5LmlzRW1wdHkoKSkgeworICAg
ICAgICAvLyBDYWxjdWxhdGUgb2Zmc2V0IHRvIG1vdmUgZHVyaW5nIG9uZSBmcmFtZS4KKyAgICAg
ICAgY29uc3QgSGlzdG9yeUl0ZW0mIGZpcnN0SGlzdG9yeUl0ZW0gPSBtX2hpc3RvcnlbbV9maXJz
dEhpc3RvcnlJdGVtSW5kZXhdOworICAgICAgICBkb3VibGUgZnJhbWUgPSAoZWNvcmVfdGltZV9n
ZXQoKSAtIGZpcnN0SGlzdG9yeUl0ZW0udGltZXN0YW1wKSAvIGVjb3JlX2FuaW1hdG9yX2ZyYW1l
dGltZV9nZXQoKTsKKyAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSBmaXJzdEhpc3RvcnlJdGVtLnBv
aW50IC0gbV9jdXJyZW50UG9pbnQ7CisgICAgICAgIG9mZnNldC5zY2FsZSgxIC8gZnJhbWUpOwor
ICAgICAgICBtX2NsaWVudC0+aGFuZGxlRmxpY2sob2Zmc2V0KTsKKyAgICB9CisKKyAgICBtX2Ns
aWVudC0+aGFuZGxlUGFuRmluaXNoZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmgKaW5kZXggZGY2ZTExYzY2Yzll
NzUwMWRlMGYwYjcwNTM2MGUyNmJjNTdjMTgyZi4uMTJhNGRjODVmYmMxM2FmMmVmYjQwN2JhMGFh
MWM1OTMyYjM1YTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvR2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9HZXN0dXJlUmVjb2duaXplci5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlUGFuU3RhcnRlZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQYW4oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGFuRmluaXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlRmxpY2soY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVGbGlja0NhbmNlbGVkKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlUGluY2hTdGFydGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGluY2goY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFBvaW50
PiYpIHsgfQpAQCAtNzEsOSArNzMsMTEgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgZG91
YmxlIHNfdGFwQW5kSG9sZFRpbWVvdXRJblNlY29uZHM7CiAgICAgc3RhdGljIGNvbnN0IGludCBz
X3NxdWFyZWREb3VibGVUYXBUaHJlc2hvbGQ7CiAgICAgc3RhdGljIGNvbnN0IGludCBzX3NxdWFy
ZWRQYW5UaHJlc2hvbGQ7CisgICAgc3RhdGljIGNvbnN0IGludCBzX2hpc3RvcnlDYXBhY2l0eTsK
IAogICAgIHN0YXRpYyBFaW5hX0Jvb2wgZG91YmxlVGFwVGltZXJDYWxsYmFjayh2b2lkKik7CiAg
ICAgc3RhdGljIEVpbmFfQm9vbCB0YXBBbmRIb2xkVGltZXJDYWxsYmFjayh2b2lkKik7CisgICAg
c3RhdGljIEVpbmFfQm9vbCBwYW5BbmltYXRvckNhbGxiYWNrKHZvaWQqKTsKIAogICAgIC8vIFN0
YXRlIGZ1bmN0aW9ucy4KICAgICB2b2lkIG5vR2VzdHVyZShXS0V2ZW50VHlwZSwgV0tBcnJheVJl
Zik7CkBAIC04Myw2ICs4Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwaW5jaEdlc3R1cmUoV0tF
dmVudFR5cGUsIFdLQXJyYXlSZWYpOwogCiAgICAgdm9pZCBzdG9wVGFwVGltZXJzKCk7CisgICAg
dm9pZCBoYW5kbGVQYW5TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdm9p
ZCB1cGRhdGVDdXJyZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lk
IGhhbmRsZVBhbkZpbmlzaGVkKCk7CiAKICAgICB0eXBlZGVmIHZvaWQgKEdlc3R1cmVSZWNvZ25p
emVyOjoqUmVjb2duaXplckZ1bmN0aW9uKShXS0V2ZW50VHlwZSwgV0tBcnJheVJlZik7CiAgICAg
UmVjb2duaXplckZ1bmN0aW9uIG1fcmVjb2duaXplckZ1bmN0aW9uOwpAQCAtOTEsNiArOTgsMTcg
QEAgcHJpdmF0ZToKICAgICBFY29yZV9UaW1lciogbV90YXBBbmRIb2xkVGltZXI7CiAgICAgRWNv
cmVfVGltZXIqIG1fZG91YmxlVGFwVGltZXI7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9maXJz
dFByZXNzZWRQb2ludDsKKworICAgIEVjb3JlX0FuaW1hdG9yKiBtX3BhbkFuaW1hdG9yOworICAg
IFdlYkNvcmU6OkludFBvaW50IG1fY3VycmVudFBvaW50OworICAgIGJvb2wgbV9pc0N1cnJlbnRQ
b2ludFVwZGF0ZWQ7CisKKyAgICB0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgIFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50OworICAgICAgICBkb3VibGUgdGltZXN0YW1wOworICAgIH0gSGlzdG9yeUl0
ZW07CisgICAgVmVjdG9yPEhpc3RvcnlJdGVtPiBtX2hpc3Rvcnk7CisgICAgdW5zaWduZWQgbV9m
aXJzdEhpc3RvcnlJdGVtSW5kZXg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVy
Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVS
ZWNvZ25pemVyQ2xpZW50RWZsLmNwcAppbmRleCAzOTUxMjg0NzZhNDE0YWMyOGE5ZDJlNTJjOTQ2
OWFlODgwMTVhMTMwLi40ZmEwOTdjOTBjMjZjNjlhMzVkMDFhZTFhOWJlYzc0MDM1NDY5YmE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2du
aXplckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
R2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmwuaCIKIAor
I2luY2x1ZGUgIkVhc2luZ0N1cnZlcy5oIgogI2luY2x1ZGUgIkV3a1ZpZXcuaCIKICNpbmNsdWRl
ICJXS1ZpZXdFZmwuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CkBAIC00MCw2ICs0
MSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBHZXN0dXJlUmVjb2duaXplckNsaWVudEVmbDo6
R2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmwoRXdrVmlldyogdmlldykKICAgICA6IG1fdmlldyh2
aWV3KQorICAgICwgbV9mbGlja0FuaW1hdG9yKDApCisgICAgLCBtX2ZsaWNrRHVyYXRpb24oMCkK
KyAgICAsIG1fZmxpY2tJbmRleCgwKQogewogfQogCkBAIC02MiwxNCArNjYsMTggQEAgdm9pZCBH
ZXN0dXJlUmVjb2duaXplckNsaWVudEVmbDo6aGFuZGxlVGFwQW5kSG9sZChjb25zdCBJbnRQb2lu
dCYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBHZXN0dXJlUmVjb2duaXplckNs
aWVudEVmbDo6aGFuZGxlUGFuU3RhcnRlZChjb25zdCBJbnRQb2ludCYpCit2b2lkIEdlc3R1cmVS
ZWNvZ25pemVyQ2xpZW50RWZsOjpoYW5kbGVQYW5TdGFydGVkKGNvbnN0IEludFBvaW50JiBwb2lu
dCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fbGFzdFBvaW50ID0gcG9pbnQ7CiB9
CiAKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmw6OmhhbmRsZVBhbihjb25zdCBJbnRQ
b2ludCYgcG9pbnQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAobV9sYXN0UG9p
bnQgPT0gcG9pbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdmlldy0+c2Nyb2xsQnkobV9s
YXN0UG9pbnQgLSBwb2ludCk7CisgICAgbV9sYXN0UG9pbnQgPSBwb2ludDsKIH0KIAogdm9pZCBH
ZXN0dXJlUmVjb2duaXplckNsaWVudEVmbDo6aGFuZGxlUGFuRmluaXNoZWQoKQpAQCAtNzcsNiAr
ODUsNDAgQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplckNsaWVudEVmbDo6aGFuZGxlUGFuRmluaXNo
ZWQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK0VpbmFfQm9vbCBHZXN0dXJlUmVjb2du
aXplckNsaWVudEVmbDo6ZmxpY2tBbmltYXRvckNhbGxiYWNrKHZvaWQqIGRhdGEpCit7CisgICAg
R2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmwqIGNsaWVudCA9IHN0YXRpY19jYXN0PEdlc3R1cmVS
ZWNvZ25pemVyQ2xpZW50RWZsKj4oZGF0YSk7CisgICAgZmxvYXQgbXVsdGlwbGllciA9IGVhc2VJ
bk91dFF1YWQoY2xpZW50LT5tX2ZsaWNrSW5kZXgsIDAsIDEuMCwgY2xpZW50LT5tX2ZsaWNrRHVy
YXRpb24pOworICAgIGZsb2F0IG9mZnNldFdpZHRoID0gY2xpZW50LT5tX2ZsaWNrT2Zmc2V0Lndp
ZHRoKCkgKiBtdWx0aXBsaWVyOworICAgIGZsb2F0IG9mZnNldEhlaWdodCA9IGNsaWVudC0+bV9m
bGlja09mZnNldC5oZWlnaHQoKSAqIG11bHRpcGxpZXI7CisgICAgb2Zmc2V0V2lkdGggPSAob2Zm
c2V0V2lkdGggPiAwKSA/IGNlaWxmKG9mZnNldFdpZHRoKSA6IGZsb29yZihvZmZzZXRXaWR0aCk7
CisgICAgb2Zmc2V0SGVpZ2h0ID0gKG9mZnNldEhlaWdodCA+IDApID8gY2VpbGYob2Zmc2V0SGVp
Z2h0KSA6IGZsb29yZihvZmZzZXRIZWlnaHQpOworICAgIEludFNpemUgb2Zmc2V0KG9mZnNldFdp
ZHRoLCBvZmZzZXRIZWlnaHQpOworICAgIGNsaWVudC0+bV9mbGlja0luZGV4LS07CisKKyAgICBp
ZiAob2Zmc2V0LmlzWmVybygpIHx8ICFjbGllbnQtPm1fdmlldy0+c2Nyb2xsQnkob2Zmc2V0KSB8
fCAhY2xpZW50LT5tX2ZsaWNrSW5kZXgpIHsKKyAgICAgICAgY2xpZW50LT5tX2ZsaWNrQW5pbWF0
b3IgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgR2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmw6OmhhbmRsZUZsaWNrKGNvbnN0
IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBtX2ZsaWNrT2Zmc2V0ID0gb2Zmc2V0OworICAgIG1f
ZmxpY2tJbmRleCA9IG1fZmxpY2tEdXJhdGlvbiA9IDEgLyBlY29yZV9hbmltYXRvcl9mcmFtZXRp
bWVfZ2V0KCk7CisgICAgbV9mbGlja0FuaW1hdG9yID0gZWNvcmVfYW5pbWF0b3JfYWRkKGZsaWNr
QW5pbWF0b3JDYWxsYmFjaywgdGhpcyk7Cit9CisKK3ZvaWQgR2VzdHVyZVJlY29nbml6ZXJDbGll
bnRFZmw6OmhhbmRsZUZsaWNrQ2FuY2VsZWQoKQoreworICAgIGlmIChtX2ZsaWNrQW5pbWF0b3Ip
IHsKKyAgICAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKG1fZmxpY2tBbmltYXRvcik7CisgICAgICAg
IG1fZmxpY2tBbmltYXRvciA9IDA7CisgICAgfQorfQorCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVy
Q2xpZW50RWZsOjpoYW5kbGVQaW5jaFN0YXJ0ZWQoY29uc3QgVmVjdG9yPEludFBvaW50PiYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplckNsaWVudEVmbC5oCmluZGV4IGM4
MzJmYWQ5Y2UyMTk3YzcwNTFkZmRkZGI3MDM5OGVhNjA5ODBiMDUuLjVjZjc1ZDFjZDZmYjFiOWFl
Yjk1M2Y4Y2Y5OGVmN2ZkNmU0Njg4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXJDbGllbnRFZmwuaApAQCAt
NTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVBhblN0YXJ0ZWQo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGFuKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVBhbkZpbmlz
aGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUZsaWNrKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRmxpY2tDYW5jZWxlZCgpOwogICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVQaW5jaFN0YXJ0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFBvaW50
PiYpOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQaW5jaChjb25zdCBWZWN0b3I8V2ViQ29yZTo6
SW50UG9pbnQ+Jik7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVBpbmNoRmluaXNoZWQoKTsKQEAg
LTY0LDcgKzY2LDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgR2VzdHVyZVJl
Y29nbml6ZXJDbGllbnRFZmwoRXdrVmlldyopOwogCisgICAgc3RhdGljIEVpbmFfQm9vbCBmbGlj
a0FuaW1hdG9yQ2FsbGJhY2sodm9pZCogZGF0YSk7CisKICAgICBFd2tWaWV3KiBtX3ZpZXc7Cisg
ICAgV2ViQ29yZTo6SW50UG9pbnQgbV9sYXN0UG9pbnQ7CisgICAgRWNvcmVfQW5pbWF0b3IqIG1f
ZmxpY2tBbmltYXRvcjsKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fZmxpY2tPZmZzZXQ7CisgICAg
dW5zaWduZWQgbV9mbGlja0R1cmF0aW9uOworICAgIHVuc2lnbmVkIG1fZmxpY2tJbmRleDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAppbmRleCAxNzRiOGZiMzY1
NDZiMmYxM2E3OTZkMTEzNzJmYzM4MDU0MzMwYzVjLi5jMzVlYWFmYTJkOGYwNjI0NmQ2NTgwZDNi
NTY0MWE4YThhYzI4OTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcApAQCAtMTA1LDYgKzEwNSwxNiBAQCB2
b2lkIFdlYlZpZXc6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIG1fcGFnZS0+dmlld1N0
YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7CiB9CiAKK3ZvaWQgV2Vi
Vmlldzo6c2V0Q29udGVudFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0
aW9uKQoreworICAgIEZsb2F0UmVjdCBib3VuZHM7CisgICAgYm91bmRzLnNldFdpZHRoKHN0ZDo6
bWF4KDAuZiwgY2VpbGYobV9jb250ZW50c1NpemUud2lkdGgoKSAqIG1fY29udGVudFNjYWxlRmFj
dG9yKSkgLSBzaXplKCkud2lkdGgoKSk7CisgICAgYm91bmRzLnNldEhlaWdodChzdGQ6Om1heCgw
LmYsIGNlaWxmKG1fY29udGVudHNTaXplLmhlaWdodCgpICogbV9jb250ZW50U2NhbGVGYWN0b3Ip
KSAtIHNpemUoKS5oZWlnaHQoKSk7CisKKyAgICBtX2NvbnRlbnRQb3NpdGlvbi5zZXRYKGNsYW1w
VG8ocG9zaXRpb24ueCgpLCBib3VuZHMueCgpLCBib3VuZHMud2lkdGgoKSkpOworICAgIG1fY29u
dGVudFBvc2l0aW9uLnNldFkoY2xhbXBUbyhwb3NpdGlvbi55KCksIGJvdW5kcy55KCksIGJvdW5k
cy5oZWlnaHQoKSkpOworfQorCiB2b2lkIFdlYlZpZXc6OnNldFVzZXJWaWV3cG9ydFRyYW5zbGF0
aW9uKGRvdWJsZSB0eCwgZG91YmxlIHR5KQogewogICAgIG1fdXNlclZpZXdwb3J0VHJhbnNmb3Jt
ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKS50cmFuc2xhdGUodHgsIHR5KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaApp
bmRleCAzYzc2OGZjMTA1ZTJlNjU2MzU3YjVkZDZiNWVkYTg3NDcwOTE2NTFlLi4yNWZmNGEwMDNl
MzFmMTFiY2QyMjQ2OGM1MmUzNDFmMWZjMjliZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCkBAIC02Niw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnRTY2FsZUZhY3RvcihmbG9hdCBzY2Fs
ZUZhY3RvcikgeyBtX2NvbnRlbnRTY2FsZUZhY3RvciA9IHNjYWxlRmFjdG9yOyB9CiAgICAgZmxv
YXQgY29udGVudFNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2NhbGVGYWN0
b3I7IH0KIAotICAgIHZvaWQgc2V0Q29udGVudFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIHBvc2l0aW9uKSB7IG1fY29udGVudFBvc2l0aW9uID0gcG9zaXRpb247IH0KKyAgICB2
b2lkIHNldENvbnRlbnRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY29udGVudFBvc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50UG9zaXRpb247IH0KIAogICAgIHZvaWQgc2V0VXNlclZpZXdwb3J0VHJhbnNs
YXRpb24oZG91YmxlIHR4LCBkb3VibGUgdHkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207620</attachid>
            <date>2013-07-28 23:45:22 -0700</date>
            <delta_ts>2013-07-29 06:21:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130729154520.patch</filename>
            <type>text/plain</type>
            <size>22778</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjE4OTVmOTAyM2FkNGVl
NDNiNzMxNmIzMDBiYzAzODUzOWY1Y2NjZC4uYjI5YWZhNmViMmMzNjFmMGUzZmU2N2I5ZTkzMTA1
ZGQ0NzhjNGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDEzLTA3LTI4ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KIAorICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFuIGdlc3R1cmUgdG8gc2Nyb2xsIHBh
Z2UgYnkgbW92ZW1lbnQgb2YgcG9pbnQgYW5kIHN0b3AKKyAgICAgICAgc2Nyb2xsaW5nIHNtb290
aGx5IHVzaW5nIGVhc2UtaW4tb3V0LXF1YWQgYWxnb3JpdGhtIGFmdGVyIHRvdWNoZWQKKyAgICAg
ICAgcG9pbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY3JlZW4uCisKKyAgICAgICAgVXNlIEVjb3Jl
X0FuaW1hdG9yIGluIG9yZGVyIHRvIHByb2Nlc3Mgb25jZSBwZXIgZWFjaCBmcmFtaW5nIHRpbWUg
c2xvdHMKKyAgICAgICAgaW5zdGVhZCBvZiBwcm9jZXNzaW5nIGFsbCBtb3ZlbWVudC4KKworICAg
ICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0Vh
c2luZ0N1cnZlcy5jcHA6IEFkZGVkLgorICAgICAgICAoZWFzZUluT3V0UXVhZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAgICAoRXdrVmlldzo6RXdrVmlldyk6
CisgICAgICAgIChFd2tWaWV3OjpoYW5kbGVQYW5TdGFydGVkKToKKyAgICAgICAgKEV3a1ZpZXc6
OmhhbmRsZVBhbik6CisgICAgICAgIChFd2tWaWV3OjpmbGlja0FuaW1hdG9yQ2FsbGJhY2spOgor
ICAgICAgICAoRXdrVmlldzo6aGFuZGxlRmxpY2spOgorICAgICAgICAoRXdrVmlldzo6aGFuZGxl
RmxpY2tDYW5jZWxlZCk6CisgICAgICAgIChFd2tWaWV3OjpzY3JvbGxCeSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L0dlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6
ZXI6Okdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6
ZXI6Om5vR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyOjpzaW5n
bGVUYXBHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6OmRvdWJs
ZVRhcEdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6cGFuR2Vz
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyOjpwaW5jaEdlc3R1cmUp
OgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6cmVzZXQpOgorICAgICAgICAo
V2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6cGFuQW5pbWF0b3JDYWxsYmFjayk6CisgICAgICAg
IChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyOjpoYW5kbGVQYW5TdGFydGVkKToKKyAgICAgICAg
KFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6OnVwZGF0ZUN1cnJlbnRQb2ludCk6CisgICAgICAg
IChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyOjpoYW5kbGVQYW5GaW5pc2hlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKEdlc3R1
cmVSZWNvZ25pemVyQ2xpZW50OjpoYW5kbGVGbGljayk6CisgICAgICAgIChHZXN0dXJlUmVjb2du
aXplckNsaWVudDo6aGFuZGxlRmxpY2tDYW5jZWxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6
OnNldENvbnRlbnRQb3NpdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViVmlldy5oOgorCisyMDEzLTA3LTI4ICBFdW5taSBMZWUgIDxldW5taTE1LmxlZUBz
YW1zdW5nLmNvbT4KKwogICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudCBnZXN0dXJlIHJlY29n
bml6ZXIuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDI2NDMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0ODk1ZTk4ZTI2NzU0ZDNkZjVh
MDU4NmQwNGM2NTk2ZWVhMTIwOGVhLi5iMDA0YmE2ZTEzNWM5NWVlODM0ZGZjODNlMDRkZDIyMGMx
ZWExNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNjEsNiArNjEsNyBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tp
ZU1hbmFnZXJTb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RN
YW5hZ2VyLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVzLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXZh
c0dMQ29udGV4dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xTdXJmYWNlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3VydmVz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0Vhc2luZ0N1cnZlcy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjZjY2Y0NmY5NzYxNWE2MGRiYzMzNjU5OTE3YTg1Y2Q1OWNhOGZkNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0Vhc2luZ0N1
cnZlcy5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2Jl
cnQgUGVubmVyIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9y
cyBtYXkgYmUKKyAqICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIFJvYmVydCBQZW5uZXIncyBlYXNpbmcg
ZXF1YXRpb25zLiBodHRwOi8vd3d3LnJvYmVydHBlbm5lci5jb20vZWFzaW5nLworICogc3RhdGlj
IGZ1bmN0aW9uIGVhc2VJbk91dFF1YWQgKHQ6TnVtYmVyLCBiOk51bWJlciwgYzpOdW1iZXIsIGQ6
TnVtYmVyKTpOdW1iZXIgeworICogICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0
ICsgYjsKKyAqICAgICByZXR1cm4gLWMvMiAqICgoLS10KSoodC0yKSAtIDEpICsgYjsKKyAqIH0K
KyAqLworZmxvYXQgZWFzZUluT3V0UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBj
b25zdCBmbG9hdCBjb25zdGFudCwgY29uc3QgdW5zaWduZWQgZHVyYXRpb24pCit7CisgICAgaWYg
KHRpbWUgPiBkdXJhdGlvbiB8fCB0aW1lIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBp
ZiAoKHRpbWUgLz0gKGR1cmF0aW9uIC8gMikpIDwgMSkKKyAgICAgICAgcmV0dXJuIChjb25zdGFu
dCAvIDIpICogdGltZSAqIHRpbWUgKyBiYXNlOworCisgICAgdGltZSAtPSAxOworICAgIHJldHVy
biAtMSAqIChjb25zdGFudCAvIDIpICogKHRpbWUgKiAodGltZSAtIDIpIC0gMSkgKyBiYXNlOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3Vy
dmVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FYXNpbmdDdXJ2ZXMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iNzI2YzZmYzQwNzYzMWQ2YWE4ZjNmNWJlMGI4Y2M1ZmFkNTJhNDAwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRWFzaW5nQ3Vy
dmVzLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQg
UGVubmVyIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3Vu
ZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBt
YXkgYmUKKyAqICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFYXNpbmdDdXJ2ZXNfaAorI2RlZmluZSBF
YXNpbmdDdXJ2ZXNfaAorCitmbG9hdCBlYXNlSW5PdXRRdWFkKGZsb2F0IHRpbWUsIGNvbnN0IGZs
b2F0IGJhc2UsIGNvbnN0IGZsb2F0IGNvbnN0YW50LCBjb25zdCB1bnNpZ25lZCBkdXJhdGlvbik7
CisKKyNlbmRpZiAvLyBFYXNpbmdDdXJ2ZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmNwcAppbmRleCAzYzUyOWM2N2Q0OWY3MDk3YzM5NjZiMDMyYzM3YzQ3
YWRiNmNhMzk3Li42MzAyMzIyYWE1YzkzYmM0NjYwM2Y3MTY1MzA3OTBlODMxNTU4Y2QxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtODcsNiAr
ODcsMTAgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaW5jbHVkZSAiRWFzaW5nQ3VydmVzLmgiCisj
ZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0yNzcsNiArMjgxLDkgQEAg
RXdrVmlldzo6RXdrVmlldyhXS1ZpZXdSZWYgdmlldywgRXZhc19PYmplY3QqIGV2YXNPYmplY3Qp
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIG1fdG91Y2hFdmVudHNFbmFibGVkKGZh
bHNlKQogICAgICwgbV9nZXN0dXJlUmVjb2duaXplcihHZXN0dXJlUmVjb2duaXplcjo6Y3JlYXRl
KHRoaXMpKQorICAgICwgbV9mbGlja0FuaW1hdG9yKDApCisgICAgLCBtX2ZsaWNrRHVyYXRpb24o
MCkKKyAgICAsIG1fZmxpY2tJbmRleCgwKQogI2VuZGlmCiAgICAgLCBtX2Rpc3BsYXlUaW1lcih0
aGlzLCAmRXdrVmlldzo6ZGlzcGxheVRpbWVyRmlyZWQpCiAgICAgLCBtX2lucHV0TWV0aG9kQ29u
dGV4dChJbnB1dE1ldGhvZENvbnRleHRFZmw6OmNyZWF0ZSh0aGlzLCBzbWFydERhdGEoKS0+YmFz
ZS5ldmFzKSkKQEAgLTE0MDksMTQgKzE0MTYsMTggQEAgdm9pZCBFd2tWaWV3OjpoYW5kbGVUYXBB
bmRIb2xkKGNvbnN0IEludFBvaW50JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IEV3a1ZpZXc6OmhhbmRsZVBhblN0YXJ0ZWQoY29uc3QgSW50UG9pbnQmKQordm9pZCBFd2tWaWV3
OjpoYW5kbGVQYW5TdGFydGVkKGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIG1fbGFzdFBvaW50ID0gcG9pbnQ7CiB9CiAKIHZvaWQgRXdrVmlldzo6
aGFuZGxlUGFuKGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGlmIChtX2xhc3RQb2ludCA9PSBwb2ludCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
c2Nyb2xsQnkobV9sYXN0UG9pbnQgLSBwb2ludCk7CisgICAgbV9sYXN0UG9pbnQgPSBwb2ludDsK
IH0KIAogdm9pZCBFd2tWaWV3OjpoYW5kbGVQYW5GaW5pc2hlZCgpCkBAIC0xNDI0LDYgKzE0MzUs
NDAgQEAgdm9pZCBFd2tWaWV3OjpoYW5kbGVQYW5GaW5pc2hlZCgpCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAorRWluYV9Cb29sIEV3a1ZpZXc6OmZsaWNrQW5pbWF0b3JDYWxsYmFjayh2b2lk
KiBkYXRhKQoreworICAgIEV3a1ZpZXcqIGV3a1ZpZXcgPSBzdGF0aWNfY2FzdDxFd2tWaWV3Kj4o
ZGF0YSk7CisgICAgZmxvYXQgbXVsdGlwbGllciA9IGVhc2VJbk91dFF1YWQoZXdrVmlldy0+bV9m
bGlja0luZGV4LCAwLCAxLjAsIGV3a1ZpZXctPm1fZmxpY2tEdXJhdGlvbik7CisgICAgZmxvYXQg
b2Zmc2V0V2lkdGggPSBld2tWaWV3LT5tX2ZsaWNrT2Zmc2V0LndpZHRoKCkgKiBtdWx0aXBsaWVy
OworICAgIGZsb2F0IG9mZnNldEhlaWdodCA9IGV3a1ZpZXctPm1fZmxpY2tPZmZzZXQuaGVpZ2h0
KCkgKiBtdWx0aXBsaWVyOworICAgIG9mZnNldFdpZHRoID0gKG9mZnNldFdpZHRoID4gMCkgPyBj
ZWlsZihvZmZzZXRXaWR0aCkgOiBmbG9vcmYob2Zmc2V0V2lkdGgpOworICAgIG9mZnNldEhlaWdo
dCA9IChvZmZzZXRIZWlnaHQgPiAwKSA/IGNlaWxmKG9mZnNldEhlaWdodCkgOiBmbG9vcmYob2Zm
c2V0SGVpZ2h0KTsKKyAgICBJbnRTaXplIG9mZnNldChvZmZzZXRXaWR0aCwgb2Zmc2V0SGVpZ2h0
KTsKKyAgICBld2tWaWV3LT5tX2ZsaWNrSW5kZXgtLTsKKworICAgIGlmIChvZmZzZXQuaXNaZXJv
KCkgfHwgIWV3a1ZpZXctPnNjcm9sbEJ5KG9mZnNldCkgfHwgIWV3a1ZpZXctPm1fZmxpY2tJbmRl
eCkgeworICAgICAgICBld2tWaWV3LT5tX2ZsaWNrQW5pbWF0b3IgPSAwOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRXdrVmlldzo6
aGFuZGxlRmxpY2soY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIG1fZmxpY2tPZmZzZXQg
PSBvZmZzZXQ7CisgICAgbV9mbGlja0luZGV4ID0gbV9mbGlja0R1cmF0aW9uID0gMSAvIGVjb3Jl
X2FuaW1hdG9yX2ZyYW1ldGltZV9nZXQoKTsKKyAgICBtX2ZsaWNrQW5pbWF0b3IgPSBlY29yZV9h
bmltYXRvcl9hZGQoZmxpY2tBbmltYXRvckNhbGxiYWNrLCB0aGlzKTsKK30KKwordm9pZCBFd2tW
aWV3OjpoYW5kbGVGbGlja0NhbmNlbGVkKCkKK3sKKyAgICBpZiAobV9mbGlja0FuaW1hdG9yKSB7
CisgICAgICAgIGVjb3JlX2FuaW1hdG9yX2RlbChtX2ZsaWNrQW5pbWF0b3IpOworICAgICAgICBt
X2ZsaWNrQW5pbWF0b3IgPSAwOworICAgIH0KK30KKwogdm9pZCBFd2tWaWV3OjpoYW5kbGVQaW5j
aFN0YXJ0ZWQoY29uc3QgVmVjdG9yPEludFBvaW50PiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKQEAgLTE0NDAsNiArMTQ4NSwyMSBAQCB2b2lkIEV3a1ZpZXc6OmhhbmRsZVBpbmNoRmluaXNo
ZWQoKQogfQogI2VuZGlmCiAKK2Jvb2wgRXdrVmlldzo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYg
b2Zmc2V0KQoreworICAgIFdLUG9pbnQgY3VycmVudFBvc2l0aW9uID0gV0tWaWV3R2V0Q29udGVu
dFBvc2l0aW9uKHdrVmlldygpKTsKKyAgICBGbG9hdFBvaW50IG5ld1Bvc2l0aW9uID0gRmxvYXRQ
b2ludChjdXJyZW50UG9zaXRpb24ueCArIG9mZnNldC53aWR0aCgpLCBjdXJyZW50UG9zaXRpb24u
eSArIG9mZnNldC5oZWlnaHQoKSk7CisgICAgV0tWaWV3U2V0Q29udGVudFBvc2l0aW9uKHdrVmll
dygpLCBXS1BvaW50TWFrZShuZXdQb3NpdGlvbi54KCksIG5ld1Bvc2l0aW9uLnkoKSkpOworCisg
ICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHko
Y2VpbGVkSW50UG9pbnQod2ViVmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKS5tYXBQb2ludChu
ZXdQb3NpdGlvbikpLCBXS1ZpZXdHZXRDb250ZW50U2NhbGVGYWN0b3Iod2tWaWV3KCkpKTsKKwor
ICAgIC8vIElmIHRoZSBwYWdlIHBvc2l0aW9uIGlzIG5vdCBjaGFuZ2VkLCBub3RpZnkgdGhhdCB1
c2luZyByZXR1cm5pbmcgdmFsdWUuCisgICAgaWYgKGN1cnJlbnRQb3NpdGlvbiA9PSBXS1ZpZXdH
ZXRDb250ZW50UG9zaXRpb24od2tWaWV3KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogRXZhc19TbWFydF9DbGFzcyBFd2tWaWV3OjpwYXJlbnRTbWFy
dENsYXNzID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAKIC8vIEZyZWUgRXdrIFZpZXcg
ZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCmlu
ZGV4IGJkOTQ4MmY3NGU2ZmU3YzVjNGIwMDk0NmNiMzdhNDIzZTNlZjgwMzQuLjQ0MjRlNjdlOTYw
Nzg1Y2Y0ZDc3MzEyZjYxY2FmMDRlOGRiMzU3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmgKQEAgLTIwNiw2ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBpbmZvcm1VUkxDaGFuZ2UoKTsKIAogICAgIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiB0
YWtlU25hcHNob3QoKTsKKyAgICBib29sIHNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KTsKIAogICAgIHZvaWQgZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBXS1BvaW50JiwgY29uc3Qg
V0tSZWN0Jik7CiAKQEAgLTIxNyw2ICsyMTgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVQ
YW5TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBoYW5kbGVQYW4o
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVBhbkZpbmlzaGVkKCk7
CisgICAgdm9pZCBoYW5kbGVGbGljayhjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgdm9p
ZCBoYW5kbGVGbGlja0NhbmNlbGVkKCk7CiAgICAgdm9pZCBoYW5kbGVQaW5jaFN0YXJ0ZWQoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkludFBvaW50PiYpOwogICAgIHZvaWQgaGFuZGxlUGluY2goY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkludFBvaW50PiYpOwogICAgIHZvaWQgaGFuZGxlUGluY2hGaW5p
c2hlZCgpOwpAQCAtMjU5LDYgKzI2Miw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgaGFu
ZGxlVG91Y2hEb3duKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50
SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgaGFuZGxlVG91Y2hVcCh2b2lkKiBkYXRhLCBFdmFzKiwg
RXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGhhbmRsZVRv
dWNoTW92ZSh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8p
OworCisgICAgc3RhdGljIEVpbmFfQm9vbCBmbGlja0FuaW1hdG9yQ2FsbGJhY2sodm9pZCogZGF0
YSk7CiAjZW5kaWYKICAgICBzdGF0aWMgdm9pZCBoYW5kbGVGYXZpY29uQ2hhbmdlZChjb25zdCBj
aGFyKiBwYWdlVVJMLCB2b2lkKiBldmVudEluZm8pOwogCkBAIC0yOTgsNiArMzAzLDExIEBAIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBib29sIG1fdG91Y2hFdmVudHNF
bmFibGVkOwogICAgIE93blB0cjxXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyPiBtX2dlc3R1cmVS
ZWNvZ25pemVyOworICAgIFdlYkNvcmU6OkludFBvaW50IG1fbGFzdFBvaW50OworICAgIEVjb3Jl
X0FuaW1hdG9yKiBtX2ZsaWNrQW5pbWF0b3I7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2ZsaWNr
T2Zmc2V0OworICAgIHVuc2lnbmVkIG1fZmxpY2tEdXJhdGlvbjsKKyAgICB1bnNpZ25lZCBtX2Zs
aWNrSW5kZXg7CiAjZW5kaWYKICAgICBXZWJDb3JlOjpUaW1lcjxFd2tWaWV3PiBtX2Rpc3BsYXlU
aW1lcjsKICAgICBSZWZQdHI8RXdrQ29udGV4dE1lbnU+IG1fY29udGV4dE1lbnU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5j
cHAKaW5kZXggOThjZjQyOWZlMTFhNGY4ZTdhZTZkNTEzMGNjNGEyZDAwNGRjNGFjMy4uN2JiN2Vj
YzJlYjcyM2MwZmMyMmFkY2NmYjc5ODkwMGI3OTVkZDZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcApAQCAtNDAs
NiArNDAsNyBAQCBjb25zdCBkb3VibGUgR2VzdHVyZVJlY29nbml6ZXI6OnNfZG91YmxlVGFwVGlt
ZW91dEluU2Vjb25kcyA9IDAuNDsKIGNvbnN0IGRvdWJsZSBHZXN0dXJlUmVjb2duaXplcjo6c190
YXBBbmRIb2xkVGltZW91dEluU2Vjb25kcyA9IDEuMDsKIGNvbnN0IGludCBHZXN0dXJlUmVjb2du
aXplcjo6c19zcXVhcmVkRG91YmxlVGFwVGhyZXNob2xkID0gMTAwMDA7CiBjb25zdCBpbnQgR2Vz
dHVyZVJlY29nbml6ZXI6OnNfc3F1YXJlZFBhblRocmVzaG9sZCA9IDEwMDsKK2NvbnN0IGludCBH
ZXN0dXJlUmVjb2duaXplcjo6c19oaXN0b3J5Q2FwYWNpdHkgPSA1OwogCiBzdGF0aWMgaW5saW5l
IGJvb2wgZXhjZWVkc1BhblRocmVzaG9sZChjb25zdCBJbnRQb2ludCYgZmlyc3QsIGNvbnN0IElu
dFBvaW50JiBsYXN0KQogewpAQCAtNTYsNyArNTcsMTEgQEAgR2VzdHVyZVJlY29nbml6ZXI6Okdl
c3R1cmVSZWNvZ25pemVyKEdlc3R1cmVSZWNvZ25pemVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBt
X2NsaWVudChjbGllbnQpCiAgICAgLCBtX3RhcEFuZEhvbGRUaW1lcigwKQogICAgICwgbV9kb3Vi
bGVUYXBUaW1lcigwKQorICAgICwgbV9wYW5BbmltYXRvcigwKQorICAgICwgbV9pc0N1cnJlbnRQ
b2ludFVwZGF0ZWQoZmFsc2UpCisgICAgLCBtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCgwKQogewor
ICAgIG1faGlzdG9yeS5yZXNlcnZlQ2FwYWNpdHkoc19oaXN0b3J5Q2FwYWNpdHkpOwogfQogCiB2
b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpwcm9jZXNzVG91Y2hFdmVudChXS1RvdWNoRXZlbnRSZWYg
ZXZlbnRSZWYpCkBAIC0xMTcsNiArMTIyLDggQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplcjo6bm9H
ZXN0dXJlKFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludHMpCiB7CiAgICAg
c3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBrV0tFdmVudFR5cGVUb3VjaFN0YXJ0OgorICAgICAg
ICBtX2NsaWVudC0+aGFuZGxlRmxpY2tDYW5jZWxlZCgpOworCiAgICAgICAgIG1fcmVjb2duaXpl
ckZ1bmN0aW9uID0gJkdlc3R1cmVSZWNvZ25pemVyOjpzaW5nbGVUYXBHZXN0dXJlOwogICAgICAg
ICBtX2ZpcnN0UHJlc3NlZFBvaW50ID0gdG9JbnRQb2ludChnZXRQb2ludEF0SW5kZXgodG91Y2hQ
b2ludHMsIDApKTsKICAgICAgICAgQVNTRVJUKG1fdGFwQW5kSG9sZFRpbWVyKTsKQEAgLTE0Miw3
ICsxNDksNyBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpzaW5nbGVUYXBHZXN0dXJlKFdLRXZl
bnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludAogICAgICAgICBpZiAoZXhjZWVkc1Bh
blRocmVzaG9sZChtX2ZpcnN0UHJlc3NlZFBvaW50LCBjdXJyZW50UG9pbnQpKSB7CiAgICAgICAg
ICAgICBzdG9wVGFwVGltZXJzKCk7CiAgICAgICAgICAgICBtX3JlY29nbml6ZXJGdW5jdGlvbiA9
ICZHZXN0dXJlUmVjb2duaXplcjo6cGFuR2VzdHVyZTsKLSAgICAgICAgICAgIG1fY2xpZW50LT5o
YW5kbGVQYW5TdGFydGVkKGN1cnJlbnRQb2ludCk7CisgICAgICAgICAgICBoYW5kbGVQYW5TdGFy
dGVkKGN1cnJlbnRQb2ludCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
MTg4LDcgKzE5NSw3IEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OmRvdWJsZVRhcEdlc3R1cmUo
V0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50CiAgICAgICAgIEludFBvaW50
IGN1cnJlbnRQb2ludCA9IHRvSW50UG9pbnQoZ2V0UG9pbnRBdEluZGV4KHRvdWNoUG9pbnRzLCAw
KSk7CiAgICAgICAgIGlmIChleGNlZWRzUGFuVGhyZXNob2xkKG1fZmlyc3RQcmVzc2VkUG9pbnQs
IGN1cnJlbnRQb2ludCkpIHsKICAgICAgICAgICAgIG1fcmVjb2duaXplckZ1bmN0aW9uID0gJkdl
c3R1cmVSZWNvZ25pemVyOjpwYW5HZXN0dXJlOwotICAgICAgICAgICAgbV9jbGllbnQtPmhhbmRs
ZVBhblN0YXJ0ZWQoY3VycmVudFBvaW50KTsKKyAgICAgICAgICAgIGhhbmRsZVBhblN0YXJ0ZWQo
Y3VycmVudFBvaW50KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMTAs
MTAgKzIxNywxMCBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpwYW5HZXN0dXJlKFdLRXZlbnRU
eXBlIHR5cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludHMpCiAgICAgICAgIG1fY2xpZW50LT5oYW5k
bGVQaW5jaFN0YXJ0ZWQoY3JlYXRlVmVjdG9yV2l0aFdLQXJyYXkodG91Y2hQb2ludHMsIDIpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrV0tFdmVudFR5cGVUb3VjaE1vdmU6Ci0gICAgICAg
IG1fY2xpZW50LT5oYW5kbGVQYW4odG9JbnRQb2ludChnZXRQb2ludEF0SW5kZXgodG91Y2hQb2lu
dHMsIDApKSk7CisgICAgICAgIHVwZGF0ZUN1cnJlbnRQb2ludCh0b0ludFBvaW50KGdldFBvaW50
QXRJbmRleCh0b3VjaFBvaW50cywgMCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrV0tF
dmVudFR5cGVUb3VjaEVuZDoKLSAgICAgICAgbV9jbGllbnQtPmhhbmRsZVBhbkZpbmlzaGVkKCk7
CisgICAgICAgIGhhbmRsZVBhbkZpbmlzaGVkKCk7CiAgICAgICAgIG1fcmVjb2duaXplckZ1bmN0
aW9uID0gJkdlc3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmU7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CkBAIC0yNDQsNyArMjUxLDcgQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplcjo6cGlu
Y2hHZXN0dXJlKFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludHMpCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJU
KHBvaW50UmVmKTsKLSAgICAgICAgICAgIG1fY2xpZW50LT5oYW5kbGVQYW5TdGFydGVkKHRvSW50
UG9pbnQoV0tUb3VjaFBvaW50R2V0UG9zaXRpb24ocG9pbnRSZWYpKSk7CisgICAgICAgICAgICBo
YW5kbGVQYW5TdGFydGVkKHRvSW50UG9pbnQoV0tUb3VjaFBvaW50R2V0UG9zaXRpb24ocG9pbnRS
ZWYpKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrV0tFdmVudFR5cGVU
b3VjaFN0YXJ0OgpAQCAtMjU5LDYgKzI2NiwxMSBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpy
ZXNldCgpCiB7CiAgICAgc3RvcFRhcFRpbWVycygpOwogCisgICAgaWYgKG1fcGFuQW5pbWF0b3Ip
IHsKKyAgICAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKG1fcGFuQW5pbWF0b3IpOworICAgICAgICBt
X3BhbkFuaW1hdG9yID0gMDsKKyAgICB9CisKICAgICBtX3JlY29nbml6ZXJGdW5jdGlvbiA9ICZH
ZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0dXJlOwogfQogCkBAIC0yNzUsNiArMjg3LDYzIEBAIHZv
aWQgR2VzdHVyZVJlY29nbml6ZXI6OnN0b3BUYXBUaW1lcnMoKQogICAgIH0KIH0KIAorRWluYV9C
b29sIEdlc3R1cmVSZWNvZ25pemVyOjpwYW5BbmltYXRvckNhbGxiYWNrKHZvaWQqIGRhdGEpCit7
CisgICAgR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyID0gc3RhdGljX2Nhc3Q8
R2VzdHVyZVJlY29nbml6ZXIqPihkYXRhKTsKKyAgICBpZiAoIWdlc3R1cmVSZWNvZ25pemVyLT5t
X2lzQ3VycmVudFBvaW50VXBkYXRlZCkKKyAgICAgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX1JF
TkVXOworCisgICAgZ2VzdHVyZVJlY29nbml6ZXItPm1fY2xpZW50LT5oYW5kbGVQYW4oZ2VzdHVy
ZVJlY29nbml6ZXItPm1fY3VycmVudFBvaW50KTsKKyAgICBnZXN0dXJlUmVjb2duaXplci0+bV9p
c0N1cnJlbnRQb2ludFVwZGF0ZWQgPSBmYWxzZTsKKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFD
S19SRU5FVzsKK30KKwordm9pZCBHZXN0dXJlUmVjb2duaXplcjo6aGFuZGxlUGFuU3RhcnRlZChj
b25zdCBJbnRQb2ludCYgcG9pbnQpCit7CisgICAgQVNTRVJUKCFtX3BhbkFuaW1hdG9yKTsKKyAg
ICBtX3BhbkFuaW1hdG9yID0gZWNvcmVfYW5pbWF0b3JfYWRkKHBhbkFuaW1hdG9yQ2FsbGJhY2ss
IHRoaXMpOworICAgIG1fY3VycmVudFBvaW50ID0gcG9pbnQ7CisgICAgbV9maXJzdEhpc3RvcnlJ
dGVtSW5kZXggPSAwOworICAgIG1faGlzdG9yeS5yZXNpemUoMCk7CisKKyAgICBtX2NsaWVudC0+
aGFuZGxlUGFuU3RhcnRlZChwb2ludCk7Cit9CisKK3ZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnVw
ZGF0ZUN1cnJlbnRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpCit7CisgICAgbV9jdXJyZW50
UG9pbnQgPSBwb2ludDsKKyAgICBtX2lzQ3VycmVudFBvaW50VXBkYXRlZCA9IHRydWU7CisKKyAg
ICAvLyBTYXZlIGN1cnJlbnQgcG9pbnQgdG8gdXNlIHRvIGNhbGN1bGF0ZSBvZmZzZXQgb2YgZmxp
Y2suCisgICAgSGlzdG9yeUl0ZW0gaXRlbSA9IHttX2N1cnJlbnRQb2ludCwgZWNvcmVfdGltZV9n
ZXQoKX07CisgICAgaWYgKG1faGlzdG9yeS5zaXplKCkgPCBtX2hpc3RvcnkuY2FwYWNpdHkoKSkK
KyAgICAgICAgbV9oaXN0b3J5LnVuY2hlY2tlZEFwcGVuZChpdGVtKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgbV9oaXN0b3J5W21fZmlyc3RIaXN0b3J5SXRlbUluZGV4KytdID0gaXRlbTsKKyAgICAg
ICAgaWYgKG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4ID49IG1faGlzdG9yeS5jYXBhY2l0eSgpKQor
ICAgICAgICAgICAgbV9maXJzdEhpc3RvcnlJdGVtSW5kZXggJT0gbV9oaXN0b3J5LmNhcGFjaXR5
KCk7CisgICAgfQorfQorCit2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpoYW5kbGVQYW5GaW5pc2hl
ZCgpCit7CisgICAgQVNTRVJUKG1fcGFuQW5pbWF0b3IpOworICAgIGVjb3JlX2FuaW1hdG9yX2Rl
bChtX3BhbkFuaW1hdG9yKTsKKyAgICBtX3BhbkFuaW1hdG9yID0gMDsKKworICAgIGlmICghbV9o
aXN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICAvLyBDYWxjdWxhdGUgb2Zmc2V0IHRvIG1vdmUg
ZHVyaW5nIG9uZSBmcmFtZS4KKyAgICAgICAgY29uc3QgSGlzdG9yeUl0ZW0mIGZpcnN0SGlzdG9y
eUl0ZW0gPSBtX2hpc3RvcnlbbV9maXJzdEhpc3RvcnlJdGVtSW5kZXhdOworICAgICAgICBkb3Vi
bGUgZnJhbWUgPSAoZWNvcmVfdGltZV9nZXQoKSAtIGZpcnN0SGlzdG9yeUl0ZW0udGltZXN0YW1w
KSAvIGVjb3JlX2FuaW1hdG9yX2ZyYW1ldGltZV9nZXQoKTsKKyAgICAgICAgSW50U2l6ZSBvZmZz
ZXQgPSBmaXJzdEhpc3RvcnlJdGVtLnBvaW50IC0gbV9jdXJyZW50UG9pbnQ7CisgICAgICAgIG9m
ZnNldC5zY2FsZSgxIC8gZnJhbWUpOworICAgICAgICBtX2NsaWVudC0+aGFuZGxlRmxpY2sob2Zm
c2V0KTsKKyAgICB9CisKKyAgICBtX2NsaWVudC0+aGFuZGxlUGFuRmluaXNoZWQoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29n
bml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25p
emVyLmgKaW5kZXggMTAwNmI0MWI0NzQ2ZjllNTNkMmRmMjM0ZDkzMzc0MGVhNDBlNWYxYi4uZmRl
ZTZhNTY0MTE3YmYwODNhOWU5ZjQyNzVhYzcxOGJlMTQ2MGZmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5oCkBAIC00Niw2
ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGFuU3RhcnRlZChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQYW4oY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGFuRmlu
aXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRmxpY2soY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGbGlja0NhbmNlbGVkKCkgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGluY2hTdGFydGVkKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRQb2ludD4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGluY2goY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkludFBvaW50PiYpIHsgfQpAQCAtNjgsMTIgKzcwLDE0IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHNfdGFwQW5kSG9sZFRpbWVvdXRJblNlY29uZHM7
CiAgICAgc3RhdGljIGNvbnN0IGludCBzX3NxdWFyZWREb3VibGVUYXBUaHJlc2hvbGQ7CiAgICAg
c3RhdGljIGNvbnN0IGludCBzX3NxdWFyZWRQYW5UaHJlc2hvbGQ7CisgICAgc3RhdGljIGNvbnN0
IGludCBzX2hpc3RvcnlDYXBhY2l0eTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBHZXN0dXJl
UmVjb2duaXplcihHZXN0dXJlUmVjb2duaXplckNsaWVudCopOwogCiAgICAgc3RhdGljIEVpbmFf
Qm9vbCBkb3VibGVUYXBUaW1lckNhbGxiYWNrKHZvaWQqKTsKICAgICBzdGF0aWMgRWluYV9Cb29s
IHRhcEFuZEhvbGRUaW1lckNhbGxiYWNrKHZvaWQqKTsKKyAgICBzdGF0aWMgRWluYV9Cb29sIHBh
bkFuaW1hdG9yQ2FsbGJhY2sodm9pZCopOwogCiAgICAgLy8gU3RhdGUgZnVuY3Rpb25zLgogICAg
IHZvaWQgbm9HZXN0dXJlKFdLRXZlbnRUeXBlLCBXS0FycmF5UmVmKTsKQEAgLTgzLDYgKzg3LDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBpbmNoR2VzdHVyZShXS0V2ZW50VHlwZSwgV0tBcnJheVJl
Zik7CiAKICAgICB2b2lkIHN0b3BUYXBUaW1lcnMoKTsKKyAgICB2b2lkIGhhbmRsZVBhblN0YXJ0
ZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIHVwZGF0ZUN1cnJlbnRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQgaGFuZGxlUGFuRmluaXNoZWQo
KTsKIAogICAgIHR5cGVkZWYgdm9pZCAoR2VzdHVyZVJlY29nbml6ZXI6OipSZWNvZ25pemVyRnVu
Y3Rpb24pKFdLRXZlbnRUeXBlLCBXS0FycmF5UmVmKTsKICAgICBSZWNvZ25pemVyRnVuY3Rpb24g
bV9yZWNvZ25pemVyRnVuY3Rpb247CkBAIC05MSw2ICs5OCwxNyBAQCBwcml2YXRlOgogICAgIEVj
b3JlX1RpbWVyKiBtX3RhcEFuZEhvbGRUaW1lcjsKICAgICBFY29yZV9UaW1lciogbV9kb3VibGVU
YXBUaW1lcjsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2ZpcnN0UHJlc3NlZFBvaW50OworCisg
ICAgRWNvcmVfQW5pbWF0b3IqIG1fcGFuQW5pbWF0b3I7CisgICAgV2ViQ29yZTo6SW50UG9pbnQg
bV9jdXJyZW50UG9pbnQ7CisgICAgYm9vbCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZDsKKworICAg
IHR5cGVkZWYgc3RydWN0IHsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQ7CisgICAg
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgfSBIaXN0b3J5SXRlbTsKKyAgICBWZWN0b3I8SGlz
dG9yeUl0ZW0+IG1faGlzdG9yeTsKKyAgICB1bnNpZ25lZCBtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRl
eDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAppbmRleCAyOTM3
NDVlNDhkYzE0ZjY5OWEwOWFlMjRiZDRlMmEzOTJjOWVkZWE1Li41ZTIxY2U3N2JiYzY5NTliYWJk
YTViOTBkMjAwZjliZDM0NDIyMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcApAQCAtMTA1LDYgKzEwNSwx
NiBAQCB2b2lkIFdlYlZpZXc6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIG1fcGFnZS0+
dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7CiB9CiAKK3Zv
aWQgV2ViVmlldzo6c2V0Q29udGVudFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
IHBvc2l0aW9uKQoreworICAgIEZsb2F0UmVjdCBib3VuZHM7CisgICAgYm91bmRzLnNldFdpZHRo
KHN0ZDo6bWF4KDAuZiwgY2VpbGYobV9jb250ZW50c1NpemUud2lkdGgoKSAqIG1fY29udGVudFNj
YWxlRmFjdG9yKSkgLSBzaXplKCkud2lkdGgoKSk7CisgICAgYm91bmRzLnNldEhlaWdodChzdGQ6
Om1heCgwLmYsIGNlaWxmKG1fY29udGVudHNTaXplLmhlaWdodCgpICogbV9jb250ZW50U2NhbGVG
YWN0b3IpKSAtIHNpemUoKS5oZWlnaHQoKSk7CisKKyAgICBtX2NvbnRlbnRQb3NpdGlvbi5zZXRY
KGNsYW1wVG8ocG9zaXRpb24ueCgpLCBib3VuZHMueCgpLCBib3VuZHMud2lkdGgoKSkpOworICAg
IG1fY29udGVudFBvc2l0aW9uLnNldFkoY2xhbXBUbyhwb3NpdGlvbi55KCksIGJvdW5kcy55KCks
IGJvdW5kcy5oZWlnaHQoKSkpOworfQorCiB2b2lkIFdlYlZpZXc6OnNldFVzZXJWaWV3cG9ydFRy
YW5zbGF0aW9uKGRvdWJsZSB0eCwgZG91YmxlIHR5KQogewogICAgIG1fdXNlclZpZXdwb3J0VHJh
bnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKS50cmFuc2xhdGUodHgsIHR5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZp
ZXcuaAppbmRleCBlNzlhMjM4ZTM0YTkxOTYxY2Q1MTA1MTQ0NmJjMjVlNjY3NjZlODJlLi5lYjFi
ZjRjM2UwNDI5MmEwZjliZDJjZThkMGU1NWI2ZDdjOWE1MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCkBAIC02
Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnRTY2FsZUZhY3RvcihmbG9h
dCBzY2FsZUZhY3RvcikgeyBtX2NvbnRlbnRTY2FsZUZhY3RvciA9IHNjYWxlRmFjdG9yOyB9CiAg
ICAgZmxvYXQgY29udGVudFNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2Nh
bGVGYWN0b3I7IH0KIAotICAgIHZvaWQgc2V0Q29udGVudFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fY29udGVudFBvc2l0aW9uID0gcG9zaXRpb247IH0K
KyAgICB2b2lkIHNldENvbnRlbnRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7
CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY29udGVudFBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50UG9zaXRpb247IH0KIAogICAgIHZvaWQgc2V0VXNlclZpZXdwb3J0
VHJhbnNsYXRpb24oZG91YmxlIHR4LCBkb3VibGUgdHkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207646</attachid>
            <date>2013-07-29 06:21:50 -0700</date>
            <delta_ts>2013-08-08 05:28:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130729222147.patch</filename>
            <type>text/plain</type>
            <size>22763</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGU3YWY5ZjI4MWNjYjgz
Y2IwMGNhZDE3NWIwZDVlZDAzZTQ0MzhjYy4uYjNmMTkzZjM1MDM1NTJmNWI1MjE3MmFhODczZTJj
OWI2NTY1YjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTA3LTI5ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFuIGdlc3R1cmUgdG8gc2Nyb2xsIHBh
Z2UgYnkgbW92ZW1lbnQgb2YgcG9pbnQgYW5kIHN0b3AKKyAgICAgICAgc2Nyb2xsaW5nIHNtb290
aGx5IHVzaW5nIGVhc2UtaW4tb3V0LXF1YWQgYWxnb3JpdGhtIGFmdGVyIHRvdWNoZWQKKyAgICAg
ICAgcG9pbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY3JlZW4uCisKKyAgICAgICAgVXNlIEVjb3Jl
X0FuaW1hdG9yIGluIG9yZGVyIHRvIHByb2Nlc3Mgb25jZSBwZXIgZWFjaCBmcmFtaW5nIHRpbWUg
c2xvdHMKKyAgICAgICAgaW5zdGVhZCBvZiBwcm9jZXNzaW5nIGFsbCBtb3ZlbWVudC4KKworICAg
ICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXcuY3BwOgorICAgICAgICAoRXdrVmlldzo6RXdrVmlldyk6CisgICAgICAgIChFd2tWaWV3
OjpoYW5kbGVQYW5TdGFydGVkKToKKyAgICAgICAgKEV3a1ZpZXc6OmhhbmRsZVBhbik6CisgICAg
ICAgIChFd2tWaWV3OjpmbGlja0FuaW1hdG9yQ2FsbGJhY2spOgorICAgICAgICAoRXdrVmlldzo6
aGFuZGxlRmxpY2spOgorICAgICAgICAoRXdrVmlldzo6aGFuZGxlRmxpY2tDYW5jZWxlZCk6Cisg
ICAgICAgIChFd2tWaWV3OjpzY3JvbGxCeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVSZWNvZ25p
emVyKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6Om5vR2VzdHVyZSk6Cisg
ICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyOjpzaW5nbGVUYXBHZXN0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6OmRvdWJsZVRhcEdlc3R1cmUpOgorICAg
ICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6cGFuR2VzdHVyZSk6CisgICAgICAgIChX
ZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyOjpwaW5jaEdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0
OjpHZXN0dXJlUmVjb2duaXplcjo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVj
b2duaXplcjo6cGFuQW5pbWF0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVS
ZWNvZ25pemVyOjpoYW5kbGVQYW5TdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJl
Y29nbml6ZXI6OnVwZGF0ZUN1cnJlbnRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVS
ZWNvZ25pemVyOjpoYW5kbGVQYW5GaW5pc2hlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKEdlc3R1cmVSZWNvZ25pemVyQ2xpZW50
OjpoYW5kbGVGbGljayk6CisgICAgICAgIChHZXN0dXJlUmVjb2duaXplckNsaWVudDo6aGFuZGxl
RmxpY2tDYW5jZWxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnNldENvbnRlbnRQb3NpdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmNwcDogQWRkZWQuCisgICAgICAg
IChlYXNlSW5PdXRRdWFkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5o
OiBBZGRlZC4KKwogMjAxMy0wNy0yOCAgRXVubWkgTGVlICA8ZXVubWkxNS5sZWVAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgZ2VzdHVyZSByZWNvZ25pemVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0ODk1ZTk4ZTI2NzU0ZDNkZjVhMDU4NmQwNGM2
NTk2ZWVhMTIwOGVhLi4yN2I4NWQ5Y2IwZDlhZjZmNjgyMTBiNjhlOTAxMDI0ODhkZDI1ZWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTA2LDYgKzEwNiw3IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL0Vh
c2luZ0N1cnZlcy5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoRXZlbnQuY3BwCiAgICAg
VUlQcm9jZXNzL2VmbC9Fd2tUb3VjaFBvaW50LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRmluZENs
aWVudEVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5j
cHAKaW5kZXggM2M1MjljNjdkNDlmNzA5N2MzOTY2YjAzMmMzN2M0N2FkYjZjYTM5Ny4uMzA1Mzg1
NDM4ODIwZmRkZDBkYjQ4NWU0MGMwMjk1NzhhMTY0ZTIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTg3LDYgKzg3LDEwIEBACiAjaW5jbHVk
ZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorI2luY2x1ZGUgIkVhc2luZ0N1cnZlcy5oIgorI2VuZGlmCisKIHVzaW5nIG5h
bWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMjc3LDYgKzI4MSw5IEBAIEV3a1ZpZXc6OkV3a1ZpZXco
V0tWaWV3UmVmIHZpZXcsIEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KQogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCiAgICAgLCBtX3RvdWNoRXZlbnRzRW5hYmxlZChmYWxzZSkKICAgICAsIG1fZ2Vz
dHVyZVJlY29nbml6ZXIoR2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1f
ZmxpY2tBbmltYXRvcigwKQorICAgICwgbV9mbGlja0R1cmF0aW9uKDApCisgICAgLCBtX2ZsaWNr
SW5kZXgoMCkKICNlbmRpZgogICAgICwgbV9kaXNwbGF5VGltZXIodGhpcywgJkV3a1ZpZXc6OmRp
c3BsYXlUaW1lckZpcmVkKQogICAgICwgbV9pbnB1dE1ldGhvZENvbnRleHQoSW5wdXRNZXRob2RD
b250ZXh0RWZsOjpjcmVhdGUodGhpcywgc21hcnREYXRhKCktPmJhc2UuZXZhcykpCkBAIC0xNDA5
LDE0ICsxNDE2LDE4IEBAIHZvaWQgRXdrVmlldzo6aGFuZGxlVGFwQW5kSG9sZChjb25zdCBJbnRQ
b2ludCYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFd2tWaWV3OjpoYW5kbGVQ
YW5TdGFydGVkKGNvbnN0IEludFBvaW50JikKK3ZvaWQgRXdrVmlldzo6aGFuZGxlUGFuU3RhcnRl
ZChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBt
X2xhc3RQb2ludCA9IHBvaW50OwogfQogCiB2b2lkIEV3a1ZpZXc6OmhhbmRsZVBhbihjb25zdCBJ
bnRQb2ludCYgcG9pbnQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAobV9sYXN0
UG9pbnQgPT0gcG9pbnQpCisgICAgICAgIHJldHVybjsKKworICAgIHNjcm9sbEJ5KG1fbGFzdFBv
aW50IC0gcG9pbnQpOworICAgIG1fbGFzdFBvaW50ID0gcG9pbnQ7CiB9CiAKIHZvaWQgRXdrVmll
dzo6aGFuZGxlUGFuRmluaXNoZWQoKQpAQCAtMTQyNCw2ICsxNDM1LDQwIEBAIHZvaWQgRXdrVmll
dzo6aGFuZGxlUGFuRmluaXNoZWQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK0VpbmFf
Qm9vbCBFd2tWaWV3OjpmbGlja0FuaW1hdG9yQ2FsbGJhY2sodm9pZCogZGF0YSkKK3sKKyAgICBF
d2tWaWV3KiBld2tWaWV3ID0gc3RhdGljX2Nhc3Q8RXdrVmlldyo+KGRhdGEpOworICAgIGZsb2F0
IG11bHRpcGxpZXIgPSBlYXNlSW5PdXRRdWFkKGV3a1ZpZXctPm1fZmxpY2tJbmRleCwgMCwgMS4w
LCBld2tWaWV3LT5tX2ZsaWNrRHVyYXRpb24pOworICAgIGZsb2F0IG9mZnNldFdpZHRoID0gZXdr
Vmlldy0+bV9mbGlja09mZnNldC53aWR0aCgpICogbXVsdGlwbGllcjsKKyAgICBmbG9hdCBvZmZz
ZXRIZWlnaHQgPSBld2tWaWV3LT5tX2ZsaWNrT2Zmc2V0LmhlaWdodCgpICogbXVsdGlwbGllcjsK
KyAgICBvZmZzZXRXaWR0aCA9IChvZmZzZXRXaWR0aCA+IDApID8gY2VpbGYob2Zmc2V0V2lkdGgp
IDogZmxvb3JmKG9mZnNldFdpZHRoKTsKKyAgICBvZmZzZXRIZWlnaHQgPSAob2Zmc2V0SGVpZ2h0
ID4gMCkgPyBjZWlsZihvZmZzZXRIZWlnaHQpIDogZmxvb3JmKG9mZnNldEhlaWdodCk7CisgICAg
SW50U2l6ZSBvZmZzZXQob2Zmc2V0V2lkdGgsIG9mZnNldEhlaWdodCk7CisgICAgZXdrVmlldy0+
bV9mbGlja0luZGV4LS07CisKKyAgICBpZiAob2Zmc2V0LmlzWmVybygpIHx8ICFld2tWaWV3LT5z
Y3JvbGxCeShvZmZzZXQpIHx8ICFld2tWaWV3LT5tX2ZsaWNrSW5kZXgpIHsKKyAgICAgICAgZXdr
Vmlldy0+bV9mbGlja0FuaW1hdG9yID0gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEV3a1ZpZXc6OmhhbmRsZUZsaWNrKGNvbnN0
IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBtX2ZsaWNrT2Zmc2V0ID0gb2Zmc2V0OworICAgIG1f
ZmxpY2tJbmRleCA9IG1fZmxpY2tEdXJhdGlvbiA9IDEgLyBlY29yZV9hbmltYXRvcl9mcmFtZXRp
bWVfZ2V0KCk7CisgICAgbV9mbGlja0FuaW1hdG9yID0gZWNvcmVfYW5pbWF0b3JfYWRkKGZsaWNr
QW5pbWF0b3JDYWxsYmFjaywgdGhpcyk7Cit9CisKK3ZvaWQgRXdrVmlldzo6aGFuZGxlRmxpY2tD
YW5jZWxlZCgpCit7CisgICAgaWYgKG1fZmxpY2tBbmltYXRvcikgeworICAgICAgICBlY29yZV9h
bmltYXRvcl9kZWwobV9mbGlja0FuaW1hdG9yKTsKKyAgICAgICAgbV9mbGlja0FuaW1hdG9yID0g
MDsKKyAgICB9Cit9CisKIHZvaWQgRXdrVmlldzo6aGFuZGxlUGluY2hTdGFydGVkKGNvbnN0IFZl
Y3RvcjxJbnRQb2ludD4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0xNDQwLDYgKzE0
ODUsMjMgQEAgdm9pZCBFd2tWaWV3OjpoYW5kbGVQaW5jaEZpbmlzaGVkKCkKIH0KICNlbmRpZgog
Citib29sIEV3a1ZpZXc6OnNjcm9sbEJ5KGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBX
S1BvaW50IG9sZFBvc2l0aW9uID0gV0tWaWV3R2V0Q29udGVudFBvc2l0aW9uKHdrVmlldygpKTsK
KyAgICBGbG9hdFBvaW50IG5ld1Bvc2l0aW9uID0gRmxvYXRQb2ludChvbGRQb3NpdGlvbi54ICsg
b2Zmc2V0LndpZHRoKCksIG9sZFBvc2l0aW9uLnkgKyBvZmZzZXQuaGVpZ2h0KCkpOworICAgIFdL
Vmlld1NldENvbnRlbnRQb3NpdGlvbih3a1ZpZXcoKSwgV0tQb2ludE1ha2UobmV3UG9zaXRpb24u
eCgpLCBuZXdQb3NpdGlvbi55KCkpKTsKKworICAgIFdLUG9pbnQgcG9zaXRpb24gPSBXS1ZpZXdH
ZXRDb250ZW50UG9zaXRpb24od2tWaWV3KCkpOworICAgIGZsb2F0IGNvbnRlbnRTY2FsZSA9IFdL
Vmlld0dldENvbnRlbnRTY2FsZUZhY3Rvcih3a1ZpZXcoKSk7CisgICAgbV9wYWdlVmlld3BvcnRD
b250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkoRmxvYXRQb2ludChwb3NpdGlv
bi54IC8gY29udGVudFNjYWxlLCBwb3NpdGlvbi55IC8gY29udGVudFNjYWxlKSwgY29udGVudFNj
YWxlKTsKKworICAgIC8vIElmIHRoZSBwYWdlIHBvc2l0aW9uIGlzIG5vdCBjaGFuZ2VkLCBub3Rp
ZnkgdGhhdCB1c2luZyByZXR1cm5pbmcgdmFsdWUuCisgICAgaWYgKG9sZFBvc2l0aW9uID09IHBv
c2l0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
RXZhc19TbWFydF9DbGFzcyBFd2tWaWV3OjpwYXJlbnRTbWFydENsYXNzID0gRVZBU19TTUFSVF9D
TEFTU19JTklUX05VTEw7CiAKIC8vIEZyZWUgRXdrIFZpZXcgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCmluZGV4IGJkOTQ4MmY3NGU2ZmU3YzVj
NGIwMDk0NmNiMzdhNDIzZTNlZjgwMzQuLjQ0MjRlNjdlOTYwNzg1Y2Y0ZDc3MzEyZjYxY2FmMDRl
OGRiMzU3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgK
QEAgLTIwNiw2ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmZvcm1VUkxDaGFuZ2UoKTsK
IAogICAgIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiB0YWtlU25hcHNob3QoKTsKKyAgICBi
b29sIHNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKIAogICAgIHZvaWQgZGlkRmlu
ZFpvb21hYmxlQXJlYShjb25zdCBXS1BvaW50JiwgY29uc3QgV0tSZWN0Jik7CiAKQEAgLTIxNyw2
ICsyMTgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVQYW5TdGFydGVkKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBoYW5kbGVQYW4oY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKTsKICAgICB2b2lkIGhhbmRsZVBhbkZpbmlzaGVkKCk7CisgICAgdm9pZCBoYW5kbGVGbGlj
ayhjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgdm9pZCBoYW5kbGVGbGlja0NhbmNlbGVk
KCk7CiAgICAgdm9pZCBoYW5kbGVQaW5jaFN0YXJ0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6Oklu
dFBvaW50PiYpOwogICAgIHZvaWQgaGFuZGxlUGluY2goY29uc3QgVmVjdG9yPFdlYkNvcmU6Oklu
dFBvaW50PiYpOwogICAgIHZvaWQgaGFuZGxlUGluY2hGaW5pc2hlZCgpOwpAQCAtMjU5LDYgKzI2
Miw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgaGFuZGxlVG91Y2hEb3duKHZvaWQqIGRh
dGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbyk7CiAgICAgc3RhdGljIHZv
aWQgaGFuZGxlVG91Y2hVcCh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBl
dmVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGhhbmRsZVRvdWNoTW92ZSh2b2lkKiBkYXRhLCBF
dmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pOworCisgICAgc3RhdGljIEVpbmFf
Qm9vbCBmbGlja0FuaW1hdG9yQ2FsbGJhY2sodm9pZCogZGF0YSk7CiAjZW5kaWYKICAgICBzdGF0
aWMgdm9pZCBoYW5kbGVGYXZpY29uQ2hhbmdlZChjb25zdCBjaGFyKiBwYWdlVVJMLCB2b2lkKiBl
dmVudEluZm8pOwogCkBAIC0yOTgsNiArMzAzLDExIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKICAgICBib29sIG1fdG91Y2hFdmVudHNFbmFibGVkOwogICAgIE93blB0cjxX
ZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOworICAgIFdlYkNv
cmU6OkludFBvaW50IG1fbGFzdFBvaW50OworICAgIEVjb3JlX0FuaW1hdG9yKiBtX2ZsaWNrQW5p
bWF0b3I7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2ZsaWNrT2Zmc2V0OworICAgIHVuc2lnbmVk
IG1fZmxpY2tEdXJhdGlvbjsKKyAgICB1bnNpZ25lZCBtX2ZsaWNrSW5kZXg7CiAjZW5kaWYKICAg
ICBXZWJDb3JlOjpUaW1lcjxFd2tWaWV3PiBtX2Rpc3BsYXlUaW1lcjsKICAgICBSZWZQdHI8RXdr
Q29udGV4dE1lbnU+IG1fY29udGV4dE1lbnU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHAKaW5kZXggOThjZjQyOWZlMTFh
NGY4ZTdhZTZkNTEzMGNjNGEyZDAwNGRjNGFjMy4uN2JiN2VjYzJlYjcyM2MwZmMyMmFkY2NmYjc5
ODkwMGI3OTVkZDZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcApAQCAtNDAsNiArNDAsNyBAQCBjb25zdCBkb3Vi
bGUgR2VzdHVyZVJlY29nbml6ZXI6OnNfZG91YmxlVGFwVGltZW91dEluU2Vjb25kcyA9IDAuNDsK
IGNvbnN0IGRvdWJsZSBHZXN0dXJlUmVjb2duaXplcjo6c190YXBBbmRIb2xkVGltZW91dEluU2Vj
b25kcyA9IDEuMDsKIGNvbnN0IGludCBHZXN0dXJlUmVjb2duaXplcjo6c19zcXVhcmVkRG91Ymxl
VGFwVGhyZXNob2xkID0gMTAwMDA7CiBjb25zdCBpbnQgR2VzdHVyZVJlY29nbml6ZXI6OnNfc3F1
YXJlZFBhblRocmVzaG9sZCA9IDEwMDsKK2NvbnN0IGludCBHZXN0dXJlUmVjb2duaXplcjo6c19o
aXN0b3J5Q2FwYWNpdHkgPSA1OwogCiBzdGF0aWMgaW5saW5lIGJvb2wgZXhjZWVkc1BhblRocmVz
aG9sZChjb25zdCBJbnRQb2ludCYgZmlyc3QsIGNvbnN0IEludFBvaW50JiBsYXN0KQogewpAQCAt
NTYsNyArNTcsMTEgQEAgR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVSZWNvZ25pemVyKEdlc3R1
cmVSZWNvZ25pemVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAg
LCBtX3RhcEFuZEhvbGRUaW1lcigwKQogICAgICwgbV9kb3VibGVUYXBUaW1lcigwKQorICAgICwg
bV9wYW5BbmltYXRvcigwKQorICAgICwgbV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQoZmFsc2UpCisg
ICAgLCBtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCgwKQogeworICAgIG1faGlzdG9yeS5yZXNlcnZl
Q2FwYWNpdHkoc19oaXN0b3J5Q2FwYWNpdHkpOwogfQogCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVy
Ojpwcm9jZXNzVG91Y2hFdmVudChXS1RvdWNoRXZlbnRSZWYgZXZlbnRSZWYpCkBAIC0xMTcsNiAr
MTIyLDggQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0dXJlKFdLRXZlbnRUeXBlIHR5
cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludHMpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
Y2FzZSBrV0tFdmVudFR5cGVUb3VjaFN0YXJ0OgorICAgICAgICBtX2NsaWVudC0+aGFuZGxlRmxp
Y2tDYW5jZWxlZCgpOworCiAgICAgICAgIG1fcmVjb2duaXplckZ1bmN0aW9uID0gJkdlc3R1cmVS
ZWNvZ25pemVyOjpzaW5nbGVUYXBHZXN0dXJlOwogICAgICAgICBtX2ZpcnN0UHJlc3NlZFBvaW50
ID0gdG9JbnRQb2ludChnZXRQb2ludEF0SW5kZXgodG91Y2hQb2ludHMsIDApKTsKICAgICAgICAg
QVNTRVJUKG1fdGFwQW5kSG9sZFRpbWVyKTsKQEAgLTE0Miw3ICsxNDksNyBAQCB2b2lkIEdlc3R1
cmVSZWNvZ25pemVyOjpzaW5nbGVUYXBHZXN0dXJlKFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlS
ZWYgdG91Y2hQb2ludAogICAgICAgICBpZiAoZXhjZWVkc1BhblRocmVzaG9sZChtX2ZpcnN0UHJl
c3NlZFBvaW50LCBjdXJyZW50UG9pbnQpKSB7CiAgICAgICAgICAgICBzdG9wVGFwVGltZXJzKCk7
CiAgICAgICAgICAgICBtX3JlY29nbml6ZXJGdW5jdGlvbiA9ICZHZXN0dXJlUmVjb2duaXplcjo6
cGFuR2VzdHVyZTsKLSAgICAgICAgICAgIG1fY2xpZW50LT5oYW5kbGVQYW5TdGFydGVkKGN1cnJl
bnRQb2ludCk7CisgICAgICAgICAgICBoYW5kbGVQYW5TdGFydGVkKGN1cnJlbnRQb2ludCk7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTg4LDcgKzE5NSw3IEBAIHZvaWQg
R2VzdHVyZVJlY29nbml6ZXI6OmRvdWJsZVRhcEdlc3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tB
cnJheVJlZiB0b3VjaFBvaW50CiAgICAgICAgIEludFBvaW50IGN1cnJlbnRQb2ludCA9IHRvSW50
UG9pbnQoZ2V0UG9pbnRBdEluZGV4KHRvdWNoUG9pbnRzLCAwKSk7CiAgICAgICAgIGlmIChleGNl
ZWRzUGFuVGhyZXNob2xkKG1fZmlyc3RQcmVzc2VkUG9pbnQsIGN1cnJlbnRQb2ludCkpIHsKICAg
ICAgICAgICAgIG1fcmVjb2duaXplckZ1bmN0aW9uID0gJkdlc3R1cmVSZWNvZ25pemVyOjpwYW5H
ZXN0dXJlOwotICAgICAgICAgICAgbV9jbGllbnQtPmhhbmRsZVBhblN0YXJ0ZWQoY3VycmVudFBv
aW50KTsKKyAgICAgICAgICAgIGhhbmRsZVBhblN0YXJ0ZWQoY3VycmVudFBvaW50KTsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMTAsMTAgKzIxNywxMCBAQCB2b2lkIEdl
c3R1cmVSZWNvZ25pemVyOjpwYW5HZXN0dXJlKFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYg
dG91Y2hQb2ludHMpCiAgICAgICAgIG1fY2xpZW50LT5oYW5kbGVQaW5jaFN0YXJ0ZWQoY3JlYXRl
VmVjdG9yV2l0aFdLQXJyYXkodG91Y2hQb2ludHMsIDIpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBrV0tFdmVudFR5cGVUb3VjaE1vdmU6Ci0gICAgICAgIG1fY2xpZW50LT5oYW5kbGVQYW4o
dG9JbnRQb2ludChnZXRQb2ludEF0SW5kZXgodG91Y2hQb2ludHMsIDApKSk7CisgICAgICAgIHVw
ZGF0ZUN1cnJlbnRQb2ludCh0b0ludFBvaW50KGdldFBvaW50QXRJbmRleCh0b3VjaFBvaW50cywg
MCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrV0tFdmVudFR5cGVUb3VjaEVuZDoKLSAg
ICAgICAgbV9jbGllbnQtPmhhbmRsZVBhbkZpbmlzaGVkKCk7CisgICAgICAgIGhhbmRsZVBhbkZp
bmlzaGVkKCk7CiAgICAgICAgIG1fcmVjb2duaXplckZ1bmN0aW9uID0gJkdlc3R1cmVSZWNvZ25p
emVyOjpub0dlc3R1cmU7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0yNDQsNyAr
MjUxLDcgQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplcjo6cGluY2hHZXN0dXJlKFdLRXZlbnRUeXBl
IHR5cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludHMpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKHBvaW50UmVmKTsKLSAgICAgICAg
ICAgIG1fY2xpZW50LT5oYW5kbGVQYW5TdGFydGVkKHRvSW50UG9pbnQoV0tUb3VjaFBvaW50R2V0
UG9zaXRpb24ocG9pbnRSZWYpKSk7CisgICAgICAgICAgICBoYW5kbGVQYW5TdGFydGVkKHRvSW50
UG9pbnQoV0tUb3VjaFBvaW50R2V0UG9zaXRpb24ocG9pbnRSZWYpKSk7CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBrV0tFdmVudFR5cGVUb3VjaFN0YXJ0OgpAQCAtMjU5LDYg
KzI2NiwxMSBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCgpCiB7CiAgICAgc3RvcFRh
cFRpbWVycygpOwogCisgICAgaWYgKG1fcGFuQW5pbWF0b3IpIHsKKyAgICAgICAgZWNvcmVfYW5p
bWF0b3JfZGVsKG1fcGFuQW5pbWF0b3IpOworICAgICAgICBtX3BhbkFuaW1hdG9yID0gMDsKKyAg
ICB9CisKICAgICBtX3JlY29nbml6ZXJGdW5jdGlvbiA9ICZHZXN0dXJlUmVjb2duaXplcjo6bm9H
ZXN0dXJlOwogfQogCkBAIC0yNzUsNiArMjg3LDYzIEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXI6
OnN0b3BUYXBUaW1lcnMoKQogICAgIH0KIH0KIAorRWluYV9Cb29sIEdlc3R1cmVSZWNvZ25pemVy
OjpwYW5BbmltYXRvckNhbGxiYWNrKHZvaWQqIGRhdGEpCit7CisgICAgR2VzdHVyZVJlY29nbml6
ZXIqIGdlc3R1cmVSZWNvZ25pemVyID0gc3RhdGljX2Nhc3Q8R2VzdHVyZVJlY29nbml6ZXIqPihk
YXRhKTsKKyAgICBpZiAoIWdlc3R1cmVSZWNvZ25pemVyLT5tX2lzQ3VycmVudFBvaW50VXBkYXRl
ZCkKKyAgICAgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX1JFTkVXOworCisgICAgZ2VzdHVyZVJl
Y29nbml6ZXItPm1fY2xpZW50LT5oYW5kbGVQYW4oZ2VzdHVyZVJlY29nbml6ZXItPm1fY3VycmVu
dFBvaW50KTsKKyAgICBnZXN0dXJlUmVjb2duaXplci0+bV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQg
PSBmYWxzZTsKKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19SRU5FVzsKK30KKwordm9pZCBH
ZXN0dXJlUmVjb2duaXplcjo6aGFuZGxlUGFuU3RhcnRlZChjb25zdCBJbnRQb2ludCYgcG9pbnQp
Cit7CisgICAgQVNTRVJUKCFtX3BhbkFuaW1hdG9yKTsKKyAgICBtX3BhbkFuaW1hdG9yID0gZWNv
cmVfYW5pbWF0b3JfYWRkKHBhbkFuaW1hdG9yQ2FsbGJhY2ssIHRoaXMpOworICAgIG1fY3VycmVu
dFBvaW50ID0gcG9pbnQ7CisgICAgbV9maXJzdEhpc3RvcnlJdGVtSW5kZXggPSAwOworICAgIG1f
aGlzdG9yeS5yZXNpemUoMCk7CisKKyAgICBtX2NsaWVudC0+aGFuZGxlUGFuU3RhcnRlZChwb2lu
dCk7Cit9CisKK3ZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnVwZGF0ZUN1cnJlbnRQb2ludChjb25z
dCBJbnRQb2ludCYgcG9pbnQpCit7CisgICAgbV9jdXJyZW50UG9pbnQgPSBwb2ludDsKKyAgICBt
X2lzQ3VycmVudFBvaW50VXBkYXRlZCA9IHRydWU7CisKKyAgICAvLyBTYXZlIGN1cnJlbnQgcG9p
bnQgdG8gdXNlIHRvIGNhbGN1bGF0ZSBvZmZzZXQgb2YgZmxpY2suCisgICAgSGlzdG9yeUl0ZW0g
aXRlbSA9IHttX2N1cnJlbnRQb2ludCwgZWNvcmVfdGltZV9nZXQoKX07CisgICAgaWYgKG1faGlz
dG9yeS5zaXplKCkgPCBtX2hpc3RvcnkuY2FwYWNpdHkoKSkKKyAgICAgICAgbV9oaXN0b3J5LnVu
Y2hlY2tlZEFwcGVuZChpdGVtKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV9oaXN0b3J5W21fZmly
c3RIaXN0b3J5SXRlbUluZGV4KytdID0gaXRlbTsKKyAgICAgICAgaWYgKG1fZmlyc3RIaXN0b3J5
SXRlbUluZGV4ID49IG1faGlzdG9yeS5jYXBhY2l0eSgpKQorICAgICAgICAgICAgbV9maXJzdEhp
c3RvcnlJdGVtSW5kZXggJT0gbV9oaXN0b3J5LmNhcGFjaXR5KCk7CisgICAgfQorfQorCit2b2lk
IEdlc3R1cmVSZWNvZ25pemVyOjpoYW5kbGVQYW5GaW5pc2hlZCgpCit7CisgICAgQVNTRVJUKG1f
cGFuQW5pbWF0b3IpOworICAgIGVjb3JlX2FuaW1hdG9yX2RlbChtX3BhbkFuaW1hdG9yKTsKKyAg
ICBtX3BhbkFuaW1hdG9yID0gMDsKKworICAgIGlmICghbV9oaXN0b3J5LmlzRW1wdHkoKSkgewor
ICAgICAgICAvLyBDYWxjdWxhdGUgb2Zmc2V0IHRvIG1vdmUgZHVyaW5nIG9uZSBmcmFtZS4KKyAg
ICAgICAgY29uc3QgSGlzdG9yeUl0ZW0mIGZpcnN0SGlzdG9yeUl0ZW0gPSBtX2hpc3RvcnlbbV9m
aXJzdEhpc3RvcnlJdGVtSW5kZXhdOworICAgICAgICBkb3VibGUgZnJhbWUgPSAoZWNvcmVfdGlt
ZV9nZXQoKSAtIGZpcnN0SGlzdG9yeUl0ZW0udGltZXN0YW1wKSAvIGVjb3JlX2FuaW1hdG9yX2Zy
YW1ldGltZV9nZXQoKTsKKyAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSBmaXJzdEhpc3RvcnlJdGVt
LnBvaW50IC0gbV9jdXJyZW50UG9pbnQ7CisgICAgICAgIG9mZnNldC5zY2FsZSgxIC8gZnJhbWUp
OworICAgICAgICBtX2NsaWVudC0+aGFuZGxlRmxpY2sob2Zmc2V0KTsKKyAgICB9CisKKyAgICBt
X2NsaWVudC0+aGFuZGxlUGFuRmluaXNoZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmgKaW5kZXggMTAwNmI0MWI0
NzQ2ZjllNTNkMmRmMjM0ZDkzMzc0MGVhNDBlNWYxYi4uZmRlZTZhNTY0MTE3YmYwODNhOWU5ZjQy
NzVhYzcxOGJlMTQ2MGZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGFuU3RhcnRlZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQYW4oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGFuRmluaXNoZWQoKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlRmxpY2soY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVGbGlja0NhbmNlbGVkKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlUGluY2hTdGFydGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGluY2goY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFBv
aW50PiYpIHsgfQpAQCAtNjgsMTIgKzcwLDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
ZG91YmxlIHNfdGFwQW5kSG9sZFRpbWVvdXRJblNlY29uZHM7CiAgICAgc3RhdGljIGNvbnN0IGlu
dCBzX3NxdWFyZWREb3VibGVUYXBUaHJlc2hvbGQ7CiAgICAgc3RhdGljIGNvbnN0IGludCBzX3Nx
dWFyZWRQYW5UaHJlc2hvbGQ7CisgICAgc3RhdGljIGNvbnN0IGludCBzX2hpc3RvcnlDYXBhY2l0
eTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBHZXN0dXJlUmVjb2duaXplcihHZXN0dXJlUmVj
b2duaXplckNsaWVudCopOwogCiAgICAgc3RhdGljIEVpbmFfQm9vbCBkb3VibGVUYXBUaW1lckNh
bGxiYWNrKHZvaWQqKTsKICAgICBzdGF0aWMgRWluYV9Cb29sIHRhcEFuZEhvbGRUaW1lckNhbGxi
YWNrKHZvaWQqKTsKKyAgICBzdGF0aWMgRWluYV9Cb29sIHBhbkFuaW1hdG9yQ2FsbGJhY2sodm9p
ZCopOwogCiAgICAgLy8gU3RhdGUgZnVuY3Rpb25zLgogICAgIHZvaWQgbm9HZXN0dXJlKFdLRXZl
bnRUeXBlLCBXS0FycmF5UmVmKTsKQEAgLTgzLDYgKzg3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBpbmNoR2VzdHVyZShXS0V2ZW50VHlwZSwgV0tBcnJheVJlZik7CiAKICAgICB2b2lkIHN0b3BU
YXBUaW1lcnMoKTsKKyAgICB2b2lkIGhhbmRsZVBhblN0YXJ0ZWQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKKyAgICB2b2lkIHVwZGF0ZUN1cnJlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpOworICAgIHZvaWQgaGFuZGxlUGFuRmluaXNoZWQoKTsKIAogICAgIHR5cGVkZWYgdm9p
ZCAoR2VzdHVyZVJlY29nbml6ZXI6OipSZWNvZ25pemVyRnVuY3Rpb24pKFdLRXZlbnRUeXBlLCBX
S0FycmF5UmVmKTsKICAgICBSZWNvZ25pemVyRnVuY3Rpb24gbV9yZWNvZ25pemVyRnVuY3Rpb247
CkBAIC05MSw2ICs5OCwxNyBAQCBwcml2YXRlOgogICAgIEVjb3JlX1RpbWVyKiBtX3RhcEFuZEhv
bGRUaW1lcjsKICAgICBFY29yZV9UaW1lciogbV9kb3VibGVUYXBUaW1lcjsKICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBtX2ZpcnN0UHJlc3NlZFBvaW50OworCisgICAgRWNvcmVfQW5pbWF0b3IqIG1f
cGFuQW5pbWF0b3I7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9jdXJyZW50UG9pbnQ7CisgICAg
Ym9vbCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZDsKKworICAgIHR5cGVkZWYgc3RydWN0IHsKKyAg
ICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQ7CisgICAgICAgIGRvdWJsZSB0aW1lc3RhbXA7
CisgICAgfSBIaXN0b3J5SXRlbTsKKyAgICBWZWN0b3I8SGlzdG9yeUl0ZW0+IG1faGlzdG9yeTsK
KyAgICB1bnNpZ25lZCBtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAppbmRleCAyOTM3NDVlNDhkYzE0ZjY5OWEwOWFlMjRi
ZDRlMmEzOTJjOWVkZWE1Li41ZTIxY2U3N2JiYzY5NTliYWJkYTViOTBkMjAwZjliZDM0NDIyMWUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XZWJWaWV3LmNwcApAQCAtMTA1LDYgKzEwNSwxNiBAQCB2b2lkIFdlYlZpZXc6OnNl
dFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdl
YlBhZ2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7CiB9CiAKK3ZvaWQgV2ViVmlldzo6c2V0Q29udGVu
dFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIEZs
b2F0UmVjdCBib3VuZHM7CisgICAgYm91bmRzLnNldFdpZHRoKHN0ZDo6bWF4KDAuZiwgY2VpbGYo
bV9jb250ZW50c1NpemUud2lkdGgoKSAqIG1fY29udGVudFNjYWxlRmFjdG9yKSkgLSBzaXplKCku
d2lkdGgoKSk7CisgICAgYm91bmRzLnNldEhlaWdodChzdGQ6Om1heCgwLmYsIGNlaWxmKG1fY29u
dGVudHNTaXplLmhlaWdodCgpICogbV9jb250ZW50U2NhbGVGYWN0b3IpKSAtIHNpemUoKS5oZWln
aHQoKSk7CisKKyAgICBtX2NvbnRlbnRQb3NpdGlvbi5zZXRYKGNsYW1wVG8ocG9zaXRpb24ueCgp
LCBib3VuZHMueCgpLCBib3VuZHMud2lkdGgoKSkpOworICAgIG1fY29udGVudFBvc2l0aW9uLnNl
dFkoY2xhbXBUbyhwb3NpdGlvbi55KCksIGJvdW5kcy55KCksIGJvdW5kcy5oZWlnaHQoKSkpOwor
fQorCiB2b2lkIFdlYlZpZXc6OnNldFVzZXJWaWV3cG9ydFRyYW5zbGF0aW9uKGRvdWJsZSB0eCwg
ZG91YmxlIHR5KQogewogICAgIG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtID0gVHJhbnNmb3JtYXRp
b25NYXRyaXgoKS50cmFuc2xhdGUodHgsIHR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAppbmRleCBlNzlhMjM4ZTM0
YTkxOTYxY2Q1MTA1MTQ0NmJjMjVlNjY3NjZlODJlLi5lYjFiZjRjM2UwNDI5MmEwZjliZDJjZThk
MGU1NWI2ZDdjOWE1MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldENvbnRlbnRTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikgeyBtX2Nv
bnRlbnRTY2FsZUZhY3RvciA9IHNjYWxlRmFjdG9yOyB9CiAgICAgZmxvYXQgY29udGVudFNjYWxl
RmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2NhbGVGYWN0b3I7IH0KIAotICAgIHZv
aWQgc2V0Q29udGVudFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9u
KSB7IG1fY29udGVudFBvc2l0aW9uID0gcG9zaXRpb247IH0KKyAgICB2b2lkIHNldENvbnRlbnRQ
b3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgY29udGVudFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50UG9z
aXRpb247IH0KIAogICAgIHZvaWQgc2V0VXNlclZpZXdwb3J0VHJhbnNsYXRpb24oZG91YmxlIHR4
LCBkb3VibGUgdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9F
YXNpbmdDdXJ2ZXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2
ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY2Y2NmNDZmOTc2MTVhNjBkYmMzMzY1OTkxN2E4NWNkNTljYThm
ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2lu
Z0N1cnZlcy5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBS
b2JlcnQgUGVubmVyIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
U2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1
dG9ycyBtYXkgYmUKKyAqICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIFJvYmVydCBQZW5uZXIncyBlYXNp
bmcgZXF1YXRpb25zLiBodHRwOi8vd3d3LnJvYmVydHBlbm5lci5jb20vZWFzaW5nLworICogc3Rh
dGljIGZ1bmN0aW9uIGVhc2VJbk91dFF1YWQgKHQ6TnVtYmVyLCBiOk51bWJlciwgYzpOdW1iZXIs
IGQ6TnVtYmVyKTpOdW1iZXIgeworICogICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIq
dCp0ICsgYjsKKyAqICAgICByZXR1cm4gLWMvMiAqICgoLS10KSoodC0yKSAtIDEpICsgYjsKKyAq
IH0KKyAqLworZmxvYXQgZWFzZUluT3V0UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNl
LCBjb25zdCBmbG9hdCBjb25zdGFudCwgY29uc3QgdW5zaWduZWQgZHVyYXRpb24pCit7CisgICAg
aWYgKHRpbWUgPiBkdXJhdGlvbiB8fCB0aW1lIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBpZiAoKHRpbWUgLz0gKGR1cmF0aW9uIC8gMikpIDwgMSkKKyAgICAgICAgcmV0dXJuIChjb25z
dGFudCAvIDIpICogdGltZSAqIHRpbWUgKyBiYXNlOworCisgICAgdGltZSAtPSAxOworICAgIHJl
dHVybiAtMSAqIChjb25zdGFudCAvIDIpICogKHRpbWUgKiAodGltZSAtIDIpIC0gMSkgKyBiYXNl
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2
ZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjcyNmM2ZmM0MDc2MzFkNmFhOGYzZjViZTBiOGNjNWZhZDUyYTQwMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKQEAg
LTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJv
bmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAq
ICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
IHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBFYXNpbmdDdXJ2ZXNfaAorI2RlZmluZSBFYXNpbmdDdXJ2
ZXNfaAorCitmbG9hdCBlYXNlSW5PdXRRdWFkKGZsb2F0IHRpbWUsIGNvbnN0IGZsb2F0IGJhc2Us
IGNvbnN0IGZsb2F0IGNvbnN0YW50LCBjb25zdCB1bnNpZ25lZCBkdXJhdGlvbik7CisKKyNlbmRp
ZiAvLyBFYXNpbmdDdXJ2ZXNfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208330</attachid>
            <date>2013-08-08 05:28:46 -0700</date>
            <delta_ts>2013-08-08 19:09:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130808212844.patch</filename>
            <type>text/plain</type>
            <size>17504</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDBlNzE2MjU4Mjk4NzM3
NzA5MWJjNDg3ODdhY2U1Y2Q0ZjJkYjRmNi4uOTFlM2M4ODYxNDhmZjU3YjJjNTJjNWM5ZGRkY2I4
ODFmMDQxODM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTA4LTA4ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFuIGdlc3R1cmUgdG8gc2Nyb2xsIHBh
Z2UgYnkgbW92ZW1lbnQgb2YgcG9pbnQgYW5kIHN0b3AKKyAgICAgICAgc2Nyb2xsaW5nIHNtb290
aGx5IHVzaW5nIGVhc2UtaW4tb3V0LXF1YWQgYWxnb3JpdGhtIGFmdGVyIHRvdWNoZWQKKyAgICAg
ICAgcG9pbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY3JlZW4uCisKKyAgICAgICAgVXNlIEVjb3Jl
X0FuaW1hdG9yIGluIG9yZGVyIHRvIHByb2Nlc3MgbW92ZW1lbnQgb25jZSBwZXIgZWFjaCBmcmFt
aW5nCisgICAgICAgIHRpbWUgc2xvdCBpbnN0ZWFkIG9mIHByb2Nlc3NpbmcgYWxsIG1vdmVtZW50
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpzY3JvbGxCeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRs
ZXI6Okdlc3R1cmVIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6On5H
ZXN0dXJlSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpyZXNldCk6
CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpwYW5BbmltYXRvckNhbGxiYWNrKToK
KyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhblN0YXJ0ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuKToKKyAgICAgICAgKFdlYktp
dDo6R2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6
R2VzdHVyZUhhbmRsZXI6OmZsaWNrQW5pbWF0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
Okdlc3R1cmVIYW5kbGVyOjpoYW5kbGVGbGljayk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVS
ZWNvZ25pemVyOjpub0dlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXpl
cjo6cmVzZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzZXRDb250ZW50UG9zaXRpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHA6IEFkZGVkLgorICAgICAgICAoZWFz
ZUluT3V0UXVhZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuaDogQWRk
ZWQuCisKIDIwMTMtMDgtMDcgIEV1bm1pIExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtFRkxdW1dLMl0gUHJvY2VzcyBzaW5nbGUgdGFwIHVzaW5nIFdlYkV2ZW50OjpH
ZXN0dXJlU2luZ2xlVGFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAwNTcxNDk4ZTEy
ZTc0NTZhZDU3OTAzOGJmZDc1MTJkYTIyMTc1MmY0Li40NzYzMzgyY2E3NWNiNzRmYjVjOGYyYzA1
MjZiMjA0MDcxZDVkNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTA2LDYgKzEw
Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvQ29u
dGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNs
aWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKKyAg
ICBVSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0V3a0dl
c3R1cmVFdmVudC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoRXZlbnQuY3BwCiAgICAg
VUlQcm9jZXNzL2VmbC9Fd2tUb3VjaFBvaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAppbmRleCA1YmI4NDk3YTNmYmQ3NWI1ZTIyYzgzN2U4NjU1
NmUzOTkzNGZlNTM5Li43NWI5M2Q4ZTg4ZDA5NTI2Y2YyNTcxOTI1MTQ3M2Q3NGNmNDQxMmYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtMTM5
Miw2ICsxMzkyLDIzIEBAIHZvaWQgRXdrVmlldzo6ZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBX
S1BvaW50JiBwb2ludCwgY29uc3QgV0tSZWN0JiBhcmVhKQogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKK2Jvb2wgRXdrVmlldzo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQorewor
ICAgIFdLUG9pbnQgb2xkUG9zaXRpb24gPSBXS1ZpZXdHZXRDb250ZW50UG9zaXRpb24od2tWaWV3
KCkpOworICAgIEZsb2F0UG9pbnQgbmV3UG9zaXRpb24gPSBGbG9hdFBvaW50KG9sZFBvc2l0aW9u
LnggKyBvZmZzZXQud2lkdGgoKSwgb2xkUG9zaXRpb24ueSArIG9mZnNldC5oZWlnaHQoKSk7Cisg
ICAgV0tWaWV3U2V0Q29udGVudFBvc2l0aW9uKHdrVmlldygpLCBXS1BvaW50TWFrZShuZXdQb3Np
dGlvbi54KCksIG5ld1Bvc2l0aW9uLnkoKSkpOworCisgICAgV0tQb2ludCBwb3NpdGlvbiA9IFdL
Vmlld0dldENvbnRlbnRQb3NpdGlvbih3a1ZpZXcoKSk7CisgICAgZmxvYXQgY29udGVudFNjYWxl
ID0gV0tWaWV3R2V0Q29udGVudFNjYWxlRmFjdG9yKHdrVmlldygpKTsKKyAgICBtX3BhZ2VWaWV3
cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShGbG9hdFBvaW50KHBv
c2l0aW9uLnggLyBjb250ZW50U2NhbGUsIHBvc2l0aW9uLnkgLyBjb250ZW50U2NhbGUpLCBjb250
ZW50U2NhbGUpOworCisgICAgLy8gSWYgdGhlIHBhZ2UgcG9zaXRpb24gaXMgbm90IGNoYW5nZWQs
IG5vdGlmeSB0aGF0IHVzaW5nIHJldHVybmluZyB2YWx1ZS4KKyAgICBpZiAob2xkUG9zaXRpb24g
PT0gcG9zaXRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCiBFdmFzX1NtYXJ0X0NsYXNzIEV3a1ZpZXc6OnBhcmVudFNtYXJ0Q2xhc3MgPSBFVkFTX1NN
QVJUX0NMQVNTX0lOSVRfTlVMTDsKIAogLy8gRnJlZSBFd2sgVmlldyBmdW5jdGlvbnMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggYzQ2YjE1MWEwZGQ5
MWRjZTE0MWY1MjllNmUzOTA1NTAwMTA0YmVhOC4uMzA2ZTM2ZjAxY2JjODhmMGJkYWQyYzdmMDNl
MDU5NDExYTBjYjE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuaApAQCAtMjAyLDYgKzIwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluZm9ybVVSTENoYW5n
ZSgpOwogCiAgICAgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHRha2VTbmFwc2hvdCgpOwor
ICAgIGJvb2wgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCiAgICAgdm9pZCBk
aWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdLUG9pbnQmLCBjb25zdCBXS1JlY3QmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6
ZXIuY3BwCmluZGV4IDgxZmE1YTgxN2NjODg2NzBlNzE5MTM3Y2NlNjQzZDU4Njk2MzM5YWIuLmMx
ZDA5NDNkODZiNDM3YzQ2OGU4ZmQ3ZGEwNDYzMzJkMjc5NGRmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHZXN0dXJlUmVj
b2duaXplci5oIgogCisjaW5jbHVkZSAiRWFzaW5nQ3VydmVzLmgiCiAjaW5jbHVkZSAiRXdrVmll
dy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRBUElD
YXN0LmgiCkBAIC00NCwxMyArNDUsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBHZXN0dXJlSGFuZGxlcihld2tWaWV3KSk7CiAgICAgfQorICAgIH5HZXN0
dXJlSGFuZGxlcigpOwogCisgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgaGFuZGxlU2luZ2xl
VGFwKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBoYW5kbGVEb3VibGVUYXAo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVRhcEFuZEhvbGQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVBhblN0YXJ0ZWQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVBhbihjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuRmluaXNoZWQoKTsKKyAgICB2b2lkIGhhbmRs
ZUZsaWNrKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIGhhbmRsZVBpbmNoU3Rh
cnRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UG9pbnQ+Jik7CiAgICAgdm9pZCBoYW5kbGVQ
aW5jaChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UG9pbnQ+Jik7CiAgICAgdm9pZCBoYW5kbGVQ
aW5jaEZpbmlzaGVkKCk7CkBAIC01OCwxMiArNjIsNTcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBHZXN0dXJlSGFuZGxlcihFd2tWaWV3Kik7CiAKKyAgICBzdGF0aWMgRWluYV9C
b29sIHBhbkFuaW1hdG9yQ2FsbGJhY2sodm9pZCopOworICAgIHN0YXRpYyBFaW5hX0Jvb2wgZmxp
Y2tBbmltYXRvckNhbGxiYWNrKHZvaWQqKTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQgc19oaXN0
b3J5Q2FwYWNpdHkgPSA1OworCiAgICAgRXdrVmlldyogbV9ld2tWaWV3OworICAgIFdlYkNvcmU6
OkludFBvaW50IG1fbGFzdFBvaW50OworICAgIFdlYkNvcmU6OkludFBvaW50IG1fY3VycmVudFBv
aW50OworICAgIGJvb2wgbV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQ7CisgICAgRWNvcmVfQW5pbWF0
b3IqIG1fcGFuQW5pbWF0b3I7CisgICAgRWNvcmVfQW5pbWF0b3IqIG1fZmxpY2tBbmltYXRvcjsK
KyAgICBXZWJDb3JlOjpJbnRTaXplIG1fZmxpY2tPZmZzZXQ7CisgICAgdW5zaWduZWQgbV9mbGlj
a0R1cmF0aW9uOworICAgIHVuc2lnbmVkIG1fZmxpY2tJbmRleDsKKworICAgIHR5cGVkZWYgc3Ry
dWN0IHsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQ7CisgICAgICAgIGRvdWJsZSB0
aW1lc3RhbXA7CisgICAgfSBIaXN0b3J5SXRlbTsKKyAgICBWZWN0b3I8SGlzdG9yeUl0ZW0+IG1f
aGlzdG9yeTsKKyAgICB1bnNpZ25lZCBtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleDsKIH07CiAKIEdl
c3R1cmVIYW5kbGVyOjpHZXN0dXJlSGFuZGxlcihFd2tWaWV3KiBld2tWaWV3KQogICAgIDogbV9l
d2tWaWV3KGV3a1ZpZXcpCisgICAgLCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZChmYWxzZSkKKyAg
ICAsIG1fcGFuQW5pbWF0b3IoMCkKKyAgICAsIG1fZmxpY2tBbmltYXRvcigwKQorICAgICwgbV9m
bGlja0R1cmF0aW9uKDApCisgICAgLCBtX2ZsaWNrSW5kZXgoMCkKKyAgICAsIG1fZmlyc3RIaXN0
b3J5SXRlbUluZGV4KDApCit7CisgICAgbV9oaXN0b3J5LnJlc2VydmVDYXBhY2l0eShzX2hpc3Rv
cnlDYXBhY2l0eSk7Cit9CisKK0dlc3R1cmVIYW5kbGVyOjp+R2VzdHVyZUhhbmRsZXIoKQogewor
ICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6OnJlc2V0KCkKK3sKKyAgICBp
ZiAobV9wYW5BbmltYXRvcikgeworICAgICAgICBlY29yZV9hbmltYXRvcl9kZWwobV9wYW5Bbmlt
YXRvcik7CisgICAgICAgIG1fcGFuQW5pbWF0b3IgPSAwOworICAgIH0KKworICAgIGlmIChtX2Zs
aWNrQW5pbWF0b3IpIHsKKyAgICAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKG1fZmxpY2tBbmltYXRv
cik7CisgICAgICAgIG1fZmxpY2tBbmltYXRvciA9IDA7CisgICAgfQogfQogCiB2b2lkIEdlc3R1
cmVIYW5kbGVyOjpoYW5kbGVTaW5nbGVUYXAoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQpAQCAt
ODUsMTkgKzEzNCw4NCBAQCB2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVUYXBBbmRIb2xkKGNv
bnN0IEludFBvaW50JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEdlc3R1cmVI
YW5kbGVyOjpoYW5kbGVQYW5TdGFydGVkKGNvbnN0IEludFBvaW50JikKK0VpbmFfQm9vbCBHZXN0
dXJlSGFuZGxlcjo6cGFuQW5pbWF0b3JDYWxsYmFjayh2b2lkKiBkYXRhKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgR2VzdHVyZUhhbmRsZXIqIGdlc3R1cmVIYW5kbGVyID0gc3RhdGlj
X2Nhc3Q8R2VzdHVyZUhhbmRsZXIqPihkYXRhKTsKKyAgICBpZiAoIWdlc3R1cmVIYW5kbGVyLT5t
X2lzQ3VycmVudFBvaW50VXBkYXRlZCB8fCBnZXN0dXJlSGFuZGxlci0+bV9sYXN0UG9pbnQgPT0g
Z2VzdHVyZUhhbmRsZXItPm1fY3VycmVudFBvaW50KQorICAgICAgICByZXR1cm4gRUNPUkVfQ0FM
TEJBQ0tfUkVORVc7CisKKyAgICBnZXN0dXJlSGFuZGxlci0+bV9ld2tWaWV3LT5zY3JvbGxCeShn
ZXN0dXJlSGFuZGxlci0+bV9sYXN0UG9pbnQgLSBnZXN0dXJlSGFuZGxlci0+bV9jdXJyZW50UG9p
bnQpOworICAgIGdlc3R1cmVIYW5kbGVyLT5tX2xhc3RQb2ludCA9IGdlc3R1cmVIYW5kbGVyLT5t
X2N1cnJlbnRQb2ludDsKKyAgICBnZXN0dXJlSGFuZGxlci0+bV9pc0N1cnJlbnRQb2ludFVwZGF0
ZWQgPSBmYWxzZTsKKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19SRU5FVzsKIH0KIAotdm9p
ZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuKGNvbnN0IEludFBvaW50JikKK3ZvaWQgR2VzdHVy
ZUhhbmRsZXI6OmhhbmRsZVBhblN0YXJ0ZWQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKCFtX3BhbkFuaW1hdG9yKTsKKyAgICBtX3Bh
bkFuaW1hdG9yID0gZWNvcmVfYW5pbWF0b3JfYWRkKHBhbkFuaW1hdG9yQ2FsbGJhY2ssIHRoaXMp
OworICAgIG1fbGFzdFBvaW50ID0gbV9jdXJyZW50UG9pbnQgPSBwb2ludDsKKyAgICBtX2ZpcnN0
SGlzdG9yeUl0ZW1JbmRleCA9IDA7CisgICAgbV9oaXN0b3J5LnJlc2l6ZSgwKTsKK30KKwordm9p
ZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuKGNvbnN0IEludFBvaW50JiBwb2ludCkKK3sKKyAg
ICBtX2N1cnJlbnRQb2ludCA9IHBvaW50OworICAgIG1faXNDdXJyZW50UG9pbnRVcGRhdGVkID0g
dHJ1ZTsKKworICAgIC8vIFNhdmUgY3VycmVudCBwb2ludCB0byB1c2UgdG8gY2FsY3VsYXRlIG9m
ZnNldCBvZiBmbGljay4KKyAgICBIaXN0b3J5SXRlbSBpdGVtID0ge21fY3VycmVudFBvaW50LCBl
Y29yZV90aW1lX2dldCgpfTsKKyAgICBpZiAobV9oaXN0b3J5LnNpemUoKSA8IG1faGlzdG9yeS5j
YXBhY2l0eSgpKQorICAgICAgICBtX2hpc3RvcnkudW5jaGVja2VkQXBwZW5kKGl0ZW0pOworICAg
IGVsc2UgeworICAgICAgICBtX2hpc3RvcnlbbV9maXJzdEhpc3RvcnlJdGVtSW5kZXgrK10gPSBp
dGVtOworICAgICAgICBpZiAobV9maXJzdEhpc3RvcnlJdGVtSW5kZXggPT0gbV9oaXN0b3J5LmNh
cGFjaXR5KCkpCisgICAgICAgICAgICBtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCA9IDA7CisgICAg
fQogfQogCiB2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQYW5GaW5pc2hlZCgpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQobV9wYW5BbmltYXRvcik7CisgICAgZWNvcmVf
YW5pbWF0b3JfZGVsKG1fcGFuQW5pbWF0b3IpOworICAgIG1fcGFuQW5pbWF0b3IgPSAwOworCisg
ICAgaWYgKCFtX2hpc3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIENhbGN1bGF0ZSBvZmZz
ZXQgdG8gbW92ZSBkdXJpbmcgb25lIGZyYW1lLgorICAgICAgICBjb25zdCBIaXN0b3J5SXRlbSYg
Zmlyc3RIaXN0b3J5SXRlbSA9IG1faGlzdG9yeVttX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleF07Cisg
ICAgICAgIGRvdWJsZSBmcmFtZSA9IChlY29yZV90aW1lX2dldCgpIC0gZmlyc3RIaXN0b3J5SXRl
bS50aW1lc3RhbXApIC8gZWNvcmVfYW5pbWF0b3JfZnJhbWV0aW1lX2dldCgpOworICAgICAgICBJ
bnRTaXplIG9mZnNldCA9IGZpcnN0SGlzdG9yeUl0ZW0ucG9pbnQgLSBtX2N1cnJlbnRQb2ludDsK
KyAgICAgICAgb2Zmc2V0LnNjYWxlKDEgLyBmcmFtZSk7CisgICAgICAgIGhhbmRsZUZsaWNrKG9m
ZnNldCk7CisgICAgfQorfQorCitFaW5hX0Jvb2wgR2VzdHVyZUhhbmRsZXI6OmZsaWNrQW5pbWF0
b3JDYWxsYmFjayh2b2lkKiBkYXRhKQoreworICAgIEdlc3R1cmVIYW5kbGVyKiBnZXN0dXJlSGFu
ZGxlciA9IHN0YXRpY19jYXN0PEdlc3R1cmVIYW5kbGVyKj4oZGF0YSk7CisgICAgZmxvYXQgbXVs
dGlwbGllciA9IGVhc2VJbk91dFF1YWQoZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tJbmRleCwgMCwg
MS4wLCBnZXN0dXJlSGFuZGxlci0+bV9mbGlja0R1cmF0aW9uKTsKKyAgICBmbG9hdCBvZmZzZXRX
aWR0aCA9IGdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrT2Zmc2V0LndpZHRoKCkgKiBtdWx0aXBsaWVy
OworICAgIGZsb2F0IG9mZnNldEhlaWdodCA9IGdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrT2Zmc2V0
LmhlaWdodCgpICogbXVsdGlwbGllcjsKKyAgICBvZmZzZXRXaWR0aCA9IChvZmZzZXRXaWR0aCA+
IDApID8gY2VpbGYob2Zmc2V0V2lkdGgpIDogZmxvb3JmKG9mZnNldFdpZHRoKTsKKyAgICBvZmZz
ZXRIZWlnaHQgPSAob2Zmc2V0SGVpZ2h0ID4gMCkgPyBjZWlsZihvZmZzZXRIZWlnaHQpIDogZmxv
b3JmKG9mZnNldEhlaWdodCk7CisgICAgSW50U2l6ZSBvZmZzZXQob2Zmc2V0V2lkdGgsIG9mZnNl
dEhlaWdodCk7CisgICAgZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tJbmRleC0tOworCisgICAgaWYg
KG9mZnNldC5pc1plcm8oKSB8fCAhZ2VzdHVyZUhhbmRsZXItPm1fZXdrVmlldy0+c2Nyb2xsQnko
b2Zmc2V0KSB8fCAhZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tJbmRleCkgeworICAgICAgICBnZXN0
dXJlSGFuZGxlci0+bV9mbGlja0FuaW1hdG9yID0gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5k
bGVGbGljayhjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgbV9mbGlja09mZnNldCA9IG9m
ZnNldDsKKyAgICBtX2ZsaWNrSW5kZXggPSBtX2ZsaWNrRHVyYXRpb24gPSAxIC8gZWNvcmVfYW5p
bWF0b3JfZnJhbWV0aW1lX2dldCgpOworICAgIG1fZmxpY2tBbmltYXRvciA9IGVjb3JlX2FuaW1h
dG9yX2FkZChmbGlja0FuaW1hdG9yQ2FsbGJhY2ssIHRoaXMpOwogfQogCiB2b2lkIEdlc3R1cmVI
YW5kbGVyOjpoYW5kbGVQaW5jaFN0YXJ0ZWQoY29uc3QgVmVjdG9yPEludFBvaW50PiYpCkBAIC0y
MDEsNiArMzE1LDggQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0dXJlKFdLRXZlbnRU
eXBlIHR5cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludHMpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7
CiAgICAgY2FzZSBrV0tFdmVudFR5cGVUb3VjaFN0YXJ0OgorICAgICAgICBtX2dlc3R1cmVIYW5k
bGVyLT5yZXNldCgpOworCiAgICAgICAgIG1fcmVjb2duaXplckZ1bmN0aW9uID0gJkdlc3R1cmVS
ZWNvZ25pemVyOjpzaW5nbGVUYXBHZXN0dXJlOwogICAgICAgICBtX2ZpcnN0UHJlc3NlZFBvaW50
ID0gdG9JbnRQb2ludChnZXRQb2ludEF0SW5kZXgodG91Y2hQb2ludHMsIDApKTsKICAgICAgICAg
QVNTRVJUKCFtX3RhcEFuZEhvbGRUaW1lcik7CkBAIC0zNDUsNiArNDYxLDcgQEAgdm9pZCBHZXN0
dXJlUmVjb2duaXplcjo6cGluY2hHZXN0dXJlKFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYg
dG91Y2hQb2ludHMpCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCgpCiB7CiAgICAgc3Rv
cFRhcFRpbWVycygpOworICAgIG1fZ2VzdHVyZUhhbmRsZXItPnJlc2V0KCk7CiAKICAgICBtX3Jl
Y29nbml6ZXJGdW5jdGlvbiA9ICZHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0dXJlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
ZWJWaWV3LmNwcAppbmRleCBjNmM3OTg3NTQyY2IwODE5ZDY5MDExYzExOWJlNWRjYzgzNTRiMzZi
Li5mMWI2YTY1NmU1ZWQzNzEyN2Q2ZTZiNDczZTZhNzQyMTVjZjhiOGI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3
LmNwcApAQCAtMTE0LDYgKzExNCwxNiBAQCB2b2lkIFdlYlZpZXc6OnNldFZpc2libGUoYm9vbCB2
aXNpYmxlKQogICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmll
d0lzVmlzaWJsZSk7CiB9CiAKK3ZvaWQgV2ViVmlldzo6c2V0Q29udGVudFBvc2l0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIEZsb2F0UmVjdCBib3VuZHM7
CisgICAgYm91bmRzLnNldFdpZHRoKHN0ZDo6bWF4KDAuZiwgY2VpbGYobV9jb250ZW50c1NpemUu
d2lkdGgoKSAqIG1fY29udGVudFNjYWxlRmFjdG9yKSkgLSBzaXplKCkud2lkdGgoKSk7CisgICAg
Ym91bmRzLnNldEhlaWdodChzdGQ6Om1heCgwLmYsIGNlaWxmKG1fY29udGVudHNTaXplLmhlaWdo
dCgpICogbV9jb250ZW50U2NhbGVGYWN0b3IpKSAtIHNpemUoKS5oZWlnaHQoKSk7CisKKyAgICBt
X2NvbnRlbnRQb3NpdGlvbi5zZXRYKGNsYW1wVG8ocG9zaXRpb24ueCgpLCBib3VuZHMueCgpLCBi
b3VuZHMud2lkdGgoKSkpOworICAgIG1fY29udGVudFBvc2l0aW9uLnNldFkoY2xhbXBUbyhwb3Np
dGlvbi55KCksIGJvdW5kcy55KCksIGJvdW5kcy5oZWlnaHQoKSkpOworfQorCiB2b2lkIFdlYlZp
ZXc6OnNldFVzZXJWaWV3cG9ydFRyYW5zbGF0aW9uKGRvdWJsZSB0eCwgZG91YmxlIHR5KQogewog
ICAgIG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKS50cmFu
c2xhdGUodHgsIHR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAppbmRleCBmNTUzM2E1ODk5ZTFiZDQ2OWViY2M3NDhk
NDc1MjM1OTgzYzFkY2JjLi5hMDU1YjBiZDNjYjJkM2VhZmFjYmZlZjgwYWFlZDcxNTA5MDZiOTAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViVmlldy5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENv
bnRlbnRTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikgeyBtX2NvbnRlbnRTY2FsZUZhY3Rv
ciA9IHNjYWxlRmFjdG9yOyB9CiAgICAgZmxvYXQgY29udGVudFNjYWxlRmFjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50U2NhbGVGYWN0b3I7IH0KIAotICAgIHZvaWQgc2V0Q29udGVudFBv
c2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fY29udGVudFBv
c2l0aW9uID0gcG9zaXRpb247IH0KKyAgICB2b2lkIHNldENvbnRlbnRQb3NpdGlvbihjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY29u
dGVudFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50UG9zaXRpb247IH0KIAogICAg
IHZvaWQgc2V0VXNlclZpZXdwb3J0VHJhbnNsYXRpb24oZG91YmxlIHR4LCBkb3VibGUgdHkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY2Y2NmNDZmOTc2MTVhNjBkYmMzMzY1OTkxN2E4NWNkNTljYThmZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKQEAg
LTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJv
bmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAq
ICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
IHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLyoKKyAqIFJvYmVydCBQZW5uZXIncyBlYXNpbmcgZXF1YXRpb25zLiBo
dHRwOi8vd3d3LnJvYmVydHBlbm5lci5jb20vZWFzaW5nLworICogc3RhdGljIGZ1bmN0aW9uIGVh
c2VJbk91dFF1YWQgKHQ6TnVtYmVyLCBiOk51bWJlciwgYzpOdW1iZXIsIGQ6TnVtYmVyKTpOdW1i
ZXIgeworICogICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0ICsgYjsKKyAqICAg
ICByZXR1cm4gLWMvMiAqICgoLS10KSoodC0yKSAtIDEpICsgYjsKKyAqIH0KKyAqLworZmxvYXQg
ZWFzZUluT3V0UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25zdCBmbG9hdCBj
b25zdGFudCwgY29uc3QgdW5zaWduZWQgZHVyYXRpb24pCit7CisgICAgaWYgKHRpbWUgPiBkdXJh
dGlvbiB8fCB0aW1lIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoKHRpbWUgLz0g
KGR1cmF0aW9uIC8gMikpIDwgMSkKKyAgICAgICAgcmV0dXJuIChjb25zdGFudCAvIDIpICogdGlt
ZSAqIHRpbWUgKyBiYXNlOworCisgICAgdGltZSAtPSAxOworICAgIHJldHVybiAtMSAqIChjb25z
dGFudCAvIDIpICogKHRpbWUgKiAodGltZSAtIDIpIC0gMSkgKyBiYXNlOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjcyNmM2ZmM0
MDc2MzFkNmFhOGYzZjViZTBiOGNjNWZhZDUyYTQwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKQEAgLTAsMCArMSwzNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhv
ciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAgIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAg
ICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
KyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBFYXNpbmdDdXJ2ZXNfaAorI2RlZmluZSBFYXNpbmdDdXJ2ZXNfaAorCitmbG9hdCBl
YXNlSW5PdXRRdWFkKGZsb2F0IHRpbWUsIGNvbnN0IGZsb2F0IGJhc2UsIGNvbnN0IGZsb2F0IGNv
bnN0YW50LCBjb25zdCB1bnNpZ25lZCBkdXJhdGlvbik7CisKKyNlbmRpZiAvLyBFYXNpbmdDdXJ2
ZXNfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208388</attachid>
            <date>2013-08-08 19:09:21 -0700</date>
            <delta_ts>2013-08-08 19:15:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130809110920.patch</filename>
            <type>text/plain</type>
            <size>17504</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWY1YjY0Mzc1NGRlMmVm
ZWQ2YmI4ZDY1MmM4NDljN2ZlOGE3ZGUzNC4uOGVmNjhjYTA0YWE1NzRhMzVkZDBmYTk2NjNlNWNj
MjkzMGE1YWFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTA4LTA4ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFuIGdlc3R1cmUgdG8gc2Nyb2xsIHBh
Z2UgYnkgbW92ZW1lbnQgb2YgcG9pbnQgYW5kIHN0b3AKKyAgICAgICAgc2Nyb2xsaW5nIHNtb290
aGx5IHVzaW5nIGVhc2UtaW4tb3V0LXF1YWQgYWxnb3JpdGhtIGFmdGVyIHRvdWNoZWQKKyAgICAg
ICAgcG9pbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY3JlZW4uCisKKyAgICAgICAgVXNlIEVjb3Jl
X0FuaW1hdG9yIGluIG9yZGVyIHRvIHByb2Nlc3MgbW92ZW1lbnQgb25jZSBwZXIgZWFjaCBmcmFt
aW5nCisgICAgICAgIHRpbWUgc2xvdCBpbnN0ZWFkIG9mIHByb2Nlc3NpbmcgYWxsIG1vdmVtZW50
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpzY3JvbGxCeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRs
ZXI6Okdlc3R1cmVIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6On5H
ZXN0dXJlSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpyZXNldCk6
CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpwYW5BbmltYXRvckNhbGxiYWNrKToK
KyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhblN0YXJ0ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuKToKKyAgICAgICAgKFdlYktp
dDo6R2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6
R2VzdHVyZUhhbmRsZXI6OmZsaWNrQW5pbWF0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
Okdlc3R1cmVIYW5kbGVyOjpoYW5kbGVGbGljayk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVS
ZWNvZ25pemVyOjpub0dlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXpl
cjo6cmVzZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzZXRDb250ZW50UG9zaXRpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHA6IEFkZGVkLgorICAgICAgICAoZWFz
ZUluT3V0UXVhZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuaDogQWRk
ZWQuCisKIDIwMTMtMDgtMDcgIEV1bm1pIExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtFRkxdW1dLMl0gUHJvY2VzcyBzaW5nbGUgdGFwIHVzaW5nIFdlYkV2ZW50OjpH
ZXN0dXJlU2luZ2xlVGFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAwNTcxNDk4ZTEy
ZTc0NTZhZDU3OTAzOGJmZDc1MTJkYTIyMTc1MmY0Li40NzYzMzgyY2E3NWNiNzRmYjVjOGYyYzA1
MjZiMjA0MDcxZDVkNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTA2LDYgKzEw
Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvQ29u
dGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNs
aWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKKyAg
ICBVSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0V3a0dl
c3R1cmVFdmVudC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoRXZlbnQuY3BwCiAgICAg
VUlQcm9jZXNzL2VmbC9Fd2tUb3VjaFBvaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAppbmRleCA1YmI4NDk3YTNmYmQ3NWI1ZTIyYzgzN2U4NjU1
NmUzOTkzNGZlNTM5Li43NWI5M2Q4ZTg4ZDA5NTI2Y2YyNTcxOTI1MTQ3M2Q3NGNmNDQxMmYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtMTM5
Miw2ICsxMzkyLDIzIEBAIHZvaWQgRXdrVmlldzo6ZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBX
S1BvaW50JiBwb2ludCwgY29uc3QgV0tSZWN0JiBhcmVhKQogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKK2Jvb2wgRXdrVmlldzo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQorewor
ICAgIFdLUG9pbnQgb2xkUG9zaXRpb24gPSBXS1ZpZXdHZXRDb250ZW50UG9zaXRpb24od2tWaWV3
KCkpOworICAgIEZsb2F0UG9pbnQgbmV3UG9zaXRpb24gPSBGbG9hdFBvaW50KG9sZFBvc2l0aW9u
LnggKyBvZmZzZXQud2lkdGgoKSwgb2xkUG9zaXRpb24ueSArIG9mZnNldC5oZWlnaHQoKSk7Cisg
ICAgV0tWaWV3U2V0Q29udGVudFBvc2l0aW9uKHdrVmlldygpLCBXS1BvaW50TWFrZShuZXdQb3Np
dGlvbi54KCksIG5ld1Bvc2l0aW9uLnkoKSkpOworCisgICAgV0tQb2ludCBwb3NpdGlvbiA9IFdL
Vmlld0dldENvbnRlbnRQb3NpdGlvbih3a1ZpZXcoKSk7CisgICAgZmxvYXQgY29udGVudFNjYWxl
ID0gV0tWaWV3R2V0Q29udGVudFNjYWxlRmFjdG9yKHdrVmlldygpKTsKKyAgICBtX3BhZ2VWaWV3
cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShGbG9hdFBvaW50KHBv
c2l0aW9uLnggLyBjb250ZW50U2NhbGUsIHBvc2l0aW9uLnkgLyBjb250ZW50U2NhbGUpLCBjb250
ZW50U2NhbGUpOworCisgICAgLy8gSWYgdGhlIHBhZ2UgcG9zaXRpb24gaXMgbm90IGNoYW5nZWQs
IG5vdGlmeSB0aGF0IHVzaW5nIHJldHVybmluZyB2YWx1ZS4KKyAgICBpZiAob2xkUG9zaXRpb24g
PT0gcG9zaXRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCiBFdmFzX1NtYXJ0X0NsYXNzIEV3a1ZpZXc6OnBhcmVudFNtYXJ0Q2xhc3MgPSBFVkFTX1NN
QVJUX0NMQVNTX0lOSVRfTlVMTDsKIAogLy8gRnJlZSBFd2sgVmlldyBmdW5jdGlvbnMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggYzQ2YjE1MWEwZGQ5
MWRjZTE0MWY1MjllNmUzOTA1NTAwMTA0YmVhOC4uMzA2ZTM2ZjAxY2JjODhmMGJkYWQyYzdmMDNl
MDU5NDExYTBjYjE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuaApAQCAtMjAyLDYgKzIwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluZm9ybVVSTENoYW5n
ZSgpOwogCiAgICAgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHRha2VTbmFwc2hvdCgpOwor
ICAgIGJvb2wgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCiAgICAgdm9pZCBk
aWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdLUG9pbnQmLCBjb25zdCBXS1JlY3QmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6
ZXIuY3BwCmluZGV4IDgxZmE1YTgxN2NjODg2NzBlNzE5MTM3Y2NlNjQzZDU4Njk2MzM5YWIuLmMx
ZDA5NDNkODZiNDM3YzQ2OGU4ZmQ3ZGEwNDYzMzJkMjc5NGRmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHZXN0dXJlUmVj
b2duaXplci5oIgogCisjaW5jbHVkZSAiRWFzaW5nQ3VydmVzLmgiCiAjaW5jbHVkZSAiRXdrVmll
dy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRBUElD
YXN0LmgiCkBAIC00NCwxMyArNDUsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBHZXN0dXJlSGFuZGxlcihld2tWaWV3KSk7CiAgICAgfQorICAgIH5HZXN0
dXJlSGFuZGxlcigpOwogCisgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgaGFuZGxlU2luZ2xl
VGFwKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBoYW5kbGVEb3VibGVUYXAo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVRhcEFuZEhvbGQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVBhblN0YXJ0ZWQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVBhbihjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuRmluaXNoZWQoKTsKKyAgICB2b2lkIGhhbmRs
ZUZsaWNrKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIGhhbmRsZVBpbmNoU3Rh
cnRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UG9pbnQ+Jik7CiAgICAgdm9pZCBoYW5kbGVQ
aW5jaChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UG9pbnQ+Jik7CiAgICAgdm9pZCBoYW5kbGVQ
aW5jaEZpbmlzaGVkKCk7CkBAIC01OCwxMiArNjIsNTcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBHZXN0dXJlSGFuZGxlcihFd2tWaWV3Kik7CiAKKyAgICBzdGF0aWMgRWluYV9C
b29sIHBhbkFuaW1hdG9yQ2FsbGJhY2sodm9pZCopOworICAgIHN0YXRpYyBFaW5hX0Jvb2wgZmxp
Y2tBbmltYXRvckNhbGxiYWNrKHZvaWQqKTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQgc19oaXN0
b3J5Q2FwYWNpdHkgPSA1OworCiAgICAgRXdrVmlldyogbV9ld2tWaWV3OworICAgIFdlYkNvcmU6
OkludFBvaW50IG1fbGFzdFBvaW50OworICAgIFdlYkNvcmU6OkludFBvaW50IG1fY3VycmVudFBv
aW50OworICAgIGJvb2wgbV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQ7CisgICAgRWNvcmVfQW5pbWF0
b3IqIG1fcGFuQW5pbWF0b3I7CisgICAgRWNvcmVfQW5pbWF0b3IqIG1fZmxpY2tBbmltYXRvcjsK
KyAgICBXZWJDb3JlOjpJbnRTaXplIG1fZmxpY2tPZmZzZXQ7CisgICAgdW5zaWduZWQgbV9mbGlj
a0R1cmF0aW9uOworICAgIHVuc2lnbmVkIG1fZmxpY2tJbmRleDsKKworICAgIHR5cGVkZWYgc3Ry
dWN0IHsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQ7CisgICAgICAgIGRvdWJsZSB0
aW1lc3RhbXA7CisgICAgfSBIaXN0b3J5SXRlbTsKKyAgICBWZWN0b3I8SGlzdG9yeUl0ZW0+IG1f
aGlzdG9yeTsKKyAgICB1bnNpZ25lZCBtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleDsKIH07CiAKIEdl
c3R1cmVIYW5kbGVyOjpHZXN0dXJlSGFuZGxlcihFd2tWaWV3KiBld2tWaWV3KQogICAgIDogbV9l
d2tWaWV3KGV3a1ZpZXcpCisgICAgLCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZChmYWxzZSkKKyAg
ICAsIG1fcGFuQW5pbWF0b3IoMCkKKyAgICAsIG1fZmxpY2tBbmltYXRvcigwKQorICAgICwgbV9m
bGlja0R1cmF0aW9uKDApCisgICAgLCBtX2ZsaWNrSW5kZXgoMCkKKyAgICAsIG1fZmlyc3RIaXN0
b3J5SXRlbUluZGV4KDApCit7CisgICAgbV9oaXN0b3J5LnJlc2VydmVDYXBhY2l0eShzX2hpc3Rv
cnlDYXBhY2l0eSk7Cit9CisKK0dlc3R1cmVIYW5kbGVyOjp+R2VzdHVyZUhhbmRsZXIoKQogewor
ICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6OnJlc2V0KCkKK3sKKyAgICBp
ZiAobV9wYW5BbmltYXRvcikgeworICAgICAgICBlY29yZV9hbmltYXRvcl9kZWwobV9wYW5Bbmlt
YXRvcik7CisgICAgICAgIG1fcGFuQW5pbWF0b3IgPSAwOworICAgIH0KKworICAgIGlmIChtX2Zs
aWNrQW5pbWF0b3IpIHsKKyAgICAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKG1fZmxpY2tBbmltYXRv
cik7CisgICAgICAgIG1fZmxpY2tBbmltYXRvciA9IDA7CisgICAgfQogfQogCiB2b2lkIEdlc3R1
cmVIYW5kbGVyOjpoYW5kbGVTaW5nbGVUYXAoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQpAQCAt
ODUsMTkgKzEzNCw4NCBAQCB2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVUYXBBbmRIb2xkKGNv
bnN0IEludFBvaW50JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEdlc3R1cmVI
YW5kbGVyOjpoYW5kbGVQYW5TdGFydGVkKGNvbnN0IEludFBvaW50JikKK0VpbmFfQm9vbCBHZXN0
dXJlSGFuZGxlcjo6cGFuQW5pbWF0b3JDYWxsYmFjayh2b2lkKiBkYXRhKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgR2VzdHVyZUhhbmRsZXIqIGdlc3R1cmVIYW5kbGVyID0gc3RhdGlj
X2Nhc3Q8R2VzdHVyZUhhbmRsZXIqPihkYXRhKTsKKyAgICBpZiAoIWdlc3R1cmVIYW5kbGVyLT5t
X2lzQ3VycmVudFBvaW50VXBkYXRlZCB8fCBnZXN0dXJlSGFuZGxlci0+bV9sYXN0UG9pbnQgPT0g
Z2VzdHVyZUhhbmRsZXItPm1fY3VycmVudFBvaW50KQorICAgICAgICByZXR1cm4gRUNPUkVfQ0FM
TEJBQ0tfUkVORVc7CisKKyAgICBnZXN0dXJlSGFuZGxlci0+bV9ld2tWaWV3LT5zY3JvbGxCeShn
ZXN0dXJlSGFuZGxlci0+bV9sYXN0UG9pbnQgLSBnZXN0dXJlSGFuZGxlci0+bV9jdXJyZW50UG9p
bnQpOworICAgIGdlc3R1cmVIYW5kbGVyLT5tX2xhc3RQb2ludCA9IGdlc3R1cmVIYW5kbGVyLT5t
X2N1cnJlbnRQb2ludDsKKyAgICBnZXN0dXJlSGFuZGxlci0+bV9pc0N1cnJlbnRQb2ludFVwZGF0
ZWQgPSBmYWxzZTsKKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19SRU5FVzsKIH0KIAotdm9p
ZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuKGNvbnN0IEludFBvaW50JikKK3ZvaWQgR2VzdHVy
ZUhhbmRsZXI6OmhhbmRsZVBhblN0YXJ0ZWQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKCFtX3BhbkFuaW1hdG9yKTsKKyAgICBtX3Bh
bkFuaW1hdG9yID0gZWNvcmVfYW5pbWF0b3JfYWRkKHBhbkFuaW1hdG9yQ2FsbGJhY2ssIHRoaXMp
OworICAgIG1fbGFzdFBvaW50ID0gbV9jdXJyZW50UG9pbnQgPSBwb2ludDsKKyAgICBtX2ZpcnN0
SGlzdG9yeUl0ZW1JbmRleCA9IDA7CisgICAgbV9oaXN0b3J5LnJlc2l6ZSgwKTsKK30KKwordm9p
ZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuKGNvbnN0IEludFBvaW50JiBwb2ludCkKK3sKKyAg
ICBtX2N1cnJlbnRQb2ludCA9IHBvaW50OworICAgIG1faXNDdXJyZW50UG9pbnRVcGRhdGVkID0g
dHJ1ZTsKKworICAgIC8vIFNhdmUgY3VycmVudCBwb2ludCB0byB1c2UgdG8gY2FsY3VsYXRlIG9m
ZnNldCBvZiBmbGljay4KKyAgICBIaXN0b3J5SXRlbSBpdGVtID0ge21fY3VycmVudFBvaW50LCBl
Y29yZV90aW1lX2dldCgpfTsKKyAgICBpZiAobV9oaXN0b3J5LnNpemUoKSA8IG1faGlzdG9yeS5j
YXBhY2l0eSgpKQorICAgICAgICBtX2hpc3RvcnkudW5jaGVja2VkQXBwZW5kKGl0ZW0pOworICAg
IGVsc2UgeworICAgICAgICBtX2hpc3RvcnlbbV9maXJzdEhpc3RvcnlJdGVtSW5kZXgrK10gPSBp
dGVtOworICAgICAgICBpZiAobV9maXJzdEhpc3RvcnlJdGVtSW5kZXggPT0gbV9oaXN0b3J5LmNh
cGFjaXR5KCkpCisgICAgICAgICAgICBtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCA9IDA7CisgICAg
fQogfQogCiB2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQYW5GaW5pc2hlZCgpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQobV9wYW5BbmltYXRvcik7CisgICAgZWNvcmVf
YW5pbWF0b3JfZGVsKG1fcGFuQW5pbWF0b3IpOworICAgIG1fcGFuQW5pbWF0b3IgPSAwOworCisg
ICAgaWYgKCFtX2hpc3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIENhbGN1bGF0ZSBvZmZz
ZXQgdG8gbW92ZSBkdXJpbmcgb25lIGZyYW1lLgorICAgICAgICBjb25zdCBIaXN0b3J5SXRlbSYg
Zmlyc3RIaXN0b3J5SXRlbSA9IG1faGlzdG9yeVttX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleF07Cisg
ICAgICAgIGRvdWJsZSBmcmFtZSA9IChlY29yZV90aW1lX2dldCgpIC0gZmlyc3RIaXN0b3J5SXRl
bS50aW1lc3RhbXApIC8gZWNvcmVfYW5pbWF0b3JfZnJhbWV0aW1lX2dldCgpOworICAgICAgICBJ
bnRTaXplIG9mZnNldCA9IGZpcnN0SGlzdG9yeUl0ZW0ucG9pbnQgLSBtX2N1cnJlbnRQb2ludDsK
KyAgICAgICAgb2Zmc2V0LnNjYWxlKDEgLyBmcmFtZSk7CisgICAgICAgIGhhbmRsZUZsaWNrKG9m
ZnNldCk7CisgICAgfQorfQorCitFaW5hX0Jvb2wgR2VzdHVyZUhhbmRsZXI6OmZsaWNrQW5pbWF0
b3JDYWxsYmFjayh2b2lkKiBkYXRhKQoreworICAgIEdlc3R1cmVIYW5kbGVyKiBnZXN0dXJlSGFu
ZGxlciA9IHN0YXRpY19jYXN0PEdlc3R1cmVIYW5kbGVyKj4oZGF0YSk7CisgICAgZmxvYXQgbXVs
dGlwbGllciA9IGVhc2VJbk91dFF1YWQoZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tJbmRleCwgMCwg
MS4wLCBnZXN0dXJlSGFuZGxlci0+bV9mbGlja0R1cmF0aW9uKTsKKyAgICBmbG9hdCBvZmZzZXRX
aWR0aCA9IGdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrT2Zmc2V0LndpZHRoKCkgKiBtdWx0aXBsaWVy
OworICAgIGZsb2F0IG9mZnNldEhlaWdodCA9IGdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrT2Zmc2V0
LmhlaWdodCgpICogbXVsdGlwbGllcjsKKyAgICBvZmZzZXRXaWR0aCA9IChvZmZzZXRXaWR0aCA+
IDApID8gY2VpbGYob2Zmc2V0V2lkdGgpIDogZmxvb3JmKG9mZnNldFdpZHRoKTsKKyAgICBvZmZz
ZXRIZWlnaHQgPSAob2Zmc2V0SGVpZ2h0ID4gMCkgPyBjZWlsZihvZmZzZXRIZWlnaHQpIDogZmxv
b3JmKG9mZnNldEhlaWdodCk7CisgICAgSW50U2l6ZSBvZmZzZXQob2Zmc2V0V2lkdGgsIG9mZnNl
dEhlaWdodCk7CisgICAgZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tJbmRleC0tOworCisgICAgaWYg
KG9mZnNldC5pc1plcm8oKSB8fCAhZ2VzdHVyZUhhbmRsZXItPm1fZXdrVmlldy0+c2Nyb2xsQnko
b2Zmc2V0KSB8fCAhZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tJbmRleCkgeworICAgICAgICBnZXN0
dXJlSGFuZGxlci0+bV9mbGlja0FuaW1hdG9yID0gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5k
bGVGbGljayhjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgbV9mbGlja09mZnNldCA9IG9m
ZnNldDsKKyAgICBtX2ZsaWNrSW5kZXggPSBtX2ZsaWNrRHVyYXRpb24gPSAxIC8gZWNvcmVfYW5p
bWF0b3JfZnJhbWV0aW1lX2dldCgpOworICAgIG1fZmxpY2tBbmltYXRvciA9IGVjb3JlX2FuaW1h
dG9yX2FkZChmbGlja0FuaW1hdG9yQ2FsbGJhY2ssIHRoaXMpOwogfQogCiB2b2lkIEdlc3R1cmVI
YW5kbGVyOjpoYW5kbGVQaW5jaFN0YXJ0ZWQoY29uc3QgVmVjdG9yPEludFBvaW50PiYpCkBAIC0y
MDEsNiArMzE1LDggQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0dXJlKFdLRXZlbnRU
eXBlIHR5cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludHMpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7
CiAgICAgY2FzZSBrV0tFdmVudFR5cGVUb3VjaFN0YXJ0OgorICAgICAgICBtX2dlc3R1cmVIYW5k
bGVyLT5yZXNldCgpOworCiAgICAgICAgIG1fcmVjb2duaXplckZ1bmN0aW9uID0gJkdlc3R1cmVS
ZWNvZ25pemVyOjpzaW5nbGVUYXBHZXN0dXJlOwogICAgICAgICBtX2ZpcnN0UHJlc3NlZFBvaW50
ID0gdG9JbnRQb2ludChnZXRQb2ludEF0SW5kZXgodG91Y2hQb2ludHMsIDApKTsKICAgICAgICAg
QVNTRVJUKCFtX3RhcEFuZEhvbGRUaW1lcik7CkBAIC0zNDUsNiArNDYxLDcgQEAgdm9pZCBHZXN0
dXJlUmVjb2duaXplcjo6cGluY2hHZXN0dXJlKFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYg
dG91Y2hQb2ludHMpCiB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCgpCiB7CiAgICAgc3Rv
cFRhcFRpbWVycygpOworICAgIG1fZ2VzdHVyZUhhbmRsZXItPnJlc2V0KCk7CiAKICAgICBtX3Jl
Y29nbml6ZXJGdW5jdGlvbiA9ICZHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0dXJlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
ZWJWaWV3LmNwcAppbmRleCBjNmM3OTg3NTQyY2IwODE5ZDY5MDExYzExOWJlNWRjYzgzNTRiMzZi
Li5mMWI2YTY1NmU1ZWQzNzEyN2Q2ZTZiNDczZTZhNzQyMTVjZjhiOGI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3
LmNwcApAQCAtMTE0LDYgKzExNCwxNiBAQCB2b2lkIFdlYlZpZXc6OnNldFZpc2libGUoYm9vbCB2
aXNpYmxlKQogICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmll
d0lzVmlzaWJsZSk7CiB9CiAKK3ZvaWQgV2ViVmlldzo6c2V0Q29udGVudFBvc2l0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIEZsb2F0UmVjdCBib3VuZHM7
CisgICAgYm91bmRzLnNldFdpZHRoKHN0ZDo6bWF4KDAuZiwgY2VpbGYobV9jb250ZW50c1NpemUu
d2lkdGgoKSAqIG1fY29udGVudFNjYWxlRmFjdG9yKSkgLSBzaXplKCkud2lkdGgoKSk7CisgICAg
Ym91bmRzLnNldEhlaWdodChzdGQ6Om1heCgwLmYsIGNlaWxmKG1fY29udGVudHNTaXplLmhlaWdo
dCgpICogbV9jb250ZW50U2NhbGVGYWN0b3IpKSAtIHNpemUoKS5oZWlnaHQoKSk7CisKKyAgICBt
X2NvbnRlbnRQb3NpdGlvbi5zZXRYKGNsYW1wVG8ocG9zaXRpb24ueCgpLCBib3VuZHMueCgpLCBi
b3VuZHMud2lkdGgoKSkpOworICAgIG1fY29udGVudFBvc2l0aW9uLnNldFkoY2xhbXBUbyhwb3Np
dGlvbi55KCksIGJvdW5kcy55KCksIGJvdW5kcy5oZWlnaHQoKSkpOworfQorCiB2b2lkIFdlYlZp
ZXc6OnNldFVzZXJWaWV3cG9ydFRyYW5zbGF0aW9uKGRvdWJsZSB0eCwgZG91YmxlIHR5KQogewog
ICAgIG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKS50cmFu
c2xhdGUodHgsIHR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAppbmRleCBmNTUzM2E1ODk5ZTFiZDQ2OWViY2M3NDhk
NDc1MjM1OTgzYzFkY2JjLi5hMDU1YjBiZDNjYjJkM2VhZmFjYmZlZjgwYWFlZDcxNTA5MDZiOTAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViVmlldy5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENv
bnRlbnRTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikgeyBtX2NvbnRlbnRTY2FsZUZhY3Rv
ciA9IHNjYWxlRmFjdG9yOyB9CiAgICAgZmxvYXQgY29udGVudFNjYWxlRmFjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50U2NhbGVGYWN0b3I7IH0KIAotICAgIHZvaWQgc2V0Q29udGVudFBv
c2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fY29udGVudFBv
c2l0aW9uID0gcG9zaXRpb247IH0KKyAgICB2b2lkIHNldENvbnRlbnRQb3NpdGlvbihjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY29u
dGVudFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50UG9zaXRpb247IH0KIAogICAg
IHZvaWQgc2V0VXNlclZpZXdwb3J0VHJhbnNsYXRpb24oZG91YmxlIHR4LCBkb3VibGUgdHkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY2Y2NmNDZmOTc2MTVhNjBkYmMzMzY1OTkxN2E4NWNkNTljYThmZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKQEAg
LTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJv
bmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAq
ICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
IHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLyoKKyAqIFJvYmVydCBQZW5uZXIncyBlYXNpbmcgZXF1YXRpb25zLiBo
dHRwOi8vd3d3LnJvYmVydHBlbm5lci5jb20vZWFzaW5nLworICogc3RhdGljIGZ1bmN0aW9uIGVh
c2VJbk91dFF1YWQgKHQ6TnVtYmVyLCBiOk51bWJlciwgYzpOdW1iZXIsIGQ6TnVtYmVyKTpOdW1i
ZXIgeworICogICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0ICsgYjsKKyAqICAg
ICByZXR1cm4gLWMvMiAqICgoLS10KSoodC0yKSAtIDEpICsgYjsKKyAqIH0KKyAqLworZmxvYXQg
ZWFzZUluT3V0UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25zdCBmbG9hdCBj
b25zdGFudCwgY29uc3QgdW5zaWduZWQgZHVyYXRpb24pCit7CisgICAgaWYgKHRpbWUgPiBkdXJh
dGlvbiB8fCB0aW1lIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoKHRpbWUgLz0g
KGR1cmF0aW9uIC8gMikpIDwgMSkKKyAgICAgICAgcmV0dXJuIChjb25zdGFudCAvIDIpICogdGlt
ZSAqIHRpbWUgKyBiYXNlOworCisgICAgdGltZSAtPSAxOworICAgIHJldHVybiAtMSAqIChjb25z
dGFudCAvIDIpICogKHRpbWUgKiAodGltZSAtIDIpIC0gMSkgKyBiYXNlOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjcyNmM2ZmM0
MDc2MzFkNmFhOGYzZjViZTBiOGNjNWZhZDUyYTQwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKQEAgLTAsMCArMSwzNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhv
ciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAgIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAg
ICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
KyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBFYXNpbmdDdXJ2ZXNfaAorI2RlZmluZSBFYXNpbmdDdXJ2ZXNfaAorCitmbG9hdCBl
YXNlSW5PdXRRdWFkKGZsb2F0IHRpbWUsIGNvbnN0IGZsb2F0IGJhc2UsIGNvbnN0IGZsb2F0IGNv
bnN0YW50LCBjb25zdCB1bnNpZ25lZCBkdXJhdGlvbik7CisKKyNlbmRpZiAvLyBFYXNpbmdDdXJ2
ZXNfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208389</attachid>
            <date>2013-08-08 19:15:25 -0700</date>
            <delta_ts>2013-08-20 04:15:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130809111523.patch</filename>
            <type>text/plain</type>
            <size>17482</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGQ0ODQyMGRiZGY4MGY3
ZDE0NjkxNDliMmQzZDQ0YTUxNmJhYjJhZS4uYzgyNzM2NDRjNDliMzYyOWI0YjQ4ZTAwY2I5NTNh
NjA5NzZhZGY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTA4LTA4ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFuIGdlc3R1cmUgdG8gc2Nyb2xsIHBh
Z2UgYnkgbW92ZW1lbnQgb2YgcG9pbnQgYW5kIHN0b3AKKyAgICAgICAgc2Nyb2xsaW5nIHNtb290
aGx5IHVzaW5nIGVhc2UtaW4tb3V0LXF1YWQgYWxnb3JpdGhtIGFmdGVyIHRvdWNoZWQKKyAgICAg
ICAgcG9pbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY3JlZW4uCisKKyAgICAgICAgVXNlIEVjb3Jl
X0FuaW1hdG9yIGluIG9yZGVyIHRvIHByb2Nlc3MgbW92ZW1lbnQgb25jZSBwZXIgZWFjaCBmcmFt
aW5nCisgICAgICAgIHRpbWUgc2xvdCBpbnN0ZWFkIG9mIHByb2Nlc3NpbmcgYWxsIG1vdmVtZW50
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpzY3JvbGxCeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRs
ZXI6Okdlc3R1cmVIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6On5H
ZXN0dXJlSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpyZXNldCk6
CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpwYW5BbmltYXRvckNhbGxiYWNrKToK
KyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhblN0YXJ0ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuKToKKyAgICAgICAgKFdlYktp
dDo6R2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6
R2VzdHVyZUhhbmRsZXI6OmZsaWNrQW5pbWF0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
Okdlc3R1cmVIYW5kbGVyOjpoYW5kbGVGbGljayk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVS
ZWNvZ25pemVyOjpub0dlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXpl
cjo6cmVzZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzZXRDb250ZW50UG9zaXRpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHA6IEFkZGVkLgorICAgICAgICAoZWFz
ZUluT3V0UXVhZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuaDogQWRk
ZWQuCisKIDIwMTMtMDgtMDggIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUu
Y29tPgogCiAgICAgICAgIERpc2FibGUgc3VwcHJlc3Npb24gb2YgcGx1Z2luIHByb2Nlc3MgZm9y
IEphdmEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNDg5NWU5OGUyNjc1NGQzZGY1YTA1
ODZkMDRjNjU5NmVlYTEyMDhlYS4uMjdiODVkOWNiMGQ5YWY2ZjY4MjEwYjY4ZTkwMTAyNDg4ZGQy
NWVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTEwNiw2ICsxMDYsNyBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL0NvbnRleHRIaXN0b3J5
Q2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuY3Bw
CiAgICAgVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCisgICAgVUlQcm9jZXNz
L2VmbC9FYXNpbmdDdXJ2ZXMuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaEV2ZW50LmNw
cAogICAgIFVJUHJvY2Vzcy9lZmwvRXdrVG91Y2hQb2ludC5jcHAKICAgICBVSVByb2Nlc3MvZWZs
L0ZpbmRDbGllbnRFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXcuY3BwCmluZGV4IDViYjg0OTdhM2ZiZDc1YjVlMjJjODM3ZTg2NTU2ZTM5OTM0ZmU1Mzku
Ljc1YjkzZDhlODhkMDk1MjZjZjI1NzE5MjUxNDczZDc0Y2Y0NDEyZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC0xMzkyLDYgKzEzOTIsMjMg
QEAgdm9pZCBFd2tWaWV3OjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdLUG9pbnQmIHBvaW50
LCBjb25zdCBXS1JlY3QmIGFyZWEpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorYm9vbCBF
d2tWaWV3OjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgV0tQb2ludCBv
bGRQb3NpdGlvbiA9IFdLVmlld0dldENvbnRlbnRQb3NpdGlvbih3a1ZpZXcoKSk7CisgICAgRmxv
YXRQb2ludCBuZXdQb3NpdGlvbiA9IEZsb2F0UG9pbnQob2xkUG9zaXRpb24ueCArIG9mZnNldC53
aWR0aCgpLCBvbGRQb3NpdGlvbi55ICsgb2Zmc2V0LmhlaWdodCgpKTsKKyAgICBXS1ZpZXdTZXRD
b250ZW50UG9zaXRpb24od2tWaWV3KCksIFdLUG9pbnRNYWtlKG5ld1Bvc2l0aW9uLngoKSwgbmV3
UG9zaXRpb24ueSgpKSk7CisKKyAgICBXS1BvaW50IHBvc2l0aW9uID0gV0tWaWV3R2V0Q29udGVu
dFBvc2l0aW9uKHdrVmlldygpKTsKKyAgICBmbG9hdCBjb250ZW50U2NhbGUgPSBXS1ZpZXdHZXRD
b250ZW50U2NhbGVGYWN0b3Iod2tWaWV3KCkpOworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxl
ci0+ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KEZsb2F0UG9pbnQocG9zaXRpb24ueCAvIGNv
bnRlbnRTY2FsZSwgcG9zaXRpb24ueSAvIGNvbnRlbnRTY2FsZSksIGNvbnRlbnRTY2FsZSk7CisK
KyAgICAvLyBJZiB0aGUgcGFnZSBwb3NpdGlvbiBpcyBub3QgY2hhbmdlZCwgbm90aWZ5IHRoYXQg
dXNpbmcgcmV0dXJuaW5nIHZhbHVlLgorICAgIGlmIChvbGRQb3NpdGlvbiA9PSBwb3NpdGlvbikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIEV2YXNfU21h
cnRfQ2xhc3MgRXdrVmlldzo6cGFyZW50U21hcnRDbGFzcyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5J
VF9OVUxMOwogCiAvLyBGcmVlIEV3ayBWaWV3IGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAppbmRleCBjNDZiMTUxYTBkZDkxZGNlMTQxZjUyOWU2
ZTM5MDU1MDAxMDRiZWE4Li4zMDZlMzZmMDFjYmM4OGYwYmRhZDJjN2YwM2UwNTk0MTFhMGNiMThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCkBAIC0yMDIs
NiArMjAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5mb3JtVVJMQ2hhbmdlKCk7CiAKICAgICBQ
YXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gdGFrZVNuYXBzaG90KCk7CisgICAgYm9vbCBzY3Jv
bGxCeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKICAgICB2b2lkIGRpZEZpbmRab29tYWJs
ZUFyZWEoY29uc3QgV0tQb2ludCYsIGNvbnN0IFdLUmVjdCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHAKaW5kZXgg
MjE1YjMxNDdjOTJkNjY2ZGNmYjU3NTFmYzQ3Nzk0MDc0MTEyZDIxNC4uZTM2OGM0Nzg1ZTFiMjU0
NGJlZTQxNDViMzMxZmNhN2U0NmEyNjhhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdlc3R1cmVSZWNvZ25pemVyLmgiCiAK
KyNpbmNsdWRlICJFYXNpbmdDdXJ2ZXMuaCIKICNpbmNsdWRlICJFd2tWaWV3LmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKQEAgLTQz
LDEzICs0NCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IEdlc3R1cmVIYW5kbGVyKGV3a1ZpZXcpKTsKICAgICB9CisgICAgfkdlc3R1cmVIYW5kbGVyKCk7
CiAKKyAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBoYW5kbGVTaW5nbGVUYXAoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZURvdWJsZVRhcChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlVGFwQW5kSG9sZChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuU3RhcnRlZChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAg
ICAgdm9pZCBoYW5kbGVQYW5GaW5pc2hlZCgpOworICAgIHZvaWQgaGFuZGxlRmxpY2soY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgaGFuZGxlUGluY2hTdGFydGVkKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKTsKICAgICB2b2lkIGhhbmRsZVBpbmNoKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKTsKICAgICB2b2lkIGhhbmRsZVBpbmNoRmluaXNoZWQo
KTsKQEAgLTU3LDEyICs2MSw1NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEdl
c3R1cmVIYW5kbGVyKEV3a1ZpZXcqKTsKIAorICAgIHN0YXRpYyBFaW5hX0Jvb2wgcGFuQW5pbWF0
b3JDYWxsYmFjayh2b2lkKik7CisgICAgc3RhdGljIEVpbmFfQm9vbCBmbGlja0FuaW1hdG9yQ2Fs
bGJhY2sodm9pZCopOworCisgICAgc3RhdGljIGNvbnN0IGludCBzX2hpc3RvcnlDYXBhY2l0eSA9
IDU7CisKICAgICBFd2tWaWV3KiBtX2V3a1ZpZXc7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9s
YXN0UG9pbnQ7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9jdXJyZW50UG9pbnQ7CisgICAgYm9v
bCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZDsKKyAgICBFY29yZV9BbmltYXRvciogbV9wYW5Bbmlt
YXRvcjsKKyAgICBFY29yZV9BbmltYXRvciogbV9mbGlja0FuaW1hdG9yOworICAgIFdlYkNvcmU6
OkludFNpemUgbV9mbGlja09mZnNldDsKKyAgICB1bnNpZ25lZCBtX2ZsaWNrRHVyYXRpb247Cisg
ICAgdW5zaWduZWQgbV9mbGlja0luZGV4OworCisgICAgdHlwZWRlZiBzdHJ1Y3QgeworICAgICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBwb2ludDsKKyAgICAgICAgZG91YmxlIHRpbWVzdGFtcDsKKyAg
ICB9IEhpc3RvcnlJdGVtOworICAgIFZlY3RvcjxIaXN0b3J5SXRlbT4gbV9oaXN0b3J5OworICAg
IHVuc2lnbmVkIG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4OwogfTsKIAogR2VzdHVyZUhhbmRsZXI6
Okdlc3R1cmVIYW5kbGVyKEV3a1ZpZXcqIGV3a1ZpZXcpCiAgICAgOiBtX2V3a1ZpZXcoZXdrVmll
dykKKyAgICAsIG1faXNDdXJyZW50UG9pbnRVcGRhdGVkKGZhbHNlKQorICAgICwgbV9wYW5Bbmlt
YXRvcigwKQorICAgICwgbV9mbGlja0FuaW1hdG9yKDApCisgICAgLCBtX2ZsaWNrRHVyYXRpb24o
MCkKKyAgICAsIG1fZmxpY2tJbmRleCgwKQorICAgICwgbV9maXJzdEhpc3RvcnlJdGVtSW5kZXgo
MCkKK3sKKyAgICBtX2hpc3RvcnkucmVzZXJ2ZUNhcGFjaXR5KHNfaGlzdG9yeUNhcGFjaXR5KTsK
K30KKworR2VzdHVyZUhhbmRsZXI6On5HZXN0dXJlSGFuZGxlcigpCiB7CisgICAgcmVzZXQoKTsK
K30KKwordm9pZCBHZXN0dXJlSGFuZGxlcjo6cmVzZXQoKQoreworICAgIGlmIChtX3BhbkFuaW1h
dG9yKSB7CisgICAgICAgIGVjb3JlX2FuaW1hdG9yX2RlbChtX3BhbkFuaW1hdG9yKTsKKyAgICAg
ICAgbV9wYW5BbmltYXRvciA9IDA7CisgICAgfQorCisgICAgaWYgKG1fZmxpY2tBbmltYXRvcikg
eworICAgICAgICBlY29yZV9hbmltYXRvcl9kZWwobV9mbGlja0FuaW1hdG9yKTsKKyAgICAgICAg
bV9mbGlja0FuaW1hdG9yID0gMDsKKyAgICB9CiB9CiAKIHZvaWQgR2VzdHVyZUhhbmRsZXI6Omhh
bmRsZVNpbmdsZVRhcChjb25zdCBJbnRQb2ludCYpCkBAIC04MCwxOSArMTI5LDg0IEBAIHZvaWQg
R2VzdHVyZUhhbmRsZXI6OmhhbmRsZVRhcEFuZEhvbGQoY29uc3QgSW50UG9pbnQmKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhblN0YXJ0
ZWQoY29uc3QgSW50UG9pbnQmKQorRWluYV9Cb29sIEdlc3R1cmVIYW5kbGVyOjpwYW5BbmltYXRv
ckNhbGxiYWNrKHZvaWQqIGRhdGEpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBHZXN0
dXJlSGFuZGxlciogZ2VzdHVyZUhhbmRsZXIgPSBzdGF0aWNfY2FzdDxHZXN0dXJlSGFuZGxlcio+
KGRhdGEpOworICAgIGlmICghZ2VzdHVyZUhhbmRsZXItPm1faXNDdXJyZW50UG9pbnRVcGRhdGVk
IHx8IGdlc3R1cmVIYW5kbGVyLT5tX2xhc3RQb2ludCA9PSBnZXN0dXJlSGFuZGxlci0+bV9jdXJy
ZW50UG9pbnQpCisgICAgICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19SRU5FVzsKKworICAgIGdl
c3R1cmVIYW5kbGVyLT5tX2V3a1ZpZXctPnNjcm9sbEJ5KGdlc3R1cmVIYW5kbGVyLT5tX2xhc3RQ
b2ludCAtIGdlc3R1cmVIYW5kbGVyLT5tX2N1cnJlbnRQb2ludCk7CisgICAgZ2VzdHVyZUhhbmRs
ZXItPm1fbGFzdFBvaW50ID0gZ2VzdHVyZUhhbmRsZXItPm1fY3VycmVudFBvaW50OworICAgIGdl
c3R1cmVIYW5kbGVyLT5tX2lzQ3VycmVudFBvaW50VXBkYXRlZCA9IGZhbHNlOworCisgICAgcmV0
dXJuIEVDT1JFX0NBTExCQUNLX1JFTkVXOwogfQogCi12b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5k
bGVQYW4oY29uc3QgSW50UG9pbnQmKQordm9pZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuU3Rh
cnRlZChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBBU1NFUlQoIW1fcGFuQW5pbWF0b3IpOworICAgIG1fcGFuQW5pbWF0b3IgPSBlY29yZV9hbmlt
YXRvcl9hZGQocGFuQW5pbWF0b3JDYWxsYmFjaywgdGhpcyk7CisgICAgbV9sYXN0UG9pbnQgPSBt
X2N1cnJlbnRQb2ludCA9IHBvaW50OworICAgIG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4ID0gMDsK
KyAgICBtX2hpc3RvcnkucmVzaXplKDApOworfQorCit2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5k
bGVQYW4oY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIG1fY3VycmVudFBvaW50ID0gcG9p
bnQ7CisgICAgbV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQgPSB0cnVlOworCisgICAgLy8gU2F2ZSBj
dXJyZW50IHBvaW50IHRvIHVzZSB0byBjYWxjdWxhdGUgb2Zmc2V0IG9mIGZsaWNrLgorICAgIEhp
c3RvcnlJdGVtIGl0ZW0gPSB7bV9jdXJyZW50UG9pbnQsIGVjb3JlX3RpbWVfZ2V0KCl9OworICAg
IGlmIChtX2hpc3Rvcnkuc2l6ZSgpIDwgbV9oaXN0b3J5LmNhcGFjaXR5KCkpCisgICAgICAgIG1f
aGlzdG9yeS51bmNoZWNrZWRBcHBlbmQoaXRlbSk7CisgICAgZWxzZSB7CisgICAgICAgIG1faGlz
dG9yeVttX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCsrXSA9IGl0ZW07CisgICAgICAgIGlmIChtX2Zp
cnN0SGlzdG9yeUl0ZW1JbmRleCA9PSBtX2hpc3RvcnkuY2FwYWNpdHkoKSkKKyAgICAgICAgICAg
IG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4ID0gMDsKKyAgICB9CiB9CiAKIHZvaWQgR2VzdHVyZUhh
bmRsZXI6OmhhbmRsZVBhbkZpbmlzaGVkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IEFTU0VSVChtX3BhbkFuaW1hdG9yKTsKKyAgICBlY29yZV9hbmltYXRvcl9kZWwobV9wYW5Bbmlt
YXRvcik7CisgICAgbV9wYW5BbmltYXRvciA9IDA7CisKKyAgICBpZiAoIW1faGlzdG9yeS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgLy8gQ2FsY3VsYXRlIG9mZnNldCB0byBtb3ZlIGR1cmluZyBvbmUg
ZnJhbWUuCisgICAgICAgIGNvbnN0IEhpc3RvcnlJdGVtJiBmaXJzdEhpc3RvcnlJdGVtID0gbV9o
aXN0b3J5W21fZmlyc3RIaXN0b3J5SXRlbUluZGV4XTsKKyAgICAgICAgZG91YmxlIGZyYW1lID0g
KGVjb3JlX3RpbWVfZ2V0KCkgLSBmaXJzdEhpc3RvcnlJdGVtLnRpbWVzdGFtcCkgLyBlY29yZV9h
bmltYXRvcl9mcmFtZXRpbWVfZ2V0KCk7CisgICAgICAgIEludFNpemUgb2Zmc2V0ID0gZmlyc3RI
aXN0b3J5SXRlbS5wb2ludCAtIG1fY3VycmVudFBvaW50OworICAgICAgICBvZmZzZXQuc2NhbGUo
MSAvIGZyYW1lKTsKKyAgICAgICAgaGFuZGxlRmxpY2sob2Zmc2V0KTsKKyAgICB9Cit9CisKK0Vp
bmFfQm9vbCBHZXN0dXJlSGFuZGxlcjo6ZmxpY2tBbmltYXRvckNhbGxiYWNrKHZvaWQqIGRhdGEp
Cit7CisgICAgR2VzdHVyZUhhbmRsZXIqIGdlc3R1cmVIYW5kbGVyID0gc3RhdGljX2Nhc3Q8R2Vz
dHVyZUhhbmRsZXIqPihkYXRhKTsKKyAgICBmbG9hdCBtdWx0aXBsaWVyID0gZWFzZUluT3V0UXVh
ZChnZXN0dXJlSGFuZGxlci0+bV9mbGlja0luZGV4LCAwLCAxLjAsIGdlc3R1cmVIYW5kbGVyLT5t
X2ZsaWNrRHVyYXRpb24pOworICAgIGZsb2F0IG9mZnNldFdpZHRoID0gZ2VzdHVyZUhhbmRsZXIt
Pm1fZmxpY2tPZmZzZXQud2lkdGgoKSAqIG11bHRpcGxpZXI7CisgICAgZmxvYXQgb2Zmc2V0SGVp
Z2h0ID0gZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tPZmZzZXQuaGVpZ2h0KCkgKiBtdWx0aXBsaWVy
OworICAgIG9mZnNldFdpZHRoID0gKG9mZnNldFdpZHRoID4gMCkgPyBjZWlsZihvZmZzZXRXaWR0
aCkgOiBmbG9vcmYob2Zmc2V0V2lkdGgpOworICAgIG9mZnNldEhlaWdodCA9IChvZmZzZXRIZWln
aHQgPiAwKSA/IGNlaWxmKG9mZnNldEhlaWdodCkgOiBmbG9vcmYob2Zmc2V0SGVpZ2h0KTsKKyAg
ICBJbnRTaXplIG9mZnNldChvZmZzZXRXaWR0aCwgb2Zmc2V0SGVpZ2h0KTsKKyAgICBnZXN0dXJl
SGFuZGxlci0+bV9mbGlja0luZGV4LS07CisKKyAgICBpZiAob2Zmc2V0LmlzWmVybygpIHx8ICFn
ZXN0dXJlSGFuZGxlci0+bV9ld2tWaWV3LT5zY3JvbGxCeShvZmZzZXQpIHx8ICFnZXN0dXJlSGFu
ZGxlci0+bV9mbGlja0luZGV4KSB7CisgICAgICAgIGdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrQW5p
bWF0b3IgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZUZsaWNrKGNvbnN0IEludFNpemUm
IG9mZnNldCkKK3sKKyAgICBtX2ZsaWNrT2Zmc2V0ID0gb2Zmc2V0OworICAgIG1fZmxpY2tJbmRl
eCA9IG1fZmxpY2tEdXJhdGlvbiA9IDEgLyBlY29yZV9hbmltYXRvcl9mcmFtZXRpbWVfZ2V0KCk7
CisgICAgbV9mbGlja0FuaW1hdG9yID0gZWNvcmVfYW5pbWF0b3JfYWRkKGZsaWNrQW5pbWF0b3JD
YWxsYmFjaywgdGhpcyk7CiB9CiAKIHZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBpbmNoU3Rh
cnRlZChjb25zdCBWZWN0b3I8SW50UG9pbnQ+JikKQEAgLTE5Niw2ICszMTAsOCBAQCB2b2lkIEdl
c3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0
b3VjaFBvaW50cykKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIGtXS0V2ZW50VHlw
ZVRvdWNoU3RhcnQ6CisgICAgICAgIG1fZ2VzdHVyZUhhbmRsZXItPnJlc2V0KCk7CisKICAgICAg
ICAgbV9yZWNvZ25pemVyRnVuY3Rpb24gPSAmR2VzdHVyZVJlY29nbml6ZXI6OnNpbmdsZVRhcEdl
c3R1cmU7CiAgICAgICAgIG1fZmlyc3RQcmVzc2VkUG9pbnQgPSB0b0ludFBvaW50KGdldFBvaW50
QXRJbmRleCh0b3VjaFBvaW50cywgMCkpOwogICAgICAgICBBU1NFUlQoIW1fdGFwQW5kSG9sZFRp
bWVyKTsKQEAgLTM0MCw2ICs0NTYsNyBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpwaW5jaEdl
c3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50cykKIHZvaWQgR2Vz
dHVyZVJlY29nbml6ZXI6OnJlc2V0KCkKIHsKICAgICBzdG9wVGFwVGltZXJzKCk7CisgICAgbV9n
ZXN0dXJlSGFuZGxlci0+cmVzZXQoKTsKIAogICAgIG1fcmVjb2duaXplckZ1bmN0aW9uID0gJkdl
c3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCmluZGV4IDFjMWNh
NGFhYmJhZWIxN2VhMzRiNjk4ODQwMThiZGFiZmY4OTllMDcuLjQwOTMwY2FhYzExYzM0MTE0NWY2
MDdkNDRjNzRkMTgyNjFjYzgxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCkBAIC0xMTQsNiArMTE0LDE2
IEBAIHZvaWQgV2ViVmlldzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgbV9wYWdlLT52
aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxlKTsKIH0KIAordm9p
ZCBXZWJWaWV3OjpzZXRDb250ZW50UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYg
cG9zaXRpb24pCit7CisgICAgRmxvYXRSZWN0IGJvdW5kczsKKyAgICBib3VuZHMuc2V0V2lkdGgo
c3RkOjptYXgoMC5mLCBjZWlsZihtX2NvbnRlbnRzU2l6ZS53aWR0aCgpICogbV9jb250ZW50U2Nh
bGVGYWN0b3IpKSAtIHNpemUoKS53aWR0aCgpKTsKKyAgICBib3VuZHMuc2V0SGVpZ2h0KHN0ZDo6
bWF4KDAuZiwgY2VpbGYobV9jb250ZW50c1NpemUuaGVpZ2h0KCkgKiBtX2NvbnRlbnRTY2FsZUZh
Y3RvcikpIC0gc2l6ZSgpLmhlaWdodCgpKTsKKworICAgIG1fY29udGVudFBvc2l0aW9uLnNldFgo
Y2xhbXBUbyhwb3NpdGlvbi54KCksIGJvdW5kcy54KCksIGJvdW5kcy53aWR0aCgpKSk7CisgICAg
bV9jb250ZW50UG9zaXRpb24uc2V0WShjbGFtcFRvKHBvc2l0aW9uLnkoKSwgYm91bmRzLnkoKSwg
Ym91bmRzLmhlaWdodCgpKSk7Cit9CisKIHZvaWQgV2ViVmlldzo6c2V0VXNlclZpZXdwb3J0VHJh
bnNsYXRpb24oZG91YmxlIHR4LCBkb3VibGUgdHkpCiB7CiAgICAgbV91c2VyVmlld3BvcnRUcmFu
c2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLnRyYW5zbGF0ZSh0eCwgdHkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmll
dy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmll
dy5oCmluZGV4IGFkMzliYjFiMDExN2Y1YThhMWFkNDM4NjAzMDY1YzBmMmE5YjYyOGUuLmJmNjA2
ZGNiZGU0MmRhMzVhNjNlMzgyYjZhNzc4YWM5ZTkwNjYzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgKQEAgLTY5
LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudFNjYWxlRmFjdG9yKGZsb2F0
IHNjYWxlRmFjdG9yKSB7IG1fY29udGVudFNjYWxlRmFjdG9yID0gc2NhbGVGYWN0b3I7IH0KICAg
ICBmbG9hdCBjb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTY2Fs
ZUZhY3RvcjsgfQogCi0gICAgdm9pZCBzZXRDb250ZW50UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgcG9zaXRpb24pIHsgbV9jb250ZW50UG9zaXRpb24gPSBwb3NpdGlvbjsgfQor
ICAgIHZvaWQgc2V0Q29udGVudFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsK
ICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBjb250ZW50UG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2NvbnRlbnRQb3NpdGlvbjsgfQogCiAgICAgdm9pZCBzZXRVc2VyVmlld3BvcnRU
cmFuc2xhdGlvbihkb3VibGUgdHgsIGRvdWJsZSB0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZjY2Y0NmY5NzYxNWE2MGRi
YzMzNjU5OTE3YTg1Y2Q1OWNhOGZkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDAxIFJvYmVydCBQZW5uZXIgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0
aGUgbmFtZXMgb2YgY29udHJpYnV0b3JzIG1heSBiZQorICogICAgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMi
QVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKgorICog
Um9iZXJ0IFBlbm5lcidzIGVhc2luZyBlcXVhdGlvbnMuIGh0dHA6Ly93d3cucm9iZXJ0cGVubmVy
LmNvbS9lYXNpbmcvCisgKiBzdGF0aWMgZnVuY3Rpb24gZWFzZUluT3V0UXVhZCAodDpOdW1iZXIs
IGI6TnVtYmVyLCBjOk51bWJlciwgZDpOdW1iZXIpOk51bWJlciB7CisgKiAgICAgaWYgKCh0Lz1k
LzIpIDwgMSkgcmV0dXJuIGMvMip0KnQgKyBiOworICogICAgIHJldHVybiAtYy8yICogKCgtLXQp
Kih0LTIpIC0gMSkgKyBiOworICogfQorICovCitmbG9hdCBlYXNlSW5PdXRRdWFkKGZsb2F0IHRp
bWUsIGNvbnN0IGZsb2F0IGJhc2UsIGNvbnN0IGZsb2F0IGNvbnN0YW50LCBjb25zdCB1bnNpZ25l
ZCBkdXJhdGlvbikKK3sKKyAgICBpZiAodGltZSA+IGR1cmF0aW9uIHx8IHRpbWUgPCAwKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIGlmICgodGltZSAvPSAoZHVyYXRpb24gLyAyKSkgPCAxKQor
ICAgICAgICByZXR1cm4gKGNvbnN0YW50IC8gMikgKiB0aW1lICogdGltZSArIGJhc2U7CisKKyAg
ICB0aW1lIC09IDE7CisgICAgcmV0dXJuIC0xICogKGNvbnN0YW50IC8gMikgKiAodGltZSAqICh0
aW1lIC0gMikgLSAxKSArIGJhc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9F
YXNpbmdDdXJ2ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzI2YzZmYzQwNzYzMWQ2YWE4ZjNmNWJlMGI4Y2M1
ZmFkNTJhNDAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9FYXNpbmdDdXJ2ZXMuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDAxIFJvYmVydCBQZW5uZXIgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgY29u
dHJpYnV0b3JzIG1heSBiZQorICogICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMiQVMgSVMiCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEVhc2luZ0N1cnZlc19o
CisjZGVmaW5lIEVhc2luZ0N1cnZlc19oCisKK2Zsb2F0IGVhc2VJbk91dFF1YWQoZmxvYXQgdGlt
ZSwgY29uc3QgZmxvYXQgYmFzZSwgY29uc3QgZmxvYXQgY29uc3RhbnQsIGNvbnN0IHVuc2lnbmVk
IGR1cmF0aW9uKTsKKworI2VuZGlmIC8vIEVhc2luZ0N1cnZlc19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209181</attachid>
            <date>2013-08-20 04:15:16 -0700</date>
            <delta_ts>2013-08-21 21:41:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130820201508.patch</filename>
            <type>text/plain</type>
            <size>17484</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWJhZTc5MTA3NzhlZWE1
NmJhMDcyODVjODk4YWQxMjA5OTY1YWY3MS4uMzZkOTdkOTcxY2Y4YzBhMzUwNjlhNDhkNGM1MmM0
YzhhOGYzZjQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTA4LTIwICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTA3MTAxPiBbRUZMXVtXSzJdIEltcGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1
cmUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IHBhbiBnZXN0dXJlIHRvIHNjcm9sbCBwYWdlIGJ5IG1vdmVtZW50IG9mIHBvaW50IGFu
ZCBzdG9wCisgICAgICAgIHNjcm9sbGluZyBzbW9vdGhseSB1c2luZyBlYXNlLWluLW91dC1xdWFk
IGFsZ29yaXRobSBhZnRlciB0b3VjaGVkCisgICAgICAgIHBvaW50IGlzIHJlbW92ZWQgZnJvbSB0
aGUgc2NyZWVuLgorCisgICAgICAgIFVzZSBFY29yZV9BbmltYXRvciBpbiBvcmRlciB0byBwcm9j
ZXNzIG1vdmVtZW50IG9uY2UgcGVyIGVhY2ggZnJhbWluZworICAgICAgICB0aW1lIHNsb3QgaW5z
dGVhZCBvZiBwcm9jZXNzaW5nIGFsbCBtb3ZlbWVudC4KKworICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAg
ICAoRXdrVmlldzo6c2Nyb2xsQnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpHZXN0dXJlSGFuZGxlcik6CisgICAg
ICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjp+R2VzdHVyZUhhbmRsZXIpOgorICAgICAgICAo
V2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJl
SGFuZGxlcjo6cGFuQW5pbWF0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVI
YW5kbGVyOjpoYW5kbGVQYW5TdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRs
ZXI6OmhhbmRsZVBhbik6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQ
YW5GaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpmbGlja0FuaW1h
dG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6aGFuZGxlRmxp
Y2spOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6c2V0Q29udGVudFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9FYXNpbmdD
dXJ2ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKGVhc2VJbk91dFF1YWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmg6IEFkZGVkLgorCiAyMDEzLTA4LTE4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTE5OTg5PiBNYWtlIHVzZSBvZiBOb2RlOjpvd25lckRvY3VtZW50IGEgY29tcGlsZSB0aW1lIGVy
cm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDQ4OTVlOThlMjY3NTRkM2RmNWEwNTg2
ZDA0YzY1OTZlZWExMjA4ZWEuLjI3Yjg1ZDljYjBkOWFmNmY2ODIxMGI2OGU5MDEwMjQ4OGRkMjVl
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMDYsNiArMTA2LDcgQEAgbGlzdChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0SGlzdG9yeUNs
aWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcAog
ICAgIFVJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9l
ZmwvRWFzaW5nQ3VydmVzLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5jcHAK
ICAgICBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9G
aW5kQ2xpZW50RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3LmNwcAppbmRleCA1YmI4NDk3YTNmYmQ3NWI1ZTIyYzgzN2U4NjU1NmUzOTkzNGZlNTM5Li43
NWI5M2Q4ZTg4ZDA5NTI2Y2YyNTcxOTI1MTQ3M2Q3NGNmNDQxMmYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtMTM5Miw2ICsxMzkyLDIzIEBA
IHZvaWQgRXdrVmlldzo6ZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBXS1BvaW50JiBwb2ludCwg
Y29uc3QgV0tSZWN0JiBhcmVhKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgRXdr
Vmlldzo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIFdLUG9pbnQgb2xk
UG9zaXRpb24gPSBXS1ZpZXdHZXRDb250ZW50UG9zaXRpb24od2tWaWV3KCkpOworICAgIEZsb2F0
UG9pbnQgbmV3UG9zaXRpb24gPSBGbG9hdFBvaW50KG9sZFBvc2l0aW9uLnggKyBvZmZzZXQud2lk
dGgoKSwgb2xkUG9zaXRpb24ueSArIG9mZnNldC5oZWlnaHQoKSk7CisgICAgV0tWaWV3U2V0Q29u
dGVudFBvc2l0aW9uKHdrVmlldygpLCBXS1BvaW50TWFrZShuZXdQb3NpdGlvbi54KCksIG5ld1Bv
c2l0aW9uLnkoKSkpOworCisgICAgV0tQb2ludCBwb3NpdGlvbiA9IFdLVmlld0dldENvbnRlbnRQ
b3NpdGlvbih3a1ZpZXcoKSk7CisgICAgZmxvYXQgY29udGVudFNjYWxlID0gV0tWaWV3R2V0Q29u
dGVudFNjYWxlRmFjdG9yKHdrVmlldygpKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIt
PmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShGbG9hdFBvaW50KHBvc2l0aW9uLnggLyBjb250
ZW50U2NhbGUsIHBvc2l0aW9uLnkgLyBjb250ZW50U2NhbGUpLCBjb250ZW50U2NhbGUpOworCisg
ICAgLy8gSWYgdGhlIHBhZ2UgcG9zaXRpb24gaXMgbm90IGNoYW5nZWQsIG5vdGlmeSB0aGF0IHVz
aW5nIHJldHVybmluZyB2YWx1ZS4KKyAgICBpZiAob2xkUG9zaXRpb24gPT0gcG9zaXRpb24pCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBFdmFzX1NtYXJ0
X0NsYXNzIEV3a1ZpZXc6OnBhcmVudFNtYXJ0Q2xhc3MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRf
TlVMTDsKIAogLy8gRnJlZSBFd2sgVmlldyBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggYzQ2YjE1MWEwZGQ5MWRjZTE0MWY1MjllNmUz
OTA1NTAwMTA0YmVhOC4uMzA2ZTM2ZjAxY2JjODhmMGJkYWQyYzdmMDNlMDU5NDExYTBjYjE4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtMjAyLDYg
KzIwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluZm9ybVVSTENoYW5nZSgpOwogCiAgICAgUGFz
c1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHRha2VTbmFwc2hvdCgpOworICAgIGJvb2wgc2Nyb2xs
QnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCiAgICAgdm9pZCBkaWRGaW5kWm9vbWFibGVB
cmVhKGNvbnN0IFdLUG9pbnQmLCBjb25zdCBXS1JlY3QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwCmluZGV4IDIx
NWIzMTQ3YzkyZDY2NmRjZmI1NzUxZmM0Nzc5NDA3NDExMmQyMTQuLjUyNjM4NDg5YjkzM2YzMTg2
ZDZhZDY3NTE2OTM2ZjIzZmU4MTQwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHZXN0dXJlUmVjb2duaXplci5oIgogCisj
aW5jbHVkZSAiRWFzaW5nQ3VydmVzLmgiCiAjaW5jbHVkZSAiRXdrVmlldy5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCkBAIC00Mywx
MyArNDQsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBH
ZXN0dXJlSGFuZGxlcihld2tWaWV3KSk7CiAgICAgfQorICAgIH5HZXN0dXJlSGFuZGxlcigpOwog
CisgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgaGFuZGxlU2luZ2xlVGFwKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBoYW5kbGVEb3VibGVUYXAoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVRhcEFuZEhvbGQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVBhblN0YXJ0ZWQoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKTsKICAgICB2b2lkIGhhbmRsZVBhbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAg
IHZvaWQgaGFuZGxlUGFuRmluaXNoZWQoKTsKKyAgICB2b2lkIGhhbmRsZUZsaWNrKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIGhhbmRsZVBpbmNoU3RhcnRlZChjb25zdCBWZWN0
b3I8V2ViQ29yZTo6SW50UG9pbnQ+Jik7CiAgICAgdm9pZCBoYW5kbGVQaW5jaChjb25zdCBWZWN0
b3I8V2ViQ29yZTo6SW50UG9pbnQ+Jik7CiAgICAgdm9pZCBoYW5kbGVQaW5jaEZpbmlzaGVkKCk7
CkBAIC01NywxMiArNjEsNTcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBHZXN0
dXJlSGFuZGxlcihFd2tWaWV3Kik7CiAKKyAgICBzdGF0aWMgRWluYV9Cb29sIHBhbkFuaW1hdG9y
Q2FsbGJhY2sodm9pZCopOworICAgIHN0YXRpYyBFaW5hX0Jvb2wgZmxpY2tBbmltYXRvckNhbGxi
YWNrKHZvaWQqKTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQgc19oaXN0b3J5Q2FwYWNpdHkgPSA1
OworCiAgICAgRXdrVmlldyogbV9ld2tWaWV3OworICAgIFdlYkNvcmU6OkludFBvaW50IG1fbGFz
dFBvaW50OworICAgIFdlYkNvcmU6OkludFBvaW50IG1fY3VycmVudFBvaW50OworICAgIGJvb2wg
bV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQ7CisgICAgRWNvcmVfQW5pbWF0b3IqIG1fcGFuQW5pbWF0
b3I7CisgICAgRWNvcmVfQW5pbWF0b3IqIG1fZmxpY2tBbmltYXRvcjsKKyAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fZmxpY2tPZmZzZXQ7CisgICAgdW5zaWduZWQgbV9mbGlja0R1cmF0aW9uOworICAg
IHVuc2lnbmVkIG1fZmxpY2tJbmRleDsKKworICAgIHR5cGVkZWYgc3RydWN0IHsKKyAgICAgICAg
V2ViQ29yZTo6SW50UG9pbnQgcG9pbnQ7CisgICAgICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAg
fSBIaXN0b3J5SXRlbTsKKyAgICBWZWN0b3I8SGlzdG9yeUl0ZW0+IG1faGlzdG9yeTsKKyAgICB1
bnNpZ25lZCBtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleDsKIH07CiAKIEdlc3R1cmVIYW5kbGVyOjpH
ZXN0dXJlSGFuZGxlcihFd2tWaWV3KiBld2tWaWV3KQogICAgIDogbV9ld2tWaWV3KGV3a1ZpZXcp
CisgICAgLCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZChmYWxzZSkKKyAgICAsIG1fcGFuQW5pbWF0
b3IoMCkKKyAgICAsIG1fZmxpY2tBbmltYXRvcigwKQorICAgICwgbV9mbGlja0R1cmF0aW9uKDAp
CisgICAgLCBtX2ZsaWNrSW5kZXgoMCkKKyAgICAsIG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4KDAp
Cit7CisgICAgbV9oaXN0b3J5LnJlc2VydmVDYXBhY2l0eShzX2hpc3RvcnlDYXBhY2l0eSk7Cit9
CisKK0dlc3R1cmVIYW5kbGVyOjp+R2VzdHVyZUhhbmRsZXIoKQogeworICAgIHJlc2V0KCk7Cit9
CisKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6OnJlc2V0KCkKK3sKKyAgICBpZiAobV9wYW5BbmltYXRv
cikgeworICAgICAgICBlY29yZV9hbmltYXRvcl9kZWwobV9wYW5BbmltYXRvcik7CisgICAgICAg
IG1fcGFuQW5pbWF0b3IgPSAwOworICAgIH0KKworICAgIGlmIChtX2ZsaWNrQW5pbWF0b3IpIHsK
KyAgICAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKG1fZmxpY2tBbmltYXRvcik7CisgICAgICAgIG1f
ZmxpY2tBbmltYXRvciA9IDA7CisgICAgfQogfQogCiB2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5k
bGVTaW5nbGVUYXAoY29uc3QgSW50UG9pbnQmKQpAQCAtODAsMTkgKzEyOSw4NCBAQCB2b2lkIEdl
c3R1cmVIYW5kbGVyOjpoYW5kbGVUYXBBbmRIb2xkKGNvbnN0IEludFBvaW50JikKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQYW5TdGFydGVk
KGNvbnN0IEludFBvaW50JikKK0VpbmFfQm9vbCBHZXN0dXJlSGFuZGxlcjo6cGFuQW5pbWF0b3JD
YWxsYmFjayh2b2lkKiBkYXRhKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgR2VzdHVy
ZUhhbmRsZXIqIGdlc3R1cmVIYW5kbGVyID0gc3RhdGljX2Nhc3Q8R2VzdHVyZUhhbmRsZXIqPihk
YXRhKTsKKyAgICBpZiAoIWdlc3R1cmVIYW5kbGVyLT5tX2lzQ3VycmVudFBvaW50VXBkYXRlZCB8
fCBnZXN0dXJlSGFuZGxlci0+bV9sYXN0UG9pbnQgPT0gZ2VzdHVyZUhhbmRsZXItPm1fY3VycmVu
dFBvaW50KQorICAgICAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfUkVORVc7CisKKyAgICBnZXN0
dXJlSGFuZGxlci0+bV9ld2tWaWV3LT5zY3JvbGxCeShnZXN0dXJlSGFuZGxlci0+bV9sYXN0UG9p
bnQgLSBnZXN0dXJlSGFuZGxlci0+bV9jdXJyZW50UG9pbnQpOworICAgIGdlc3R1cmVIYW5kbGVy
LT5tX2xhc3RQb2ludCA9IGdlc3R1cmVIYW5kbGVyLT5tX2N1cnJlbnRQb2ludDsKKyAgICBnZXN0
dXJlSGFuZGxlci0+bV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQgPSBmYWxzZTsKKworICAgIHJldHVy
biBFQ09SRV9DQUxMQkFDS19SRU5FVzsKIH0KIAotdm9pZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxl
UGFuKGNvbnN0IEludFBvaW50JikKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhblN0YXJ0
ZWQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
QVNTRVJUKCFtX3BhbkFuaW1hdG9yKTsKKyAgICBtX3BhbkFuaW1hdG9yID0gZWNvcmVfYW5pbWF0
b3JfYWRkKHBhbkFuaW1hdG9yQ2FsbGJhY2ssIHRoaXMpOworICAgIG1fbGFzdFBvaW50ID0gbV9j
dXJyZW50UG9pbnQgPSBwb2ludDsKKyAgICBtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCA9IDA7Cisg
ICAgbV9oaXN0b3J5LnJlc2l6ZSgwKTsKK30KKwordm9pZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxl
UGFuKGNvbnN0IEludFBvaW50JiBwb2ludCkKK3sKKyAgICBtX2N1cnJlbnRQb2ludCA9IHBvaW50
OworICAgIG1faXNDdXJyZW50UG9pbnRVcGRhdGVkID0gdHJ1ZTsKKworICAgIC8vIFNhdmUgY3Vy
cmVudCBwb2ludCB0byB1c2UgdG8gY2FsY3VsYXRlIG9mZnNldCBvZiBmbGljay4KKyAgICBIaXN0
b3J5SXRlbSBpdGVtID0geyBtX2N1cnJlbnRQb2ludCwgZWNvcmVfdGltZV9nZXQoKSB9OworICAg
IGlmIChtX2hpc3Rvcnkuc2l6ZSgpIDwgbV9oaXN0b3J5LmNhcGFjaXR5KCkpCisgICAgICAgIG1f
aGlzdG9yeS51bmNoZWNrZWRBcHBlbmQoaXRlbSk7CisgICAgZWxzZSB7CisgICAgICAgIG1faGlz
dG9yeVttX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCsrXSA9IGl0ZW07CisgICAgICAgIGlmIChtX2Zp
cnN0SGlzdG9yeUl0ZW1JbmRleCA9PSBtX2hpc3RvcnkuY2FwYWNpdHkoKSkKKyAgICAgICAgICAg
IG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4ID0gMDsKKyAgICB9CiB9CiAKIHZvaWQgR2VzdHVyZUhh
bmRsZXI6OmhhbmRsZVBhbkZpbmlzaGVkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IEFTU0VSVChtX3BhbkFuaW1hdG9yKTsKKyAgICBlY29yZV9hbmltYXRvcl9kZWwobV9wYW5Bbmlt
YXRvcik7CisgICAgbV9wYW5BbmltYXRvciA9IDA7CisKKyAgICBpZiAoIW1faGlzdG9yeS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgLy8gQ2FsY3VsYXRlIG9mZnNldCB0byBtb3ZlIGR1cmluZyBvbmUg
ZnJhbWUuCisgICAgICAgIGNvbnN0IEhpc3RvcnlJdGVtJiBmaXJzdEhpc3RvcnlJdGVtID0gbV9o
aXN0b3J5W21fZmlyc3RIaXN0b3J5SXRlbUluZGV4XTsKKyAgICAgICAgZG91YmxlIGZyYW1lID0g
KGVjb3JlX3RpbWVfZ2V0KCkgLSBmaXJzdEhpc3RvcnlJdGVtLnRpbWVzdGFtcCkgLyBlY29yZV9h
bmltYXRvcl9mcmFtZXRpbWVfZ2V0KCk7CisgICAgICAgIEludFNpemUgb2Zmc2V0ID0gZmlyc3RI
aXN0b3J5SXRlbS5wb2ludCAtIG1fY3VycmVudFBvaW50OworICAgICAgICBvZmZzZXQuc2NhbGUo
MSAvIGZyYW1lKTsKKyAgICAgICAgaGFuZGxlRmxpY2sob2Zmc2V0KTsKKyAgICB9Cit9CisKK0Vp
bmFfQm9vbCBHZXN0dXJlSGFuZGxlcjo6ZmxpY2tBbmltYXRvckNhbGxiYWNrKHZvaWQqIGRhdGEp
Cit7CisgICAgR2VzdHVyZUhhbmRsZXIqIGdlc3R1cmVIYW5kbGVyID0gc3RhdGljX2Nhc3Q8R2Vz
dHVyZUhhbmRsZXIqPihkYXRhKTsKKyAgICBmbG9hdCBtdWx0aXBsaWVyID0gZWFzZUluT3V0UXVh
ZChnZXN0dXJlSGFuZGxlci0+bV9mbGlja0luZGV4LCAwLCAxLjAsIGdlc3R1cmVIYW5kbGVyLT5t
X2ZsaWNrRHVyYXRpb24pOworICAgIGZsb2F0IG9mZnNldFdpZHRoID0gZ2VzdHVyZUhhbmRsZXIt
Pm1fZmxpY2tPZmZzZXQud2lkdGgoKSAqIG11bHRpcGxpZXI7CisgICAgZmxvYXQgb2Zmc2V0SGVp
Z2h0ID0gZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tPZmZzZXQuaGVpZ2h0KCkgKiBtdWx0aXBsaWVy
OworICAgIG9mZnNldFdpZHRoID0gKG9mZnNldFdpZHRoID4gMCkgPyBjZWlsZihvZmZzZXRXaWR0
aCkgOiBmbG9vcmYob2Zmc2V0V2lkdGgpOworICAgIG9mZnNldEhlaWdodCA9IChvZmZzZXRIZWln
aHQgPiAwKSA/IGNlaWxmKG9mZnNldEhlaWdodCkgOiBmbG9vcmYob2Zmc2V0SGVpZ2h0KTsKKyAg
ICBJbnRTaXplIG9mZnNldChvZmZzZXRXaWR0aCwgb2Zmc2V0SGVpZ2h0KTsKKyAgICBnZXN0dXJl
SGFuZGxlci0+bV9mbGlja0luZGV4LS07CisKKyAgICBpZiAob2Zmc2V0LmlzWmVybygpIHx8ICFn
ZXN0dXJlSGFuZGxlci0+bV9ld2tWaWV3LT5zY3JvbGxCeShvZmZzZXQpIHx8ICFnZXN0dXJlSGFu
ZGxlci0+bV9mbGlja0luZGV4KSB7CisgICAgICAgIGdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrQW5p
bWF0b3IgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZUZsaWNrKGNvbnN0IEludFNpemUm
IG9mZnNldCkKK3sKKyAgICBtX2ZsaWNrT2Zmc2V0ID0gb2Zmc2V0OworICAgIG1fZmxpY2tJbmRl
eCA9IG1fZmxpY2tEdXJhdGlvbiA9IDEgLyBlY29yZV9hbmltYXRvcl9mcmFtZXRpbWVfZ2V0KCk7
CisgICAgbV9mbGlja0FuaW1hdG9yID0gZWNvcmVfYW5pbWF0b3JfYWRkKGZsaWNrQW5pbWF0b3JD
YWxsYmFjaywgdGhpcyk7CiB9CiAKIHZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBpbmNoU3Rh
cnRlZChjb25zdCBWZWN0b3I8SW50UG9pbnQ+JikKQEAgLTE5Niw2ICszMTAsOCBAQCB2b2lkIEdl
c3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0
b3VjaFBvaW50cykKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIGtXS0V2ZW50VHlw
ZVRvdWNoU3RhcnQ6CisgICAgICAgIG1fZ2VzdHVyZUhhbmRsZXItPnJlc2V0KCk7CisKICAgICAg
ICAgbV9yZWNvZ25pemVyRnVuY3Rpb24gPSAmR2VzdHVyZVJlY29nbml6ZXI6OnNpbmdsZVRhcEdl
c3R1cmU7CiAgICAgICAgIG1fZmlyc3RQcmVzc2VkUG9pbnQgPSB0b0ludFBvaW50KGdldFBvaW50
QXRJbmRleCh0b3VjaFBvaW50cywgMCkpOwogICAgICAgICBBU1NFUlQoIW1fdGFwQW5kSG9sZFRp
bWVyKTsKQEAgLTM0MCw2ICs0NTYsNyBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpwaW5jaEdl
c3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50cykKIHZvaWQgR2Vz
dHVyZVJlY29nbml6ZXI6OnJlc2V0KCkKIHsKICAgICBzdG9wVGFwVGltZXJzKCk7CisgICAgbV9n
ZXN0dXJlSGFuZGxlci0+cmVzZXQoKTsKIAogICAgIG1fcmVjb2duaXplckZ1bmN0aW9uID0gJkdl
c3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCmluZGV4IDFjMWNh
NGFhYmJhZWIxN2VhMzRiNjk4ODQwMThiZGFiZmY4OTllMDcuLjQwOTMwY2FhYzExYzM0MTE0NWY2
MDdkNDRjNzRkMTgyNjFjYzgxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCkBAIC0xMTQsNiArMTE0LDE2
IEBAIHZvaWQgV2ViVmlldzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgbV9wYWdlLT52
aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxlKTsKIH0KIAordm9p
ZCBXZWJWaWV3OjpzZXRDb250ZW50UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYg
cG9zaXRpb24pCit7CisgICAgRmxvYXRSZWN0IGJvdW5kczsKKyAgICBib3VuZHMuc2V0V2lkdGgo
c3RkOjptYXgoMC5mLCBjZWlsZihtX2NvbnRlbnRzU2l6ZS53aWR0aCgpICogbV9jb250ZW50U2Nh
bGVGYWN0b3IpKSAtIHNpemUoKS53aWR0aCgpKTsKKyAgICBib3VuZHMuc2V0SGVpZ2h0KHN0ZDo6
bWF4KDAuZiwgY2VpbGYobV9jb250ZW50c1NpemUuaGVpZ2h0KCkgKiBtX2NvbnRlbnRTY2FsZUZh
Y3RvcikpIC0gc2l6ZSgpLmhlaWdodCgpKTsKKworICAgIG1fY29udGVudFBvc2l0aW9uLnNldFgo
Y2xhbXBUbyhwb3NpdGlvbi54KCksIGJvdW5kcy54KCksIGJvdW5kcy53aWR0aCgpKSk7CisgICAg
bV9jb250ZW50UG9zaXRpb24uc2V0WShjbGFtcFRvKHBvc2l0aW9uLnkoKSwgYm91bmRzLnkoKSwg
Ym91bmRzLmhlaWdodCgpKSk7Cit9CisKIHZvaWQgV2ViVmlldzo6c2V0VXNlclZpZXdwb3J0VHJh
bnNsYXRpb24oZG91YmxlIHR4LCBkb3VibGUgdHkpCiB7CiAgICAgbV91c2VyVmlld3BvcnRUcmFu
c2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLnRyYW5zbGF0ZSh0eCwgdHkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmll
dy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmll
dy5oCmluZGV4IGFkMzliYjFiMDExN2Y1YThhMWFkNDM4NjAzMDY1YzBmMmE5YjYyOGUuLmJmNjA2
ZGNiZGU0MmRhMzVhNjNlMzgyYjZhNzc4YWM5ZTkwNjYzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgKQEAgLTY5
LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudFNjYWxlRmFjdG9yKGZsb2F0
IHNjYWxlRmFjdG9yKSB7IG1fY29udGVudFNjYWxlRmFjdG9yID0gc2NhbGVGYWN0b3I7IH0KICAg
ICBmbG9hdCBjb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTY2Fs
ZUZhY3RvcjsgfQogCi0gICAgdm9pZCBzZXRDb250ZW50UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgcG9zaXRpb24pIHsgbV9jb250ZW50UG9zaXRpb24gPSBwb3NpdGlvbjsgfQor
ICAgIHZvaWQgc2V0Q29udGVudFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsK
ICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBjb250ZW50UG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2NvbnRlbnRQb3NpdGlvbjsgfQogCiAgICAgdm9pZCBzZXRVc2VyVmlld3BvcnRU
cmFuc2xhdGlvbihkb3VibGUgdHgsIGRvdWJsZSB0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI1ZGJiOTBlZmJjNjcyOWM0
ZmI5MmM5M2UxMTJjMGYzZjc2ZjVhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDAxIFJvYmVydCBQZW5uZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3Ig
dGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAgIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
IkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAq
IFJvYmVydCBQZW5uZXIncyBlYXNpbmcgZXF1YXRpb25zLiBodHRwOi8vd3d3LnJvYmVydHBlbm5l
ci5jb20vZWFzaW5nLworICogc3RhdGljIGZ1bmN0aW9uIGVhc2VJbk91dFF1YWQgKHQ6TnVtYmVy
LCBiOk51bWJlciwgYzpOdW1iZXIsIGQ6TnVtYmVyKTpOdW1iZXIgeworICogICAgIGlmICgodC89
ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0ICsgYjsKKyAqICAgICByZXR1cm4gLWMvMiAqICgoLS10
KSoodC0yKSAtIDEpICsgYjsKKyAqIH0KKyAqLworZmxvYXQgZWFzZUluT3V0UXVhZChmbG9hdCB0
aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25zdCBmbG9hdCBjb25zdGFudCwgY29uc3QgdW5zaWdu
ZWQgZHVyYXRpb24pCit7CisgICAgaWYgKHRpbWUgPiBkdXJhdGlvbiB8fCB0aW1lIDwgMCkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoKHRpbWUgLz0gKGR1cmF0aW9uIC8gMikpIDwgMSkK
KyAgICAgICAgcmV0dXJuIChjb25zdGFudCAvIDIpICogdGltZSAqIHRpbWUgKyBiYXNlOworCisg
ICAgdGltZSAtPSAxOworICAgIHJldHVybiAtMSAqIChjb25zdGFudCAvIDIpICogKHRpbWUgKiAo
dGltZSAtIDIpIC0gMSkgKyBiYXNlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
RWFzaW5nQ3VydmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJhMDQ2MjMxMjUxYzlhOTk1ZTNiNDQyNWU4ZDZk
NjdlYzE3YzNlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvRWFzaW5nQ3VydmVzLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwMSBSb2JlcnQgUGVubmVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBj
b250cmlidXRvcnMgbWF5IGJlCisgKiAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyJBUyBJUyIKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUK
KyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAq
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRWFzaW5nQ3VydmVz
X2gKKyNkZWZpbmUgRWFzaW5nQ3VydmVzX2gKKworZmxvYXQgZWFzZUluT3V0UXVhZChmbG9hdCB0
aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25zdCBmbG9hdCBjb25zdGFudCwgY29uc3QgdW5zaWdu
ZWQgZHVyYXRpb24pOworCisjZW5kaWYgLy8gRWFzaW5nQ3VydmVzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209251</attachid>
            <date>2013-08-20 23:06:31 -0700</date>
            <delta_ts>2013-08-20 23:23:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130821150630.patch</filename>
            <type>text/plain</type>
            <size>17030</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWJhZTc5MTA3NzhlZWE1
NmJhMDcyODVjODk4YWQxMjA5OTY1YWY3MS4uMzZkOTdkOTcxY2Y4YzBhMzUwNjlhNDhkNGM1MmM0
YzhhOGYzZjQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTA4LTIwICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTA3MTAxPiBbRUZMXVtXSzJdIEltcGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1
cmUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IHBhbiBnZXN0dXJlIHRvIHNjcm9sbCBwYWdlIGJ5IG1vdmVtZW50IG9mIHBvaW50IGFu
ZCBzdG9wCisgICAgICAgIHNjcm9sbGluZyBzbW9vdGhseSB1c2luZyBlYXNlLWluLW91dC1xdWFk
IGFsZ29yaXRobSBhZnRlciB0b3VjaGVkCisgICAgICAgIHBvaW50IGlzIHJlbW92ZWQgZnJvbSB0
aGUgc2NyZWVuLgorCisgICAgICAgIFVzZSBFY29yZV9BbmltYXRvciBpbiBvcmRlciB0byBwcm9j
ZXNzIG1vdmVtZW50IG9uY2UgcGVyIGVhY2ggZnJhbWluZworICAgICAgICB0aW1lIHNsb3QgaW5z
dGVhZCBvZiBwcm9jZXNzaW5nIGFsbCBtb3ZlbWVudC4KKworICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAg
ICAoRXdrVmlldzo6c2Nyb2xsQnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpHZXN0dXJlSGFuZGxlcik6CisgICAg
ICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjp+R2VzdHVyZUhhbmRsZXIpOgorICAgICAgICAo
V2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJl
SGFuZGxlcjo6cGFuQW5pbWF0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVI
YW5kbGVyOjpoYW5kbGVQYW5TdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRs
ZXI6OmhhbmRsZVBhbik6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQ
YW5GaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpmbGlja0FuaW1h
dG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6aGFuZGxlRmxp
Y2spOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6c2V0Q29udGVudFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9FYXNpbmdD
dXJ2ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKGVhc2VJbk91dFF1YWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmg6IEFkZGVkLgorCiAyMDEzLTA4LTE4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTE5OTg5PiBNYWtlIHVzZSBvZiBOb2RlOjpvd25lckRvY3VtZW50IGEgY29tcGlsZSB0aW1lIGVy
cm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDQ4OTVlOThlMjY3NTRkM2RmNWEwNTg2
ZDA0YzY1OTZlZWExMjA4ZWEuLjI3Yjg1ZDljYjBkOWFmNmY2ODIxMGI2OGU5MDEwMjQ4OGRkMjVl
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMDYsNiArMTA2LDcgQEAgbGlzdChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0SGlzdG9yeUNs
aWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcAog
ICAgIFVJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9l
ZmwvRWFzaW5nQ3VydmVzLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5jcHAK
ICAgICBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9G
aW5kQ2xpZW50RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3LmNwcAppbmRleCA1YmI4NDk3YTNmYmQ3NWI1ZTIyYzgzN2U4NjU1NmUzOTkzNGZlNTM5Li43
NzliNmMyNzAyMmFkNmJkMmYzMDZjZTAxOTU1ZjYyY2U3ZTBlOTg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtMTM5Miw2ICsxMzkyLDIwIEBA
IHZvaWQgRXdrVmlldzo6ZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBXS1BvaW50JiBwb2ludCwg
Y29uc3QgV0tSZWN0JiBhcmVhKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgRXdr
Vmlldzo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIFdLUG9pbnQgb2xk
UG9zaXRpb24gPSBXS1ZpZXdHZXRDb250ZW50UG9zaXRpb24od2tWaWV3KCkpOworICAgIEZsb2F0
UG9pbnQgbmV3UG9zaXRpb24gPSBGbG9hdFBvaW50KG9sZFBvc2l0aW9uLnggKyBvZmZzZXQud2lk
dGgoKSwgb2xkUG9zaXRpb24ueSArIG9mZnNldC5oZWlnaHQoKSk7CisgICAgV0tWaWV3U2V0Q29u
dGVudFBvc2l0aW9uKHdrVmlldygpLCBXS1BvaW50TWFrZShuZXdQb3NpdGlvbi54KCksIG5ld1Bv
c2l0aW9uLnkoKSkpOworCisgICAgV0tQb2ludCBwb3NpdGlvbiA9IFdLVmlld0dldENvbnRlbnRQ
b3NpdGlvbih3a1ZpZXcoKSk7CisgICAgZmxvYXQgY29udGVudFNjYWxlID0gV0tWaWV3R2V0Q29u
dGVudFNjYWxlRmFjdG9yKHdrVmlldygpKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIt
PmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShGbG9hdFBvaW50KHBvc2l0aW9uLnggLyBjb250
ZW50U2NhbGUsIHBvc2l0aW9uLnkgLyBjb250ZW50U2NhbGUpLCBjb250ZW50U2NhbGUpOworCisg
ICAgLy8gSWYgdGhlIHBhZ2UgcG9zaXRpb24gaXMgbm90IGNoYW5nZWQsIG5vdGlmeSB0aGF0IHVz
aW5nIHJldHVybmluZyB2YWx1ZS4KKyAgICByZXR1cm4gIShvbGRQb3NpdGlvbiA9PSBwb3NpdGlv
bik7Cit9CisKIEV2YXNfU21hcnRfQ2xhc3MgRXdrVmlldzo6cGFyZW50U21hcnRDbGFzcyA9IEVW
QVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogCiAvLyBGcmVlIEV3ayBWaWV3IGZ1bmN0aW9ucy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAppbmRleCBjNDZiMTUx
YTBkZDkxZGNlMTQxZjUyOWU2ZTM5MDU1MDAxMDRiZWE4Li4zMDZlMzZmMDFjYmM4OGYwYmRhZDJj
N2YwM2UwNTk0MTFhMGNiMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlldy5oCkBAIC0yMDIsNiArMjAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5mb3JtVVJM
Q2hhbmdlKCk7CiAKICAgICBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gdGFrZVNuYXBzaG90
KCk7CisgICAgYm9vbCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKICAgICB2
b2lkIGRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV0tQb2ludCYsIGNvbnN0IFdLUmVjdCYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVj
b2duaXplci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVj
b2duaXplci5jcHAKaW5kZXggMjE1YjMxNDdjOTJkNjY2ZGNmYjU3NTFmYzQ3Nzk0MDc0MTEyZDIx
NC4uYmYxMDI5MzgzOTI1ZTA3ZWM3MjNhMzE1ODUxMGZhMDkwNTRlOTYxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdlc3R1
cmVSZWNvZ25pemVyLmgiCiAKKyNpbmNsdWRlICJFYXNpbmdDdXJ2ZXMuaCIKICNpbmNsdWRlICJF
d2tWaWV3LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXS1NoYXJl
ZEFQSUNhc3QuaCIKQEAgLTQzLDEzICs0NCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEdlc3R1cmVIYW5kbGVyKGV3a1ZpZXcpKTsKICAgICB9CisgICAg
fkdlc3R1cmVIYW5kbGVyKCk7CiAKKyAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBoYW5kbGVT
aW5nbGVUYXAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZURvdWJs
ZVRhcChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlVGFwQW5kSG9s
ZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuU3RhcnRlZChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBoYW5kbGVQYW5GaW5pc2hlZCgpOworICAgIHZvaWQg
aGFuZGxlRmxpY2soY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgaGFuZGxlUGlu
Y2hTdGFydGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKTsKICAgICB2b2lkIGhh
bmRsZVBpbmNoKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKTsKICAgICB2b2lkIGhh
bmRsZVBpbmNoRmluaXNoZWQoKTsKQEAgLTU3LDEyICs2MSw1NCBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEdlc3R1cmVIYW5kbGVyKEV3a1ZpZXcqKTsKIAorICAgIHN0YXRpYyBF
aW5hX0Jvb2wgcGFuQW5pbWF0b3JDYWxsYmFjayh2b2lkKik7CisgICAgc3RhdGljIEVpbmFfQm9v
bCBmbGlja0FuaW1hdG9yQ2FsbGJhY2sodm9pZCopOworCisgICAgc3RhdGljIGNvbnN0IGludCBz
X2hpc3RvcnlDYXBhY2l0eSA9IDU7CisKICAgICBFd2tWaWV3KiBtX2V3a1ZpZXc7CisgICAgYm9v
bCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZDsKKyAgICBFY29yZV9BbmltYXRvciogbV9wYW5Bbmlt
YXRvcjsKKyAgICBFY29yZV9BbmltYXRvciogbV9mbGlja0FuaW1hdG9yOworICAgIFdlYkNvcmU6
OkludFNpemUgbV9mbGlja09mZnNldDsKKyAgICB1bnNpZ25lZCBtX2ZsaWNrRHVyYXRpb247Cisg
ICAgdW5zaWduZWQgbV9mbGlja0luZGV4OworCisgICAgc3RydWN0IFBvaW50SXRlbSB7CisgICAg
ICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50OworICAgICAgICBkb3VibGUgdGltZXN0YW1wOwor
ICAgIH07CisgICAgUG9pbnRJdGVtIG1fY3VycmVudFBvaW50SXRlbTsKKyAgICBQb2ludEl0ZW0g
bV9sYXN0UG9pbnRJdGVtOworICAgIFBvaW50SXRlbSBtX2xhc3RQcm9jZXNzZWRQb2ludEl0ZW07
CiB9OwogCiBHZXN0dXJlSGFuZGxlcjo6R2VzdHVyZUhhbmRsZXIoRXdrVmlldyogZXdrVmlldykK
ICAgICA6IG1fZXdrVmlldyhld2tWaWV3KQorICAgICwgbV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQo
ZmFsc2UpCisgICAgLCBtX3BhbkFuaW1hdG9yKDApCisgICAgLCBtX2ZsaWNrQW5pbWF0b3IoMCkK
KyAgICAsIG1fZmxpY2tEdXJhdGlvbigwKQorICAgICwgbV9mbGlja0luZGV4KDApCit7Cit9CisK
K0dlc3R1cmVIYW5kbGVyOjp+R2VzdHVyZUhhbmRsZXIoKQogeworICAgIHJlc2V0KCk7Cit9CisK
K3ZvaWQgR2VzdHVyZUhhbmRsZXI6OnJlc2V0KCkKK3sKKyAgICBpZiAobV9wYW5BbmltYXRvcikg
eworICAgICAgICBlY29yZV9hbmltYXRvcl9kZWwobV9wYW5BbmltYXRvcik7CisgICAgICAgIG1f
cGFuQW5pbWF0b3IgPSAwOworICAgIH0KKworICAgIGlmIChtX2ZsaWNrQW5pbWF0b3IpIHsKKyAg
ICAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKG1fZmxpY2tBbmltYXRvcik7CisgICAgICAgIG1fZmxp
Y2tBbmltYXRvciA9IDA7CisgICAgfQogfQogCiB2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVT
aW5nbGVUYXAoY29uc3QgSW50UG9pbnQmKQpAQCAtODAsMTkgKzEyNiw3MyBAQCB2b2lkIEdlc3R1
cmVIYW5kbGVyOjpoYW5kbGVUYXBBbmRIb2xkKGNvbnN0IEludFBvaW50JikKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQYW5TdGFydGVkKGNv
bnN0IEludFBvaW50JikKK0VpbmFfQm9vbCBHZXN0dXJlSGFuZGxlcjo6cGFuQW5pbWF0b3JDYWxs
YmFjayh2b2lkKiBkYXRhKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgR2VzdHVyZUhh
bmRsZXIqIGdlc3R1cmVIYW5kbGVyID0gc3RhdGljX2Nhc3Q8R2VzdHVyZUhhbmRsZXIqPihkYXRh
KTsKKyAgICBpZiAoIWdlc3R1cmVIYW5kbGVyLT5tX2lzQ3VycmVudFBvaW50VXBkYXRlZCB8fCBn
ZXN0dXJlSGFuZGxlci0+bV9sYXN0UHJvY2Vzc2VkUG9pbnRJdGVtLnBvaW50ID09IGdlc3R1cmVI
YW5kbGVyLT5tX2N1cnJlbnRQb2ludEl0ZW0ucG9pbnQpCisgICAgICAgIHJldHVybiBFQ09SRV9D
QUxMQkFDS19SRU5FVzsKKworICAgIGdlc3R1cmVIYW5kbGVyLT5tX2V3a1ZpZXctPnNjcm9sbEJ5
KGdlc3R1cmVIYW5kbGVyLT5tX2xhc3RQcm9jZXNzZWRQb2ludEl0ZW0ucG9pbnQgLSBnZXN0dXJl
SGFuZGxlci0+bV9jdXJyZW50UG9pbnRJdGVtLnBvaW50KTsKKyAgICBnZXN0dXJlSGFuZGxlci0+
bV9sYXN0UHJvY2Vzc2VkUG9pbnRJdGVtID0gZ2VzdHVyZUhhbmRsZXItPm1fY3VycmVudFBvaW50
SXRlbTsKKyAgICBnZXN0dXJlSGFuZGxlci0+bV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQgPSBmYWxz
ZTsKKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19SRU5FVzsKIH0KIAotdm9pZCBHZXN0dXJl
SGFuZGxlcjo6aGFuZGxlUGFuKGNvbnN0IEludFBvaW50JikKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6
OmhhbmRsZVBhblN0YXJ0ZWQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgQVNTRVJUKCFtX3BhbkFuaW1hdG9yKTsKKyAgICBtX3BhbkFuaW1hdG9y
ID0gZWNvcmVfYW5pbWF0b3JfYWRkKHBhbkFuaW1hdG9yQ2FsbGJhY2ssIHRoaXMpOworICAgIG1f
bGFzdFByb2Nlc3NlZFBvaW50SXRlbSA9IG1fbGFzdFBvaW50SXRlbSA9IG1fY3VycmVudFBvaW50
SXRlbSA9IHsgcG9pbnQsIDAgfTsKK30KKwordm9pZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFu
KGNvbnN0IEludFBvaW50JiBwb2ludCkKK3sKKyAgICAvLyBTYXZlIGxhc3QgcG9pbnQgdG8gdXNl
IHRvIGNhbGN1bGF0ZSBvZmZzZXQgb2YgZmxpY2suCisgICAgbV9sYXN0UG9pbnRJdGVtID0gbV9j
dXJyZW50UG9pbnRJdGVtOworICAgIG1fY3VycmVudFBvaW50SXRlbSA9IHsgcG9pbnQsIGVjb3Jl
X3RpbWVfZ2V0KCkgfTsKKyAgICBtX2lzQ3VycmVudFBvaW50VXBkYXRlZCA9IHRydWU7CiB9CiAK
IHZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhbkZpbmlzaGVkKCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIEFTU0VSVChtX3BhbkFuaW1hdG9yKTsKKyAgICBlY29yZV9hbmltYXRv
cl9kZWwobV9wYW5BbmltYXRvcik7CisgICAgbV9wYW5BbmltYXRvciA9IDA7CisKKyAgICBpZiAo
bV9sYXN0UG9pbnRJdGVtLnRpbWVzdGFtcCkgeworICAgICAgICAvLyBDYWxjdWxhdGUgb2Zmc2V0
IHRvIG1vdmUgZHVyaW5nIG9uZSBmcmFtZS4KKyAgICAgICAgZG91YmxlIGZyYW1lID0gKGVjb3Jl
X3RpbWVfZ2V0KCkgLSBtX2xhc3RQb2ludEl0ZW0udGltZXN0YW1wKSAvIGVjb3JlX2FuaW1hdG9y
X2ZyYW1ldGltZV9nZXQoKTsKKyAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSBtX2xhc3RQb2ludEl0
ZW0ucG9pbnQgLSBtX2N1cnJlbnRQb2ludEl0ZW0ucG9pbnQ7CisgICAgICAgIG9mZnNldC5zY2Fs
ZSgxIC8gZnJhbWUpOworICAgICAgICBoYW5kbGVGbGljayhvZmZzZXQpOworICAgIH0KK30KKwor
RWluYV9Cb29sIEdlc3R1cmVIYW5kbGVyOjpmbGlja0FuaW1hdG9yQ2FsbGJhY2sodm9pZCogZGF0
YSkKK3sKKyAgICBHZXN0dXJlSGFuZGxlciogZ2VzdHVyZUhhbmRsZXIgPSBzdGF0aWNfY2FzdDxH
ZXN0dXJlSGFuZGxlcio+KGRhdGEpOworICAgIGZsb2F0IG11bHRpcGxpZXIgPSBlYXNlSW5PdXRR
dWFkKGdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrSW5kZXgsIDAsIDEuMCwgZ2VzdHVyZUhhbmRsZXIt
Pm1fZmxpY2tEdXJhdGlvbik7CisgICAgZmxvYXQgb2Zmc2V0V2lkdGggPSBnZXN0dXJlSGFuZGxl
ci0+bV9mbGlja09mZnNldC53aWR0aCgpICogbXVsdGlwbGllcjsKKyAgICBmbG9hdCBvZmZzZXRI
ZWlnaHQgPSBnZXN0dXJlSGFuZGxlci0+bV9mbGlja09mZnNldC5oZWlnaHQoKSAqIG11bHRpcGxp
ZXI7CisgICAgb2Zmc2V0V2lkdGggPSAob2Zmc2V0V2lkdGggPiAwKSA/IGNlaWxmKG9mZnNldFdp
ZHRoKSA6IGZsb29yZihvZmZzZXRXaWR0aCk7CisgICAgb2Zmc2V0SGVpZ2h0ID0gKG9mZnNldEhl
aWdodCA+IDApID8gY2VpbGYob2Zmc2V0SGVpZ2h0KSA6IGZsb29yZihvZmZzZXRIZWlnaHQpOwor
ICAgIEludFNpemUgb2Zmc2V0KG9mZnNldFdpZHRoLCBvZmZzZXRIZWlnaHQpOworICAgIGdlc3R1
cmVIYW5kbGVyLT5tX2ZsaWNrSW5kZXgtLTsKKworICAgIGlmIChvZmZzZXQuaXNaZXJvKCkgfHwg
IWdlc3R1cmVIYW5kbGVyLT5tX2V3a1ZpZXctPnNjcm9sbEJ5KG9mZnNldCkgfHwgIWdlc3R1cmVI
YW5kbGVyLT5tX2ZsaWNrSW5kZXgpIHsKKyAgICAgICAgZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tB
bmltYXRvciA9IDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlRmxpY2soY29uc3QgSW50U2l6
ZSYgb2Zmc2V0KQoreworICAgIG1fZmxpY2tPZmZzZXQgPSBvZmZzZXQ7CisgICAgbV9mbGlja0lu
ZGV4ID0gbV9mbGlja0R1cmF0aW9uID0gMSAvIGVjb3JlX2FuaW1hdG9yX2ZyYW1ldGltZV9nZXQo
KTsKKyAgICBtX2ZsaWNrQW5pbWF0b3IgPSBlY29yZV9hbmltYXRvcl9hZGQoZmxpY2tBbmltYXRv
ckNhbGxiYWNrLCB0aGlzKTsKIH0KIAogdm9pZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGluY2hT
dGFydGVkKGNvbnN0IFZlY3RvcjxJbnRQb2ludD4mKQpAQCAtMTk2LDYgKzI5Niw4IEBAIHZvaWQg
R2VzdHVyZVJlY29nbml6ZXI6Om5vR2VzdHVyZShXS0V2ZW50VHlwZSB0eXBlLCBXS0FycmF5UmVm
IHRvdWNoUG9pbnRzKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2Uga1dLRXZlbnRU
eXBlVG91Y2hTdGFydDoKKyAgICAgICAgbV9nZXN0dXJlSGFuZGxlci0+cmVzZXQoKTsKKwogICAg
ICAgICBtX3JlY29nbml6ZXJGdW5jdGlvbiA9ICZHZXN0dXJlUmVjb2duaXplcjo6c2luZ2xlVGFw
R2VzdHVyZTsKICAgICAgICAgbV9maXJzdFByZXNzZWRQb2ludCA9IHRvSW50UG9pbnQoZ2V0UG9p
bnRBdEluZGV4KHRvdWNoUG9pbnRzLCAwKSk7CiAgICAgICAgIEFTU0VSVCghbV90YXBBbmRIb2xk
VGltZXIpOwpAQCAtMzQwLDYgKzQ0Miw3IEBAIHZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnBpbmNo
R2VzdHVyZShXS0V2ZW50VHlwZSB0eXBlLCBXS0FycmF5UmVmIHRvdWNoUG9pbnRzKQogdm9pZCBH
ZXN0dXJlUmVjb2duaXplcjo6cmVzZXQoKQogewogICAgIHN0b3BUYXBUaW1lcnMoKTsKKyAgICBt
X2dlc3R1cmVIYW5kbGVyLT5yZXNldCgpOwogCiAgICAgbV9yZWNvZ25pemVyRnVuY3Rpb24gPSAm
R2VzdHVyZVJlY29nbml6ZXI6Om5vR2VzdHVyZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKaW5kZXggMWMx
Y2E0YWFiYmFlYjE3ZWEzNGI2OTg4NDAxOGJkYWJmZjg5OWUwNy4uNDA5MzBjYWFjMTFjMzQxMTQ1
ZjYwN2Q0NGM3NGQxODI2MWNjODFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKQEAgLTExNCw2ICsxMTQs
MTYgQEAgdm9pZCBXZWJWaWV3OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICBtX3BhZ2Ut
PnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc1Zpc2libGUpOwogfQogCit2
b2lkIFdlYlZpZXc6OnNldENvbnRlbnRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBwb3NpdGlvbikKK3sKKyAgICBGbG9hdFJlY3QgYm91bmRzOworICAgIGJvdW5kcy5zZXRXaWR0
aChzdGQ6Om1heCgwLmYsIGNlaWxmKG1fY29udGVudHNTaXplLndpZHRoKCkgKiBtX2NvbnRlbnRT
Y2FsZUZhY3RvcikpIC0gc2l6ZSgpLndpZHRoKCkpOworICAgIGJvdW5kcy5zZXRIZWlnaHQoc3Rk
OjptYXgoMC5mLCBjZWlsZihtX2NvbnRlbnRzU2l6ZS5oZWlnaHQoKSAqIG1fY29udGVudFNjYWxl
RmFjdG9yKSkgLSBzaXplKCkuaGVpZ2h0KCkpOworCisgICAgbV9jb250ZW50UG9zaXRpb24uc2V0
WChjbGFtcFRvKHBvc2l0aW9uLngoKSwgYm91bmRzLngoKSwgYm91bmRzLndpZHRoKCkpKTsKKyAg
ICBtX2NvbnRlbnRQb3NpdGlvbi5zZXRZKGNsYW1wVG8ocG9zaXRpb24ueSgpLCBib3VuZHMueSgp
LCBib3VuZHMuaGVpZ2h0KCkpKTsKK30KKwogdm9pZCBXZWJWaWV3OjpzZXRVc2VyVmlld3BvcnRU
cmFuc2xhdGlvbihkb3VibGUgdHgsIGRvdWJsZSB0eSkKIHsKICAgICBtX3VzZXJWaWV3cG9ydFRy
YW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkudHJhbnNsYXRlKHR4LCB0eSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJW
aWV3LmgKaW5kZXggYWQzOWJiMWIwMTE3ZjVhOGExYWQ0Mzg2MDMwNjVjMGYyYTliNjI4ZS4uYmY2
MDZkY2JkZTQyZGEzNWE2M2UzODJiNmE3NzhhYzllOTA2NjMyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaApAQCAt
NjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50U2NhbGVGYWN0b3IoZmxv
YXQgc2NhbGVGYWN0b3IpIHsgbV9jb250ZW50U2NhbGVGYWN0b3IgPSBzY2FsZUZhY3RvcjsgfQog
ICAgIGZsb2F0IGNvbnRlbnRTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNj
YWxlRmFjdG9yOyB9CiAKLSAgICB2b2lkIHNldENvbnRlbnRQb3NpdGlvbihjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiBwb3NpdGlvbikgeyBtX2NvbnRlbnRQb3NpdGlvbiA9IHBvc2l0aW9uOyB9
CisgICAgdm9pZCBzZXRDb250ZW50UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
OwogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudFBvc2l0aW9uOyB9CiAKICAgICB2b2lkIHNldFVzZXJWaWV3cG9y
dFRyYW5zbGF0aW9uKGRvdWJsZSB0eCwgZG91YmxlIHR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjVkYmI5MGVmYmM2NzI5
YzRmYjkyYzkzZTExMmMwZjNmNzZmNWE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDEgUm9iZXJ0IFBlbm5lci4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5v
ciB0aGUgbmFtZXMgb2YgY29udHJpYnV0b3JzIG1heSBiZQorICogICAgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICog
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKgor
ICogUm9iZXJ0IFBlbm5lcidzIGVhc2luZyBlcXVhdGlvbnMuIGh0dHA6Ly93d3cucm9iZXJ0cGVu
bmVyLmNvbS9lYXNpbmcvCisgKiBzdGF0aWMgZnVuY3Rpb24gZWFzZUluT3V0UXVhZCAodDpOdW1i
ZXIsIGI6TnVtYmVyLCBjOk51bWJlciwgZDpOdW1iZXIpOk51bWJlciB7CisgKiAgICAgaWYgKCh0
Lz1kLzIpIDwgMSkgcmV0dXJuIGMvMip0KnQgKyBiOworICogICAgIHJldHVybiAtYy8yICogKCgt
LXQpKih0LTIpIC0gMSkgKyBiOworICogfQorICovCitmbG9hdCBlYXNlSW5PdXRRdWFkKGZsb2F0
IHRpbWUsIGNvbnN0IGZsb2F0IGJhc2UsIGNvbnN0IGZsb2F0IGNvbnN0YW50LCBjb25zdCB1bnNp
Z25lZCBkdXJhdGlvbikKK3sKKyAgICBpZiAodGltZSA+IGR1cmF0aW9uIHx8IHRpbWUgPCAwKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICgodGltZSAvPSAoZHVyYXRpb24gLyAyKSkgPCAx
KQorICAgICAgICByZXR1cm4gKGNvbnN0YW50IC8gMikgKiB0aW1lICogdGltZSArIGJhc2U7CisK
KyAgICB0aW1lIC09IDE7CisgICAgcmV0dXJuIC0xICogKGNvbnN0YW50IC8gMikgKiAodGltZSAq
ICh0aW1lIC0gMikgLSAxKSArIGJhc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9FYXNpbmdDdXJ2ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmEwNDYyMzEyNTFjOWE5OTVlM2I0NDI1ZThk
NmQ2N2VjMTdjM2VmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9FYXNpbmdDdXJ2ZXMuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDAxIFJvYmVydCBQZW5uZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9m
IGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQor
ICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFYXNpbmdDdXJ2
ZXNfaAorI2RlZmluZSBFYXNpbmdDdXJ2ZXNfaAorCitmbG9hdCBlYXNlSW5PdXRRdWFkKGZsb2F0
IHRpbWUsIGNvbnN0IGZsb2F0IGJhc2UsIGNvbnN0IGZsb2F0IGNvbnN0YW50LCBjb25zdCB1bnNp
Z25lZCBkdXJhdGlvbik7CisKKyNlbmRpZiAvLyBFYXNpbmdDdXJ2ZXNfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209252</attachid>
            <date>2013-08-20 23:23:59 -0700</date>
            <delta_ts>2013-08-21 22:42:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130821152358.patch</filename>
            <type>text/plain</type>
            <size>16983</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWJhZTc5MTA3NzhlZWE1
NmJhMDcyODVjODk4YWQxMjA5OTY1YWY3MS4uMzZkOTdkOTcxY2Y4YzBhMzUwNjlhNDhkNGM1MmM0
YzhhOGYzZjQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTA4LTIwICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTA3MTAxPiBbRUZMXVtXSzJdIEltcGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1
cmUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IHBhbiBnZXN0dXJlIHRvIHNjcm9sbCBwYWdlIGJ5IG1vdmVtZW50IG9mIHBvaW50IGFu
ZCBzdG9wCisgICAgICAgIHNjcm9sbGluZyBzbW9vdGhseSB1c2luZyBlYXNlLWluLW91dC1xdWFk
IGFsZ29yaXRobSBhZnRlciB0b3VjaGVkCisgICAgICAgIHBvaW50IGlzIHJlbW92ZWQgZnJvbSB0
aGUgc2NyZWVuLgorCisgICAgICAgIFVzZSBFY29yZV9BbmltYXRvciBpbiBvcmRlciB0byBwcm9j
ZXNzIG1vdmVtZW50IG9uY2UgcGVyIGVhY2ggZnJhbWluZworICAgICAgICB0aW1lIHNsb3QgaW5z
dGVhZCBvZiBwcm9jZXNzaW5nIGFsbCBtb3ZlbWVudC4KKworICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAg
ICAoRXdrVmlldzo6c2Nyb2xsQnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpHZXN0dXJlSGFuZGxlcik6CisgICAg
ICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjp+R2VzdHVyZUhhbmRsZXIpOgorICAgICAgICAo
V2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJl
SGFuZGxlcjo6cGFuQW5pbWF0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVI
YW5kbGVyOjpoYW5kbGVQYW5TdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRs
ZXI6OmhhbmRsZVBhbik6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQ
YW5GaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpmbGlja0FuaW1h
dG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6aGFuZGxlRmxp
Y2spOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6c2V0Q29udGVudFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9FYXNpbmdD
dXJ2ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKGVhc2VJbk91dFF1YWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmg6IEFkZGVkLgorCiAyMDEzLTA4LTE4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTE5OTg5PiBNYWtlIHVzZSBvZiBOb2RlOjpvd25lckRvY3VtZW50IGEgY29tcGlsZSB0aW1lIGVy
cm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDQ4OTVlOThlMjY3NTRkM2RmNWEwNTg2
ZDA0YzY1OTZlZWExMjA4ZWEuLjI3Yjg1ZDljYjBkOWFmNmY2ODIxMGI2OGU5MDEwMjQ4OGRkMjVl
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMDYsNiArMTA2LDcgQEAgbGlzdChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0SGlzdG9yeUNs
aWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcAog
ICAgIFVJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9l
ZmwvRWFzaW5nQ3VydmVzLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5jcHAK
ICAgICBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9G
aW5kQ2xpZW50RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3LmNwcAppbmRleCA1YmI4NDk3YTNmYmQ3NWI1ZTIyYzgzN2U4NjU1NmUzOTkzNGZlNTM5Li43
NzliNmMyNzAyMmFkNmJkMmYzMDZjZTAxOTU1ZjYyY2U3ZTBlOTg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtMTM5Miw2ICsxMzkyLDIwIEBA
IHZvaWQgRXdrVmlldzo6ZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBXS1BvaW50JiBwb2ludCwg
Y29uc3QgV0tSZWN0JiBhcmVhKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgRXdr
Vmlldzo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIFdLUG9pbnQgb2xk
UG9zaXRpb24gPSBXS1ZpZXdHZXRDb250ZW50UG9zaXRpb24od2tWaWV3KCkpOworICAgIEZsb2F0
UG9pbnQgbmV3UG9zaXRpb24gPSBGbG9hdFBvaW50KG9sZFBvc2l0aW9uLnggKyBvZmZzZXQud2lk
dGgoKSwgb2xkUG9zaXRpb24ueSArIG9mZnNldC5oZWlnaHQoKSk7CisgICAgV0tWaWV3U2V0Q29u
dGVudFBvc2l0aW9uKHdrVmlldygpLCBXS1BvaW50TWFrZShuZXdQb3NpdGlvbi54KCksIG5ld1Bv
c2l0aW9uLnkoKSkpOworCisgICAgV0tQb2ludCBwb3NpdGlvbiA9IFdLVmlld0dldENvbnRlbnRQ
b3NpdGlvbih3a1ZpZXcoKSk7CisgICAgZmxvYXQgY29udGVudFNjYWxlID0gV0tWaWV3R2V0Q29u
dGVudFNjYWxlRmFjdG9yKHdrVmlldygpKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIt
PmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShGbG9hdFBvaW50KHBvc2l0aW9uLnggLyBjb250
ZW50U2NhbGUsIHBvc2l0aW9uLnkgLyBjb250ZW50U2NhbGUpLCBjb250ZW50U2NhbGUpOworCisg
ICAgLy8gSWYgdGhlIHBhZ2UgcG9zaXRpb24gaXMgbm90IGNoYW5nZWQsIG5vdGlmeSB0aGF0IHVz
aW5nIHJldHVybmluZyB2YWx1ZS4KKyAgICByZXR1cm4gIShvbGRQb3NpdGlvbiA9PSBwb3NpdGlv
bik7Cit9CisKIEV2YXNfU21hcnRfQ2xhc3MgRXdrVmlldzo6cGFyZW50U21hcnRDbGFzcyA9IEVW
QVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogCiAvLyBGcmVlIEV3ayBWaWV3IGZ1bmN0aW9ucy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAppbmRleCBjNDZiMTUx
YTBkZDkxZGNlMTQxZjUyOWU2ZTM5MDU1MDAxMDRiZWE4Li4zMDZlMzZmMDFjYmM4OGYwYmRhZDJj
N2YwM2UwNTk0MTFhMGNiMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlldy5oCkBAIC0yMDIsNiArMjAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5mb3JtVVJM
Q2hhbmdlKCk7CiAKICAgICBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gdGFrZVNuYXBzaG90
KCk7CisgICAgYm9vbCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKICAgICB2
b2lkIGRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV0tQb2ludCYsIGNvbnN0IFdLUmVjdCYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVj
b2duaXplci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVj
b2duaXplci5jcHAKaW5kZXggMjE1YjMxNDdjOTJkNjY2ZGNmYjU3NTFmYzQ3Nzk0MDc0MTEyZDIx
NC4uODQ2YjUxNDZhZjIyZGIwNDI1NWU5NDYwMWM0YTM3ZjFlMmZjYzE0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdlc3R1
cmVSZWNvZ25pemVyLmgiCiAKKyNpbmNsdWRlICJFYXNpbmdDdXJ2ZXMuaCIKICNpbmNsdWRlICJF
d2tWaWV3LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXS1NoYXJl
ZEFQSUNhc3QuaCIKQEAgLTQzLDEzICs0NCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEdlc3R1cmVIYW5kbGVyKGV3a1ZpZXcpKTsKICAgICB9CisgICAg
fkdlc3R1cmVIYW5kbGVyKCk7CiAKKyAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBoYW5kbGVT
aW5nbGVUYXAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZURvdWJs
ZVRhcChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlVGFwQW5kSG9s
ZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuU3RhcnRlZChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBoYW5kbGVQYW5GaW5pc2hlZCgpOworICAgIHZvaWQg
aGFuZGxlRmxpY2soY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgaGFuZGxlUGlu
Y2hTdGFydGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKTsKICAgICB2b2lkIGhh
bmRsZVBpbmNoKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKTsKICAgICB2b2lkIGhh
bmRsZVBpbmNoRmluaXNoZWQoKTsKQEAgLTU3LDEyICs2MSw1MiBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEdlc3R1cmVIYW5kbGVyKEV3a1ZpZXcqKTsKIAorICAgIHN0YXRpYyBF
aW5hX0Jvb2wgcGFuQW5pbWF0b3JDYWxsYmFjayh2b2lkKik7CisgICAgc3RhdGljIEVpbmFfQm9v
bCBmbGlja0FuaW1hdG9yQ2FsbGJhY2sodm9pZCopOworCiAgICAgRXdrVmlldyogbV9ld2tWaWV3
OworICAgIGJvb2wgbV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQ7CisgICAgRWNvcmVfQW5pbWF0b3Iq
IG1fcGFuQW5pbWF0b3I7CisgICAgRWNvcmVfQW5pbWF0b3IqIG1fZmxpY2tBbmltYXRvcjsKKyAg
ICBXZWJDb3JlOjpJbnRTaXplIG1fZmxpY2tPZmZzZXQ7CisgICAgdW5zaWduZWQgbV9mbGlja0R1
cmF0aW9uOworICAgIHVuc2lnbmVkIG1fZmxpY2tJbmRleDsKKworICAgIHN0cnVjdCBQb2ludEl0
ZW0geworICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBwb2ludDsKKyAgICAgICAgZG91YmxlIHRp
bWVzdGFtcDsKKyAgICB9OworICAgIFBvaW50SXRlbSBtX2N1cnJlbnRQb2ludEl0ZW07CisgICAg
UG9pbnRJdGVtIG1fbGFzdFBvaW50SXRlbTsKKyAgICBQb2ludEl0ZW0gbV9sYXN0UHJvY2Vzc2Vk
UG9pbnRJdGVtOwogfTsKIAogR2VzdHVyZUhhbmRsZXI6Okdlc3R1cmVIYW5kbGVyKEV3a1ZpZXcq
IGV3a1ZpZXcpCiAgICAgOiBtX2V3a1ZpZXcoZXdrVmlldykKKyAgICAsIG1faXNDdXJyZW50UG9p
bnRVcGRhdGVkKGZhbHNlKQorICAgICwgbV9wYW5BbmltYXRvcigwKQorICAgICwgbV9mbGlja0Fu
aW1hdG9yKDApCisgICAgLCBtX2ZsaWNrRHVyYXRpb24oMCkKKyAgICAsIG1fZmxpY2tJbmRleCgw
KQoreworfQorCitHZXN0dXJlSGFuZGxlcjo6fkdlc3R1cmVIYW5kbGVyKCkKK3sKKyAgICByZXNl
dCgpOworfQorCit2b2lkIEdlc3R1cmVIYW5kbGVyOjpyZXNldCgpCiB7CisgICAgaWYgKG1fcGFu
QW5pbWF0b3IpIHsKKyAgICAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKG1fcGFuQW5pbWF0b3IpOwor
ICAgICAgICBtX3BhbkFuaW1hdG9yID0gMDsKKyAgICB9CisKKyAgICBpZiAobV9mbGlja0FuaW1h
dG9yKSB7CisgICAgICAgIGVjb3JlX2FuaW1hdG9yX2RlbChtX2ZsaWNrQW5pbWF0b3IpOworICAg
ICAgICBtX2ZsaWNrQW5pbWF0b3IgPSAwOworICAgIH0KIH0KIAogdm9pZCBHZXN0dXJlSGFuZGxl
cjo6aGFuZGxlU2luZ2xlVGFwKGNvbnN0IEludFBvaW50JikKQEAgLTgwLDE5ICsxMjQsNzMgQEAg
dm9pZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlVGFwQW5kSG9sZChjb25zdCBJbnRQb2ludCYpCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFu
U3RhcnRlZChjb25zdCBJbnRQb2ludCYpCitFaW5hX0Jvb2wgR2VzdHVyZUhhbmRsZXI6OnBhbkFu
aW1hdG9yQ2FsbGJhY2sodm9pZCogZGF0YSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IEdlc3R1cmVIYW5kbGVyKiBnZXN0dXJlSGFuZGxlciA9IHN0YXRpY19jYXN0PEdlc3R1cmVIYW5k
bGVyKj4oZGF0YSk7CisgICAgaWYgKCFnZXN0dXJlSGFuZGxlci0+bV9pc0N1cnJlbnRQb2ludFVw
ZGF0ZWQgfHwgZ2VzdHVyZUhhbmRsZXItPm1fbGFzdFByb2Nlc3NlZFBvaW50SXRlbS5wb2ludCA9
PSBnZXN0dXJlSGFuZGxlci0+bV9jdXJyZW50UG9pbnRJdGVtLnBvaW50KQorICAgICAgICByZXR1
cm4gRUNPUkVfQ0FMTEJBQ0tfUkVORVc7CisKKyAgICBnZXN0dXJlSGFuZGxlci0+bV9ld2tWaWV3
LT5zY3JvbGxCeShnZXN0dXJlSGFuZGxlci0+bV9sYXN0UHJvY2Vzc2VkUG9pbnRJdGVtLnBvaW50
IC0gZ2VzdHVyZUhhbmRsZXItPm1fY3VycmVudFBvaW50SXRlbS5wb2ludCk7CisgICAgZ2VzdHVy
ZUhhbmRsZXItPm1fbGFzdFByb2Nlc3NlZFBvaW50SXRlbSA9IGdlc3R1cmVIYW5kbGVyLT5tX2N1
cnJlbnRQb2ludEl0ZW07CisgICAgZ2VzdHVyZUhhbmRsZXItPm1faXNDdXJyZW50UG9pbnRVcGRh
dGVkID0gZmFsc2U7CisKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfUkVORVc7CiB9CiAKLXZv
aWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhbihjb25zdCBJbnRQb2ludCYpCit2b2lkIEdlc3R1
cmVIYW5kbGVyOjpoYW5kbGVQYW5TdGFydGVkKGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVCghbV9wYW5BbmltYXRvcik7CisgICAgbV9w
YW5BbmltYXRvciA9IGVjb3JlX2FuaW1hdG9yX2FkZChwYW5BbmltYXRvckNhbGxiYWNrLCB0aGlz
KTsKKyAgICBtX2xhc3RQcm9jZXNzZWRQb2ludEl0ZW0gPSBtX2xhc3RQb2ludEl0ZW0gPSBtX2N1
cnJlbnRQb2ludEl0ZW0gPSB7IHBvaW50LCAwIH07Cit9CisKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6
OmhhbmRsZVBhbihjb25zdCBJbnRQb2ludCYgcG9pbnQpCit7CisgICAgLy8gU2F2ZSBsYXN0IHBv
aW50IHRvIHVzZSB0byBjYWxjdWxhdGUgb2Zmc2V0IG9mIGZsaWNrLgorICAgIG1fbGFzdFBvaW50
SXRlbSA9IG1fY3VycmVudFBvaW50SXRlbTsKKyAgICBtX2N1cnJlbnRQb2ludEl0ZW0gPSB7IHBv
aW50LCBlY29yZV90aW1lX2dldCgpIH07CisgICAgbV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQgPSB0
cnVlOwogfQogCiB2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQYW5GaW5pc2hlZCgpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQobV9wYW5BbmltYXRvcik7CisgICAgZWNv
cmVfYW5pbWF0b3JfZGVsKG1fcGFuQW5pbWF0b3IpOworICAgIG1fcGFuQW5pbWF0b3IgPSAwOwor
CisgICAgaWYgKG1fbGFzdFBvaW50SXRlbS50aW1lc3RhbXApIHsKKyAgICAgICAgLy8gQ2FsY3Vs
YXRlIG9mZnNldCB0byBtb3ZlIGR1cmluZyBvbmUgZnJhbWUuCisgICAgICAgIGRvdWJsZSBmcmFt
ZSA9IChlY29yZV90aW1lX2dldCgpIC0gbV9sYXN0UG9pbnRJdGVtLnRpbWVzdGFtcCkgLyBlY29y
ZV9hbmltYXRvcl9mcmFtZXRpbWVfZ2V0KCk7CisgICAgICAgIEludFNpemUgb2Zmc2V0ID0gbV9s
YXN0UG9pbnRJdGVtLnBvaW50IC0gbV9jdXJyZW50UG9pbnRJdGVtLnBvaW50OworICAgICAgICBv
ZmZzZXQuc2NhbGUoMSAvIGZyYW1lKTsKKyAgICAgICAgaGFuZGxlRmxpY2sob2Zmc2V0KTsKKyAg
ICB9Cit9CisKK0VpbmFfQm9vbCBHZXN0dXJlSGFuZGxlcjo6ZmxpY2tBbmltYXRvckNhbGxiYWNr
KHZvaWQqIGRhdGEpCit7CisgICAgR2VzdHVyZUhhbmRsZXIqIGdlc3R1cmVIYW5kbGVyID0gc3Rh
dGljX2Nhc3Q8R2VzdHVyZUhhbmRsZXIqPihkYXRhKTsKKyAgICBmbG9hdCBtdWx0aXBsaWVyID0g
ZWFzZUluT3V0UXVhZChnZXN0dXJlSGFuZGxlci0+bV9mbGlja0luZGV4LCAwLCAxLjAsIGdlc3R1
cmVIYW5kbGVyLT5tX2ZsaWNrRHVyYXRpb24pOworICAgIGZsb2F0IG9mZnNldFdpZHRoID0gZ2Vz
dHVyZUhhbmRsZXItPm1fZmxpY2tPZmZzZXQud2lkdGgoKSAqIG11bHRpcGxpZXI7CisgICAgZmxv
YXQgb2Zmc2V0SGVpZ2h0ID0gZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tPZmZzZXQuaGVpZ2h0KCkg
KiBtdWx0aXBsaWVyOworICAgIG9mZnNldFdpZHRoID0gKG9mZnNldFdpZHRoID4gMCkgPyBjZWls
ZihvZmZzZXRXaWR0aCkgOiBmbG9vcmYob2Zmc2V0V2lkdGgpOworICAgIG9mZnNldEhlaWdodCA9
IChvZmZzZXRIZWlnaHQgPiAwKSA/IGNlaWxmKG9mZnNldEhlaWdodCkgOiBmbG9vcmYob2Zmc2V0
SGVpZ2h0KTsKKyAgICBJbnRTaXplIG9mZnNldChvZmZzZXRXaWR0aCwgb2Zmc2V0SGVpZ2h0KTsK
KyAgICBnZXN0dXJlSGFuZGxlci0+bV9mbGlja0luZGV4LS07CisKKyAgICBpZiAob2Zmc2V0Lmlz
WmVybygpIHx8ICFnZXN0dXJlSGFuZGxlci0+bV9ld2tWaWV3LT5zY3JvbGxCeShvZmZzZXQpIHx8
ICFnZXN0dXJlSGFuZGxlci0+bV9mbGlja0luZGV4KSB7CisgICAgICAgIGdlc3R1cmVIYW5kbGVy
LT5tX2ZsaWNrQW5pbWF0b3IgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZUZsaWNrKGNv
bnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBtX2ZsaWNrT2Zmc2V0ID0gb2Zmc2V0OworICAg
IG1fZmxpY2tJbmRleCA9IG1fZmxpY2tEdXJhdGlvbiA9IDEgLyBlY29yZV9hbmltYXRvcl9mcmFt
ZXRpbWVfZ2V0KCk7CisgICAgbV9mbGlja0FuaW1hdG9yID0gZWNvcmVfYW5pbWF0b3JfYWRkKGZs
aWNrQW5pbWF0b3JDYWxsYmFjaywgdGhpcyk7CiB9CiAKIHZvaWQgR2VzdHVyZUhhbmRsZXI6Omhh
bmRsZVBpbmNoU3RhcnRlZChjb25zdCBWZWN0b3I8SW50UG9pbnQ+JikKQEAgLTE5Niw2ICsyOTQs
OCBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmUoV0tFdmVudFR5cGUgdHlwZSwg
V0tBcnJheVJlZiB0b3VjaFBvaW50cykKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNl
IGtXS0V2ZW50VHlwZVRvdWNoU3RhcnQ6CisgICAgICAgIG1fZ2VzdHVyZUhhbmRsZXItPnJlc2V0
KCk7CisKICAgICAgICAgbV9yZWNvZ25pemVyRnVuY3Rpb24gPSAmR2VzdHVyZVJlY29nbml6ZXI6
OnNpbmdsZVRhcEdlc3R1cmU7CiAgICAgICAgIG1fZmlyc3RQcmVzc2VkUG9pbnQgPSB0b0ludFBv
aW50KGdldFBvaW50QXRJbmRleCh0b3VjaFBvaW50cywgMCkpOwogICAgICAgICBBU1NFUlQoIW1f
dGFwQW5kSG9sZFRpbWVyKTsKQEAgLTM0MCw2ICs0NDAsNyBAQCB2b2lkIEdlc3R1cmVSZWNvZ25p
emVyOjpwaW5jaEdlc3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50
cykKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0KCkKIHsKICAgICBzdG9wVGFwVGltZXJz
KCk7CisgICAgbV9nZXN0dXJlSGFuZGxlci0+cmVzZXQoKTsKIAogICAgIG1fcmVjb2duaXplckZ1
bmN0aW9uID0gJkdlc3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3Bw
CmluZGV4IDFjMWNhNGFhYmJhZWIxN2VhMzRiNjk4ODQwMThiZGFiZmY4OTllMDcuLjQwOTMwY2Fh
YzExYzM0MTE0NWY2MDdkNDRjNzRkMTgyNjFjYzgxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCkBAIC0x
MTQsNiArMTE0LDE2IEBAIHZvaWQgV2ViVmlldzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAg
ICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxl
KTsKIH0KIAordm9pZCBXZWJWaWV3OjpzZXRDb250ZW50UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgcG9zaXRpb24pCit7CisgICAgRmxvYXRSZWN0IGJvdW5kczsKKyAgICBib3Vu
ZHMuc2V0V2lkdGgoc3RkOjptYXgoMC5mLCBjZWlsZihtX2NvbnRlbnRzU2l6ZS53aWR0aCgpICog
bV9jb250ZW50U2NhbGVGYWN0b3IpKSAtIHNpemUoKS53aWR0aCgpKTsKKyAgICBib3VuZHMuc2V0
SGVpZ2h0KHN0ZDo6bWF4KDAuZiwgY2VpbGYobV9jb250ZW50c1NpemUuaGVpZ2h0KCkgKiBtX2Nv
bnRlbnRTY2FsZUZhY3RvcikpIC0gc2l6ZSgpLmhlaWdodCgpKTsKKworICAgIG1fY29udGVudFBv
c2l0aW9uLnNldFgoY2xhbXBUbyhwb3NpdGlvbi54KCksIGJvdW5kcy54KCksIGJvdW5kcy53aWR0
aCgpKSk7CisgICAgbV9jb250ZW50UG9zaXRpb24uc2V0WShjbGFtcFRvKHBvc2l0aW9uLnkoKSwg
Ym91bmRzLnkoKSwgYm91bmRzLmhlaWdodCgpKSk7Cit9CisKIHZvaWQgV2ViVmlldzo6c2V0VXNl
clZpZXdwb3J0VHJhbnNsYXRpb24oZG91YmxlIHR4LCBkb3VibGUgdHkpCiB7CiAgICAgbV91c2Vy
Vmlld3BvcnRUcmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLnRyYW5zbGF0ZSh0eCwg
dHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViVmlldy5oCmluZGV4IGFkMzliYjFiMDExN2Y1YThhMWFkNDM4NjAzMDY1YzBmMmE5
YjYyOGUuLmJmNjA2ZGNiZGU0MmRhMzVhNjNlMzgyYjZhNzc4YWM5ZTkwNjYzMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJW
aWV3LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudFNjYWxl
RmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKSB7IG1fY29udGVudFNjYWxlRmFjdG9yID0gc2NhbGVG
YWN0b3I7IH0KICAgICBmbG9hdCBjb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnRTY2FsZUZhY3RvcjsgfQogCi0gICAgdm9pZCBzZXRDb250ZW50UG9zaXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24pIHsgbV9jb250ZW50UG9zaXRpb24gPSBw
b3NpdGlvbjsgfQorICAgIHZvaWQgc2V0Q29udGVudFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmKTsKICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBjb250ZW50UG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRQb3NpdGlvbjsgfQogCiAgICAgdm9pZCBzZXRV
c2VyVmlld3BvcnRUcmFuc2xhdGlvbihkb3VibGUgdHgsIGRvdWJsZSB0eSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI1ZGJi
OTBlZmJjNjcyOWM0ZmI5MmM5M2UxMTJjMGYzZjc2ZjVhNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmNwcApAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAxIFJvYmVydCBQZW5uZXIuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
IGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAgIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJl
CisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLyoKKyAqIFJvYmVydCBQZW5uZXIncyBlYXNpbmcgZXF1YXRpb25zLiBodHRwOi8vd3d3
LnJvYmVydHBlbm5lci5jb20vZWFzaW5nLworICogc3RhdGljIGZ1bmN0aW9uIGVhc2VJbk91dFF1
YWQgKHQ6TnVtYmVyLCBiOk51bWJlciwgYzpOdW1iZXIsIGQ6TnVtYmVyKTpOdW1iZXIgeworICog
ICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0ICsgYjsKKyAqICAgICByZXR1cm4g
LWMvMiAqICgoLS10KSoodC0yKSAtIDEpICsgYjsKKyAqIH0KKyAqLworZmxvYXQgZWFzZUluT3V0
UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25zdCBmbG9hdCBjb25zdGFudCwg
Y29uc3QgdW5zaWduZWQgZHVyYXRpb24pCit7CisgICAgaWYgKHRpbWUgPiBkdXJhdGlvbiB8fCB0
aW1lIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoKHRpbWUgLz0gKGR1cmF0aW9u
IC8gMikpIDwgMSkKKyAgICAgICAgcmV0dXJuIChjb25zdGFudCAvIDIpICogdGltZSAqIHRpbWUg
KyBiYXNlOworCisgICAgdGltZSAtPSAxOworICAgIHJldHVybiAtMSAqIChjb25zdGFudCAvIDIp
ICogKHRpbWUgKiAodGltZSAtIDIpIC0gMSkgKyBiYXNlOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJhMDQ2MjMxMjUxYzlhOTk1
ZTNiNDQyNWU4ZDZkNjdlYzE3YzNlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRo
ZSBuYW1lcyBvZiBjb250cmlidXRvcnMgbWF5IGJlCisgKiAgICB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyJB
UyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
RWFzaW5nQ3VydmVzX2gKKyNkZWZpbmUgRWFzaW5nQ3VydmVzX2gKKworZmxvYXQgZWFzZUluT3V0
UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25zdCBmbG9hdCBjb25zdGFudCwg
Y29uc3QgdW5zaWduZWQgZHVyYXRpb24pOworCisjZW5kaWYgLy8gRWFzaW5nQ3VydmVzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209325</attachid>
            <date>2013-08-21 22:23:24 -0700</date>
            <delta_ts>2013-08-23 01:52:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130822142323.patch</filename>
            <type>text/plain</type>
            <size>17439</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWJhZTc5MTA3NzhlZWE1
NmJhMDcyODVjODk4YWQxMjA5OTY1YWY3MS4uYjdjM2FiMTg3NWQ1NmIwZTA4ZjExMDM5Y2M2ODUz
M2E2MTJlNTk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTA4LTIxICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTA3MTAxPiBbRUZMXVtXSzJdIEltcGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1
cmUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IHBhbiBnZXN0dXJlIHRvIHNjcm9sbCBwYWdlIGJ5IG1vdmVtZW50IG9mIHBvaW50IGFu
ZCBzdG9wCisgICAgICAgIHNjcm9sbGluZyBzbW9vdGhseSB1c2luZyBlYXNlLWluLW91dC1xdWFk
IGFsZ29yaXRobSBhZnRlciB0b3VjaGVkCisgICAgICAgIHBvaW50IGlzIHJlbW92ZWQgZnJvbSB0
aGUgc2NyZWVuLgorCisgICAgICAgIFVzZSBFY29yZV9BbmltYXRvciBpbiBvcmRlciB0byBwcm9j
ZXNzIG1vdmVtZW50IG9uY2UgcGVyIGVhY2ggZnJhbWluZworICAgICAgICB0aW1lIHNsb3QgaW5z
dGVhZCBvZiBwcm9jZXNzaW5nIGFsbCBtb3ZlbWVudC4KKworICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAg
ICAoRXdrVmlldzo6c2Nyb2xsQnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpHZXN0dXJlSGFuZGxlcik6CisgICAg
ICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjp+R2VzdHVyZUhhbmRsZXIpOgorICAgICAgICAo
V2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJl
SGFuZGxlcjo6cGFuQW5pbWF0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVI
YW5kbGVyOjpoYW5kbGVQYW5TdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRs
ZXI6OmhhbmRsZVBhbik6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQ
YW5GaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpmbGlja0FuaW1h
dG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6aGFuZGxlRmxp
Y2spOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6c2V0Q29udGVudFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9FYXNpbmdD
dXJ2ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKGVhc2VJbk91dFF1YWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmg6IEFkZGVkLgorCiAyMDEzLTA4LTE4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTE5OTg5PiBNYWtlIHVzZSBvZiBOb2RlOjpvd25lckRvY3VtZW50IGEgY29tcGlsZSB0aW1lIGVy
cm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDQ4OTVlOThlMjY3NTRkM2RmNWEwNTg2
ZDA0YzY1OTZlZWExMjA4ZWEuLjI3Yjg1ZDljYjBkOWFmNmY2ODIxMGI2OGU5MDEwMjQ4OGRkMjVl
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMDYsNiArMTA2LDcgQEAgbGlzdChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0SGlzdG9yeUNs
aWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcAog
ICAgIFVJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9l
ZmwvRWFzaW5nQ3VydmVzLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5jcHAK
ICAgICBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9G
aW5kQ2xpZW50RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3LmNwcAppbmRleCA1YmI4NDk3YTNmYmQ3NWI1ZTIyYzgzN2U4NjU1NmUzOTkzNGZlNTM5Li43
NzliNmMyNzAyMmFkNmJkMmYzMDZjZTAxOTU1ZjYyY2U3ZTBlOTg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtMTM5Miw2ICsxMzkyLDIwIEBA
IHZvaWQgRXdrVmlldzo6ZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBXS1BvaW50JiBwb2ludCwg
Y29uc3QgV0tSZWN0JiBhcmVhKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgRXdr
Vmlldzo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIFdLUG9pbnQgb2xk
UG9zaXRpb24gPSBXS1ZpZXdHZXRDb250ZW50UG9zaXRpb24od2tWaWV3KCkpOworICAgIEZsb2F0
UG9pbnQgbmV3UG9zaXRpb24gPSBGbG9hdFBvaW50KG9sZFBvc2l0aW9uLnggKyBvZmZzZXQud2lk
dGgoKSwgb2xkUG9zaXRpb24ueSArIG9mZnNldC5oZWlnaHQoKSk7CisgICAgV0tWaWV3U2V0Q29u
dGVudFBvc2l0aW9uKHdrVmlldygpLCBXS1BvaW50TWFrZShuZXdQb3NpdGlvbi54KCksIG5ld1Bv
c2l0aW9uLnkoKSkpOworCisgICAgV0tQb2ludCBwb3NpdGlvbiA9IFdLVmlld0dldENvbnRlbnRQ
b3NpdGlvbih3a1ZpZXcoKSk7CisgICAgZmxvYXQgY29udGVudFNjYWxlID0gV0tWaWV3R2V0Q29u
dGVudFNjYWxlRmFjdG9yKHdrVmlldygpKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIt
PmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShGbG9hdFBvaW50KHBvc2l0aW9uLnggLyBjb250
ZW50U2NhbGUsIHBvc2l0aW9uLnkgLyBjb250ZW50U2NhbGUpLCBjb250ZW50U2NhbGUpOworCisg
ICAgLy8gSWYgdGhlIHBhZ2UgcG9zaXRpb24gaXMgbm90IGNoYW5nZWQsIG5vdGlmeSB0aGF0IHVz
aW5nIHJldHVybmluZyB2YWx1ZS4KKyAgICByZXR1cm4gIShvbGRQb3NpdGlvbiA9PSBwb3NpdGlv
bik7Cit9CisKIEV2YXNfU21hcnRfQ2xhc3MgRXdrVmlldzo6cGFyZW50U21hcnRDbGFzcyA9IEVW
QVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogCiAvLyBGcmVlIEV3ayBWaWV3IGZ1bmN0aW9ucy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAppbmRleCBjNDZiMTUx
YTBkZDkxZGNlMTQxZjUyOWU2ZTM5MDU1MDAxMDRiZWE4Li4zMDZlMzZmMDFjYmM4OGYwYmRhZDJj
N2YwM2UwNTk0MTFhMGNiMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlldy5oCkBAIC0yMDIsNiArMjAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5mb3JtVVJM
Q2hhbmdlKCk7CiAKICAgICBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gdGFrZVNuYXBzaG90
KCk7CisgICAgYm9vbCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKICAgICB2
b2lkIGRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV0tQb2ludCYsIGNvbnN0IFdLUmVjdCYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVj
b2duaXplci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVj
b2duaXplci5jcHAKaW5kZXggMjE1YjMxNDdjOTJkNjY2ZGNmYjU3NTFmYzQ3Nzk0MDc0MTEyZDIx
NC4uMGNhMzcxYmE1YTg2ODRkN2I4YzI3ZWFhYjlkYjkxYWRhYmIyNGI2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdlc3R1
cmVSZWNvZ25pemVyLmgiCiAKKyNpbmNsdWRlICJFYXNpbmdDdXJ2ZXMuaCIKICNpbmNsdWRlICJF
d2tWaWV3LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXS1NoYXJl
ZEFQSUNhc3QuaCIKQEAgLTQzLDEzICs0NCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEdlc3R1cmVIYW5kbGVyKGV3a1ZpZXcpKTsKICAgICB9CisgICAg
fkdlc3R1cmVIYW5kbGVyKCk7CiAKKyAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBoYW5kbGVT
aW5nbGVUYXAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZURvdWJs
ZVRhcChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlVGFwQW5kSG9s
ZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuU3RhcnRlZChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBoYW5kbGVQYW5GaW5pc2hlZCgpOworICAgIHZvaWQg
aGFuZGxlRmxpY2soY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgaGFuZGxlUGlu
Y2hTdGFydGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKTsKICAgICB2b2lkIGhh
bmRsZVBpbmNoKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKTsKICAgICB2b2lkIGhh
bmRsZVBpbmNoRmluaXNoZWQoKTsKQEAgLTU3LDEyICs2MSw1NyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEdlc3R1cmVIYW5kbGVyKEV3a1ZpZXcqKTsKIAorICAgIHN0YXRpYyBF
aW5hX0Jvb2wgcGFuQW5pbWF0b3JDYWxsYmFjayh2b2lkKik7CisgICAgc3RhdGljIEVpbmFfQm9v
bCBmbGlja0FuaW1hdG9yQ2FsbGJhY2sodm9pZCopOworCisgICAgc3RhdGljIGNvbnN0IGludCBz
X2hpc3RvcnlDYXBhY2l0eSA9IDU7CisKICAgICBFd2tWaWV3KiBtX2V3a1ZpZXc7CisgICAgV2Vi
Q29yZTo6SW50UG9pbnQgbV9sYXN0UG9pbnQ7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9jdXJy
ZW50UG9pbnQ7CisgICAgYm9vbCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZDsKKyAgICBFY29yZV9B
bmltYXRvciogbV9wYW5BbmltYXRvcjsKKyAgICBFY29yZV9BbmltYXRvciogbV9mbGlja0FuaW1h
dG9yOworICAgIFdlYkNvcmU6OkludFNpemUgbV9mbGlja09mZnNldDsKKyAgICB1bnNpZ25lZCBt
X2ZsaWNrRHVyYXRpb247CisgICAgdW5zaWduZWQgbV9mbGlja0luZGV4OworCisgICAgc3RydWN0
IEhpc3RvcnlJdGVtIHsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQ7CisgICAgICAg
IGRvdWJsZSB0aW1lc3RhbXA7CisgICAgfTsKKyAgICBWZWN0b3I8SGlzdG9yeUl0ZW0+IG1faGlz
dG9yeTsKKyAgICB1bnNpZ25lZCBtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleDsKIH07CiAKIEdlc3R1
cmVIYW5kbGVyOjpHZXN0dXJlSGFuZGxlcihFd2tWaWV3KiBld2tWaWV3KQogICAgIDogbV9ld2tW
aWV3KGV3a1ZpZXcpCisgICAgLCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZChmYWxzZSkKKyAgICAs
IG1fcGFuQW5pbWF0b3IoMCkKKyAgICAsIG1fZmxpY2tBbmltYXRvcigwKQorICAgICwgbV9mbGlj
a0R1cmF0aW9uKDApCisgICAgLCBtX2ZsaWNrSW5kZXgoMCkKKyAgICAsIG1fZmlyc3RIaXN0b3J5
SXRlbUluZGV4KDApCit7CisgICAgbV9oaXN0b3J5LnJlc2VydmVDYXBhY2l0eShzX2hpc3RvcnlD
YXBhY2l0eSk7Cit9CisKK0dlc3R1cmVIYW5kbGVyOjp+R2VzdHVyZUhhbmRsZXIoKQogeworICAg
IHJlc2V0KCk7Cit9CisKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6OnJlc2V0KCkKK3sKKyAgICBpZiAo
bV9wYW5BbmltYXRvcikgeworICAgICAgICBlY29yZV9hbmltYXRvcl9kZWwobV9wYW5BbmltYXRv
cik7CisgICAgICAgIG1fcGFuQW5pbWF0b3IgPSAwOworICAgIH0KKworICAgIGlmIChtX2ZsaWNr
QW5pbWF0b3IpIHsKKyAgICAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKG1fZmxpY2tBbmltYXRvcik7
CisgICAgICAgIG1fZmxpY2tBbmltYXRvciA9IDA7CisgICAgfQogfQogCiB2b2lkIEdlc3R1cmVI
YW5kbGVyOjpoYW5kbGVTaW5nbGVUYXAoY29uc3QgSW50UG9pbnQmKQpAQCAtODAsMTkgKzEyOSw4
NCBAQCB2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVUYXBBbmRIb2xkKGNvbnN0IEludFBvaW50
JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5k
bGVQYW5TdGFydGVkKGNvbnN0IEludFBvaW50JikKK0VpbmFfQm9vbCBHZXN0dXJlSGFuZGxlcjo6
cGFuQW5pbWF0b3JDYWxsYmFjayh2b2lkKiBkYXRhKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgR2VzdHVyZUhhbmRsZXIqIGdlc3R1cmVIYW5kbGVyID0gc3RhdGljX2Nhc3Q8R2VzdHVy
ZUhhbmRsZXIqPihkYXRhKTsKKyAgICBpZiAoIWdlc3R1cmVIYW5kbGVyLT5tX2lzQ3VycmVudFBv
aW50VXBkYXRlZCB8fCBnZXN0dXJlSGFuZGxlci0+bV9sYXN0UG9pbnQgPT0gZ2VzdHVyZUhhbmRs
ZXItPm1fY3VycmVudFBvaW50KQorICAgICAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfUkVORVc7
CisKKyAgICBnZXN0dXJlSGFuZGxlci0+bV9ld2tWaWV3LT5zY3JvbGxCeShnZXN0dXJlSGFuZGxl
ci0+bV9sYXN0UG9pbnQgLSBnZXN0dXJlSGFuZGxlci0+bV9jdXJyZW50UG9pbnQpOworICAgIGdl
c3R1cmVIYW5kbGVyLT5tX2xhc3RQb2ludCA9IGdlc3R1cmVIYW5kbGVyLT5tX2N1cnJlbnRQb2lu
dDsKKyAgICBnZXN0dXJlSGFuZGxlci0+bV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQgPSBmYWxzZTsK
KworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19SRU5FVzsKIH0KIAotdm9pZCBHZXN0dXJlSGFu
ZGxlcjo6aGFuZGxlUGFuKGNvbnN0IEludFBvaW50JikKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6Omhh
bmRsZVBhblN0YXJ0ZWQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgQVNTRVJUKCFtX3BhbkFuaW1hdG9yKTsKKyAgICBtX3BhbkFuaW1hdG9yID0g
ZWNvcmVfYW5pbWF0b3JfYWRkKHBhbkFuaW1hdG9yQ2FsbGJhY2ssIHRoaXMpOworICAgIG1fbGFz
dFBvaW50ID0gbV9jdXJyZW50UG9pbnQgPSBwb2ludDsKKyAgICBtX2ZpcnN0SGlzdG9yeUl0ZW1J
bmRleCA9IDA7CisgICAgbV9oaXN0b3J5LnJlc2l6ZSgwKTsKK30KKwordm9pZCBHZXN0dXJlSGFu
ZGxlcjo6aGFuZGxlUGFuKGNvbnN0IEludFBvaW50JiBwb2ludCkKK3sKKyAgICBtX2N1cnJlbnRQ
b2ludCA9IHBvaW50OworICAgIG1faXNDdXJyZW50UG9pbnRVcGRhdGVkID0gdHJ1ZTsKKworICAg
IC8vIFNhdmUgY3VycmVudCBwb2ludCB0byB1c2UgdG8gY2FsY3VsYXRlIG9mZnNldCBvZiBmbGlj
ay4KKyAgICBIaXN0b3J5SXRlbSBpdGVtID0geyBtX2N1cnJlbnRQb2ludCwgZWNvcmVfdGltZV9n
ZXQoKSB9OworICAgIGlmIChtX2hpc3Rvcnkuc2l6ZSgpIDwgbV9oaXN0b3J5LmNhcGFjaXR5KCkp
CisgICAgICAgIG1faGlzdG9yeS51bmNoZWNrZWRBcHBlbmQoaXRlbSk7CisgICAgZWxzZSB7Cisg
ICAgICAgIG1faGlzdG9yeVttX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCsrXSA9IGl0ZW07CisgICAg
ICAgIGlmIChtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCA9PSBtX2hpc3RvcnkuY2FwYWNpdHkoKSkK
KyAgICAgICAgICAgIG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4ID0gMDsKKyAgICB9CiB9CiAKIHZv
aWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhbkZpbmlzaGVkKCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIEFTU0VSVChtX3BhbkFuaW1hdG9yKTsKKyAgICBlY29yZV9hbmltYXRvcl9k
ZWwobV9wYW5BbmltYXRvcik7CisgICAgbV9wYW5BbmltYXRvciA9IDA7CisKKyAgICBpZiAoIW1f
aGlzdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gQ2FsY3VsYXRlIG9mZnNldCB0byBtb3Zl
IGR1cmluZyBvbmUgZnJhbWUuCisgICAgICAgIGNvbnN0IEhpc3RvcnlJdGVtJiBmaXJzdEhpc3Rv
cnlJdGVtID0gbV9oaXN0b3J5W21fZmlyc3RIaXN0b3J5SXRlbUluZGV4XTsKKyAgICAgICAgZG91
YmxlIGZyYW1lID0gKGVjb3JlX3RpbWVfZ2V0KCkgLSBmaXJzdEhpc3RvcnlJdGVtLnRpbWVzdGFt
cCkgLyBlY29yZV9hbmltYXRvcl9mcmFtZXRpbWVfZ2V0KCk7CisgICAgICAgIEludFNpemUgb2Zm
c2V0ID0gZmlyc3RIaXN0b3J5SXRlbS5wb2ludCAtIG1fY3VycmVudFBvaW50OworICAgICAgICBv
ZmZzZXQuc2NhbGUoMSAvIGZyYW1lKTsKKyAgICAgICAgaGFuZGxlRmxpY2sob2Zmc2V0KTsKKyAg
ICB9Cit9CisKK0VpbmFfQm9vbCBHZXN0dXJlSGFuZGxlcjo6ZmxpY2tBbmltYXRvckNhbGxiYWNr
KHZvaWQqIGRhdGEpCit7CisgICAgR2VzdHVyZUhhbmRsZXIqIGdlc3R1cmVIYW5kbGVyID0gc3Rh
dGljX2Nhc3Q8R2VzdHVyZUhhbmRsZXIqPihkYXRhKTsKKyAgICBmbG9hdCBtdWx0aXBsaWVyID0g
ZWFzZUluT3V0UXVhZChnZXN0dXJlSGFuZGxlci0+bV9mbGlja0luZGV4LCAwLCAxLjAsIGdlc3R1
cmVIYW5kbGVyLT5tX2ZsaWNrRHVyYXRpb24pOworICAgIGZsb2F0IG9mZnNldFdpZHRoID0gZ2Vz
dHVyZUhhbmRsZXItPm1fZmxpY2tPZmZzZXQud2lkdGgoKSAqIG11bHRpcGxpZXI7CisgICAgZmxv
YXQgb2Zmc2V0SGVpZ2h0ID0gZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tPZmZzZXQuaGVpZ2h0KCkg
KiBtdWx0aXBsaWVyOworICAgIG9mZnNldFdpZHRoID0gKG9mZnNldFdpZHRoID4gMCkgPyBjZWls
ZihvZmZzZXRXaWR0aCkgOiBmbG9vcmYob2Zmc2V0V2lkdGgpOworICAgIG9mZnNldEhlaWdodCA9
IChvZmZzZXRIZWlnaHQgPiAwKSA/IGNlaWxmKG9mZnNldEhlaWdodCkgOiBmbG9vcmYob2Zmc2V0
SGVpZ2h0KTsKKyAgICBJbnRTaXplIG9mZnNldChvZmZzZXRXaWR0aCwgb2Zmc2V0SGVpZ2h0KTsK
KyAgICBnZXN0dXJlSGFuZGxlci0+bV9mbGlja0luZGV4LS07CisKKyAgICBpZiAob2Zmc2V0Lmlz
WmVybygpIHx8ICFnZXN0dXJlSGFuZGxlci0+bV9ld2tWaWV3LT5zY3JvbGxCeShvZmZzZXQpIHx8
ICFnZXN0dXJlSGFuZGxlci0+bV9mbGlja0luZGV4KSB7CisgICAgICAgIGdlc3R1cmVIYW5kbGVy
LT5tX2ZsaWNrQW5pbWF0b3IgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZUZsaWNrKGNv
bnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBtX2ZsaWNrT2Zmc2V0ID0gb2Zmc2V0OworICAg
IG1fZmxpY2tJbmRleCA9IG1fZmxpY2tEdXJhdGlvbiA9IDEgLyBlY29yZV9hbmltYXRvcl9mcmFt
ZXRpbWVfZ2V0KCk7CisgICAgbV9mbGlja0FuaW1hdG9yID0gZWNvcmVfYW5pbWF0b3JfYWRkKGZs
aWNrQW5pbWF0b3JDYWxsYmFjaywgdGhpcyk7CiB9CiAKIHZvaWQgR2VzdHVyZUhhbmRsZXI6Omhh
bmRsZVBpbmNoU3RhcnRlZChjb25zdCBWZWN0b3I8SW50UG9pbnQ+JikKQEAgLTE5Niw2ICszMTAs
OCBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmUoV0tFdmVudFR5cGUgdHlwZSwg
V0tBcnJheVJlZiB0b3VjaFBvaW50cykKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNl
IGtXS0V2ZW50VHlwZVRvdWNoU3RhcnQ6CisgICAgICAgIG1fZ2VzdHVyZUhhbmRsZXItPnJlc2V0
KCk7CisKICAgICAgICAgbV9yZWNvZ25pemVyRnVuY3Rpb24gPSAmR2VzdHVyZVJlY29nbml6ZXI6
OnNpbmdsZVRhcEdlc3R1cmU7CiAgICAgICAgIG1fZmlyc3RQcmVzc2VkUG9pbnQgPSB0b0ludFBv
aW50KGdldFBvaW50QXRJbmRleCh0b3VjaFBvaW50cywgMCkpOwogICAgICAgICBBU1NFUlQoIW1f
dGFwQW5kSG9sZFRpbWVyKTsKQEAgLTM0MCw2ICs0NTYsNyBAQCB2b2lkIEdlc3R1cmVSZWNvZ25p
emVyOjpwaW5jaEdlc3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50
cykKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0KCkKIHsKICAgICBzdG9wVGFwVGltZXJz
KCk7CisgICAgbV9nZXN0dXJlSGFuZGxlci0+cmVzZXQoKTsKIAogICAgIG1fcmVjb2duaXplckZ1
bmN0aW9uID0gJkdlc3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3Bw
CmluZGV4IDFjMWNhNGFhYmJhZWIxN2VhMzRiNjk4ODQwMThiZGFiZmY4OTllMDcuLjQwOTMwY2Fh
YzExYzM0MTE0NWY2MDdkNDRjNzRkMTgyNjFjYzgxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCkBAIC0x
MTQsNiArMTE0LDE2IEBAIHZvaWQgV2ViVmlldzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAg
ICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxl
KTsKIH0KIAordm9pZCBXZWJWaWV3OjpzZXRDb250ZW50UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgcG9zaXRpb24pCit7CisgICAgRmxvYXRSZWN0IGJvdW5kczsKKyAgICBib3Vu
ZHMuc2V0V2lkdGgoc3RkOjptYXgoMC5mLCBjZWlsZihtX2NvbnRlbnRzU2l6ZS53aWR0aCgpICog
bV9jb250ZW50U2NhbGVGYWN0b3IpKSAtIHNpemUoKS53aWR0aCgpKTsKKyAgICBib3VuZHMuc2V0
SGVpZ2h0KHN0ZDo6bWF4KDAuZiwgY2VpbGYobV9jb250ZW50c1NpemUuaGVpZ2h0KCkgKiBtX2Nv
bnRlbnRTY2FsZUZhY3RvcikpIC0gc2l6ZSgpLmhlaWdodCgpKTsKKworICAgIG1fY29udGVudFBv
c2l0aW9uLnNldFgoY2xhbXBUbyhwb3NpdGlvbi54KCksIGJvdW5kcy54KCksIGJvdW5kcy53aWR0
aCgpKSk7CisgICAgbV9jb250ZW50UG9zaXRpb24uc2V0WShjbGFtcFRvKHBvc2l0aW9uLnkoKSwg
Ym91bmRzLnkoKSwgYm91bmRzLmhlaWdodCgpKSk7Cit9CisKIHZvaWQgV2ViVmlldzo6c2V0VXNl
clZpZXdwb3J0VHJhbnNsYXRpb24oZG91YmxlIHR4LCBkb3VibGUgdHkpCiB7CiAgICAgbV91c2Vy
Vmlld3BvcnRUcmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLnRyYW5zbGF0ZSh0eCwg
dHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViVmlldy5oCmluZGV4IGFkMzliYjFiMDExN2Y1YThhMWFkNDM4NjAzMDY1YzBmMmE5
YjYyOGUuLmJmNjA2ZGNiZGU0MmRhMzVhNjNlMzgyYjZhNzc4YWM5ZTkwNjYzMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJW
aWV3LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudFNjYWxl
RmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKSB7IG1fY29udGVudFNjYWxlRmFjdG9yID0gc2NhbGVG
YWN0b3I7IH0KICAgICBmbG9hdCBjb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnRTY2FsZUZhY3RvcjsgfQogCi0gICAgdm9pZCBzZXRDb250ZW50UG9zaXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24pIHsgbV9jb250ZW50UG9zaXRpb24gPSBw
b3NpdGlvbjsgfQorICAgIHZvaWQgc2V0Q29udGVudFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmKTsKICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBjb250ZW50UG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRQb3NpdGlvbjsgfQogCiAgICAgdm9pZCBzZXRV
c2VyVmlld3BvcnRUcmFuc2xhdGlvbihkb3VibGUgdHgsIGRvdWJsZSB0eSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI1ZGJi
OTBlZmJjNjcyOWM0ZmI5MmM5M2UxMTJjMGYzZjc2ZjVhNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmNwcApAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAxIFJvYmVydCBQZW5uZXIuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
IGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAgIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJl
CisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLyoKKyAqIFJvYmVydCBQZW5uZXIncyBlYXNpbmcgZXF1YXRpb25zLiBodHRwOi8vd3d3
LnJvYmVydHBlbm5lci5jb20vZWFzaW5nLworICogc3RhdGljIGZ1bmN0aW9uIGVhc2VJbk91dFF1
YWQgKHQ6TnVtYmVyLCBiOk51bWJlciwgYzpOdW1iZXIsIGQ6TnVtYmVyKTpOdW1iZXIgeworICog
ICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0ICsgYjsKKyAqICAgICByZXR1cm4g
LWMvMiAqICgoLS10KSoodC0yKSAtIDEpICsgYjsKKyAqIH0KKyAqLworZmxvYXQgZWFzZUluT3V0
UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25zdCBmbG9hdCBjb25zdGFudCwg
Y29uc3QgdW5zaWduZWQgZHVyYXRpb24pCit7CisgICAgaWYgKHRpbWUgPiBkdXJhdGlvbiB8fCB0
aW1lIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoKHRpbWUgLz0gKGR1cmF0aW9u
IC8gMikpIDwgMSkKKyAgICAgICAgcmV0dXJuIChjb25zdGFudCAvIDIpICogdGltZSAqIHRpbWUg
KyBiYXNlOworCisgICAgdGltZSAtPSAxOworICAgIHJldHVybiAtMSAqIChjb25zdGFudCAvIDIp
ICogKHRpbWUgKiAodGltZSAtIDIpIC0gMSkgKyBiYXNlOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJhMDQ2MjMxMjUxYzlhOTk1
ZTNiNDQyNWU4ZDZkNjdlYzE3YzNlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRo
ZSBuYW1lcyBvZiBjb250cmlidXRvcnMgbWF5IGJlCisgKiAgICB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyJB
UyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
RWFzaW5nQ3VydmVzX2gKKyNkZWZpbmUgRWFzaW5nQ3VydmVzX2gKKworZmxvYXQgZWFzZUluT3V0
UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25zdCBmbG9hdCBjb25zdGFudCwg
Y29uc3QgdW5zaWduZWQgZHVyYXRpb24pOworCisjZW5kaWYgLy8gRWFzaW5nQ3VydmVzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209443</attachid>
            <date>2013-08-23 01:52:24 -0700</date>
            <delta_ts>2013-09-12 02:08:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130823175223.patch</filename>
            <type>text/plain</type>
            <size>15561</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWJhZTc5MTA3NzhlZWE1
NmJhMDcyODVjODk4YWQxMjA5OTY1YWY3MS4uMGNiMjJlZjNmMGFiZjgyZTc5YjI3YjY3OWIzZGM2
YmNhNmFiZmMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTA4LTIzICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTA3MTAxPiBbRUZMXVtXSzJdIEltcGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1
cmUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IHBhbiBnZXN0dXJlIHRvIHNjcm9sbCBwYWdlIGJ5IG1vdmVtZW50IG9mIHBvaW50IGFu
ZCBzdG9wCisgICAgICAgIHNjcm9sbGluZyBzbW9vdGhseSB1c2luZyBlYXNlLWluLW91dC1xdWFk
IGFsZ29yaXRobSBhZnRlciB0b3VjaGVkCisgICAgICAgIHBvaW50IGlzIHJlbW92ZWQgZnJvbSB0
aGUgc2NyZWVuLgorCisgICAgICAgIFVzZSBFY29yZV9BbmltYXRvciBpbiBvcmRlciB0byBwcm9j
ZXNzIG1vdmVtZW50IG9uY2UgcGVyIGVhY2ggZnJhbWluZworICAgICAgICB0aW1lIHNsb3QgaW5z
dGVhZCBvZiBwcm9jZXNzaW5nIGFsbCBtb3ZlbWVudC4KKworICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAg
ICAoRXdrVmlldzo6c2Nyb2xsQnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJlUmVjb2duaXplci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpHZXN0dXJlSGFuZGxlcik6CisgICAg
ICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjp+R2VzdHVyZUhhbmRsZXIpOgorICAgICAgICAo
V2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJl
SGFuZGxlcjo6cGFuQW5pbWF0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVI
YW5kbGVyOjpoYW5kbGVQYW5TdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRs
ZXI6OmhhbmRsZVBhbik6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQ
YW5GaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpmbGlja0FuaW1h
dG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6aGFuZGxlRmxp
Y2spOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6bm9HZXN0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHA6IEFkZGVkLgorICAgICAgICAoZWFzZUluT3V0UXVh
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuaDogQWRkZWQuCisKIDIw
MTMtMDgtMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIDxodHRw
czovL3dlYmtpdC5vcmcvYi8xMTk5ODk+IE1ha2UgdXNlIG9mIE5vZGU6Om93bmVyRG9jdW1lbnQg
YSBjb21waWxlIHRpbWUgZXJyb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNDg5NWU5
OGUyNjc1NGQzZGY1YTA1ODZkMDRjNjU5NmVlYTEyMDhlYS4uMjdiODVkOWNiMGQ5YWY2ZjY4MjEw
YjY4ZTkwMTAyNDg4ZGQyNWVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTEwNiw2
ICsxMDYsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZs
L0NvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dE1l
bnVDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3Bw
CisgICAgVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9F
d2tUb3VjaEV2ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRXdrVG91Y2hQb2ludC5jcHAKICAg
ICBVSVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCmluZGV4IDViYjg0OTdhM2ZiZDc1YjVlMjJjODM3ZTg2
NTU2ZTM5OTM0ZmU1MzkuLmY4MGM5NTcxMTgwYTZmNjQ3YWUwZWY2YjU4Yjg5Y2I4ZDc3ZWNhYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC0x
MzkyLDYgKzEzOTIsMjUgQEAgdm9pZCBFd2tWaWV3OjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0
IFdLUG9pbnQmIHBvaW50LCBjb25zdCBXS1JlY3QmIGFyZWEpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAorYm9vbCBFd2tWaWV3OjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7
CisgICAgV0tQb2ludCBvbGRQb3NpdGlvbiA9IFdLVmlld0dldENvbnRlbnRQb3NpdGlvbih3a1Zp
ZXcoKSk7CisgICAgRmxvYXRQb2ludCBuZXdQb3NpdGlvbiA9IEZsb2F0UG9pbnQob2xkUG9zaXRp
b24ueCArIG9mZnNldC53aWR0aCgpLCBvbGRQb3NpdGlvbi55ICsgb2Zmc2V0LmhlaWdodCgpKTsK
KworICAgIC8vIFVwZGF0ZSBuZXcgcG9zaXRpb24gdG8gdGhlIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIuCisgICAgZmxvYXQgY29udGVudFNjYWxlID0gV0tWaWV3R2V0Q29udGVudFNjYWxlRmFjdG9y
KHdrVmlldygpKTsKKyAgICBuZXdQb3NpdGlvbi5zY2FsZSgxIC8gY29udGVudFNjYWxlLCAxIC8g
Y29udGVudFNjYWxlKTsKKyAgICBuZXdQb3NpdGlvbiA9IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxl
ci0+Ym91bmRDb250ZW50c1Bvc2l0aW9uQXRTY2FsZShuZXdQb3NpdGlvbiwgY29udGVudFNjYWxl
KTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJp
bGl0eShuZXdQb3NpdGlvbiwgY29udGVudFNjYWxlKTsKKworICAgIC8vIFVwZGF0ZSBuZXcgcG9z
aXRpb24gdG8gdGhlIFdLVmlldy4KKyAgICBXS1BvaW50IHBvc2l0aW9uID0gV0tQb2ludE1ha2Uo
bmV3UG9zaXRpb24ueCgpICogY29udGVudFNjYWxlLCBuZXdQb3NpdGlvbi55KCkgKiBjb250ZW50
U2NhbGUpOworICAgIFdLVmlld1NldENvbnRlbnRQb3NpdGlvbih3a1ZpZXcoKSwgcG9zaXRpb24p
OworCisgICAgLy8gSWYgdGhlIHBhZ2UgcG9zaXRpb24gaXMgbm90IGNoYW5nZWQsIG5vdGlmeSB0
aGF0IHVzaW5nIHJldHVybmluZyB2YWx1ZS4KKyAgICByZXR1cm4gIShvbGRQb3NpdGlvbiA9PSBw
b3NpdGlvbik7Cit9CisKIEV2YXNfU21hcnRfQ2xhc3MgRXdrVmlldzo6cGFyZW50U21hcnRDbGFz
cyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogCiAvLyBGcmVlIEV3ayBWaWV3IGZ1bmN0
aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAppbmRleCBj
NDZiMTUxYTBkZDkxZGNlMTQxZjUyOWU2ZTM5MDU1MDAxMDRiZWE4Li4zMDZlMzZmMDFjYmM4OGYw
YmRhZDJjN2YwM2UwNTk0MTFhMGNiMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5oCkBAIC0yMDIsNiArMjAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5m
b3JtVVJMQ2hhbmdlKCk7CiAKICAgICBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gdGFrZVNu
YXBzaG90KCk7CisgICAgYm9vbCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAK
ICAgICB2b2lkIGRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV0tQb2ludCYsIGNvbnN0IFdLUmVj
dCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0
dXJlUmVjb2duaXplci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0
dXJlUmVjb2duaXplci5jcHAKaW5kZXggMjE1YjMxNDdjOTJkNjY2ZGNmYjU3NTFmYzQ3Nzk0MDc0
MTEyZDIxNC4uMGNhMzcxYmE1YTg2ODRkN2I4YzI3ZWFhYjlkYjkxYWRhYmIyNGI2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVSZWNvZ25p
emVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
Ikdlc3R1cmVSZWNvZ25pemVyLmgiCiAKKyNpbmNsdWRlICJFYXNpbmdDdXJ2ZXMuaCIKICNpbmNs
dWRlICJFd2tWaWV3LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJX
S1NoYXJlZEFQSUNhc3QuaCIKQEAgLTQzLDEzICs0NCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdlc3R1cmVIYW5kbGVyKGV3a1ZpZXcpKTsKICAgICB9
CisgICAgfkdlc3R1cmVIYW5kbGVyKCk7CiAKKyAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBo
YW5kbGVTaW5nbGVUYXAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRs
ZURvdWJsZVRhcChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlVGFw
QW5kSG9sZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuU3Rh
cnRlZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBoYW5kbGVQYW5GaW5pc2hlZCgpOworICAg
IHZvaWQgaGFuZGxlRmxpY2soY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgaGFu
ZGxlUGluY2hTdGFydGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKTsKICAgICB2
b2lkIGhhbmRsZVBpbmNoKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRQb2ludD4mKTsKICAgICB2
b2lkIGhhbmRsZVBpbmNoRmluaXNoZWQoKTsKQEAgLTU3LDEyICs2MSw1NyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IEdlc3R1cmVIYW5kbGVyKEV3a1ZpZXcqKTsKIAorICAgIHN0
YXRpYyBFaW5hX0Jvb2wgcGFuQW5pbWF0b3JDYWxsYmFjayh2b2lkKik7CisgICAgc3RhdGljIEVp
bmFfQm9vbCBmbGlja0FuaW1hdG9yQ2FsbGJhY2sodm9pZCopOworCisgICAgc3RhdGljIGNvbnN0
IGludCBzX2hpc3RvcnlDYXBhY2l0eSA9IDU7CisKICAgICBFd2tWaWV3KiBtX2V3a1ZpZXc7Cisg
ICAgV2ViQ29yZTo6SW50UG9pbnQgbV9sYXN0UG9pbnQ7CisgICAgV2ViQ29yZTo6SW50UG9pbnQg
bV9jdXJyZW50UG9pbnQ7CisgICAgYm9vbCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZDsKKyAgICBF
Y29yZV9BbmltYXRvciogbV9wYW5BbmltYXRvcjsKKyAgICBFY29yZV9BbmltYXRvciogbV9mbGlj
a0FuaW1hdG9yOworICAgIFdlYkNvcmU6OkludFNpemUgbV9mbGlja09mZnNldDsKKyAgICB1bnNp
Z25lZCBtX2ZsaWNrRHVyYXRpb247CisgICAgdW5zaWduZWQgbV9mbGlja0luZGV4OworCisgICAg
c3RydWN0IEhpc3RvcnlJdGVtIHsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQ7Cisg
ICAgICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgfTsKKyAgICBWZWN0b3I8SGlzdG9yeUl0ZW0+
IG1faGlzdG9yeTsKKyAgICB1bnNpZ25lZCBtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleDsKIH07CiAK
IEdlc3R1cmVIYW5kbGVyOjpHZXN0dXJlSGFuZGxlcihFd2tWaWV3KiBld2tWaWV3KQogICAgIDog
bV9ld2tWaWV3KGV3a1ZpZXcpCisgICAgLCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZChmYWxzZSkK
KyAgICAsIG1fcGFuQW5pbWF0b3IoMCkKKyAgICAsIG1fZmxpY2tBbmltYXRvcigwKQorICAgICwg
bV9mbGlja0R1cmF0aW9uKDApCisgICAgLCBtX2ZsaWNrSW5kZXgoMCkKKyAgICAsIG1fZmlyc3RI
aXN0b3J5SXRlbUluZGV4KDApCit7CisgICAgbV9oaXN0b3J5LnJlc2VydmVDYXBhY2l0eShzX2hp
c3RvcnlDYXBhY2l0eSk7Cit9CisKK0dlc3R1cmVIYW5kbGVyOjp+R2VzdHVyZUhhbmRsZXIoKQog
eworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6OnJlc2V0KCkKK3sKKyAg
ICBpZiAobV9wYW5BbmltYXRvcikgeworICAgICAgICBlY29yZV9hbmltYXRvcl9kZWwobV9wYW5B
bmltYXRvcik7CisgICAgICAgIG1fcGFuQW5pbWF0b3IgPSAwOworICAgIH0KKworICAgIGlmICht
X2ZsaWNrQW5pbWF0b3IpIHsKKyAgICAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKG1fZmxpY2tBbmlt
YXRvcik7CisgICAgICAgIG1fZmxpY2tBbmltYXRvciA9IDA7CisgICAgfQogfQogCiB2b2lkIEdl
c3R1cmVIYW5kbGVyOjpoYW5kbGVTaW5nbGVUYXAoY29uc3QgSW50UG9pbnQmKQpAQCAtODAsMTkg
KzEyOSw4NCBAQCB2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVUYXBBbmRIb2xkKGNvbnN0IElu
dFBvaW50JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEdlc3R1cmVIYW5kbGVy
OjpoYW5kbGVQYW5TdGFydGVkKGNvbnN0IEludFBvaW50JikKK0VpbmFfQm9vbCBHZXN0dXJlSGFu
ZGxlcjo6cGFuQW5pbWF0b3JDYWxsYmFjayh2b2lkKiBkYXRhKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgR2VzdHVyZUhhbmRsZXIqIGdlc3R1cmVIYW5kbGVyID0gc3RhdGljX2Nhc3Q8
R2VzdHVyZUhhbmRsZXIqPihkYXRhKTsKKyAgICBpZiAoIWdlc3R1cmVIYW5kbGVyLT5tX2lzQ3Vy
cmVudFBvaW50VXBkYXRlZCB8fCBnZXN0dXJlSGFuZGxlci0+bV9sYXN0UG9pbnQgPT0gZ2VzdHVy
ZUhhbmRsZXItPm1fY3VycmVudFBvaW50KQorICAgICAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tf
UkVORVc7CisKKyAgICBnZXN0dXJlSGFuZGxlci0+bV9ld2tWaWV3LT5zY3JvbGxCeShnZXN0dXJl
SGFuZGxlci0+bV9sYXN0UG9pbnQgLSBnZXN0dXJlSGFuZGxlci0+bV9jdXJyZW50UG9pbnQpOwor
ICAgIGdlc3R1cmVIYW5kbGVyLT5tX2xhc3RQb2ludCA9IGdlc3R1cmVIYW5kbGVyLT5tX2N1cnJl
bnRQb2ludDsKKyAgICBnZXN0dXJlSGFuZGxlci0+bV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQgPSBm
YWxzZTsKKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19SRU5FVzsKIH0KIAotdm9pZCBHZXN0
dXJlSGFuZGxlcjo6aGFuZGxlUGFuKGNvbnN0IEludFBvaW50JikKK3ZvaWQgR2VzdHVyZUhhbmRs
ZXI6OmhhbmRsZVBhblN0YXJ0ZWQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgQVNTRVJUKCFtX3BhbkFuaW1hdG9yKTsKKyAgICBtX3BhbkFuaW1h
dG9yID0gZWNvcmVfYW5pbWF0b3JfYWRkKHBhbkFuaW1hdG9yQ2FsbGJhY2ssIHRoaXMpOworICAg
IG1fbGFzdFBvaW50ID0gbV9jdXJyZW50UG9pbnQgPSBwb2ludDsKKyAgICBtX2ZpcnN0SGlzdG9y
eUl0ZW1JbmRleCA9IDA7CisgICAgbV9oaXN0b3J5LnJlc2l6ZSgwKTsKK30KKwordm9pZCBHZXN0
dXJlSGFuZGxlcjo6aGFuZGxlUGFuKGNvbnN0IEludFBvaW50JiBwb2ludCkKK3sKKyAgICBtX2N1
cnJlbnRQb2ludCA9IHBvaW50OworICAgIG1faXNDdXJyZW50UG9pbnRVcGRhdGVkID0gdHJ1ZTsK
KworICAgIC8vIFNhdmUgY3VycmVudCBwb2ludCB0byB1c2UgdG8gY2FsY3VsYXRlIG9mZnNldCBv
ZiBmbGljay4KKyAgICBIaXN0b3J5SXRlbSBpdGVtID0geyBtX2N1cnJlbnRQb2ludCwgZWNvcmVf
dGltZV9nZXQoKSB9OworICAgIGlmIChtX2hpc3Rvcnkuc2l6ZSgpIDwgbV9oaXN0b3J5LmNhcGFj
aXR5KCkpCisgICAgICAgIG1faGlzdG9yeS51bmNoZWNrZWRBcHBlbmQoaXRlbSk7CisgICAgZWxz
ZSB7CisgICAgICAgIG1faGlzdG9yeVttX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCsrXSA9IGl0ZW07
CisgICAgICAgIGlmIChtX2ZpcnN0SGlzdG9yeUl0ZW1JbmRleCA9PSBtX2hpc3RvcnkuY2FwYWNp
dHkoKSkKKyAgICAgICAgICAgIG1fZmlyc3RIaXN0b3J5SXRlbUluZGV4ID0gMDsKKyAgICB9CiB9
CiAKIHZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhbkZpbmlzaGVkKCkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChtX3BhbkFuaW1hdG9yKTsKKyAgICBlY29yZV9hbmlt
YXRvcl9kZWwobV9wYW5BbmltYXRvcik7CisgICAgbV9wYW5BbmltYXRvciA9IDA7CisKKyAgICBp
ZiAoIW1faGlzdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gQ2FsY3VsYXRlIG9mZnNldCB0
byBtb3ZlIGR1cmluZyBvbmUgZnJhbWUuCisgICAgICAgIGNvbnN0IEhpc3RvcnlJdGVtJiBmaXJz
dEhpc3RvcnlJdGVtID0gbV9oaXN0b3J5W21fZmlyc3RIaXN0b3J5SXRlbUluZGV4XTsKKyAgICAg
ICAgZG91YmxlIGZyYW1lID0gKGVjb3JlX3RpbWVfZ2V0KCkgLSBmaXJzdEhpc3RvcnlJdGVtLnRp
bWVzdGFtcCkgLyBlY29yZV9hbmltYXRvcl9mcmFtZXRpbWVfZ2V0KCk7CisgICAgICAgIEludFNp
emUgb2Zmc2V0ID0gZmlyc3RIaXN0b3J5SXRlbS5wb2ludCAtIG1fY3VycmVudFBvaW50OworICAg
ICAgICBvZmZzZXQuc2NhbGUoMSAvIGZyYW1lKTsKKyAgICAgICAgaGFuZGxlRmxpY2sob2Zmc2V0
KTsKKyAgICB9Cit9CisKK0VpbmFfQm9vbCBHZXN0dXJlSGFuZGxlcjo6ZmxpY2tBbmltYXRvckNh
bGxiYWNrKHZvaWQqIGRhdGEpCit7CisgICAgR2VzdHVyZUhhbmRsZXIqIGdlc3R1cmVIYW5kbGVy
ID0gc3RhdGljX2Nhc3Q8R2VzdHVyZUhhbmRsZXIqPihkYXRhKTsKKyAgICBmbG9hdCBtdWx0aXBs
aWVyID0gZWFzZUluT3V0UXVhZChnZXN0dXJlSGFuZGxlci0+bV9mbGlja0luZGV4LCAwLCAxLjAs
IGdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrRHVyYXRpb24pOworICAgIGZsb2F0IG9mZnNldFdpZHRo
ID0gZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tPZmZzZXQud2lkdGgoKSAqIG11bHRpcGxpZXI7Cisg
ICAgZmxvYXQgb2Zmc2V0SGVpZ2h0ID0gZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tPZmZzZXQuaGVp
Z2h0KCkgKiBtdWx0aXBsaWVyOworICAgIG9mZnNldFdpZHRoID0gKG9mZnNldFdpZHRoID4gMCkg
PyBjZWlsZihvZmZzZXRXaWR0aCkgOiBmbG9vcmYob2Zmc2V0V2lkdGgpOworICAgIG9mZnNldEhl
aWdodCA9IChvZmZzZXRIZWlnaHQgPiAwKSA/IGNlaWxmKG9mZnNldEhlaWdodCkgOiBmbG9vcmYo
b2Zmc2V0SGVpZ2h0KTsKKyAgICBJbnRTaXplIG9mZnNldChvZmZzZXRXaWR0aCwgb2Zmc2V0SGVp
Z2h0KTsKKyAgICBnZXN0dXJlSGFuZGxlci0+bV9mbGlja0luZGV4LS07CisKKyAgICBpZiAob2Zm
c2V0LmlzWmVybygpIHx8ICFnZXN0dXJlSGFuZGxlci0+bV9ld2tWaWV3LT5zY3JvbGxCeShvZmZz
ZXQpIHx8ICFnZXN0dXJlSGFuZGxlci0+bV9mbGlja0luZGV4KSB7CisgICAgICAgIGdlc3R1cmVI
YW5kbGVyLT5tX2ZsaWNrQW5pbWF0b3IgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZUZs
aWNrKGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBtX2ZsaWNrT2Zmc2V0ID0gb2Zmc2V0
OworICAgIG1fZmxpY2tJbmRleCA9IG1fZmxpY2tEdXJhdGlvbiA9IDEgLyBlY29yZV9hbmltYXRv
cl9mcmFtZXRpbWVfZ2V0KCk7CisgICAgbV9mbGlja0FuaW1hdG9yID0gZWNvcmVfYW5pbWF0b3Jf
YWRkKGZsaWNrQW5pbWF0b3JDYWxsYmFjaywgdGhpcyk7CiB9CiAKIHZvaWQgR2VzdHVyZUhhbmRs
ZXI6OmhhbmRsZVBpbmNoU3RhcnRlZChjb25zdCBWZWN0b3I8SW50UG9pbnQ+JikKQEAgLTE5Niw2
ICszMTAsOCBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmUoV0tFdmVudFR5cGUg
dHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50cykKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoU3RhcnQ6CisgICAgICAgIG1fZ2VzdHVyZUhhbmRsZXIt
PnJlc2V0KCk7CisKICAgICAgICAgbV9yZWNvZ25pemVyRnVuY3Rpb24gPSAmR2VzdHVyZVJlY29n
bml6ZXI6OnNpbmdsZVRhcEdlc3R1cmU7CiAgICAgICAgIG1fZmlyc3RQcmVzc2VkUG9pbnQgPSB0
b0ludFBvaW50KGdldFBvaW50QXRJbmRleCh0b3VjaFBvaW50cywgMCkpOwogICAgICAgICBBU1NF
UlQoIW1fdGFwQW5kSG9sZFRpbWVyKTsKQEAgLTM0MCw2ICs0NTYsNyBAQCB2b2lkIEdlc3R1cmVS
ZWNvZ25pemVyOjpwaW5jaEdlc3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3Vj
aFBvaW50cykKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0KCkKIHsKICAgICBzdG9wVGFw
VGltZXJzKCk7CisgICAgbV9nZXN0dXJlSGFuZGxlci0+cmVzZXQoKTsKIAogICAgIG1fcmVjb2du
aXplckZ1bmN0aW9uID0gJkdlc3R1cmVSZWNvZ25pemVyOjpub0dlc3R1cmU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI1
ZGJiOTBlZmJjNjcyOWM0ZmI5MmM5M2UxMTJjMGYzZjc2ZjVhNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmNwcApAQCAtMCwwICsx
LDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAxIFJvYmVydCBQZW5uZXIuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
dGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAgIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3
YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworLyoKKyAqIFJvYmVydCBQZW5uZXIncyBlYXNpbmcgZXF1YXRpb25zLiBodHRwOi8v
d3d3LnJvYmVydHBlbm5lci5jb20vZWFzaW5nLworICogc3RhdGljIGZ1bmN0aW9uIGVhc2VJbk91
dFF1YWQgKHQ6TnVtYmVyLCBiOk51bWJlciwgYzpOdW1iZXIsIGQ6TnVtYmVyKTpOdW1iZXIgewor
ICogICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0ICsgYjsKKyAqICAgICByZXR1
cm4gLWMvMiAqICgoLS10KSoodC0yKSAtIDEpICsgYjsKKyAqIH0KKyAqLworZmxvYXQgZWFzZUlu
T3V0UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25zdCBmbG9hdCBjb25zdGFu
dCwgY29uc3QgdW5zaWduZWQgZHVyYXRpb24pCit7CisgICAgaWYgKHRpbWUgPiBkdXJhdGlvbiB8
fCB0aW1lIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoKHRpbWUgLz0gKGR1cmF0
aW9uIC8gMikpIDwgMSkKKyAgICAgICAgcmV0dXJuIChjb25zdGFudCAvIDIpICogdGltZSAqIHRp
bWUgKyBiYXNlOworCisgICAgdGltZSAtPSAxOworICAgIHJldHVybiAtMSAqIChjb25zdGFudCAv
IDIpICogKHRpbWUgKiAodGltZSAtIDIpIC0gMSkgKyBiYXNlOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJhMDQ2MjMxMjUxYzlh
OTk1ZTNiNDQyNWU4ZDZkNjdlYzE3YzNlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9y
IHRoZSBuYW1lcyBvZiBjb250cmlidXRvcnMgbWF5IGJlCisgKiAgICB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgRWFzaW5nQ3VydmVzX2gKKyNkZWZpbmUgRWFzaW5nQ3VydmVzX2gKKworZmxvYXQgZWFzZUlu
T3V0UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25zdCBmbG9hdCBjb25zdGFu
dCwgY29uc3QgdW5zaWduZWQgZHVyYXRpb24pOworCisjZW5kaWYgLy8gRWFzaW5nQ3VydmVzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211409</attachid>
            <date>2013-09-12 02:08:10 -0700</date>
            <delta_ts>2013-09-13 02:54:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130912180808.patch</filename>
            <type>text/plain</type>
            <size>15804</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2U2NzYwNzlkNTVmZDNm
YmQyNTUyNTg5NjIzNmQxYjhlMDBmZTFmNC4uOTkzNjZjMDdiZmNlMWViYTAzOWMyYWY0NWNjODA5
YWJmNDJjMmVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTA5LTEyICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFuIGdlc3R1cmUgdG8gc2Nyb2xsIHBh
Z2UgYnkgbW92ZW1lbnQgb2YgcG9pbnQgYW5kIHN0b3AKKyAgICAgICAgc2Nyb2xsaW5nIHNtb290
aGx5IHVzaW5nIGVhc2UtaW4tb3V0LXF1YWQgYWxnb3JpdGhtIGFmdGVyIHRvdWNoZWQKKyAgICAg
ICAgcG9pbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY3JlZW4uCisKKyAgICAgICAgVXNlIEVjb3Jl
X0FuaW1hdG9yIGluIG9yZGVyIHRvIHByb2Nlc3MgbW92ZW1lbnQgb25jZSBwZXIgZWFjaCBmcmFt
aW5nCisgICAgICAgIHRpbWUgc2xvdCBpbnN0ZWFkIG9mIHByb2Nlc3NpbmcgYWxsIG1vdmVtZW50
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpzY3JvbGxCeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRs
ZXI6OnZpZXcpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6R2VzdHVyZUhhbmRs
ZXIpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6fkdlc3R1cmVIYW5kbGVyKToK
KyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYktp
dDo6R2VzdHVyZUhhbmRsZXI6OnBhbkFuaW1hdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuU3RhcnRlZCk6CisgICAgICAgIChXZWJLaXQ6Okdl
c3R1cmVIYW5kbGVyOjpoYW5kbGVQYW4pOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxl
cjo6aGFuZGxlUGFuRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6
ZmxpY2tBbmltYXRvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6
OmhhbmRsZUZsaWNrKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6Om5vR2Vz
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCk6CisgICAg
ICAgICogVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKGVh
c2VJbk91dFF1YWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmg6IEFk
ZGVkLgorCiAyMDEzLTA5LTExICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2Ugc3VyZSB0aGF0IGxheW91dCBpcyB1cC10by1kYXRlIHdoZW4gbW92
aW5nIGEgV0tWaWV3IGludG8gYSB3aW5kb3csIHRvIGF2b2lkICFuZWVkc0xheW91dCgpIGFzc2Vy
dGlvbnMgaW4gUmVuZGVyVmlldzo6cGFpbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCA0ODk1ZTk4ZTI2NzU0ZDNkZjVhMDU4NmQwNGM2NTk2ZWVhMTIwOGVhLi4yN2I4NWQ5Y2IwZDlh
ZjZmNjgyMTBiNjhlOTAxMDI0ODhkZDI1ZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMTA2LDYgKzEwNiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJv
Y2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9D
b250ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdl
ckVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKICAgICBVSVByb2Nl
c3MvZWZsL0V3a1RvdWNoRXZlbnQuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaFBvaW50
LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggMGJiODgwZDZhZDZlZGY4Y2Qy
OWYwOTFmM2E3YmE0YjRmOGM3OGU1OC4uYTY2ZjZkNzE0ODA3Y2I4ODc2ZTU4NWI3ZGI5NjIzOTgz
OGJjZDNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5j
cHAKQEAgLTEzOTQsNiArMTM5NCwyNSBAQCB2b2lkIEV3a1ZpZXc6OmRpZEZpbmRab29tYWJsZUFy
ZWEoY29uc3QgV0tQb2ludCYgcG9pbnQsIGNvbnN0IFdLUmVjdCYgYXJlYSkKICAgICBVTlVTRURf
UEFSQU0oYXJlYSk7CiB9CiAKK2Jvb2wgRXdrVmlldzo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYg
b2Zmc2V0KQoreworICAgIFdLUG9pbnQgb2xkUG9zaXRpb24gPSBXS1ZpZXdHZXRDb250ZW50UG9z
aXRpb24od2tWaWV3KCkpOworICAgIEZsb2F0UG9pbnQgbmV3UG9zaXRpb24gPSBGbG9hdFBvaW50
KG9sZFBvc2l0aW9uLnggKyBvZmZzZXQud2lkdGgoKSwgb2xkUG9zaXRpb24ueSArIG9mZnNldC5o
ZWlnaHQoKSk7CisKKyAgICAvLyBVcGRhdGUgbmV3IHBvc2l0aW9uIHRvIHRoZSBQYWdlVmlld3Bv
cnRDb250cm9sbGVyLgorICAgIGZsb2F0IGNvbnRlbnRTY2FsZSA9IFdLVmlld0dldENvbnRlbnRT
Y2FsZUZhY3Rvcih3a1ZpZXcoKSk7CisgICAgbmV3UG9zaXRpb24uc2NhbGUoMSAvIGNvbnRlbnRT
Y2FsZSwgMSAvIGNvbnRlbnRTY2FsZSk7CisgICAgbmV3UG9zaXRpb24gPSBtX3BhZ2VWaWV3cG9y
dENvbnRyb2xsZXItPmJvdW5kQ29udGVudHNQb3NpdGlvbkF0U2NhbGUobmV3UG9zaXRpb24sIGNv
bnRlbnRTY2FsZSk7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VDb250
ZW50c1Zpc2liaWxpdHkobmV3UG9zaXRpb24sIGNvbnRlbnRTY2FsZSk7CisKKyAgICAvLyBVcGRh
dGUgbmV3IHBvc2l0aW9uIHRvIHRoZSBXS1ZpZXcuCisgICAgV0tQb2ludCBwb3NpdGlvbiA9IFdL
UG9pbnRNYWtlKG5ld1Bvc2l0aW9uLngoKSAqIGNvbnRlbnRTY2FsZSwgbmV3UG9zaXRpb24ueSgp
ICogY29udGVudFNjYWxlKTsKKyAgICBXS1ZpZXdTZXRDb250ZW50UG9zaXRpb24od2tWaWV3KCks
IHBvc2l0aW9uKTsKKworICAgIC8vIElmIHRoZSBwYWdlIHBvc2l0aW9uIGlzIG5vdCBjaGFuZ2Vk
LCBub3RpZnkgdGhhdCB1c2luZyByZXR1cm5pbmcgdmFsdWUuCisgICAgcmV0dXJuICEob2xkUG9z
aXRpb24gPT0gcG9zaXRpb24pOworfQorCiBFdmFzX1NtYXJ0X0NsYXNzIEV3a1ZpZXc6OnBhcmVu
dFNtYXJ0Q2xhc3MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIAogLy8gRnJlZSBFd2sg
VmlldyBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
LmgKaW5kZXggYzQ2YjE1MWEwZGQ5MWRjZTE0MWY1MjllNmUzOTA1NTAwMTA0YmVhOC4uMzA2ZTM2
ZjAxY2JjODhmMGJkYWQyYzdmMDNlMDU5NDExYTBjYjE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtMjAyLDYgKzIwMiw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGluZm9ybVVSTENoYW5nZSgpOwogCiAgICAgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IHRha2VTbmFwc2hvdCgpOworICAgIGJvb2wgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpOwogCiAgICAgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdLUG9pbnQmLCBj
b25zdCBXS1JlY3QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwCmluZGV4IDIxNWIzMTQ3YzkyZDY2NmRjZmI1NzUx
ZmM0Nzc5NDA3NDExMmQyMTQuLjE0ZDUzZDZjM2RkNTc3ZGU0ZDU3YTY0NTY3NDc2ZTAyOWUwNGIz
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1cmVS
ZWNvZ25pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0
dXJlUmVjb2duaXplci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJHZXN0dXJlUmVjb2duaXplci5oIgogCisjaW5jbHVkZSAiRWFzaW5nQ3VydmVz
LmgiCiAjaW5jbHVkZSAiRXdrVmlldy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCkBAIC00MywxMyArNDQsMTggQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHZXN0dXJlSGFuZGxlcihld2tWaWV3
KSk7CiAgICAgfQorICAgIH5HZXN0dXJlSGFuZGxlcigpOwogCisgICAgRXdrVmlldyogdmlldygp
IHsgcmV0dXJuIG1fZXdrVmlldzsgfQorCisgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgaGFu
ZGxlU2luZ2xlVGFwKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBoYW5kbGVE
b3VibGVUYXAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVRhcEFu
ZEhvbGQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVBhblN0YXJ0
ZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVBhbihjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuRmluaXNoZWQoKTsKKyAgICB2
b2lkIGhhbmRsZUZsaWNrKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIGhhbmRs
ZVBpbmNoU3RhcnRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UG9pbnQ+Jik7CiAgICAgdm9p
ZCBoYW5kbGVQaW5jaChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UG9pbnQ+Jik7CiAgICAgdm9p
ZCBoYW5kbGVQaW5jaEZpbmlzaGVkKCk7CkBAIC01NywxMiArNjMsNjAgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBHZXN0dXJlSGFuZGxlcihFd2tWaWV3Kik7CiAKKyAgICBzdGF0
aWMgRWluYV9Cb29sIHBhbkFuaW1hdG9yQ2FsbGJhY2sodm9pZCopOworICAgIHN0YXRpYyBFaW5h
X0Jvb2wgZmxpY2tBbmltYXRvckNhbGxiYWNrKHZvaWQqKTsKKworICAgIHN0YXRpYyBjb25zdCBp
bnQgc19oaXN0b3J5Q2FwYWNpdHkgPSA1OworCiAgICAgRXdrVmlldyogbV9ld2tWaWV3OworICAg
IFdlYkNvcmU6OkludFBvaW50IG1fbGFzdFBvaW50OworICAgIFdlYkNvcmU6OkludFBvaW50IG1f
Y3VycmVudFBvaW50OworICAgIGJvb2wgbV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQ7CisgICAgRWNv
cmVfQW5pbWF0b3IqIG1fcGFuQW5pbWF0b3I7CisgICAgRWNvcmVfQW5pbWF0b3IqIG1fZmxpY2tB
bmltYXRvcjsKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fZmxpY2tPZmZzZXQ7CisgICAgdW5zaWdu
ZWQgbV9mbGlja0R1cmF0aW9uOworICAgIHVuc2lnbmVkIG1fZmxpY2tJbmRleDsKKworICAgIHN0
cnVjdCBIaXN0b3J5SXRlbSB7CisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50OworICAg
ICAgICBkb3VibGUgdGltZXN0YW1wOworICAgIH07CisgICAgVmVjdG9yPEhpc3RvcnlJdGVtPiBt
X2hpc3Rvcnk7CisgICAgdW5zaWduZWQgbV9vbGRlc3RIaXN0b3J5SXRlbUluZGV4OwogfTsKIAog
R2VzdHVyZUhhbmRsZXI6Okdlc3R1cmVIYW5kbGVyKEV3a1ZpZXcqIGV3a1ZpZXcpCiAgICAgOiBt
X2V3a1ZpZXcoZXdrVmlldykKKyAgICAsIG1faXNDdXJyZW50UG9pbnRVcGRhdGVkKGZhbHNlKQor
ICAgICwgbV9wYW5BbmltYXRvcigwKQorICAgICwgbV9mbGlja0FuaW1hdG9yKDApCisgICAgLCBt
X2ZsaWNrRHVyYXRpb24oMCkKKyAgICAsIG1fZmxpY2tJbmRleCgwKQorICAgICwgbV9vbGRlc3RI
aXN0b3J5SXRlbUluZGV4KDApCiB7CisgICAgbV9oaXN0b3J5LnJlc2VydmVDYXBhY2l0eShzX2hp
c3RvcnlDYXBhY2l0eSk7Cit9CisKK0dlc3R1cmVIYW5kbGVyOjp+R2VzdHVyZUhhbmRsZXIoKQor
eworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6OnJlc2V0KCkKK3sKKyAg
ICBpZiAobV9wYW5BbmltYXRvcikgeworICAgICAgICBlY29yZV9hbmltYXRvcl9kZWwobV9wYW5B
bmltYXRvcik7CisgICAgICAgIG1fcGFuQW5pbWF0b3IgPSAwOworCisgICAgICAgIG1fb2xkZXN0
SGlzdG9yeUl0ZW1JbmRleCA9IDA7CisgICAgICAgIG1faGlzdG9yeS5yZXNpemUoMCk7CisgICAg
fQorCisgICAgaWYgKG1fZmxpY2tBbmltYXRvcikgeworICAgICAgICBlY29yZV9hbmltYXRvcl9k
ZWwobV9mbGlja0FuaW1hdG9yKTsKKyAgICAgICAgbV9mbGlja0FuaW1hdG9yID0gMDsKKyAgICB9
CiB9CiAKIHZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVNpbmdsZVRhcChjb25zdCBJbnRQb2lu
dCYpCkBAIC04MCwxOSArMTM0LDg1IEBAIHZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVRhcEFu
ZEhvbGQoY29uc3QgSW50UG9pbnQmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
R2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhblN0YXJ0ZWQoY29uc3QgSW50UG9pbnQmKQorRWluYV9C
b29sIEdlc3R1cmVIYW5kbGVyOjpwYW5BbmltYXRvckNhbGxiYWNrKHZvaWQqIGRhdGEpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBHZXN0dXJlSGFuZGxlciogZ2VzdHVyZUhhbmRsZXIg
PSBzdGF0aWNfY2FzdDxHZXN0dXJlSGFuZGxlcio+KGRhdGEpOworICAgIGlmICghZ2VzdHVyZUhh
bmRsZXItPm1faXNDdXJyZW50UG9pbnRVcGRhdGVkIHx8IGdlc3R1cmVIYW5kbGVyLT5tX2xhc3RQ
b2ludCA9PSBnZXN0dXJlSGFuZGxlci0+bV9jdXJyZW50UG9pbnQpCisgICAgICAgIHJldHVybiBF
Q09SRV9DQUxMQkFDS19SRU5FVzsKKworICAgIGdlc3R1cmVIYW5kbGVyLT52aWV3KCktPnNjcm9s
bEJ5KGdlc3R1cmVIYW5kbGVyLT5tX2xhc3RQb2ludCAtIGdlc3R1cmVIYW5kbGVyLT5tX2N1cnJl
bnRQb2ludCk7CisgICAgZ2VzdHVyZUhhbmRsZXItPm1fbGFzdFBvaW50ID0gZ2VzdHVyZUhhbmRs
ZXItPm1fY3VycmVudFBvaW50OworICAgIGdlc3R1cmVIYW5kbGVyLT5tX2lzQ3VycmVudFBvaW50
VXBkYXRlZCA9IGZhbHNlOworCisgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX1JFTkVXOwogfQog
Ci12b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQYW4oY29uc3QgSW50UG9pbnQmKQordm9pZCBH
ZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuU3RhcnRlZChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQoIW1fcGFuQW5pbWF0b3IpOworICAg
IG1fcGFuQW5pbWF0b3IgPSBlY29yZV9hbmltYXRvcl9hZGQocGFuQW5pbWF0b3JDYWxsYmFjaywg
dGhpcyk7CisgICAgbV9sYXN0UG9pbnQgPSBtX2N1cnJlbnRQb2ludCA9IHBvaW50OworfQorCit2
b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQYW4oY29uc3QgSW50UG9pbnQmIHBvaW50KQorewor
ICAgIG1fY3VycmVudFBvaW50ID0gcG9pbnQ7CisgICAgbV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQg
PSB0cnVlOworCisgICAgLy8gU2F2ZSBjdXJyZW50IHBvaW50IHRvIHVzZSB0byBjYWxjdWxhdGUg
b2Zmc2V0IG9mIGZsaWNrLgorICAgIEhpc3RvcnlJdGVtIGl0ZW0gPSB7IG1fY3VycmVudFBvaW50
LCBlY29yZV90aW1lX2dldCgpIH07CisgICAgaWYgKG1faGlzdG9yeS5zaXplKCkgPCBtX2hpc3Rv
cnkuY2FwYWNpdHkoKSkKKyAgICAgICAgbV9oaXN0b3J5LnVuY2hlY2tlZEFwcGVuZChpdGVtKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgbV9oaXN0b3J5W21fb2xkZXN0SGlzdG9yeUl0ZW1JbmRleCsr
XSA9IGl0ZW07CisgICAgICAgIGlmIChtX29sZGVzdEhpc3RvcnlJdGVtSW5kZXggPT0gbV9oaXN0
b3J5LmNhcGFjaXR5KCkpCisgICAgICAgICAgICBtX29sZGVzdEhpc3RvcnlJdGVtSW5kZXggPSAw
OworICAgIH0KIH0KIAogdm9pZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuRmluaXNoZWQoKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKG1fcGFuQW5pbWF0b3IpOworICAg
IGVjb3JlX2FuaW1hdG9yX2RlbChtX3BhbkFuaW1hdG9yKTsKKyAgICBtX3BhbkFuaW1hdG9yID0g
MDsKKworICAgIGlmICghbV9oaXN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICAvLyBDYWxjdWxh
dGUgb2Zmc2V0IHRvIG1vdmUgZHVyaW5nIG9uZSBmcmFtZS4KKyAgICAgICAgY29uc3QgSGlzdG9y
eUl0ZW0mIGZpcnN0SGlzdG9yeUl0ZW0gPSBtX2hpc3RvcnlbbV9vbGRlc3RIaXN0b3J5SXRlbUlu
ZGV4XTsKKyAgICAgICAgZG91YmxlIGZyYW1lID0gKGVjb3JlX3RpbWVfZ2V0KCkgLSBmaXJzdEhp
c3RvcnlJdGVtLnRpbWVzdGFtcCkgLyBlY29yZV9hbmltYXRvcl9mcmFtZXRpbWVfZ2V0KCk7Cisg
ICAgICAgIEludFNpemUgb2Zmc2V0ID0gZmlyc3RIaXN0b3J5SXRlbS5wb2ludCAtIG1fY3VycmVu
dFBvaW50OworICAgICAgICBvZmZzZXQuc2NhbGUoMSAvIGZyYW1lKTsKKyAgICAgICAgaGFuZGxl
RmxpY2sob2Zmc2V0KTsKKyAgICB9CisKKyAgICBtX29sZGVzdEhpc3RvcnlJdGVtSW5kZXggPSAw
OworICAgIG1faGlzdG9yeS5yZXNpemUoMCk7Cit9CisKK0VpbmFfQm9vbCBHZXN0dXJlSGFuZGxl
cjo6ZmxpY2tBbmltYXRvckNhbGxiYWNrKHZvaWQqIGRhdGEpCit7CisgICAgR2VzdHVyZUhhbmRs
ZXIqIGdlc3R1cmVIYW5kbGVyID0gc3RhdGljX2Nhc3Q8R2VzdHVyZUhhbmRsZXIqPihkYXRhKTsK
KyAgICBmbG9hdCBtdWx0aXBsaWVyID0gZWFzZUluT3V0UXVhZChnZXN0dXJlSGFuZGxlci0+bV9m
bGlja0luZGV4LCAwLCAxLjAsIGdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrRHVyYXRpb24pOworICAg
IGZsb2F0IG9mZnNldFdpZHRoID0gZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tPZmZzZXQud2lkdGgo
KSAqIG11bHRpcGxpZXI7CisgICAgZmxvYXQgb2Zmc2V0SGVpZ2h0ID0gZ2VzdHVyZUhhbmRsZXIt
Pm1fZmxpY2tPZmZzZXQuaGVpZ2h0KCkgKiBtdWx0aXBsaWVyOworICAgIG9mZnNldFdpZHRoID0g
KG9mZnNldFdpZHRoID4gMCkgPyBjZWlsZihvZmZzZXRXaWR0aCkgOiBmbG9vcmYob2Zmc2V0V2lk
dGgpOworICAgIG9mZnNldEhlaWdodCA9IChvZmZzZXRIZWlnaHQgPiAwKSA/IGNlaWxmKG9mZnNl
dEhlaWdodCkgOiBmbG9vcmYob2Zmc2V0SGVpZ2h0KTsKKyAgICBJbnRTaXplIG9mZnNldChvZmZz
ZXRXaWR0aCwgb2Zmc2V0SGVpZ2h0KTsKKyAgICBnZXN0dXJlSGFuZGxlci0+bV9mbGlja0luZGV4
LS07CisKKyAgICBpZiAob2Zmc2V0LmlzWmVybygpIHx8ICFnZXN0dXJlSGFuZGxlci0+dmlldygp
LT5zY3JvbGxCeShvZmZzZXQpIHx8ICFnZXN0dXJlSGFuZGxlci0+bV9mbGlja0luZGV4KSB7Cisg
ICAgICAgIGdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrQW5pbWF0b3IgPSAwOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR2VzdHVyZUhh
bmRsZXI6OmhhbmRsZUZsaWNrKGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBtX2ZsaWNr
T2Zmc2V0ID0gb2Zmc2V0OworICAgIG1fZmxpY2tJbmRleCA9IG1fZmxpY2tEdXJhdGlvbiA9IDEg
LyBlY29yZV9hbmltYXRvcl9mcmFtZXRpbWVfZ2V0KCk7CisgICAgbV9mbGlja0FuaW1hdG9yID0g
ZWNvcmVfYW5pbWF0b3JfYWRkKGZsaWNrQW5pbWF0b3JDYWxsYmFjaywgdGhpcyk7CiB9CiAKIHZv
aWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBpbmNoU3RhcnRlZChjb25zdCBWZWN0b3I8SW50UG9p
bnQ+JikKQEAgLTE5Niw2ICszMTYsOCBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpub0dlc3R1
cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50cykKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoU3RhcnQ6CisgICAgICAgIG1f
Z2VzdHVyZUhhbmRsZXItPnJlc2V0KCk7CisKICAgICAgICAgbV9yZWNvZ25pemVyRnVuY3Rpb24g
PSAmR2VzdHVyZVJlY29nbml6ZXI6OnNpbmdsZVRhcEdlc3R1cmU7CiAgICAgICAgIG1fZmlyc3RQ
cmVzc2VkUG9pbnQgPSB0b0ludFBvaW50KGdldFBvaW50QXRJbmRleCh0b3VjaFBvaW50cywgMCkp
OwogICAgICAgICBBU1NFUlQoIW1fdGFwQW5kSG9sZFRpbWVyKTsKQEAgLTM0MCw2ICs0NjIsNyBA
QCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpwaW5jaEdlc3R1cmUoV0tFdmVudFR5cGUgdHlwZSwg
V0tBcnJheVJlZiB0b3VjaFBvaW50cykKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0KCkK
IHsKICAgICBzdG9wVGFwVGltZXJzKCk7CisgICAgbV9nZXN0dXJlSGFuZGxlci0+cmVzZXQoKTsK
IAogICAgIG1fcmVjb2duaXplckZ1bmN0aW9uID0gJkdlc3R1cmVSZWNvZ25pemVyOjpub0dlc3R1
cmU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1
cnZlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTI1ZGJiOTBlZmJjNjcyOWM0ZmI5MmM5M2UxMTJjMGYzZjc2ZjVhNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVz
LmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAxIFJvYmVydCBQ
ZW5uZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3Vu
ZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBt
YXkgYmUKKyAqICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIFJvYmVydCBQZW5uZXIncyBlYXNpbmcgZXF1
YXRpb25zLiBodHRwOi8vd3d3LnJvYmVydHBlbm5lci5jb20vZWFzaW5nLworICogc3RhdGljIGZ1
bmN0aW9uIGVhc2VJbk91dFF1YWQgKHQ6TnVtYmVyLCBiOk51bWJlciwgYzpOdW1iZXIsIGQ6TnVt
YmVyKTpOdW1iZXIgeworICogICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0ICsg
YjsKKyAqICAgICByZXR1cm4gLWMvMiAqICgoLS10KSoodC0yKSAtIDEpICsgYjsKKyAqIH0KKyAq
LworZmxvYXQgZWFzZUluT3V0UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25z
dCBmbG9hdCBjb25zdGFudCwgY29uc3QgdW5zaWduZWQgZHVyYXRpb24pCit7CisgICAgaWYgKHRp
bWUgPiBkdXJhdGlvbiB8fCB0aW1lIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAo
KHRpbWUgLz0gKGR1cmF0aW9uIC8gMikpIDwgMSkKKyAgICAgICAgcmV0dXJuIChjb25zdGFudCAv
IDIpICogdGltZSAqIHRpbWUgKyBiYXNlOworCisgICAgdGltZSAtPSAxOworICAgIHJldHVybiAt
MSAqIChjb25zdGFudCAvIDIpICogKHRpbWUgKiAodGltZSAtIDIpIC0gMSkgKyBiYXNlOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmJhMDQ2MjMxMjUxYzlhOTk1ZTNiNDQyNWU4ZDZkNjdlYzE3YzNlZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKQEAgLTAsMCAr
MSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBjb250cmlidXRvcnMgbWF5IGJlCisgKiAgICB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0
d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgRWFzaW5nQ3VydmVzX2gKKyNkZWZpbmUgRWFzaW5nQ3VydmVzX2gK
KworZmxvYXQgZWFzZUluT3V0UXVhZChmbG9hdCB0aW1lLCBjb25zdCBmbG9hdCBiYXNlLCBjb25z
dCBmbG9hdCBjb25zdGFudCwgY29uc3QgdW5zaWduZWQgZHVyYXRpb24pOworCisjZW5kaWYgLy8g
RWFzaW5nQ3VydmVzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211524</attachid>
            <date>2013-09-13 02:46:56 -0700</date>
            <delta_ts>2013-09-16 03:18:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130913184654.patch</filename>
            <type>text/plain</type>
            <size>16186</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2U2NzYwNzlkNTVmZDNm
YmQyNTUyNTg5NjIzNmQxYjhlMDBmZTFmNC4uYmNmOTdhNjMwMWQ0NjI3YTI5OGZiODg0YjU0MDEy
NmU2ZDZjOWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTA5LTEzICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFuIGdlc3R1cmUgdG8gc2Nyb2xsIHBh
Z2UgYnkgbW92ZW1lbnQgb2YgcG9pbnQgYW5kIHN0b3AKKyAgICAgICAgc2Nyb2xsaW5nIHNtb290
aGx5IHVzaW5nIGVhc2UtaW4tb3V0LXF1YWQgYWxnb3JpdGhtIGFmdGVyIHRvdWNoZWQKKyAgICAg
ICAgcG9pbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY3JlZW4uCisKKyAgICAgICAgVXNlIEVjb3Jl
X0FuaW1hdG9yIGluIG9yZGVyIHRvIHByb2Nlc3MgbW92ZW1lbnQgb25jZSBwZXIgZWFjaCBmcmFt
aW5nCisgICAgICAgIHRpbWUgc2xvdCBpbnN0ZWFkIG9mIHByb2Nlc3NpbmcgYWxsIG1vdmVtZW50
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpzY3JvbGxCeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRs
ZXI6OnZpZXcpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6R2VzdHVyZUhhbmRs
ZXIpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6fkdlc3R1cmVIYW5kbGVyKToK
KyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYktp
dDo6R2VzdHVyZUhhbmRsZXI6OnBhbkFuaW1hdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuU3RhcnRlZCk6CisgICAgICAgIChXZWJLaXQ6Okdl
c3R1cmVIYW5kbGVyOjpoYW5kbGVQYW4pOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxl
cjo6aGFuZGxlUGFuRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlSGFuZGxlcjo6
ZmxpY2tBbmltYXRvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6
OmhhbmRsZUZsaWNrKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXI6Om5vR2Vz
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCk6CisgICAg
ICAgICogVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6ZWFzZUluT3V0UXVhZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2
ZXMuaDogQWRkZWQuCisKIDIwMTMtMDktMTEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIHRoYXQgbGF5b3V0IGlzIHVwLXRvLWRhdGUg
d2hlbiBtb3ZpbmcgYSBXS1ZpZXcgaW50byBhIHdpbmRvdywgdG8gYXZvaWQgIW5lZWRzTGF5b3V0
KCkgYXNzZXJ0aW9ucyBpbiBSZW5kZXJWaWV3OjpwYWludCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IDQ4OTVlOThlMjY3NTRkM2RmNWEwNTg2ZDA0YzY1OTZlZWExMjA4ZWEuLjI3Yjg1
ZDljYjBkOWFmNmY2ODIxMGI2OGU5MDEwMjQ4OGRkMjVlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCkBAIC0xMDYsNiArMTA2LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0SGlzdG9yeUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nl
c3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRG93bmxv
YWRNYW5hZ2VyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmNwcAogICAg
IFVJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0V3a1Rv
dWNoUG9pbnQuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAppbmRleCAwYmI4ODBkNmFk
NmVkZjhjZDI5ZjA5MWYzYTdiYTRiNGY4Yzc4ZTU4Li5lNTNmYjNiMWVkYzJlM2UzZjg5NzMwMDEw
NjgxZGExZWU5MzkyN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmNwcApAQCAtMTM5NCw2ICsxMzk0LDI1IEBAIHZvaWQgRXdrVmlldzo6ZGlkRmluZFpv
b21hYmxlQXJlYShjb25zdCBXS1BvaW50JiBwb2ludCwgY29uc3QgV0tSZWN0JiBhcmVhKQogICAg
IFVOVVNFRF9QQVJBTShhcmVhKTsKIH0KIAorYm9vbCBFd2tWaWV3OjpzY3JvbGxCeShjb25zdCBJ
bnRTaXplJiBvZmZzZXQpCit7CisgICAgV0tQb2ludCBvbGRQb3NpdGlvbiA9IFdLVmlld0dldENv
bnRlbnRQb3NpdGlvbih3a1ZpZXcoKSk7CisgICAgRmxvYXRQb2ludCBuZXdQb3NpdGlvbihvbGRQ
b3NpdGlvbi54ICsgb2Zmc2V0LndpZHRoKCksIG9sZFBvc2l0aW9uLnkgKyBvZmZzZXQuaGVpZ2h0
KCkpOworCisgICAgLy8gVXBkYXRlIG5ldyBwb3NpdGlvbiB0byB0aGUgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlci4KKyAgICBmbG9hdCBjb250ZW50U2NhbGUgPSBXS1ZpZXdHZXRDb250ZW50U2NhbGVG
YWN0b3Iod2tWaWV3KCkpOworICAgIG5ld1Bvc2l0aW9uLnNjYWxlKDEgLyBjb250ZW50U2NhbGUs
IDEgLyBjb250ZW50U2NhbGUpOworICAgIG5ld1Bvc2l0aW9uID0gbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyLT5ib3VuZENvbnRlbnRzUG9zaXRpb25BdFNjYWxlKG5ld1Bvc2l0aW9uLCBjb250ZW50
U2NhbGUpOworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNW
aXNpYmlsaXR5KG5ld1Bvc2l0aW9uLCBjb250ZW50U2NhbGUpOworCisgICAgLy8gVXBkYXRlIG5l
dyBwb3NpdGlvbiB0byB0aGUgV0tWaWV3LgorICAgIFdLUG9pbnQgcG9zaXRpb24gPSBXS1BvaW50
TWFrZShuZXdQb3NpdGlvbi54KCkgKiBjb250ZW50U2NhbGUsIG5ld1Bvc2l0aW9uLnkoKSAqIGNv
bnRlbnRTY2FsZSk7CisgICAgV0tWaWV3U2V0Q29udGVudFBvc2l0aW9uKHdrVmlldygpLCBwb3Np
dGlvbik7CisKKyAgICAvLyBJZiB0aGUgcGFnZSBwb3NpdGlvbiBoYXMgbm90IGNoYW5nZWQsIG5v
dGlmeSB0aGUgY2FsbGVyIHVzaW5nIHRoZSByZXR1cm4gdmFsdWUuCisgICAgcmV0dXJuICEob2xk
UG9zaXRpb24gPT0gcG9zaXRpb24pOworfQorCiBFdmFzX1NtYXJ0X0NsYXNzIEV3a1ZpZXc6OnBh
cmVudFNtYXJ0Q2xhc3MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIAogLy8gRnJlZSBF
d2sgVmlldyBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3LmgKaW5kZXggYzQ2YjE1MWEwZGQ5MWRjZTE0MWY1MjllNmUzOTA1NTAwMTA0YmVhOC4uMzA2
ZTM2ZjAxY2JjODhmMGJkYWQyYzdmMDNlMDU5NDExYTBjYjE4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtMjAyLDYgKzIwMiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGluZm9ybVVSTENoYW5nZSgpOwogCiAgICAgUGFzc1JlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IHRha2VTbmFwc2hvdCgpOworICAgIGJvb2wgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpOwogCiAgICAgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdLUG9pbnQm
LCBjb25zdCBXS1JlY3QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwCmluZGV4IDIxNWIzMTQ3YzkyZDY2NmRjZmI1
NzUxZmM0Nzc5NDA3NDExMmQyMTQuLmI4MjU4Yzc0ZDRjZjQ3MzUyOWZiNzY1M2M1ZmRhZWIzYzFh
NTg2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0dlc3R1
cmVSZWNvZ25pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9H
ZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJHZXN0dXJlUmVjb2duaXplci5oIgogCisjaW5jbHVkZSAiRWFzaW5nQ3Vy
dmVzLmgiCiAjaW5jbHVkZSAiRXdrVmlldy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCkBAIC00MywyNiArNDQsNzkgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHZXN0dXJlSGFuZGxlcihld2tW
aWV3KSk7CiAgICAgfQorICAgIH5HZXN0dXJlSGFuZGxlcigpOwogCi0gICAgdm9pZCBoYW5kbGVT
aW5nbGVUYXAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKLSAgICB2b2lkIGhhbmRsZURvdWJs
ZVRhcChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwotICAgIHZvaWQgaGFuZGxlVGFwQW5kSG9s
ZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwotICAgIHZvaWQgaGFuZGxlUGFuU3RhcnRlZChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwotICAgIHZvaWQgaGFuZGxlUGFuKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7CisgICAgRXdrVmlldyogdmlldygpIHsgcmV0dXJuIG1fZXdrVmlldzsg
fQorCisgICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgaGFuZGxlU2luZ2xlVGFwKGNvbnN0IElu
dFBvaW50Jik7CisgICAgdm9pZCBoYW5kbGVEb3VibGVUYXAoY29uc3QgSW50UG9pbnQmKTsKKyAg
ICB2b2lkIGhhbmRsZVRhcEFuZEhvbGQoY29uc3QgSW50UG9pbnQmKTsKKyAgICB2b2lkIGhhbmRs
ZVBhblN0YXJ0ZWQoY29uc3QgSW50UG9pbnQmKTsKKyAgICB2b2lkIGhhbmRsZVBhbihjb25zdCBJ
bnRQb2ludCYpOwogICAgIHZvaWQgaGFuZGxlUGFuRmluaXNoZWQoKTsKLSAgICB2b2lkIGhhbmRs
ZVBpbmNoU3RhcnRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UG9pbnQ+Jik7Ci0gICAgdm9p
ZCBoYW5kbGVQaW5jaChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UG9pbnQ+Jik7CisgICAgdm9p
ZCBoYW5kbGVGbGljayhjb25zdCBJbnRTaXplJik7CisgICAgdm9pZCBoYW5kbGVQaW5jaFN0YXJ0
ZWQoY29uc3QgVmVjdG9yPEludFBvaW50PiYpOworICAgIHZvaWQgaGFuZGxlUGluY2goY29uc3Qg
VmVjdG9yPEludFBvaW50PiYpOwogICAgIHZvaWQgaGFuZGxlUGluY2hGaW5pc2hlZCgpOwogCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IEdlc3R1cmVIYW5kbGVyKEV3a1ZpZXcqKTsKIAorICAgIHN0
YXRpYyBFaW5hX0Jvb2wgcGFuQW5pbWF0b3JDYWxsYmFjayh2b2lkKik7CisgICAgc3RhdGljIEVp
bmFfQm9vbCBmbGlja0FuaW1hdG9yQ2FsbGJhY2sodm9pZCopOworCisgICAgc3RhdGljIGNvbnN0
IGludCBzX2hpc3RvcnlDYXBhY2l0eSA9IDU7CisKICAgICBFd2tWaWV3KiBtX2V3a1ZpZXc7Cisg
ICAgSW50UG9pbnQgbV9sYXN0UG9pbnQ7CisgICAgSW50UG9pbnQgbV9jdXJyZW50UG9pbnQ7Cisg
ICAgYm9vbCBtX2lzQ3VycmVudFBvaW50VXBkYXRlZDsKKyAgICBFY29yZV9BbmltYXRvciogbV9w
YW5BbmltYXRvcjsKKyAgICBFY29yZV9BbmltYXRvciogbV9mbGlja0FuaW1hdG9yOworICAgIElu
dFNpemUgbV9mbGlja09mZnNldDsKKyAgICB1bnNpZ25lZCBtX2ZsaWNrRHVyYXRpb247CisgICAg
dW5zaWduZWQgbV9mbGlja0luZGV4OworCisgICAgc3RydWN0IEhpc3RvcnlJdGVtIHsKKyAgICAg
ICAgSW50UG9pbnQgcG9pbnQ7CisgICAgICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgfTsKKyAg
ICBWZWN0b3I8SGlzdG9yeUl0ZW0+IG1faGlzdG9yeTsKKyAgICBzaXplX3QgbV9vbGRlc3RIaXN0
b3J5SXRlbUluZGV4OwogfTsKIAogR2VzdHVyZUhhbmRsZXI6Okdlc3R1cmVIYW5kbGVyKEV3a1Zp
ZXcqIGV3a1ZpZXcpCiAgICAgOiBtX2V3a1ZpZXcoZXdrVmlldykKKyAgICAsIG1faXNDdXJyZW50
UG9pbnRVcGRhdGVkKGZhbHNlKQorICAgICwgbV9wYW5BbmltYXRvcigwKQorICAgICwgbV9mbGlj
a0FuaW1hdG9yKDApCisgICAgLCBtX2ZsaWNrRHVyYXRpb24oMCkKKyAgICAsIG1fZmxpY2tJbmRl
eCgwKQorICAgICwgbV9vbGRlc3RIaXN0b3J5SXRlbUluZGV4KDApCiB7CisgICAgbV9oaXN0b3J5
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc19oaXN0b3J5Q2FwYWNpdHkpOworfQorCitHZXN0dXJl
SGFuZGxlcjo6fkdlc3R1cmVIYW5kbGVyKCkKK3sKKyAgICByZXNldCgpOworfQorCit2b2lkIEdl
c3R1cmVIYW5kbGVyOjpyZXNldCgpCit7CisgICAgaWYgKG1fcGFuQW5pbWF0b3IpIHsKKyAgICAg
ICAgZWNvcmVfYW5pbWF0b3JfZGVsKG1fcGFuQW5pbWF0b3IpOworICAgICAgICBtX3BhbkFuaW1h
dG9yID0gMDsKKworICAgICAgICBtX29sZGVzdEhpc3RvcnlJdGVtSW5kZXggPSAwOworICAgICAg
ICBtX2hpc3RvcnkucmVzaXplKDApOworICAgIH0KKworICAgIGlmIChtX2ZsaWNrQW5pbWF0b3Ip
IHsKKyAgICAgICAgZWNvcmVfYW5pbWF0b3JfZGVsKG1fZmxpY2tBbmltYXRvcik7CisgICAgICAg
IG1fZmxpY2tBbmltYXRvciA9IDA7CisgICAgfQogfQogCiB2b2lkIEdlc3R1cmVIYW5kbGVyOjpo
YW5kbGVTaW5nbGVUYXAoY29uc3QgSW50UG9pbnQmKQpAQCAtODAsMTkgKzEzNCw4NSBAQCB2b2lk
IEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVUYXBBbmRIb2xkKGNvbnN0IEludFBvaW50JikKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQYW5TdGFy
dGVkKGNvbnN0IEludFBvaW50JikKK0VpbmFfQm9vbCBHZXN0dXJlSGFuZGxlcjo6cGFuQW5pbWF0
b3JDYWxsYmFjayh2b2lkKiBkYXRhKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgR2Vz
dHVyZUhhbmRsZXIqIGdlc3R1cmVIYW5kbGVyID0gc3RhdGljX2Nhc3Q8R2VzdHVyZUhhbmRsZXIq
PihkYXRhKTsKKyAgICBpZiAoIWdlc3R1cmVIYW5kbGVyLT5tX2lzQ3VycmVudFBvaW50VXBkYXRl
ZCB8fCBnZXN0dXJlSGFuZGxlci0+bV9sYXN0UG9pbnQgPT0gZ2VzdHVyZUhhbmRsZXItPm1fY3Vy
cmVudFBvaW50KQorICAgICAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfUkVORVc7CisKKyAgICBn
ZXN0dXJlSGFuZGxlci0+dmlldygpLT5zY3JvbGxCeShnZXN0dXJlSGFuZGxlci0+bV9sYXN0UG9p
bnQgLSBnZXN0dXJlSGFuZGxlci0+bV9jdXJyZW50UG9pbnQpOworICAgIGdlc3R1cmVIYW5kbGVy
LT5tX2xhc3RQb2ludCA9IGdlc3R1cmVIYW5kbGVyLT5tX2N1cnJlbnRQb2ludDsKKyAgICBnZXN0
dXJlSGFuZGxlci0+bV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQgPSBmYWxzZTsKKworICAgIHJldHVy
biBFQ09SRV9DQUxMQkFDS19SRU5FVzsKIH0KIAotdm9pZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxl
UGFuKGNvbnN0IEludFBvaW50JikKK3ZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhblN0YXJ0
ZWQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
QVNTRVJUKCFtX3BhbkFuaW1hdG9yKTsKKyAgICBtX3BhbkFuaW1hdG9yID0gZWNvcmVfYW5pbWF0
b3JfYWRkKHBhbkFuaW1hdG9yQ2FsbGJhY2ssIHRoaXMpOworICAgIG1fbGFzdFBvaW50ID0gbV9j
dXJyZW50UG9pbnQgPSBwb2ludDsKK30KKwordm9pZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFu
KGNvbnN0IEludFBvaW50JiBwb2ludCkKK3sKKyAgICBtX2N1cnJlbnRQb2ludCA9IHBvaW50Owor
ICAgIG1faXNDdXJyZW50UG9pbnRVcGRhdGVkID0gdHJ1ZTsKKworICAgIC8vIFNhdmUgY3VycmVu
dCBwb2ludCB0byB1c2UgdG8gY2FsY3VsYXRlIG9mZnNldCBvZiBmbGljay4KKyAgICBIaXN0b3J5
SXRlbSBpdGVtID0geyBtX2N1cnJlbnRQb2ludCwgZWNvcmVfdGltZV9nZXQoKSB9OworICAgIGlm
IChtX2hpc3Rvcnkuc2l6ZSgpIDwgbV9oaXN0b3J5LmNhcGFjaXR5KCkpCisgICAgICAgIG1faGlz
dG9yeS51bmNoZWNrZWRBcHBlbmQoaXRlbSk7CisgICAgZWxzZSB7CisgICAgICAgIG1faGlzdG9y
eVttX29sZGVzdEhpc3RvcnlJdGVtSW5kZXgrK10gPSBpdGVtOworICAgICAgICBpZiAobV9vbGRl
c3RIaXN0b3J5SXRlbUluZGV4ID09IG1faGlzdG9yeS5jYXBhY2l0eSgpKQorICAgICAgICAgICAg
bV9vbGRlc3RIaXN0b3J5SXRlbUluZGV4ID0gMDsKKyAgICB9CiB9CiAKIHZvaWQgR2VzdHVyZUhh
bmRsZXI6OmhhbmRsZVBhbkZpbmlzaGVkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IEFTU0VSVChtX3BhbkFuaW1hdG9yKTsKKyAgICBlY29yZV9hbmltYXRvcl9kZWwobV9wYW5Bbmlt
YXRvcik7CisgICAgbV9wYW5BbmltYXRvciA9IDA7CisKKyAgICBpZiAoIW1faGlzdG9yeS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgLy8gQ2FsY3VsYXRlIG9mZnNldCB0byBtb3ZlIGR1cmluZyBvbmUg
ZnJhbWUuCisgICAgICAgIGNvbnN0IEhpc3RvcnlJdGVtJiBmaXJzdEhpc3RvcnlJdGVtID0gbV9o
aXN0b3J5W21fb2xkZXN0SGlzdG9yeUl0ZW1JbmRleF07CisgICAgICAgIGRvdWJsZSBmcmFtZSA9
IChlY29yZV90aW1lX2dldCgpIC0gZmlyc3RIaXN0b3J5SXRlbS50aW1lc3RhbXApIC8gZWNvcmVf
YW5pbWF0b3JfZnJhbWV0aW1lX2dldCgpOworICAgICAgICBJbnRTaXplIG9mZnNldCA9IGZpcnN0
SGlzdG9yeUl0ZW0ucG9pbnQgLSBtX2N1cnJlbnRQb2ludDsKKyAgICAgICAgb2Zmc2V0LnNjYWxl
KDEgLyBmcmFtZSk7CisgICAgICAgIGhhbmRsZUZsaWNrKG9mZnNldCk7CisgICAgfQorCisgICAg
bV9vbGRlc3RIaXN0b3J5SXRlbUluZGV4ID0gMDsKKyAgICBtX2hpc3RvcnkucmVzaXplKDApOwor
fQorCitFaW5hX0Jvb2wgR2VzdHVyZUhhbmRsZXI6OmZsaWNrQW5pbWF0b3JDYWxsYmFjayh2b2lk
KiBkYXRhKQoreworICAgIEdlc3R1cmVIYW5kbGVyKiBnZXN0dXJlSGFuZGxlciA9IHN0YXRpY19j
YXN0PEdlc3R1cmVIYW5kbGVyKj4oZGF0YSk7CisgICAgZmxvYXQgbXVsdGlwbGllciA9IGVhc2VJ
bk91dFF1YWQoZ2VzdHVyZUhhbmRsZXItPm1fZmxpY2tJbmRleCwgMCwgMS4wLCBnZXN0dXJlSGFu
ZGxlci0+bV9mbGlja0R1cmF0aW9uKTsKKyAgICBmbG9hdCBvZmZzZXRXaWR0aCA9IGdlc3R1cmVI
YW5kbGVyLT5tX2ZsaWNrT2Zmc2V0LndpZHRoKCkgKiBtdWx0aXBsaWVyOworICAgIGZsb2F0IG9m
ZnNldEhlaWdodCA9IGdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrT2Zmc2V0LmhlaWdodCgpICogbXVs
dGlwbGllcjsKKyAgICBvZmZzZXRXaWR0aCA9IChvZmZzZXRXaWR0aCA+IDApID8gY2VpbGYob2Zm
c2V0V2lkdGgpIDogZmxvb3JmKG9mZnNldFdpZHRoKTsKKyAgICBvZmZzZXRIZWlnaHQgPSAob2Zm
c2V0SGVpZ2h0ID4gMCkgPyBjZWlsZihvZmZzZXRIZWlnaHQpIDogZmxvb3JmKG9mZnNldEhlaWdo
dCk7CisgICAgSW50U2l6ZSBvZmZzZXQob2Zmc2V0V2lkdGgsIG9mZnNldEhlaWdodCk7CisgICAg
Z2VzdHVyZUhhbmRsZXItPm1fZmxpY2tJbmRleC0tOworCisgICAgaWYgKG9mZnNldC5pc1plcm8o
KSB8fCAhZ2VzdHVyZUhhbmRsZXItPnZpZXcoKS0+c2Nyb2xsQnkob2Zmc2V0KSB8fCAhZ2VzdHVy
ZUhhbmRsZXItPm1fZmxpY2tJbmRleCkgeworICAgICAgICBnZXN0dXJlSGFuZGxlci0+bV9mbGlj
a0FuaW1hdG9yID0gMDsKKyAgICAgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKKyAg
ICB9CisKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfUkVORVc7Cit9CisKK3ZvaWQgR2VzdHVy
ZUhhbmRsZXI6OmhhbmRsZUZsaWNrKGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBtX2Zs
aWNrT2Zmc2V0ID0gb2Zmc2V0OworICAgIG1fZmxpY2tJbmRleCA9IG1fZmxpY2tEdXJhdGlvbiA9
IDEgLyBlY29yZV9hbmltYXRvcl9mcmFtZXRpbWVfZ2V0KCk7CisgICAgbV9mbGlja0FuaW1hdG9y
ID0gZWNvcmVfYW5pbWF0b3JfYWRkKGZsaWNrQW5pbWF0b3JDYWxsYmFjaywgdGhpcyk7CiB9CiAK
IHZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBpbmNoU3RhcnRlZChjb25zdCBWZWN0b3I8SW50
UG9pbnQ+JikKQEAgLTE5Niw2ICszMTYsOCBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpub0dl
c3R1cmUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50cykKIHsKICAgICBz
d2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoU3RhcnQ6CisgICAgICAg
IG1fZ2VzdHVyZUhhbmRsZXItPnJlc2V0KCk7CisKICAgICAgICAgbV9yZWNvZ25pemVyRnVuY3Rp
b24gPSAmR2VzdHVyZVJlY29nbml6ZXI6OnNpbmdsZVRhcEdlc3R1cmU7CiAgICAgICAgIG1fZmly
c3RQcmVzc2VkUG9pbnQgPSB0b0ludFBvaW50KGdldFBvaW50QXRJbmRleCh0b3VjaFBvaW50cywg
MCkpOwogICAgICAgICBBU1NFUlQoIW1fdGFwQW5kSG9sZFRpbWVyKTsKQEAgLTM0MCw2ICs0NjIs
NyBAQCB2b2lkIEdlc3R1cmVSZWNvZ25pemVyOjpwaW5jaEdlc3R1cmUoV0tFdmVudFR5cGUgdHlw
ZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50cykKIHZvaWQgR2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0
KCkKIHsKICAgICBzdG9wVGFwVGltZXJzKCk7CisgICAgbV9nZXN0dXJlSGFuZGxlci0+cmVzZXQo
KTsKIAogICAgIG1fcmVjb2duaXplckZ1bmN0aW9uID0gJkdlc3R1cmVSZWNvZ25pemVyOjpub0dl
c3R1cmU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2lu
Z0N1cnZlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODFkNjJlNjQ1YmM3MjFmYjc4N2ZlNWU1Mjg1MzBjNGEwNDg0M2I1NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3Vy
dmVzLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAxIFJvYmVy
dCBQZW5uZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9y
cyBtYXkgYmUKKyAqICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIFJvYmVydCBQZW5uZXIncyBlYXNpbmcg
ZXF1YXRpb25zLiBodHRwOi8vd3d3LnJvYmVydHBlbm5lci5jb20vZWFzaW5nLworICogc3RhdGlj
IGZ1bmN0aW9uIGVhc2VJbk91dFF1YWQgKHQ6TnVtYmVyLCBiOk51bWJlciwgYzpOdW1iZXIsIGQ6
TnVtYmVyKTpOdW1iZXIgeworICogICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0
ICsgYjsKKyAqICAgICByZXR1cm4gLWMvMiAqICgoLS10KSoodC0yKSAtIDEpICsgYjsKKyAqIH0K
KyAqLworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Zsb2F0IGVhc2VJbk91dFF1YWQoZmxvYXQgdGlt
ZSwgY29uc3QgZmxvYXQgYmFzZSwgY29uc3QgZmxvYXQgY29uc3RhbnQsIGNvbnN0IHVuc2lnbmVk
IGR1cmF0aW9uKQoreworICAgIGlmICh0aW1lID4gZHVyYXRpb24gfHwgdGltZSA8IDApCisgICAg
ICAgIHJldHVybiAwOworCisgICAgaWYgKCh0aW1lIC89IChkdXJhdGlvbiAvIDIpKSA8IDEpCisg
ICAgICAgIHJldHVybiAoY29uc3RhbnQgLyAyKSAqIHRpbWUgKiB0aW1lICsgYmFzZTsKKworICAg
IHRpbWUgLT0gMTsKKyAgICByZXR1cm4gLTEgKiAoY29uc3RhbnQgLyAyKSAqICh0aW1lICogKHRp
bWUgLSAyKSAtIDEpICsgYmFzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDI4MWMy
ODc3NDlhZmYxOGE5Yjk5NTFmMjc0Y2M1ZmQ5MjE4YWM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMuaApAQCAtMCwwICsxLDM5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDAxIFJvYmVydCBQZW5uZXIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1
dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKKyAqICAgIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisg
KiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBFYXNpbmdDdXJ2ZXNfaAorI2RlZmluZSBFYXNpbmdDdXJ2ZXNfaAorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworZmxvYXQgZWFzZUluT3V0UXVhZChmbG9hdCB0aW1lLCBjb25zdCBm
bG9hdCBiYXNlLCBjb25zdCBmbG9hdCBjb25zdGFudCwgY29uc3QgdW5zaWduZWQgZHVyYXRpb24p
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVhc2luZ0N1cnZlc19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211751</attachid>
            <date>2013-09-16 03:18:46 -0700</date>
            <delta_ts>2013-09-16 05:50:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107101-20130916191845.patch</filename>
            <type>text/plain</type>
            <size>16253</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2U2NzYwNzlkNTVmZDNm
YmQyNTUyNTg5NjIzNmQxYjhlMDBmZTFmNC4uYmZkOTk0NTc5NmE1ODMwM2NlMGU3ZGEzZjI1OWFh
Mzg5NTg2ZDJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTA5LTEzICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIElt
cGxlbWVudCBwYW4gYW5kIGZsaWNrIGdlc3R1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBHeXV5
b3VuZyBLaW0uCisKKyAgICAgICAgSW1wbGVtZW50IHBhbiBnZXN0dXJlIHRvIHNjcm9sbCBwYWdl
IGJ5IG1vdmVtZW50IG9mIHBvaW50IGFuZCBzdG9wCisgICAgICAgIHNjcm9sbGluZyBzbW9vdGhs
eSB1c2luZyBlYXNlLWluLW91dC1xdWFkIGFsZ29yaXRobSBhZnRlciB0b3VjaGVkCisgICAgICAg
IHBvaW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgc2NyZWVuLgorCisgICAgICAgIFVzZSBFY29yZV9B
bmltYXRvciBpbiBvcmRlciB0byBwcm9jZXNzIG1vdmVtZW50IG9uY2UgcGVyIGVhY2ggZnJhbWlu
ZworICAgICAgICB0aW1lIHNsb3QgaW5zdGVhZCBvZiBwcm9jZXNzaW5nIGFsbCBtb3ZlbWVudC4K
KworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXcuY3BwOgorICAgICAgICAoRXdrVmlldzo6c2Nyb2xsQnkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9HZXN0dXJlUmVjb2duaXplci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVy
Ojp2aWV3KToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6Okdlc3R1cmVIYW5kbGVy
KToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6On5HZXN0dXJlSGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6
Okdlc3R1cmVIYW5kbGVyOjpwYW5BbmltYXRvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
R2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhblN0YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpHZXN0
dXJlSGFuZGxlcjo6aGFuZGxlUGFuKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6
OmhhbmRsZVBhbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUhhbmRsZXI6OmZs
aWNrQW5pbWF0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVIYW5kbGVyOjpo
YW5kbGVGbGljayk6CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyOjpub0dlc3R1
cmUpOgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplcjo6cmVzZXQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OmVhc2VJbk91dFF1YWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVz
Lmg6IEFkZGVkLgorCiAyMDEzLTA5LTExICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSB0aGF0IGxheW91dCBpcyB1cC10by1kYXRlIHdo
ZW4gbW92aW5nIGEgV0tWaWV3IGludG8gYSB3aW5kb3csIHRvIGF2b2lkICFuZWVkc0xheW91dCgp
IGFzc2VydGlvbnMgaW4gUmVuZGVyVmlldzo6cGFpbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQppbmRleCA0ODk1ZTk4ZTI2NzU0ZDNkZjVhMDU4NmQwNGM2NTk2ZWVhMTIwOGVhLi4yN2I4NWQ5
Y2IwZDlhZjZmNjgyMTBiNjhlOTAxMDI0ODhkZDI1ZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtMTA2LDYgKzEwNiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNz
L2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Rvd25sb2Fk
TWFuYWdlckVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL0Vhc2luZ0N1cnZlcy5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL0V3a1RvdWNoRXZlbnQuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Fd2tUb3Vj
aFBvaW50LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggMGJiODgwZDZhZDZl
ZGY4Y2QyOWYwOTFmM2E3YmE0YjRmOGM3OGU1OC4uZTUzZmIzYjFlZGMyZTNlM2Y4OTczMDAxMDY4
MWRhMWVlOTM5MjdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlldy5jcHAKQEAgLTEzOTQsNiArMTM5NCwyNSBAQCB2b2lkIEV3a1ZpZXc6OmRpZEZpbmRab29t
YWJsZUFyZWEoY29uc3QgV0tQb2ludCYgcG9pbnQsIGNvbnN0IFdLUmVjdCYgYXJlYSkKICAgICBV
TlVTRURfUEFSQU0oYXJlYSk7CiB9CiAKK2Jvb2wgRXdrVmlldzo6c2Nyb2xsQnkoY29uc3QgSW50
U2l6ZSYgb2Zmc2V0KQoreworICAgIFdLUG9pbnQgb2xkUG9zaXRpb24gPSBXS1ZpZXdHZXRDb250
ZW50UG9zaXRpb24od2tWaWV3KCkpOworICAgIEZsb2F0UG9pbnQgbmV3UG9zaXRpb24ob2xkUG9z
aXRpb24ueCArIG9mZnNldC53aWR0aCgpLCBvbGRQb3NpdGlvbi55ICsgb2Zmc2V0LmhlaWdodCgp
KTsKKworICAgIC8vIFVwZGF0ZSBuZXcgcG9zaXRpb24gdG8gdGhlIFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXIuCisgICAgZmxvYXQgY29udGVudFNjYWxlID0gV0tWaWV3R2V0Q29udGVudFNjYWxlRmFj
dG9yKHdrVmlldygpKTsKKyAgICBuZXdQb3NpdGlvbi5zY2FsZSgxIC8gY29udGVudFNjYWxlLCAx
IC8gY29udGVudFNjYWxlKTsKKyAgICBuZXdQb3NpdGlvbiA9IG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlci0+Ym91bmRDb250ZW50c1Bvc2l0aW9uQXRTY2FsZShuZXdQb3NpdGlvbiwgY29udGVudFNj
YWxlKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlz
aWJpbGl0eShuZXdQb3NpdGlvbiwgY29udGVudFNjYWxlKTsKKworICAgIC8vIFVwZGF0ZSBuZXcg
cG9zaXRpb24gdG8gdGhlIFdLVmlldy4KKyAgICBXS1BvaW50IHBvc2l0aW9uID0gV0tQb2ludE1h
a2UobmV3UG9zaXRpb24ueCgpICogY29udGVudFNjYWxlLCBuZXdQb3NpdGlvbi55KCkgKiBjb250
ZW50U2NhbGUpOworICAgIFdLVmlld1NldENvbnRlbnRQb3NpdGlvbih3a1ZpZXcoKSwgcG9zaXRp
b24pOworCisgICAgLy8gSWYgdGhlIHBhZ2UgcG9zaXRpb24gaGFzIG5vdCBjaGFuZ2VkLCBub3Rp
ZnkgdGhlIGNhbGxlciB1c2luZyB0aGUgcmV0dXJuIHZhbHVlLgorICAgIHJldHVybiAhKG9sZFBv
c2l0aW9uID09IHBvc2l0aW9uKTsKK30KKwogRXZhc19TbWFydF9DbGFzcyBFd2tWaWV3OjpwYXJl
bnRTbWFydENsYXNzID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAKIC8vIEZyZWUgRXdr
IFZpZXcgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
dy5oCmluZGV4IGM0NmIxNTFhMGRkOTFkY2UxNDFmNTI5ZTZlMzkwNTUwMDEwNGJlYTguLjMwNmUz
NmYwMWNiYzg4ZjBiZGFkMmM3ZjAzZTA1OTQxMWEwY2IxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKQEAgLTIwMiw2ICsyMDIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbmZvcm1VUkxDaGFuZ2UoKTsKIAogICAgIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiB0YWtlU25hcHNob3QoKTsKKyAgICBib29sIHNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmKTsKIAogICAgIHZvaWQgZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBXS1BvaW50Jiwg
Y29uc3QgV0tSZWN0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0dlc3R1cmVSZWNvZ25pemVyLmNwcAppbmRleCAyMTViMzE0N2M5MmQ2NjZkY2ZiNTc1
MWZjNDc3OTQwNzQxMTJkMjE0Li4zNzhhN2Q4MTgyOTI0MzAwMmVkYTYzMzZkZjE2ZDdjMjYxOWNk
NmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9HZXN0dXJl
UmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvR2Vz
dHVyZVJlY29nbml6ZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiR2VzdHVyZVJlY29nbml6ZXIuaCIKIAorI2luY2x1ZGUgIkVhc2luZ0N1cnZl
cy5oIgogI2luY2x1ZGUgIkV3a1ZpZXcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgpAQCAtNDMsMjYgKzQ0LDgwIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgR2VzdHVyZUhhbmRsZXIoZXdrVmll
dykpOwogICAgIH0KKyAgICB+R2VzdHVyZUhhbmRsZXIoKTsKIAotICAgIHZvaWQgaGFuZGxlU2lu
Z2xlVGFwKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7Ci0gICAgdm9pZCBoYW5kbGVEb3VibGVU
YXAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKLSAgICB2b2lkIGhhbmRsZVRhcEFuZEhvbGQo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKLSAgICB2b2lkIGhhbmRsZVBhblN0YXJ0ZWQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKLSAgICB2b2lkIGhhbmRsZVBhbihjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpOworICAgIEV3a1ZpZXcqIHZpZXcoKSB7IHJldHVybiBtX2V3a1ZpZXc7IH0K
KworICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIGhhbmRsZVNpbmdsZVRhcChjb25zdCBJbnRQ
b2ludCYpOworICAgIHZvaWQgaGFuZGxlRG91YmxlVGFwKGNvbnN0IEludFBvaW50Jik7CisgICAg
dm9pZCBoYW5kbGVUYXBBbmRIb2xkKGNvbnN0IEludFBvaW50Jik7CisgICAgdm9pZCBoYW5kbGVQ
YW5TdGFydGVkKGNvbnN0IEludFBvaW50Jik7CisgICAgdm9pZCBoYW5kbGVQYW4oY29uc3QgSW50
UG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZVBhbkZpbmlzaGVkKCk7Ci0gICAgdm9pZCBoYW5kbGVQ
aW5jaFN0YXJ0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFBvaW50PiYpOwotICAgIHZvaWQg
aGFuZGxlUGluY2goY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFBvaW50PiYpOworICAgIHZvaWQg
aGFuZGxlRmxpY2soY29uc3QgSW50U2l6ZSYpOworICAgIHZvaWQgaGFuZGxlUGluY2hTdGFydGVk
KGNvbnN0IFZlY3RvcjxJbnRQb2ludD4mKTsKKyAgICB2b2lkIGhhbmRsZVBpbmNoKGNvbnN0IFZl
Y3RvcjxJbnRQb2ludD4mKTsKICAgICB2b2lkIGhhbmRsZVBpbmNoRmluaXNoZWQoKTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBHZXN0dXJlSGFuZGxlcihFd2tWaWV3Kik7CiAKKyAgICBzdGF0
aWMgRWluYV9Cb29sIHBhbkFuaW1hdG9yQ2FsbGJhY2sodm9pZCopOworICAgIHN0YXRpYyBFaW5h
X0Jvb2wgZmxpY2tBbmltYXRvckNhbGxiYWNrKHZvaWQqKTsKKworICAgIHN0YXRpYyBjb25zdCBp
bnQgc19oaXN0b3J5Q2FwYWNpdHkgPSA1OworCiAgICAgRXdrVmlldyogbV9ld2tWaWV3OworICAg
IEludFBvaW50IG1fbGFzdFBvaW50OworICAgIEludFBvaW50IG1fY3VycmVudFBvaW50OworICAg
IGJvb2wgbV9pc0N1cnJlbnRQb2ludFVwZGF0ZWQ7CisgICAgRWNvcmVfQW5pbWF0b3IqIG1fcGFu
QW5pbWF0b3I7CisgICAgRWNvcmVfQW5pbWF0b3IqIG1fZmxpY2tBbmltYXRvcjsKKyAgICBJbnRT
aXplIG1fZmxpY2tPZmZzZXQ7CisgICAgdW5zaWduZWQgbV9mbGlja0R1cmF0aW9uOworICAgIHVu
c2lnbmVkIG1fZmxpY2tJbmRleDsKKworICAgIHN0cnVjdCBIaXN0b3J5SXRlbSB7CisgICAgICAg
IEludFBvaW50IHBvaW50OworICAgICAgICBkb3VibGUgdGltZXN0YW1wOworICAgIH07CisgICAg
VmVjdG9yPEhpc3RvcnlJdGVtPiBtX2hpc3Rvcnk7CisgICAgc2l6ZV90IG1fb2xkZXN0SGlzdG9y
eUl0ZW1JbmRleDsKIH07CiAKIEdlc3R1cmVIYW5kbGVyOjpHZXN0dXJlSGFuZGxlcihFd2tWaWV3
KiBld2tWaWV3KQogICAgIDogbV9ld2tWaWV3KGV3a1ZpZXcpCisgICAgLCBtX2lzQ3VycmVudFBv
aW50VXBkYXRlZChmYWxzZSkKKyAgICAsIG1fcGFuQW5pbWF0b3IoMCkKKyAgICAsIG1fZmxpY2tB
bmltYXRvcigwKQorICAgICwgbV9mbGlja0R1cmF0aW9uKDApCisgICAgLCBtX2ZsaWNrSW5kZXgo
MCkKKyAgICAsIG1fb2xkZXN0SGlzdG9yeUl0ZW1JbmRleCgwKQogeworICAgIG1faGlzdG9yeS5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNfaGlzdG9yeUNhcGFjaXR5KTsKK30KKworR2VzdHVyZUhh
bmRsZXI6On5HZXN0dXJlSGFuZGxlcigpCit7CisgICAgcmVzZXQoKTsKK30KKwordm9pZCBHZXN0
dXJlSGFuZGxlcjo6cmVzZXQoKQoreworICAgIGlmIChtX3BhbkFuaW1hdG9yKSB7CisgICAgICAg
IGVjb3JlX2FuaW1hdG9yX2RlbChtX3BhbkFuaW1hdG9yKTsKKyAgICAgICAgbV9wYW5BbmltYXRv
ciA9IDA7CisKKyAgICAgICAgbV9vbGRlc3RIaXN0b3J5SXRlbUluZGV4ID0gMDsKKyAgICAgICAg
aWYgKG1faGlzdG9yeS5zaXplKCkpCisgICAgICAgICAgICBtX2hpc3RvcnkucmVzaXplKDApOwor
ICAgIH0KKworICAgIGlmIChtX2ZsaWNrQW5pbWF0b3IpIHsKKyAgICAgICAgZWNvcmVfYW5pbWF0
b3JfZGVsKG1fZmxpY2tBbmltYXRvcik7CisgICAgICAgIG1fZmxpY2tBbmltYXRvciA9IDA7Cisg
ICAgfQogfQogCiB2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVTaW5nbGVUYXAoY29uc3QgSW50
UG9pbnQmKQpAQCAtODAsMTkgKzEzNSw4NiBAQCB2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVU
YXBBbmRIb2xkKGNvbnN0IEludFBvaW50JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQYW5TdGFydGVkKGNvbnN0IEludFBvaW50JikKK0Vp
bmFfQm9vbCBHZXN0dXJlSGFuZGxlcjo6cGFuQW5pbWF0b3JDYWxsYmFjayh2b2lkKiBkYXRhKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgR2VzdHVyZUhhbmRsZXIqIGdlc3R1cmVIYW5k
bGVyID0gc3RhdGljX2Nhc3Q8R2VzdHVyZUhhbmRsZXIqPihkYXRhKTsKKyAgICBpZiAoIWdlc3R1
cmVIYW5kbGVyLT5tX2lzQ3VycmVudFBvaW50VXBkYXRlZCB8fCBnZXN0dXJlSGFuZGxlci0+bV9s
YXN0UG9pbnQgPT0gZ2VzdHVyZUhhbmRsZXItPm1fY3VycmVudFBvaW50KQorICAgICAgICByZXR1
cm4gRUNPUkVfQ0FMTEJBQ0tfUkVORVc7CisKKyAgICBnZXN0dXJlSGFuZGxlci0+dmlldygpLT5z
Y3JvbGxCeShnZXN0dXJlSGFuZGxlci0+bV9sYXN0UG9pbnQgLSBnZXN0dXJlSGFuZGxlci0+bV9j
dXJyZW50UG9pbnQpOworICAgIGdlc3R1cmVIYW5kbGVyLT5tX2xhc3RQb2ludCA9IGdlc3R1cmVI
YW5kbGVyLT5tX2N1cnJlbnRQb2ludDsKKyAgICBnZXN0dXJlSGFuZGxlci0+bV9pc0N1cnJlbnRQ
b2ludFVwZGF0ZWQgPSBmYWxzZTsKKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19SRU5FVzsK
IH0KIAotdm9pZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuKGNvbnN0IEludFBvaW50JikKK3Zv
aWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhblN0YXJ0ZWQoY29uc3QgSW50UG9pbnQmIHBvaW50
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKCFtX3BhbkFuaW1hdG9yKTsK
KyAgICBtX3BhbkFuaW1hdG9yID0gZWNvcmVfYW5pbWF0b3JfYWRkKHBhbkFuaW1hdG9yQ2FsbGJh
Y2ssIHRoaXMpOworICAgIG1fbGFzdFBvaW50ID0gbV9jdXJyZW50UG9pbnQgPSBwb2ludDsKK30K
Kwordm9pZCBHZXN0dXJlSGFuZGxlcjo6aGFuZGxlUGFuKGNvbnN0IEludFBvaW50JiBwb2ludCkK
K3sKKyAgICBtX2N1cnJlbnRQb2ludCA9IHBvaW50OworICAgIG1faXNDdXJyZW50UG9pbnRVcGRh
dGVkID0gdHJ1ZTsKKworICAgIC8vIFNhdmUgY3VycmVudCBwb2ludCB0byB1c2UgdG8gY2FsY3Vs
YXRlIG9mZnNldCBvZiBmbGljay4KKyAgICBIaXN0b3J5SXRlbSBpdGVtID0geyBtX2N1cnJlbnRQ
b2ludCwgZWNvcmVfdGltZV9nZXQoKSB9OworICAgIGlmIChtX2hpc3Rvcnkuc2l6ZSgpIDwgbV9o
aXN0b3J5LmNhcGFjaXR5KCkpCisgICAgICAgIG1faGlzdG9yeS51bmNoZWNrZWRBcHBlbmQoaXRl
bSk7CisgICAgZWxzZSB7CisgICAgICAgIG1faGlzdG9yeVttX29sZGVzdEhpc3RvcnlJdGVtSW5k
ZXgrK10gPSBpdGVtOworICAgICAgICBpZiAobV9vbGRlc3RIaXN0b3J5SXRlbUluZGV4ID09IG1f
aGlzdG9yeS5jYXBhY2l0eSgpKQorICAgICAgICAgICAgbV9vbGRlc3RIaXN0b3J5SXRlbUluZGV4
ID0gMDsKKyAgICB9CiB9CiAKIHZvaWQgR2VzdHVyZUhhbmRsZXI6OmhhbmRsZVBhbkZpbmlzaGVk
KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChtX3BhbkFuaW1hdG9yKTsK
KyAgICBlY29yZV9hbmltYXRvcl9kZWwobV9wYW5BbmltYXRvcik7CisgICAgbV9wYW5BbmltYXRv
ciA9IDA7CisKKyAgICBpZiAoIW1faGlzdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gQ2Fs
Y3VsYXRlIG9mZnNldCB0byBtb3ZlIGR1cmluZyBvbmUgZnJhbWUuCisgICAgICAgIGNvbnN0IEhp
c3RvcnlJdGVtJiBvbGRlc3RIaXN0b3J5SXRlbSA9IG1faGlzdG9yeVttX29sZGVzdEhpc3RvcnlJ
dGVtSW5kZXhdOworICAgICAgICBkb3VibGUgZnJhbWUgPSAoZWNvcmVfdGltZV9nZXQoKSAtIG9s
ZGVzdEhpc3RvcnlJdGVtLnRpbWVzdGFtcCkgLyBlY29yZV9hbmltYXRvcl9mcmFtZXRpbWVfZ2V0
KCk7CisgICAgICAgIEludFNpemUgb2Zmc2V0ID0gb2xkZXN0SGlzdG9yeUl0ZW0ucG9pbnQgLSBt
X2N1cnJlbnRQb2ludDsKKyAgICAgICAgb2Zmc2V0LnNjYWxlKDEgLyBmcmFtZSk7CisgICAgICAg
IGhhbmRsZUZsaWNrKG9mZnNldCk7CisgICAgfQorCisgICAgbV9vbGRlc3RIaXN0b3J5SXRlbUlu
ZGV4ID0gMDsKKyAgICBpZiAobV9oaXN0b3J5LnNpemUoKSkKKyAgICAgICAgbV9oaXN0b3J5LnJl
c2l6ZSgwKTsKK30KKworRWluYV9Cb29sIEdlc3R1cmVIYW5kbGVyOjpmbGlja0FuaW1hdG9yQ2Fs
bGJhY2sodm9pZCogZGF0YSkKK3sKKyAgICBHZXN0dXJlSGFuZGxlciogZ2VzdHVyZUhhbmRsZXIg
PSBzdGF0aWNfY2FzdDxHZXN0dXJlSGFuZGxlcio+KGRhdGEpOworICAgIGZsb2F0IG11bHRpcGxp
ZXIgPSBlYXNlSW5PdXRRdWFkKGdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrSW5kZXgsIDAsIDEuMCwg
Z2VzdHVyZUhhbmRsZXItPm1fZmxpY2tEdXJhdGlvbik7CisgICAgZmxvYXQgb2Zmc2V0V2lkdGgg
PSBnZXN0dXJlSGFuZGxlci0+bV9mbGlja09mZnNldC53aWR0aCgpICogbXVsdGlwbGllcjsKKyAg
ICBmbG9hdCBvZmZzZXRIZWlnaHQgPSBnZXN0dXJlSGFuZGxlci0+bV9mbGlja09mZnNldC5oZWln
aHQoKSAqIG11bHRpcGxpZXI7CisgICAgb2Zmc2V0V2lkdGggPSAob2Zmc2V0V2lkdGggPiAwKSA/
IGNlaWxmKG9mZnNldFdpZHRoKSA6IGZsb29yZihvZmZzZXRXaWR0aCk7CisgICAgb2Zmc2V0SGVp
Z2h0ID0gKG9mZnNldEhlaWdodCA+IDApID8gY2VpbGYob2Zmc2V0SGVpZ2h0KSA6IGZsb29yZihv
ZmZzZXRIZWlnaHQpOworICAgIEludFNpemUgb2Zmc2V0KG9mZnNldFdpZHRoLCBvZmZzZXRIZWln
aHQpOworICAgIGdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrSW5kZXgtLTsKKworICAgIGlmIChvZmZz
ZXQuaXNaZXJvKCkgfHwgIWdlc3R1cmVIYW5kbGVyLT52aWV3KCktPnNjcm9sbEJ5KG9mZnNldCkg
fHwgIWdlc3R1cmVIYW5kbGVyLT5tX2ZsaWNrSW5kZXgpIHsKKyAgICAgICAgZ2VzdHVyZUhhbmRs
ZXItPm1fZmxpY2tBbmltYXRvciA9IDA7CisgICAgICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19D
QU5DRUw7CisgICAgfQorCisgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX1JFTkVXOworfQorCit2
b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVGbGljayhjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7
CisgICAgbV9mbGlja09mZnNldCA9IG9mZnNldDsKKyAgICBtX2ZsaWNrSW5kZXggPSBtX2ZsaWNr
RHVyYXRpb24gPSAxIC8gZWNvcmVfYW5pbWF0b3JfZnJhbWV0aW1lX2dldCgpOworICAgIG1fZmxp
Y2tBbmltYXRvciA9IGVjb3JlX2FuaW1hdG9yX2FkZChmbGlja0FuaW1hdG9yQ2FsbGJhY2ssIHRo
aXMpOwogfQogCiB2b2lkIEdlc3R1cmVIYW5kbGVyOjpoYW5kbGVQaW5jaFN0YXJ0ZWQoY29uc3Qg
VmVjdG9yPEludFBvaW50PiYpCkBAIC0xOTYsNiArMzE4LDggQEAgdm9pZCBHZXN0dXJlUmVjb2du
aXplcjo6bm9HZXN0dXJlKFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludHMp
CiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBrV0tFdmVudFR5cGVUb3VjaFN0YXJ0
OgorICAgICAgICBtX2dlc3R1cmVIYW5kbGVyLT5yZXNldCgpOworCiAgICAgICAgIG1fcmVjb2du
aXplckZ1bmN0aW9uID0gJkdlc3R1cmVSZWNvZ25pemVyOjpzaW5nbGVUYXBHZXN0dXJlOwogICAg
ICAgICBtX2ZpcnN0UHJlc3NlZFBvaW50ID0gdG9JbnRQb2ludChnZXRQb2ludEF0SW5kZXgodG91
Y2hQb2ludHMsIDApKTsKICAgICAgICAgQVNTRVJUKCFtX3RhcEFuZEhvbGRUaW1lcik7CkBAIC0z
NDAsNiArNDY0LDcgQEAgdm9pZCBHZXN0dXJlUmVjb2duaXplcjo6cGluY2hHZXN0dXJlKFdLRXZl
bnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludHMpCiB2b2lkIEdlc3R1cmVSZWNvZ25p
emVyOjpyZXNldCgpCiB7CiAgICAgc3RvcFRhcFRpbWVycygpOworICAgIG1fZ2VzdHVyZUhhbmRs
ZXItPnJlc2V0KCk7CiAKICAgICBtX3JlY29nbml6ZXJGdW5jdGlvbiA9ICZHZXN0dXJlUmVjb2du
aXplcjo6bm9HZXN0dXJlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9FYXNpbmdDdXJ2ZXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNp
bmdDdXJ2ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZDYyZTY0NWJjNzIxZmI3ODdmZTVlNTI4NTMwYzRh
MDQ4NDNiNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L0Vhc2luZ0N1cnZlcy5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwMSBSb2JlcnQgUGVubmVyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBj
b250cmlidXRvcnMgbWF5IGJlCisgKiAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyJBUyBJUyIKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUK
KyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAq
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qCisgKiBSb2JlcnQgUGVubmVy
J3MgZWFzaW5nIGVxdWF0aW9ucy4gaHR0cDovL3d3dy5yb2JlcnRwZW5uZXIuY29tL2Vhc2luZy8K
KyAqIHN0YXRpYyBmdW5jdGlvbiBlYXNlSW5PdXRRdWFkICh0Ok51bWJlciwgYjpOdW1iZXIsIGM6
TnVtYmVyLCBkOk51bWJlcik6TnVtYmVyIHsKKyAqICAgICBpZiAoKHQvPWQvMikgPCAxKSByZXR1
cm4gYy8yKnQqdCArIGI7CisgKiAgICAgcmV0dXJuIC1jLzIgKiAoKC0tdCkqKHQtMikgLSAxKSAr
IGI7CisgKiB9CisgKi8KK25hbWVzcGFjZSBXZWJLaXQgeworCitmbG9hdCBlYXNlSW5PdXRRdWFk
KGZsb2F0IHRpbWUsIGNvbnN0IGZsb2F0IGJhc2UsIGNvbnN0IGZsb2F0IGNvbnN0YW50LCBjb25z
dCB1bnNpZ25lZCBkdXJhdGlvbikKK3sKKyAgICBpZiAodGltZSA+IGR1cmF0aW9uIHx8IHRpbWUg
PCAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICgodGltZSAvPSAoZHVyYXRpb24gLyAy
KSkgPCAxKQorICAgICAgICByZXR1cm4gKGNvbnN0YW50IC8gMikgKiB0aW1lICogdGltZSArIGJh
c2U7CisKKyAgICB0aW1lIC09IDE7CisgICAgcmV0dXJuIC0xICogKGNvbnN0YW50IC8gMikgKiAo
dGltZSAqICh0aW1lIC0gMikgLSAxKSArIGJhc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FYXNpbmdDdXJ2ZXMu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTQyODFjMjg3NzQ5YWZmMThhOWI5OTUxZjI3NGNjNWZkOTIxOGFjOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmgKQEAgLTAs
MCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBSb2JlcnQgUGVubmVyLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25p
Y3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1l
IG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBjb250cmlidXRvcnMgbWF5IGJlCisgKiAg
ICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBz
b2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUyJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgRWFzaW5nQ3VydmVzX2gKKyNkZWZpbmUgRWFzaW5nQ3VydmVz
X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Zsb2F0IGVhc2VJbk91dFF1YWQoZmxvYXQgdGlt
ZSwgY29uc3QgZmxvYXQgYmFzZSwgY29uc3QgZmxvYXQgY29uc3RhbnQsIGNvbnN0IHVuc2lnbmVk
IGR1cmF0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFYXNpbmdD
dXJ2ZXNfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>