<?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>100506</bug_id>
          
          <creation_ts>2012-10-26 05:05:41 -0700</creation_ts>
          <short_desc>[EFL][WK2] Simplify signal emitting API in EwkViewImpl</short_desc>
          <delta_ts>2012-10-30 12:40:45 -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>100781</dependson>
          <blocked>100226</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>751907</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-26 05:05:41 -0700</bug_when>
    <thetext>Currently have class method per signal, should be one universal method accepting signal name + list of const strings containing supported ewk_view signals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752844</commentid>
    <comment_count>1</comment_count>
      <attachid>171106</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-27 15:34:03 -0700</bug_when>
    <thetext>Created attachment 171106
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752845</commentid>
    <comment_count>2</comment_count>
      <attachid>171107</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-27 15:40:49 -0700</bug_when>
    <thetext>Created attachment 171107
rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752849</commentid>
    <comment_count>3</comment_count>
      <attachid>171107</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-27 16:03:26 -0700</bug_when>
    <thetext>Comment on attachment 171107
rebased

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:42
&gt; +    callSmartCallback&lt;callbackType&gt;(const_cast&lt;char*&gt;(arg.utf8().data()));

it&apos;s all very smart :-)

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:53
&gt; +DECLARE_EWK_VIEW_CALLBACK(EwkViewImpl::DownloadJobCancelled, &quot;download,cancelled&quot;)
&gt; +DECLARE_EWK_VIEW_CALLBACK(EwkViewImpl::DownloadJobFailed, &quot;download,failed&quot;)

I kind of love the Qt signals :-) Does this have to be EWK_VIEW specific?

What about documentation now?

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:84
&gt; +// Special case.

That is a bit vague

&gt; Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp:53
&gt; +    download-&gt;viewImpl()-&gt;callSmartCallback&lt;EwkViewImpl::DownloadJobRequested&gt;(download);

viewImpl()-&gt;emit&lt;EwkViewImpl::DownloadJobRequested&gt;(download); ?

&gt; Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp:93
&gt; +    download-&gt;viewImpl()-&gt;callSmartCallback&lt;EwkViewImpl::DownloadJobFailed&gt;(&amp;downloadError);

So there is no type safety for arguments?

&gt; Source/WebKit2/UIProcess/efl/ResourceLoadClientEfl.cpp:115
&gt; +    Ewk_Resource_Load_Error resourceLoadError = {resource.get(), ewkError.get()};

why not space after { ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752850</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-27 16:03:56 -0700</bug_when>
    <thetext>I am not sure what I think about this yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752917</commentid>
    <comment_count>5</comment_count>
      <attachid>171107</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-28 00:12:49 -0700</bug_when>
    <thetext>Comment on attachment 171107
rebased

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:53
&gt;&gt; +DECLARE_EWK_VIEW_CALLBACK(EwkViewImpl::DownloadJobFailed, &quot;download,failed&quot;)
&gt; 
&gt; I kind of love the Qt signals :-) Does this have to be EWK_VIEW specific?
&gt; 
&gt; What about documentation now?

the view is the only evas smart object we have so it is the only one able to use smart callbacks at the moment. BTW, EFL can only use smart callbacks on UI widgets (i.e. Evas Object).

The documentation is still in ewk_view.h, this is merely the private implementation.

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:86
&gt; +inline void EwkViewImpl::callSmartCallback&lt;EwkViewImpl::URLChange&gt;(void*)

I don&apos;t think this should be a special case. We should probably split the URL update and the callback call into 2 functions.

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:104
&gt; +    enum Callback {

Why aren&apos;t those in the new header as well? Maybe we could have them in a EwkViewCallback namespace?

&gt;&gt; Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp:53
&gt;&gt; +    download-&gt;viewImpl()-&gt;callSmartCallback&lt;EwkViewImpl::DownloadJobRequested&gt;(download);
&gt; 
&gt; viewImpl()-&gt;emit&lt;EwkViewImpl::DownloadJobRequested&gt;(download); ?

callSmartCallback is a bit long indeed but I don&apos;t think &quot;emit&quot; applies well here. It is really a synchronous callback function call, not a signal emitting processed in the event loop (like Qt).
How about &quot;download-&gt;viewImpl()-&gt;call&lt;EwkViewImpl::DownloadJobRequestedCb&gt;(download);&quot; ? it would be shorter at least.

&gt;&gt; Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp:93
&gt;&gt; +    download-&gt;viewImpl()-&gt;callSmartCallback&lt;EwkViewImpl::DownloadJobFailed&gt;(&amp;downloadError);
&gt; 
&gt; So there is no type safety for arguments?

I guess we are going to need a bit more code if we want to make sure the right type is passed for the right callback. However, I think it would be nice and it is worth investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752935</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-28 03:50:14 -0700</bug_when>
    <thetext>We could continue using inform. call() is pretty generic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752945</commentid>
    <comment_count>7</comment_count>
      <attachid>171107</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-28 08:56:16 -0700</bug_when>
    <thetext>Comment on attachment 171107
rebased

do not like weak arg typing in my approach, preparing smth better ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752966</commentid>
    <comment_count>8</comment_count>
      <attachid>171135</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-28 10:50:04 -0700</bug_when>
    <thetext>Created attachment 171135
patch v2

Another approach with better callback arguments type checking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753084</commentid>
    <comment_count>9</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-10-28 23:16:19 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=171135) [details]
&gt; patch v2
&gt; 
&gt; Another approach with better callback arguments type checking.

I need more consideration about it.

But, should we consider Evas_Smart_Cb_Description and callbacks of smart class ?
You can find it in WebKit/efl/ewk/ewk_view.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753086</commentid>
    <comment_count>10</comment_count>
      <attachid>171135</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-28 23:25:36 -0700</bug_when>
    <thetext>Comment on attachment 171135
patch v2

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

&gt; Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp:119
&gt; +    download-&gt;viewImpl()-&gt;smartCallback&lt;DownloadJobFinished&gt;().call(download);

I don&apos;t like the name smartCallback, what about smartHandler or even eventHandler

-&gt;smartHandler&lt;DownloadJobFinished&gt;().call(download);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753108</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-29 00:24:53 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 171135 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171135&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp:119
&gt; &gt; +    download-&gt;viewImpl()-&gt;smartCallback&lt;DownloadJobFinished&gt;().call(download);
&gt; 
&gt; I don&apos;t like the name smartCallback, what about smartHandler or even eventHandler
&gt; 
&gt; -&gt;smartHandler&lt;DownloadJobFinished&gt;().call(download);

Well, they are called smart callbacks in EFL:
http://docs.enlightenment.org/auto/evas/group__Evas__Smart__Object__Group.html

I think using the same name makes it clear what they are for (EFL) developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753111</commentid>
    <comment_count>12</comment_count>
      <attachid>171135</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-29 00:33:50 -0700</bug_when>
    <thetext>Comment on attachment 171135
patch v2

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:142
&gt; +#define DECLARE_EWK_VIEW_SIGNAL(callbackType, string)         \

Would we use the same DECLARE_EWK_VIEW_CALLBACK() macro but make the last argument optional (e.g. using &quot;, ...&quot; and __VA_ARGS__?)

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:163
&gt; +DECLARE_EWK_VIEW_CALLBACK(LoadProgress, &quot;load,progress&quot;,  double*);

Extra space here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753129</commentid>
    <comment_count>13</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-29 00:57:14 -0700</bug_when>
    <thetext>(In reply to comment #9)

&gt; But, should we consider Evas_Smart_Cb_Description and callbacks of smart class ?
&gt; You can find it in WebKit/efl/ewk/ewk_view.cpp.

Think we definitely should use Evas_Smart_Cb_Description for public API users, which is however out of this bug scope.
Actually I don&apos;t see how Evas_Smart_Cb_Description can be helpful here (for private API).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753167</commentid>
    <comment_count>14</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-29 01:53:16 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 171135 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171135&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:142
&gt; &gt; +#define DECLARE_EWK_VIEW_SIGNAL(callbackType, string)         \
&gt; 
&gt; Would we use the same DECLARE_EWK_VIEW_CALLBACK() macro but make the last argument optional (e.g. using &quot;, ...&quot; and __VA_ARGS__?)

Unfortunately 2nd macro is needed, we cannot skip type in typedef + 
hasArguments() should return false in case when no arguments is expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753168</commentid>
    <comment_count>15</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-29 01:54:57 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I don&apos;t like the name smartCallback, what about smartHandler or even eventHandler
&gt; 
&gt; -&gt;smartHandler&lt;DownloadJobFinished&gt;().call(download);

don&apos;t like it either, but would agree with Chris that is sounds more familiar to EFL developers, so would keep it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753171</commentid>
    <comment_count>16</comment_count>
      <attachid>171177</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-29 01:58:32 -0700</bug_when>
    <thetext>Created attachment 171177
patch v3

removed extra space</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753175</commentid>
    <comment_count>17</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-10-29 02:08:29 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I am not sure what I think about this yet

Same here; I still fail to see how much benefit this kind of change brings. I&apos;ve always disliked the amount of small methods/functions which just call evas_object_smart_callback_call() we have in WK1 and WK2, but whenever I thought about this, just calling evas_object_smart_callback_call() directly instead of calling another function to do that sounded good enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753183</commentid>
    <comment_count>18</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-29 02:18:54 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #4)
&gt; &gt; I am not sure what I think about this yet
&gt; 
&gt; Same here; I still fail to see how much benefit this kind of change brings. I&apos;ve always disliked the amount of small methods/functions which just call evas_object_smart_callback_call() we have in WK1 and WK2, but whenever I thought about this, just calling evas_object_smart_callback_call() directly instead of calling another function to do that sounded good enough.

was also considering this.. but came with other approach as it gives more strictness for both callback name and parameter&apos;s type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753187</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-29 02:23:14 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #4)
&gt; &gt; I am not sure what I think about this yet
&gt; 
&gt; Same here; I still fail to see how much benefit this kind of change brings. I&apos;ve always disliked the amount of small methods/functions which just call evas_object_smart_callback_call() we have in WK1 and WK2, but whenever I thought about this, just calling evas_object_smart_callback_call() directly instead of calling another function to do that sounded good enough.

I see several advantages:
- We can validate the callback argument type
- There is no need to specify the signal name (string) manually everytime you call. This means that there is less risk in making a typo in the signal name. Also, if you need to change a signal name, you only need to do it in one place instead of updating all the callers

I think Mikhail&apos;s proposal makes it hard for anyone to use the API incorrectly, which is a sign of a good API IMHO. With Mikhail&apos;s approach, adding a new signal is also easy (Just 2 lines to add in 1 header).

Unfortunately, the code involved in making this approach work is a bit complex and obscure. I wish we could make it simpler (and less code) somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753458</commentid>
    <comment_count>20</comment_count>
      <attachid>171177</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-29 08:04:29 -0700</bug_when>
    <thetext>Comment on attachment 171177
patch v3

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:53
&gt; +namespace EwkViewCallbacks {
&gt; +
&gt; +enum CallbackType {
&gt; +    DownloadJobCancelled,
&gt; +    DownloadJobFailed,

Would it be possible somehow to let the macros declare this? igeuss not

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:128
&gt; +#define DECLARE_EWK_VIEW_CALLBACK(callbackType, string, type) \

Will we ever need callbacks on something different from the view?

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:142
&gt; +#define DECLARE_EWK_VIEW_SIGNAL(callbackType, string)         \

Could these be templates instead? then we would even support overloading.

declareCallback&lt;ViewVisibilityChange, Evas_Object*&gt;(&quot;view,visible,change&quot;)
declareCallback&lt;ProcessCrashed&gt;(&quot;process,crashed&quot;) ?

We could even hide it with __VA_LIST__

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:165
&gt; +DECLARE_EWK_VIEW_CALLBACK(ProvisionalLoadFailed, &quot;load,provisional,failed&quot;, Ewk_Error*);
&gt; +DECLARE_EWK_VIEW_SIGNAL(ProvisionalLoadRedirect, &quot;load,provisional,redirect&quot;);

EFL differentiates between signal and callback?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753486</commentid>
    <comment_count>21</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-29 08:55:18 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 171177 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171177&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:53
&gt; &gt; +namespace EwkViewCallbacks {
&gt; &gt; +
&gt; &gt; +enum CallbackType {
&gt; &gt; +    DownloadJobCancelled,
&gt; &gt; +    DownloadJobFailed,
&gt; 
&gt; Would it be possible somehow to let the macros declare this? igeuss not
do not see how it would be possible :(

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:128
&gt; &gt; +#define DECLARE_EWK_VIEW_CALLBACK(callbackType, string, type) \
&gt; 
&gt; Will we ever need callbacks on something different from the view?

Only view is evas object, so not I guess
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:142
&gt; &gt; +#define DECLARE_EWK_VIEW_SIGNAL(callbackType, string)         \
&gt; 
&gt; Could these be templates instead? then we would even support overloading.
we need to declare template class it&apos;s impossible to do from a function.

&gt; 
&gt; declareCallback&lt;ViewVisibilityChange, Evas_Object*&gt;(&quot;view,visible,change&quot;)
&gt; declareCallback&lt;ProcessCrashed&gt;(&quot;process,crashed&quot;) ?
&gt; 
&gt; We could even hide it with __VA_LIST__
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:165
&gt; &gt; +DECLARE_EWK_VIEW_CALLBACK(ProvisionalLoadFailed, &quot;load,provisional,failed&quot;, Ewk_Error*);
&gt; &gt; +DECLARE_EWK_VIEW_SIGNAL(ProvisionalLoadRedirect, &quot;load,provisional,redirect&quot;);
&gt; 
&gt; EFL differentiates between signal and callback?

I just called callback w/o parameters signal to differentiate :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753501</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-29 09:21:37 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 171177 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171177&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:53
&gt; &gt; &gt; +namespace EwkViewCallbacks {
&gt; &gt; &gt; +
&gt; &gt; &gt; +enum CallbackType {
&gt; &gt; &gt; +    DownloadJobCancelled,
&gt; &gt; &gt; +    DownloadJobFailed,
&gt; &gt; 
&gt; &gt; Would it be possible somehow to let the macros declare this? igeuss not
&gt; do not see how it would be possible :(
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:128
&gt; &gt; &gt; +#define DECLARE_EWK_VIEW_CALLBACK(callbackType, string, type) \
&gt; &gt; 
&gt; &gt; Will we ever need callbacks on something different from the view?
&gt; 
&gt; Only view is evas object, so not I guess
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:142
&gt; &gt; &gt; +#define DECLARE_EWK_VIEW_SIGNAL(callbackType, string)         \
&gt; &gt; 
&gt; &gt; Could these be templates instead? then we would even support overloading.
&gt; we need to declare template class it&apos;s impossible to do from a function.
&gt; 
&gt; &gt; 
&gt; &gt; declareCallback&lt;ViewVisibilityChange, Evas_Object*&gt;(&quot;view,visible,change&quot;)
&gt; &gt; declareCallback&lt;ProcessCrashed&gt;(&quot;process,crashed&quot;) ?
&gt; &gt; 
&gt; &gt; We could even hide it with __VA_LIST__
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:165
&gt; &gt; &gt; +DECLARE_EWK_VIEW_CALLBACK(ProvisionalLoadFailed, &quot;load,provisional,failed&quot;, Ewk_Error*);
&gt; &gt; &gt; +DECLARE_EWK_VIEW_SIGNAL(ProvisionalLoadRedirect, &quot;load,provisional,redirect&quot;);
&gt; &gt; 
&gt; &gt; EFL differentiates between signal and callback?
&gt; 
&gt; I just called callback w/o parameters signal to differentiate :)


Actually, EFL does not make the distinction, and this is not really a signal so I don&apos;t like this name. This is the reason why I asked if we could use the same macro for both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753504</commentid>
    <comment_count>23</comment_count>
      <attachid>171177</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-29 09:24:16 -0700</bug_when>
    <thetext>Comment on attachment 171177
patch v3

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:165
&gt;&gt;&gt; +DECLARE_EWK_VIEW_SIGNAL(ProvisionalLoadRedirect, &quot;load,provisional,redirect&quot;);
&gt;&gt; 
&gt;&gt; EFL differentiates between signal and callback?
&gt; 
&gt; I just called callback w/o parameters signal to differentiate :)

I don&apos;t know why you have to define _CALLBACK and _SIGNAL macros. Can&apos;t we send signal with null parameter via _CALLBACK macro ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753508</commentid>
    <comment_count>24</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-29 09:29:16 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 171177 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171177&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:165
&gt; &gt;&gt;&gt; +DECLARE_EWK_VIEW_SIGNAL(ProvisionalLoadRedirect, &quot;load,provisional,redirect&quot;);
&gt; &gt;&gt; 
&gt; &gt;&gt; EFL differentiates between signal and callback?
&gt; &gt; 
&gt; &gt; I just called callback w/o parameters signal to differentiate :)
&gt; 
&gt; I don&apos;t know why you have to define _CALLBACK and _SIGNAL macros. Can&apos;t we send signal with null parameter via _CALLBACK macro ?

did it in order to not allow clients pass any argument where they are not expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754066</commentid>
    <comment_count>25</comment_count>
      <attachid>171397</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-30 01:40:03 -0700</bug_when>
    <thetext>Created attachment 171397
patch v4

Have only one macro now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754073</commentid>
    <comment_count>26</comment_count>
      <attachid>171397</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-30 01:49:14 -0700</bug_when>
    <thetext>Comment on attachment 171397
patch v4

Any more comments Chris?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754074</commentid>
    <comment_count>27</comment_count>
      <attachid>171397</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-30 01:50:55 -0700</bug_when>
    <thetext>Comment on attachment 171397
patch v4

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:121
&gt; +            ASSERT(!&quot;should not pass arguments for this callback!&quot;);

What does this ASSERT mean? Can&apos;t you use DGB or CRIT macro ?

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:161
&gt; +DECLARE_EWK_VIEW_CALLBACK(NavigationPolicyDecision, &quot;policy,decision,navigation&quot;, Ewk_Navigation_Policy_Decision);

I prefer to place signal list by alphabetical order. How do you place these signal by alphabetical order? BTW, I think it would be good if you keep signal which uses ENABLE(XXX) macro as now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754085</commentid>
    <comment_count>28</comment_count>
      <attachid>171397</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-10-30 02:01:19 -0700</bug_when>
    <thetext>Comment on attachment 171397
patch v4

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:29
&gt; +#include &quot;WebPageProxy.h&quot;

Is this still needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754110</commentid>
    <comment_count>29</comment_count>
      <attachid>171397</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-30 02:23:23 -0700</bug_when>
    <thetext>Comment on attachment 171397
patch v4

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:121
&gt;&gt; +            ASSERT(!&quot;should not pass arguments for this callback!&quot;);
&gt; 
&gt; What does this ASSERT mean? Can&apos;t you use DGB or CRIT macro ?

Agreed. This looks weird. ASSERT_NOT_REACHED()?

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:161
&gt;&gt; +DECLARE_EWK_VIEW_CALLBACK(NavigationPolicyDecision, &quot;policy,decision,navigation&quot;, Ewk_Navigation_Policy_Decision);
&gt; 
&gt; I prefer to place signal list by alphabetical order. How do you place these signal by alphabetical order? BTW, I think it would be good if you keep signal which uses ENABLE(XXX) macro as now.

Yes, it would be nice to sort by signal name like in ewk_view.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754128</commentid>
    <comment_count>30</comment_count>
      <attachid>171405</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-30 02:45:13 -0700</bug_when>
    <thetext>Created attachment 171405
patch v5

Arranged callbacks in alphabetical order, substituted assertion that people did not like (read Sutter! :-) )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754129</commentid>
    <comment_count>31</comment_count>
      <attachid>171405</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-30 02:46:39 -0700</bug_when>
    <thetext>Comment on attachment 171405
patch v5

ouch, not everything is sorted :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754131</commentid>
    <comment_count>32</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-30 02:50:26 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 171405 [details])
&gt; ouch, not everything is sorted :(

Well, enum members are not sorted but signal names are sorted like it&apos;s done in in ewk_view.h, so think it&apos;s correct. 
Putting cq? again, sorry for hassle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754138</commentid>
    <comment_count>33</comment_count>
      <attachid>171405</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-10-30 02:59:08 -0700</bug_when>
    <thetext>Comment on attachment 171405
patch v5

Clearing flags on attachment: 171405

Committed r132887: &lt;http://trac.webkit.org/changeset/132887&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754139</commentid>
    <comment_count>34</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-10-30 02:59:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754586</commentid>
    <comment_count>35</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-30 12:31:39 -0700</bug_when>
    <thetext>This patch seems to be causing some segfaults in API tests. I&apos;m looking into it to see if it&apos;s an easy fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171106</attachid>
            <date>2012-10-27 15:34:03 -0700</date>
            <delta_ts>2012-10-27 15:40:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug100506</filename>
            <type>text/plain</type>
            <size>42832</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDEzNTE4OTkzNDFhNjYzOWY5YjYxN2I3ZjhhMWU5YzY5YTE2YzU3MmYKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
U3VuIE9jdCAyOCAwMToxNzowOCAyMDEyICswMzAwCgogICAgYnVnMTAwNTA2CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDRjMGNiNzguLmZmYzA5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxMi0x
MC0yNyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIFNpbXBsaWZ5IHNpZ25hbCBlbWl0dGluZyBBUEkgaW4gRXdr
Vmlld0ltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMDUwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vdyBzaWduYWwgZW1pdHRpbmcgQVBJIGluIEV3a1ZpZXdJbXBsIGlzIHNpbXBsaWZpZWQgc28g
dGhhdAorICAgICAgICB0aGVyZSBpcyBvbmUgRXdrVmlld0ltcGw6OmNhbGxTbWFydENhbGxiYWNr
IHRlbXBsYXRlIG1ldGhvZAorICAgICAgICBjYWxsaW5nIHNtYXJ0IGNhbGxiYWNrIGZyb20gRXdr
X3ZpZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmg6
IEFkZGVkLgorICAgICAgICAoRXdrVmlld0ltcGw6OmNhbGxTbWFydENhbGxiYWNrKToKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjpVUkxDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkQ29tbWl0
dGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAg
ICAoRXdrVmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDoKKyAgICAgICAgKGV3a192aWV3X3VybF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVsb2Fk
KToKKyAgICAgICAgKGV3a192aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUpOgorICAgICAgICAoZXdr
X3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9Eb3dubG9h
ZE1hbmFnZXJFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJFZmw6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRN
YW5hZ2VyRWZsOjpkaWRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJF
Zmw6OmRpZEZpbmlzaCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RmluZENsaWVudEVmbDo6ZGlkRmluZFN0cmluZyk6CisgICAg
ICAgIChXZWJLaXQ6OkZpbmRDbGllbnRFZmw6OmRpZEZhaWxUb0ZpbmRTdHJpbmcpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZv
cm1DbGllbnRFZmw6OndpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1Bh
Z2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnByb2Nl
c3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp0b29sVGlwQ2hh
bmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlSW50ZW50
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6cmVnaXN0ZXJJ
bnRlbnRTZXJ2aWNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVm
bDo6ZGlkQ2hhbmdlUHJvZ3Jlc3MpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVm
bDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGll
bnRFZmw6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlTG9hZENsaWVudEVmbDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xp
ZW50RWZsOjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlz
dCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNs
aWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VQb2xpY3lDbGllbnRFZmw6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQYWdlUG9saWN5
Q2xpZW50RWZsOjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkU2VuZFJlcXVlc3RGb3JSZXNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRDbGll
bnRFZmw6OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZENsaWVudEVmbDo6ZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisKIDIwMTItMTAtMjYg
IE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAg
ICAgICAgW0VGTF1bV0syXSBDbGVhbiB1cCBjb25zdHJ1Y3Rpb24vZGVzdHJ1Y3Rpb24gY29kZSBp
biBFd2tfdmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0NhbGxiYWNrcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0NhbGxiYWNrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5Yjky
YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3Q2FsbGJhY2tzLmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBFd2tWaWV3Q2FsbGJhY2tzX2gKKyNkZWZpbmUgRXdrVmlld0NhbGxiYWNrc19oCisK
KyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordGVtcGxhdGUgPEV3a1ZpZXdJbXBsOjpDYWxs
YmFjayBjYWxsYmFja1R5cGU+Cit2b2lkIEV3a1ZpZXdJbXBsOjpjYWxsU21hcnRDYWxsYmFjayh2
b2lkKikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordGVtcGxhdGU8RXdrVmll
d0ltcGw6OkNhbGxiYWNrIGNhbGxiYWNrVHlwZT4KK3ZvaWQgRXdrVmlld0ltcGw6OmNhbGxTbWFy
dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYXJnKQoreworICAgIGNhbGxTbWFydENhbGxiYWNrPGNh
bGxiYWNrVHlwZT4oY29uc3RfY2FzdDxjaGFyKj4oYXJnLnV0ZjgoKS5kYXRhKCkpKTsKK30KKwor
I2RlZmluZSBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKGNhbGxiYWNrVHlwZSwgc3RyaW5nKSAg
ICAgICAgICAgICAgICAgIFwKK3RlbXBsYXRlIDw+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitpbmxpbmUgdm9pZCBFd2tWaWV3
SW1wbDo6Y2FsbFNtYXJ0Q2FsbGJhY2s8Y2FsbGJhY2tUeXBlPih2b2lkKiBhcmd1bWVudCkgXAor
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1f
dmlldywgc3RyaW5nLCBhcmd1bWVudCk7ICAgICAgICAgICBcCit9CisKK0RFQ0xBUkVfRVdLX1ZJ
RVdfQ0FMTEJBQ0soRXdrVmlld0ltcGw6OkRvd25sb2FkSm9iQ2FuY2VsbGVkLCAiZG93bmxvYWQs
Y2FuY2VsbGVkIikKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdrVmlld0ltcGw6OkRvd25s
b2FkSm9iRmFpbGVkLCAiZG93bmxvYWQsZmFpbGVkIikKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJB
Q0soRXdrVmlld0ltcGw6OkRvd25sb2FkSm9iRmluaXNoZWQsICJkb3dubG9hZCxmaW5pc2hlZCIp
CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEV3a1ZpZXdJbXBsOjpEb3dubG9hZEpvYlJlcXVl
c3RlZCwgImRvd25sb2FkLHJlcXVlc3QiKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhFd2tW
aWV3SW1wbDo6TmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0LCAiZm9ybSxzdWJtaXNzaW9uLHJlcXVl
c3QiKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhFd2tWaWV3SW1wbDo6TG9hZEVycm9yLCAi
bG9hZCxlcnJvciIpCitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEV3a1ZpZXdJbXBsOjpMb2Fk
RmluaXNoZWQsICJsb2FkLGZpbmlzaGVkIikKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdr
Vmlld0ltcGw6OkxvYWRQcm9ncmVzcywgImxvYWQscHJvZ3Jlc3MiKQorREVDTEFSRV9FV0tfVklF
V19DQUxMQkFDSyhFd2tWaWV3SW1wbDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkLCAibG9hZCxwcm92
aXNpb25hbCxmYWlsZWQiKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhFd2tWaWV3SW1wbDo6
UHJvdmlzaW9uYWxMb2FkUmVkaXJlY3QsICJsb2FkLHByb3Zpc2lvbmFsLHJlZGlyZWN0IikKK0RF
Q0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdrVmlld0ltcGw6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0
ZWQsICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFD
SyhFd2tWaWV3SW1wbDo6UmVzb3VyY2VMb2FkU3RhcnRlZCwgInJlc291cmNlLHJlcXVlc3QsbmV3
IikKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdrVmlld0ltcGw6OlJlc291cmNlTG9hZFJl
c3BvbnNlLCAicmVzb3VyY2UscmVxdWVzdCxyZXNwb25zZSIpCitERUNMQVJFX0VXS19WSUVXX0NB
TExCQUNLKEV3a1ZpZXdJbXBsOjpSZXNvdXJjZUxvYWRGYWlsZWQsICJyZXNvdXJjZSxyZXF1ZXN0
LGZhaWxlZCIpCitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEV3a1ZpZXdJbXBsOjpSZXNvdXJj
ZUxvYWRGaW5pc2hlZCwgInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiKQorREVDTEFSRV9FV0tf
VklFV19DQUxMQkFDSyhFd2tWaWV3SW1wbDo6UmVzb3VyY2VSZXF1ZXN0U2VudCwgInJlc291cmNl
LHJlcXVlc3Qsc2VudCIpCitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEV3a1ZpZXdJbXBsOjpO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24sICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlvbiIpCitE
RUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEV3a1ZpZXdJbXBsOjpOZXdXaW5kb3dQb2xpY3lEZWNp
c2lvbiwgInBvbGljeSxkZWNpc2lvbixuZXcsd2luZG93IikKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FM
TEJBQ0soRXdrVmlld0ltcGw6OkJhY2tGb3J3YXJkTGlzdENoYW5nZSwgImJhY2ssZm9yd2FyZCxs
aXN0LGNoYW5nZWQiKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhFd2tWaWV3SW1wbDo6VGl0
bGVDaGFuZ2UsICJ0aXRsZSxjaGFuZ2VkIikKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdr
Vmlld0ltcGw6OlRvb2x0aXBUZXh0VW5zZXQsICJ0b29sdGlwLHRleHQsdW5zZXQiKQorREVDTEFS
RV9FV0tfVklFV19DQUxMQkFDSyhFd2tWaWV3SW1wbDo6VG9vbHRpcFRleHRTZXQsICJ0b29sdGlw
LHRleHQsc2V0IikKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdrVmlld0ltcGw6OlRleHRG
b3VuZCwgInRleHQsZm91bmQiKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhFd2tWaWV3SW1w
bDo6SWNvbkNoYW5nZSwgImljb24sY2hhbmdlZCIpCitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNL
KEV3a1ZpZXdJbXBsOjpXZWJQcm9jZXNzQ3Jhc2hlZCwgIndlYnByb2Nlc3MsY3Jhc2hlZCIpCisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhFd2tWaWV3
SW1wbDo6SW50ZW50UmVxdWVzdCwgImludGVudCxyZXF1ZXN0LG5ldyIpCisjZW5kaWYKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhFd2tWaWV3
SW1wbDo6SW50ZW50U2VydmljZVJlZ2lzdHJhdGlvbiwgImludGVudCxzZXJ2aWNlLHJlZ2lzdGVy
IikKKyNlbmRpZgorCisvLyBTcGVjaWFsIGNhc2UuCit0ZW1wbGF0ZSA8PgoraW5saW5lIHZvaWQg
RXdrVmlld0ltcGw6OmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpVUkxDaGFuZ2U+KHZv
aWQqKQoreworICAgIGluZm9ybVVSTENoYW5nZSgpOworfQorCisjZW5kaWYgLy8gI2lmbmRlZiBF
d2tWaWV3Q2FsbGJhY2tzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdJbXBsLmNwcAppbmRleCAyNGFmNjJiLi5lZTdiYWY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCkBAIC0yNzAsNjIgKzI3
MCw2IEBAIHZvaWQgRXdrVmlld0ltcGw6OnJlZHJhd1JlZ2lvbihjb25zdCBJbnRSZWN0JiByZWN0
KQogICAgIG1fZGlydHlSZWN0cy5hcHBlbmQocmVjdCk7CiB9CiAKLS8qKgotICogQGludGVybmFs
Ci0gKiBBIGRvd25sb2FkIGZvciB0aGF0IHZpZXcgd2FzIGNhbmNlbGxlZC4KLSAqCi0gKiBFbWl0
cyBzaWduYWw6ICJkb3dubG9hZCxjYW5jZWxsZWQiIHdpdGggcG9pbnRlciB0byBhIEV3a19Eb3du
bG9hZF9Kb2IuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybURvd25sb2FkSm9iQ2FuY2Vs
bGVkKEV3a19Eb3dubG9hZF9Kb2IqIGRvd25sb2FkKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiZG93bmxvYWQsY2FuY2VsbGVkIiwgZG93bmxvYWQpOwot
fQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogQSBkb3dubG9hZCBmb3IgdGhhdCB2aWV3IGhhcyBm
YWlsZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAiZG93bmxvYWQsZmFpbGVkIiB3aXRoIHBvaW50
ZXIgdG8gYSBFd2tfRG93bmxvYWRfSm9iX0Vycm9yLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjpp
bmZvcm1Eb3dubG9hZEpvYkZhaWxlZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCwgRXdrX0Vy
cm9yKiBlcnJvcikKLXsKLSAgICBFd2tfRG93bmxvYWRfSm9iX0Vycm9yIGRvd25sb2FkRXJyb3Ig
PSB7IGRvd25sb2FkLCBlcnJvciB9OwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobV92aWV3LCAiZG93bmxvYWQsZmFpbGVkIiwgJmRvd25sb2FkRXJyb3IpOwotfQotCi0vKioK
LSAqIEBpbnRlcm5hbAotICogQSBkb3dubG9hZCBmb3IgdGhhdCB2aWV3IGZpbmlzaGVkIHN1Y2Nl
c3NmdWxseS4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJkb3dubG9hZCxmaW5pc2hlZCIgd2l0aCBw
b2ludGVyIHRvIGEgRXdrX0Rvd25sb2FkX0pvYi4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5m
b3JtRG93bmxvYWRKb2JGaW5pc2hlZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCkKLXsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImRvd25sb2FkLGZpbmlz
aGVkIiwgZG93bmxvYWQpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogQSBuZXcgZG93bmxv
YWQgaGFzIGJlZW4gcmVxdWVzdGVkIGZvciB0aGF0IHZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFs
OiAiZG93bmxvYWQscmVxdWVzdCIgd2l0aCBwb2ludGVyIHRvIGEgRXdrX0Rvd25sb2FkX0pvYi4K
LSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtRG93bmxvYWRKb2JSZXF1ZXN0ZWQoRXdrX0Rv
d25sb2FkX0pvYiogZG93bmxvYWQpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChtX3ZpZXcsICJkb3dubG9hZCxyZXF1ZXN0IiwgZG93bmxvYWQpOwotfQotCi0vKioKLSAq
IEBpbnRlcm5hbAotICogaW5mb3JtcyB0aGF0IGEgZm9ybSByZXF1ZXN0IGlzIGFib3V0IHRvIGJl
IHN1Ym1pdHRlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJmb3JtLHN1Ym1pc3Npb24scmVxdWVz
dCIgd2l0aCBwb2ludGVyIHRvIEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdC4KLSAqLwotdm9p
ZCBFd2tWaWV3SW1wbDo6aW5mb3JtTmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0KEV3a19Gb3JtX1N1
Ym1pc3Npb25fUmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG1fdmlldywgImZvcm0sc3VibWlzc2lvbixyZXF1ZXN0IiwgcmVxdWVzdCk7Ci19
Ci0KICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAvKioKICAqIEBpbnRlcm5hbApAQCAtMzY3
LDE5OCArMzExLDEzIEBAIHZvaWQgRXdrVmlld0ltcGw6OnNldEltYWdlRGF0YSh2b2lkKiBpbWFn
ZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9j
b3B5X3NldChzZC0+aW1hZ2UsIGltYWdlRGF0YSk7CiB9CiAKLS8qKgotICogQGludGVybmFsCi0g
KiBpbmZvcm1zIGxvYWQgZmFpbGVkIHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCi0gKgotICogRW1p
dHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2ludGVyIHRvIEV3a19FcnJvci4KLSAqLwot
dm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtTG9hZEVycm9yKEV3a19FcnJvciogZXJyb3IpCi17Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2FkLGVycm9yIiwg
ZXJyb3IpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3JtcyBsb2FkIGZpbmlzaGVk
LgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQsZmluaXNoZWQiLgotICovCi12b2lkIEV3a1Zp
ZXdJbXBsOjppbmZvcm1Mb2FkRmluaXNoZWQoKQotewotICAgIGluZm9ybVVSTENoYW5nZSgpOwot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibG9hZCxmaW5pc2hl
ZCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3JtcyBsb2FkIHByb2dyZXNz
IGNoYW5nZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm9ncmVzcyIgd2l0aCBwb2lu
dGVyIHRvIGEgZG91YmxlIGZyb20gMC4wIHRvIDEuMC4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6
aW5mb3JtTG9hZFByb2dyZXNzKGRvdWJsZSBwcm9ncmVzcykKLXsKLSAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQscHJvZ3Jlc3MiLCAmcHJvZ3Jlc3MpOwot
fQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3JtcyB2aWV3IHByb3Zpc2lvbmFsIGxvYWQg
ZmFpbGVkIHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9h
ZCxwcm92aXNpb25hbCxmYWlsZWQiIHdpdGggcG9pbnRlciB0byBFd2tfRXJyb3IuCi0gKi8KLXZv
aWQgRXdrVmlld0ltcGw6OmluZm9ybVByb3Zpc2lvbmFsTG9hZEZhaWxlZChFd2tfRXJyb3IqIGVy
cm9yKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibG9h
ZCxwcm92aXNpb25hbCxmYWlsZWQiLCBlcnJvcik7Ci19Ci0KICNpZiBVU0UoVElMRURfQkFDS0lO
R19TVE9SRSkKIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUxvYWRDb21taXR0ZWQoKQogewotICAg
IHBhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENvbW1pdExvYWQoKTsKKyAgICBtX3BhZ2VWaWV3
cG9ydENvbnRyb2xsZXItPmRpZENvbW1pdExvYWQoKTsKIH0KICNlbmRpZgogCi0vKioKLSAqIEBp
bnRlcm5hbAotICogaW5mb3JtcyB2aWV3IHJlY2VpdmVkIHJlZGlyZWN0IGZvciBwcm92aXNpb25h
bCBsb2FkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9uYWwscmVkaXJlY3Qi
LgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Qcm92aXNpb25hbExvYWRSZWRpcmVjdCgp
Ci17Ci0gICAgaW5mb3JtVVJMQ2hhbmdlKCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChtX3ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLHJlZGlyZWN0IiwgMCk7Ci19Ci0KLS8q
KgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIHZpZXcgcHJvdmlzaW9uYWwgbG9hZCBzdGFydGVk
LgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9uYWwsc3RhcnRlZCIuCi0gKi8K
LXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKQotewotICAg
IGluZm9ybVVSTENoYW5nZSgpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
bV92aWV3LCAibG9hZCxwcm92aXNpb25hbCxzdGFydGVkIiwgMCk7Ci19Ci0KLS8qKgotICogQGlu
dGVybmFsCi0gKiBpbmZvcm1zIHRoYXQgYSBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiBzaG91
bGQgYmUgdGFrZW4uCi0gKgotICogRW1pdHMgc2lnbmFsOiAicG9saWN5LGRlY2lzaW9uLG5hdmln
YXRpb24iLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1OYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24oRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbikKLXsKLSAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInBvbGljeSxkZWNpc2lvbixu
YXZpZ2F0aW9uIiwgZGVjaXNpb24pOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3Jt
cyB0aGF0IGEgbmV3IHdpbmRvdyBwb2xpY3kgZGVjaXNpb24gc2hvdWxkIGJlIHRha2VuLgotICoK
LSAqIEVtaXRzIHNpZ25hbDogInBvbGljeSxkZWNpc2lvbixuZXcsd2luZG93Ii4KLSAqLwotdm9p
ZCBFd2tWaWV3SW1wbDo6aW5mb3JtTmV3V2luZG93UG9saWN5RGVjaXNpb24oRXdrX05hdmlnYXRp
b25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbikKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKG1fdmlldywgInBvbGljeSxkZWNpc2lvbixuZXcsd2luZG93IiwgZGVjaXNp
b24pOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogTG9hZCB3YXMgaW5pdGlhdGVkIGZvciBh
IHJlc291cmNlIGluIHRoZSB2aWV3LgotICoKLSAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJl
cXVlc3QsbmV3IiB3aXRoIHBvaW50ZXIgdG8gcmVzb3VyY2UgcmVxdWVzdC4KLSAqLwotdm9pZCBF
d2tWaWV3SW1wbDo6aW5mb3JtUmVzb3VyY2VMb2FkU3RhcnRlZChFd2tfUmVzb3VyY2UqIHJlc291
cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpCi17Ci0gICAgRXdrX1Jlc291cmNlX1JlcXVl
c3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCByZXF1ZXN0LCAwfTsKLQotICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCxuZXci
LCAmcmVzb3VyY2VSZXF1ZXN0KTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlY2VpdmVk
IGEgcmVzcG9uc2UgdG8gYSByZXNvdXJjZSBsb2FkIHJlcXVlc3QgaW4gdGhlIHZpZXcuCi0gKgot
ICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxyZXNwb25zZSIgd2l0aCBwb2ludGVy
IHRvIHJlc291cmNlIHJlc3BvbnNlLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1SZXNv
dXJjZUxvYWRSZXNwb25zZShFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1Jlc3BvbnNl
KiByZXNwb25zZSkKLXsKLSAgICBFd2tfUmVzb3VyY2VfTG9hZF9SZXNwb25zZSByZXNvdXJjZUxv
YWRSZXNwb25zZSA9IHtyZXNvdXJjZSwgcmVzcG9uc2V9OwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCxyZXNwb25zZSIsICZyZXNv
dXJjZUxvYWRSZXNwb25zZSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBGYWlsZWQgbG9h
ZGluZyBhIHJlc291cmNlIGluIHRoZSB2aWV3LgotICoKLSAqIEVtaXRzIHNpZ25hbDogInJlc291
cmNlLHJlcXVlc3QsZmluaXNoZWQiIHdpdGggcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgbG9hZCBl
cnJvci4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtUmVzb3VyY2VMb2FkRmFpbGVkKEV3
a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19FcnJvciogZXJyb3IpCi17Ci0gICAgRXdrX1Jlc291
cmNlX0xvYWRfRXJyb3IgcmVzb3VyY2VMb2FkRXJyb3IgPSB7cmVzb3VyY2UsIGVycm9yfTsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInJlc291cmNlLHJlcXVl
c3QsZmFpbGVkIiwgJnJlc291cmNlTG9hZEVycm9yKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIEZpbmlzaGVkIGxvYWRpbmcgYSByZXNvdXJjZSBpbiB0aGUgdmlldy4KLSAqCi0gKiBFbWl0
cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB3aXRoIHBvaW50ZXIgdG8gdGhl
IHJlc291cmNlLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1SZXNvdXJjZUxvYWRGaW5p
c2hlZChFd2tfUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCxmaW5pc2hlZCIsIHJlc291cmNl
KTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcXVlc3Qgd2FzIHNlbnQgZm9yIGEgcmVz
b3VyY2UgaW4gdGhlIHZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVz
dCxzZW50IiB3aXRoIHBvaW50ZXIgdG8gcmVzb3VyY2UgcmVxdWVzdCBhbmQgcG9zc2libGUgcmVk
aXJlY3QgcmVzcG9uc2UuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVJlc291cmNlUmVx
dWVzdFNlbnQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0
LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNlKQotewotICAgIEV3a19SZXNvdXJj
ZV9SZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHtyZXNvdXJjZSwgcmVxdWVzdCwgcmVkaXJlY3RS
ZXNwb25zZX07Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJy
ZXNvdXJjZSxyZXF1ZXN0LHNlbnQiLCAmcmVzb3VyY2VSZXF1ZXN0KTsKLX0KLQotLyoqCi0gKiBA
aW50ZXJuYWwKLSAqIFRoZSB2aWV3IHRpdGxlIHdhcyBjaGFuZ2VkIGJ5IHRoZSBmcmFtZSBsb2Fk
ZXIuCi0gKgotICogRW1pdHMgc2lnbmFsOiAidGl0bGUsY2hhbmdlZCIgd2l0aCBwb2ludGVyIHRv
IG5ldyB0aXRsZSBzdHJpbmcuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVRpdGxlQ2hh
bmdlKGNvbnN0IFN0cmluZyYgdGl0bGUpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChtX3ZpZXcsICJ0aXRsZSxjaGFuZ2VkIiwgY29uc3RfY2FzdDxjaGFyKj4odGl0bGUu
dXRmOCgpLmRhdGEoKSkpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICovCi12b2lkIEV3a1Zp
ZXdJbXBsOjppbmZvcm1Ub29sdGlwVGV4dENoYW5nZShjb25zdCBTdHJpbmcmIHRleHQpCi17Ci0g
ICAgaWYgKHRleHQuaXNFbXB0eSgpKQotICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKG1fdmlldywgInRvb2x0aXAsdGV4dCx1bnNldCIsIDApOwotICAgIGVsc2UKLSAgICAg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ0b29sdGlwLHRleHQs
c2V0IiwgY29uc3RfY2FzdDxjaGFyKj4odGV4dC51dGY4KCkuZGF0YSgpKSk7Ci0KLX0KLQotLyoq
Ci0gKiBAaW50ZXJuYWwKLSAqIGluZm9ybXMgdGhhdCB0aGUgcmVxdWVzdGVkIHRleHQgd2FzIGZv
dW5kLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInRleHQsZm91bmQiIHdpdGggdGhlIG51bWJlciBv
ZiBtYXRjaGVzLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1UZXh0Rm91bmQodW5zaWdu
ZWQgbWF0Y2hDb3VudCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1f
dmlldywgInRleHQsZm91bmQiLCAmbWF0Y2hDb3VudCk7Ci19Ci0KIEludFNpemUgRXdrVmlld0lt
cGw6OnNpemUoKSBjb25zdAogewogICAgIGludCB3aWR0aCwgaGVpZ2h0OwpAQCAtNjg5LDMyICs0
NDgsNiBAQCB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1JY29uQ2hhbmdlKCkKICAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImljb24sY2hhbmdlZCIsIDApOwogfQog
Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFRoZSB2aWV3
IHJlY2VpdmVkIGEgbmV3IGludGVudCByZXF1ZXN0LgotICoKLSAqIEVtaXRzIHNpZ25hbDogImlu
dGVudCxyZXF1ZXN0LG5ldyIgd2l0aCBwb2ludGVyIHRvIGEgRXdrX0ludGVudC4KLSAqLwotdm9p
ZCBFd2tWaWV3SW1wbDo6aW5mb3JtSW50ZW50UmVxdWVzdChFd2tfSW50ZW50KiBld2tJbnRlbnQp
Ci17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJpbnRlbnQs
cmVxdWVzdCxuZXciLCBld2tJbnRlbnQpOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0lO
VEVOVFNfVEFHKQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFRoZSB2aWV3IHJlY2VpdmVkIGEgbmV3
IGludGVudCBzZXJ2aWNlIHJlZ2lzdHJhdGlvbi4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJpbnRl
bnQsc2VydmljZSxyZWdpc3RlciIgd2l0aCBwb2ludGVyIHRvIGEgRXdrX0ludGVudF9TZXJ2aWNl
LgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1JbnRlbnRTZXJ2aWNlUmVnaXN0cmF0aW9u
KEV3a19JbnRlbnRfU2VydmljZSogZXdrSW50ZW50U2VydmljZSkKLXsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImludGVudCxzZXJ2aWNlLHJlZ2lzdGVyIiwg
ZXdrSW50ZW50U2VydmljZSk7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykK
LQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIGJvb2wgRXdrVmlld0ltcGw6OmNy
ZWF0ZUdMU3VyZmFjZShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSkKIHsKQEAgLTgzMywzNyArNTY2
LDYgQEAgdm9pZCBFd2tWaWV3SW1wbDo6ZGlzbWlzc0NvbG9yUGlja2VyKCkKIH0KICNlbmRpZgog
Ci0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3JtcyB0aGF0IHRoZSB2aWV3J3MgYmFjayAvIGZv
cndhcmQgbGlzdCBoYXMgY2hhbmdlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJiYWNrLGZvcndh
cmQsbGlzdCxjaGFuZ2VkIi4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtQmFja0Zvcndh
cmRMaXN0Q2hhbmdlKCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1f
dmlldywgImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCAwKTsKLX0KLQotLyoqCi0gKiBAaW50
ZXJuYWwKLSAqIFdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkLgotICoKLSAqIEVtaXRzIHNpZ25hbDog
IndlYnByb2Nlc3MsY3Jhc2hlZCIgd2l0aCBwb2ludGVyIHRvIGNyYXNoIGhhbmRsaW5nIGJvb2xl
YW4uCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVdlYlByb2Nlc3NDcmFzaGVkKCkKLXsK
LSAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKG1fdmlldywgIndlYnByb2Nlc3MsY3Jhc2hlZCIsICZoYW5kbGVkKTsKLQotICAgIGlm
ICghaGFuZGxlZCkgewotICAgICAgICBDU3RyaW5nIHVybCA9IG1fcGFnZVByb3h5LT51cmxBdFBy
b2Nlc3NFeGl0KCkudXRmOCgpOwotICAgICAgICBXQVJOKCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nl
c3MgZXhwZXJpZW5jZWQgYSBjcmFzaCBvbiAnJXMnLlxuIiwgdXJsLmRhdGEoKSk7Ci0KLSAgICAg
ICAgLy8gRGlzcGxheSBhbiBlcnJvciBwYWdlCi0gICAgICAgIGV3a192aWV3X2h0bWxfc3RyaW5n
X2xvYWQobV92aWV3LCAiVGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkLiIsIDAsIHVybC5kYXRh
KCkpOwotICAgIH0KLX0KLQogdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtQ29udGVudHNTaXplQ2hh
bmdlKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0lt
cGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKaW5k
ZXggNzA1MzJjZi4uMmM3MDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC0xMDEsNiArMTAxLDQyIEBAIHR5cGVkZWYgc3RydWN0IEV3
a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsKIAogY2xhc3MgRXdrVmlld0lt
cGwgewogcHVibGljOgorICAgIGVudW0gQ2FsbGJhY2sgeworICAgICAgICBEb3dubG9hZEpvYkNh
bmNlbGxlZCwKKyAgICAgICAgRG93bmxvYWRKb2JGYWlsZWQsCisgICAgICAgIERvd25sb2FkSm9i
RmluaXNoZWQsCisgICAgICAgIERvd25sb2FkSm9iUmVxdWVzdGVkLAorICAgICAgICBOZXdGb3Jt
U3VibWlzc2lvblJlcXVlc3QsCisgICAgICAgIExvYWRFcnJvciwKKyAgICAgICAgTG9hZEZpbmlz
aGVkLAorICAgICAgICBMb2FkUHJvZ3Jlc3MsCisgICAgICAgIFByb3Zpc2lvbmFsTG9hZEZhaWxl
ZCwKKyAgICAgICAgUHJvdmlzaW9uYWxMb2FkUmVkaXJlY3QsCisgICAgICAgIFByb3Zpc2lvbmFs
TG9hZFN0YXJ0ZWQsCisgICAgICAgIFJlc291cmNlTG9hZFN0YXJ0ZWQsCisgICAgICAgIFJlc291
cmNlTG9hZFJlc3BvbnNlLAorICAgICAgICBSZXNvdXJjZUxvYWRGYWlsZWQsCisgICAgICAgIFJl
c291cmNlTG9hZEZpbmlzaGVkLAorICAgICAgICBSZXNvdXJjZVJlcXVlc3RTZW50LAorICAgICAg
ICBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24sCisgICAgICAgIE5ld1dpbmRvd1BvbGljeURlY2lz
aW9uLAorICAgICAgICBCYWNrRm9yd2FyZExpc3RDaGFuZ2UsCisgICAgICAgIFRpdGxlQ2hhbmdl
LAorICAgICAgICBUb29sdGlwVGV4dFVuc2V0LAorICAgICAgICBUb29sdGlwVGV4dFNldCwKKyAg
ICAgICAgVGV4dEZvdW5kLAorICAgICAgICBJY29uQ2hhbmdlLAorICAgICAgICBXZWJQcm9jZXNz
Q3Jhc2hlZCwKKyAgICAgICAgVVJMQ2hhbmdlLAorICAgICAgICBMb2FkQ29tbWl0dGVkLAorI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKKyAgICAgICAgSW50ZW50UmVxdWVzdCwKKyNlbmRpZgorI2lm
IEVOQUJMRShXRUJfSU5URU5UU19UQUcpCisgICAgICAgIEludGVudFNlcnZpY2VSZWdpc3RyYXRp
b24sCisjZW5kaWYKKyAgICB9OworCiAgICAgRXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcs
IFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQ
YWdlR3JvdXA+IHBhZ2VHcm91cCk7CiAgICAgfkV3a1ZpZXdJbXBsKCk7CiAKQEAgLTE3MCw1MiAr
MjA2LDI1IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVlc3RKU0NvbmZpcm1Qb3B1cChjb25zdCBX
S0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UpOwogICAgIFdLRWluYVNoYXJlZFN0cmluZyByZXF1
ZXN0SlNQcm9tcHRQb3B1cChjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFdLRWluYVNoYXJlZFN0cmluZyYgZGVmYXVsdFZhbHVlKTsKIAotICAgIHZvaWQgaW5mb3JtRG93
bmxvYWRKb2JDYW5jZWxsZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQpOwotICAgIHZvaWQg
aW5mb3JtRG93bmxvYWRKb2JGYWlsZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQsIEV3a19F
cnJvciogZXJyb3IpOwotICAgIHZvaWQgaW5mb3JtRG93bmxvYWRKb2JGaW5pc2hlZChFd2tfRG93
bmxvYWRfSm9iKiBkb3dubG9hZCk7Ci0gICAgdm9pZCBpbmZvcm1Eb3dubG9hZEpvYlJlcXVlc3Rl
ZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCk7CisgICAgdGVtcGxhdGU8RXdrVmlld0ltcGw6
OkNhbGxiYWNrIGNhbGxiYWNrVHlwZT4KKyAgICB2b2lkIGNhbGxTbWFydENhbGxiYWNrKHZvaWQq
IGFyZyA9IDApOworCisgICAgdGVtcGxhdGU8RXdrVmlld0ltcGw6OkNhbGxiYWNrIGNhbGxiYWNr
VHlwZT4KKyAgICB2b2lkIGNhbGxTbWFydENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYXJnKTsKIAot
ICAgIHZvaWQgaW5mb3JtTmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0KEV3a19Gb3JtX1N1Ym1pc3Np
b25fUmVxdWVzdCogcmVxdWVzdCk7Ci0gICAgdm9pZCBpbmZvcm1Mb2FkRXJyb3IoRXdrX0Vycm9y
KiBlcnJvcik7Ci0gICAgdm9pZCBpbmZvcm1Mb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIGluZm9y
bUxvYWRQcm9ncmVzcyhkb3VibGUgcHJvZ3Jlc3MpOwotICAgIHZvaWQgaW5mb3JtUHJvdmlzaW9u
YWxMb2FkRmFpbGVkKEV3a19FcnJvciogZXJyb3IpOwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQogICAgIHZvaWQgaW5mb3JtTG9hZENvbW1pdHRlZCgpOwogI2VuZGlmCi0gICAgdm9pZCBp
bmZvcm1Qcm92aXNpb25hbExvYWRSZWRpcmVjdCgpOwotICAgIHZvaWQgaW5mb3JtUHJvdmlzaW9u
YWxMb2FkU3RhcnRlZCgpOwotCi0gICAgdm9pZCBpbmZvcm1SZXNvdXJjZUxvYWRTdGFydGVkKEV3
a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCk7Ci0gICAgdm9p
ZCBpbmZvcm1SZXNvdXJjZUxvYWRSZXNwb25zZShFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tf
VXJsX1Jlc3BvbnNlKiByZXNwb25zZSk7Ci0gICAgdm9pZCBpbmZvcm1SZXNvdXJjZUxvYWRGYWls
ZWQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX0Vycm9yKiBlcnJvcik7Ci0gICAgdm9pZCBp
bmZvcm1SZXNvdXJjZUxvYWRGaW5pc2hlZChFd2tfUmVzb3VyY2UqIHJlc291cmNlKTsKLSAgICB2
b2lkIGluZm9ybVJlc291cmNlUmVxdWVzdFNlbnQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdr
X1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNl
KTsKLQotICAgIHZvaWQgaW5mb3JtTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKEV3a19OYXZpZ2F0
aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pOwotICAgIHZvaWQgaW5mb3JtTmV3V2luZG93
UG9saWN5RGVjaXNpb24oRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbik7
Ci0gICAgdm9pZCBpbmZvcm1CYWNrRm9yd2FyZExpc3RDaGFuZ2UoKTsKLQotICAgIHZvaWQgaW5m
b3JtVGl0bGVDaGFuZ2UoY29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0gICAgdm9pZCBpbmZvcm1Ub29s
dGlwVGV4dENoYW5nZShjb25zdCBTdHJpbmcmIHRleHQpOwotICAgIHZvaWQgaW5mb3JtVGV4dEZv
dW5kKHVuc2lnbmVkIG1hdGNoQ291bnQpOwotICAgIHZvaWQgaW5mb3JtSWNvbkNoYW5nZSgpOwot
ICAgIHZvaWQgaW5mb3JtV2ViUHJvY2Vzc0NyYXNoZWQoKTsKICAgICB2b2lkIGluZm9ybUNvbnRl
bnRzU2l6ZUNoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgaW5mb3JtRGF0YWJhc2VRdW90YVJlYWNoZWQoY29uc3QgU3RyaW5nJiBkYXRh
YmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBj
dXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2UsIHVuc2ln
bmVkIGxvbmcgbG9uZyBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4
cGVjdGVkVXNhZ2UpOwotICAgIHZvaWQgaW5mb3JtVVJMQ2hhbmdlKCk7Ci0KLSNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCi0gICAgdm9pZCBpbmZvcm1JbnRlbnRSZXF1ZXN0KEV3a19JbnRlbnQqIGV3
a0ludGVudCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIHZvaWQg
aW5mb3JtSW50ZW50U2VydmljZVJlZ2lzdHJhdGlvbihFd2tfSW50ZW50X1NlcnZpY2UqIGV3a0lu
dGVudFNlcnZpY2UpOwotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgaW5saW5lIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSgpOwogICAgIHZvaWQgZGlzcGxheVRpbWVyRmlyZWQoV2ViQ29y
ZTo6VGltZXI8RXdrVmlld0ltcGw+Kik7CiAKKyAgICB2b2lkIGluZm9ybUljb25DaGFuZ2UoKTsK
KyAgICB2b2lkIGluZm9ybVVSTENoYW5nZSgpOworCiAgICAgc3RhdGljIHZvaWQgb25Nb3VzZURv
d24odm9pZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKTsKICAg
ICBzdGF0aWMgdm9pZCBvbk1vdXNlVXAodm9pZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwg
dm9pZCogZXZlbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBvbk1vdXNlTW92ZSh2b2lkKiBkYXRh
LCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IGU1ZjhlZTcuLjY4NjVmMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAg
LTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfdmlldy5o
IgogCi0jaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJFd2tWaWV3Q2FsbGJhY2tz
LmgiCiAjaW5jbHVkZSAiRmluZENsaWVudEVmbC5oIgogI2luY2x1ZGUgIkZvcm1DbGllbnRFZmwu
aCIKICNpbmNsdWRlICJJbnB1dE1ldGhvZENvbnRleHRFZmwuaCIKQEAgLTU3OCw3ICs1NzgsNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJsX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
Y2hhciogdXJsKQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh1cmwsIGZhbHNl
KTsKIAogICAgIGltcGwtPnBhZ2UoKS0+bG9hZFVSTCh1cmwpOwotICAgIGltcGwtPmluZm9ybVVS
TENoYW5nZSgpOworICAgIGltcGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpVUkxD
aGFuZ2U+KCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTYwNSw3ICs2MDUsNyBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVX
X0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAogICAgIGltcGwt
PnBhZ2UoKS0+cmVsb2FkKC8qcmVsb2FkRnJvbU9yaWdpbiovIGZhbHNlKTsKLSAgICBpbXBsLT5p
bmZvcm1VUkxDaGFuZ2UoKTsKKyAgICBpbXBsLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1w
bDo6VVJMQ2hhbmdlPigpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC02MTYsNyArNjE2LDcg
QEAgRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUoRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwg
ZmFsc2UpOwogCiAgICAgaW1wbC0+cGFnZSgpLT5yZWxvYWQoLypyZWxvYWRGcm9tT3JpZ2luKi8g
dHJ1ZSk7Ci0gICAgaW1wbC0+aW5mb3JtVVJMQ2hhbmdlKCk7CisgICAgaW1wbC0+Y2FsbFNtYXJ0
Q2FsbGJhY2s8RXdrVmlld0ltcGw6OlVSTENoYW5nZT4oKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtNzk2LDcgKzc5Niw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19odG1sX3N0cmluZ19sb2Fk
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBodG1sLCBjb25zCiAgICAgZWxzZQog
ICAgICAgICBpbXBsLT5wYWdlKCktPmxvYWRIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoaHRt
bCksIGJhc2VVcmwgPyBTdHJpbmc6OmZyb21VVEY4KGJhc2VVcmwpIDogIiIpOwogCi0gICAgaW1w
bC0+aW5mb3JtVVJMQ2hhbmdlKCk7CisgICAgaW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmll
d0ltcGw6OlVSTENoYW5nZT4oKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCmluZGV4IDVm
MzU5YjUuLmU0MzgzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
RG93bmxvYWRNYW5hZ2VyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKQEAgLTI3LDExICsyNywxMiBAQAogI2luY2x1ZGUgIkRv
d25sb2FkTWFuYWdlckVmbC5oIgogCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgotI2luY2x1
ZGUgIkV3a1ZpZXdJbXBsLmgiCisjaW5jbHVkZSAiRXdrVmlld0NhbGxiYWNrcy5oIgogI2luY2x1
ZGUgIldLQ29udGV4dC5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX2Nv
bnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19lcnJvcl9wcml2YXRlLmgiCisjaW5jbHVk
ZSAiZXdrX3ZpZXcuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ5LDcgKzUwLDcgQEAg
V0tTdHJpbmdSZWYgRG93bmxvYWRNYW5hZ2VyRWZsOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShXS0NvbnRleHQKIAogICAgIC8vIFdlIHNlbmQgdGhlIG5ldyBkb3dubG9h
ZCBzaWduYWwgb24gdGhlIEV3a19WaWV3IG9ubHkgb25jZSB3ZSBoYXZlIHJlY2VpdmVkIHRoZSBy
ZXNwb25zZQogICAgIC8vIGFuZCB0aGUgc3VnZ2VzdGVkIGZpbGUgbmFtZS4KLSAgICBkb3dubG9h
ZC0+dmlld0ltcGwoKS0+aW5mb3JtRG93bmxvYWRKb2JSZXF1ZXN0ZWQoZG93bmxvYWQpOworICAg
IGRvd25sb2FkLT52aWV3SW1wbCgpLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6RG93
bmxvYWRKb2JSZXF1ZXN0ZWQ+KGRvd25sb2FkKTsKIAogICAgIC8vIERvd25sb2FkU291cCBleHBl
Y3RzIHRoZSBkZXN0aW5hdGlvbiB0byBiZSBhIFVSTC4KICAgICBTdHJpbmcgZGVzdGluYXRpb24g
PSBBU0NJSUxpdGVyYWwoImZpbGU6Ly8iKSArIFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWQtPmRl
c3RpbmF0aW9uKCkpOwpAQCAtODgsNyArODksOCBAQCB2b2lkIERvd25sb2FkTWFuYWdlckVmbDo6
ZGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgd2tEb3dubG9hZCwgV0tFcnJvcgog
CiAgICAgT3duUHRyPEV3a19FcnJvcj4gZXdrRXJyb3IgPSBFd2tfRXJyb3I6OmNyZWF0ZShlcnJv
cik7CiAgICAgZG93bmxvYWQtPnNldFN0YXRlKEVXS19ET1dOTE9BRF9KT0JfU1RBVEVfRkFJTEVE
KTsKLSAgICBkb3dubG9hZC0+dmlld0ltcGwoKS0+aW5mb3JtRG93bmxvYWRKb2JGYWlsZWQoZG93
bmxvYWQsIGV3a0Vycm9yLmdldCgpKTsKKyAgICBFd2tfRG93bmxvYWRfSm9iX0Vycm9yIGRvd25s
b2FkRXJyb3IgPSB7IGRvd25sb2FkLCBld2tFcnJvci5nZXQoKSB9OworICAgIGRvd25sb2FkLT52
aWV3SW1wbCgpLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6RG93bmxvYWRKb2JGYWls
ZWQ+KCZkb3dubG9hZEVycm9yKTsKICAgICBkb3dubG9hZE1hbmFnZXItPnVucmVnaXN0ZXJEb3du
bG9hZEpvYihkb3dubG9hZElkKTsKIH0KIApAQCAtMTAwLDcgKzEwMiw3IEBAIHZvaWQgRG93bmxv
YWRNYW5hZ2VyRWZsOjpkaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIHdrRG93
bmxvYWQsIGNvbnN0CiAgICAgQVNTRVJUKGRvd25sb2FkKTsKIAogICAgIGRvd25sb2FkLT5zZXRT
dGF0ZShFV0tfRE9XTkxPQURfSk9CX1NUQVRFX0NBTkNFTExFRCk7Ci0gICAgZG93bmxvYWQtPnZp
ZXdJbXBsKCktPmluZm9ybURvd25sb2FkSm9iQ2FuY2VsbGVkKGRvd25sb2FkKTsKKyAgICBkb3du
bG9hZC0+dmlld0ltcGwoKS0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6OkRvd25sb2Fk
Sm9iQ2FuY2VsbGVkPihkb3dubG9hZCk7CiAgICAgZG93bmxvYWRNYW5hZ2VyLT51bnJlZ2lzdGVy
RG93bmxvYWRKb2IoZG93bmxvYWRJZCk7CiB9CiAKQEAgLTExMiw3ICsxMTQsNyBAQCB2b2lkIERv
d25sb2FkTWFuYWdlckVmbDo6ZGlkRmluaXNoKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiB3
a0Rvd25sb2FkLCBjb25zdAogICAgIEFTU0VSVChkb3dubG9hZCk7CiAKICAgICBkb3dubG9hZC0+
c2V0U3RhdGUoRVdLX0RPV05MT0FEX0pPQl9TVEFURV9GSU5JU0hFRCk7Ci0gICAgZG93bmxvYWQt
PnZpZXdJbXBsKCktPmluZm9ybURvd25sb2FkSm9iRmluaXNoZWQoZG93bmxvYWQpOworICAgIGRv
d25sb2FkLT52aWV3SW1wbCgpLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6RG93bmxv
YWRKb2JGaW5pc2hlZD4oZG93bmxvYWQpOwogICAgIGRvd25sb2FkTWFuYWdlci0+dW5yZWdpc3Rl
ckRvd25sb2FkSm9iKGRvd25sb2FkSWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNwcAppbmRleCBhNDMxYWNjLi45MTlkODZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAKQEAgLTI3LDcg
KzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaW5kQ2xpZW50RWZsLmgi
CiAKLSNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIkV3a1ZpZXdDYWxsYmFja3Mu
aCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MCwxMyAr
NDAsMTMgQEAgc3RhdGljIGlubGluZSBGaW5kQ2xpZW50RWZsKiB0b0ZpbmRDbGllbnRFZmwoY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKIHZvaWQgRmluZENsaWVudEVmbDo6ZGlkRmluZFN0cmluZyhX
S1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCB1bnNpZ25lZCBtYXRjaENvdW50LCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQogewogICAgIEZpbmRDbGllbnRFZmwqIGZpbmRDbGllbnQgPSB0b0ZpbmRDbGll
bnRFZmwoY2xpZW50SW5mbyk7Ci0gICAgZmluZENsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtVGV4
dEZvdW5kKG1hdGNoQ291bnQpOworICAgIGZpbmRDbGllbnQtPm1fdmlld0ltcGwtPmNhbGxTbWFy
dENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpUZXh0Rm91bmQ+KCZtYXRjaENvdW50KTsKIH0KIAogdm9p
ZCBGaW5kQ2xpZW50RWZsOjpkaWRGYWlsVG9GaW5kU3RyaW5nKFdLUGFnZVJlZiwgV0tTdHJpbmdS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgRmluZENsaWVudEVmbCogZmluZENs
aWVudCA9IHRvRmluZENsaWVudEVmbChjbGllbnRJbmZvKTsKLSAgICBmaW5kQ2xpZW50LT5tX3Zp
ZXdJbXBsLT5pbmZvcm1UZXh0Rm91bmQoMCk7CisgICAgZmluZENsaWVudC0+bV92aWV3SW1wbC0+
Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6OlRleHRGb3VuZD4oMCk7CiB9CiAKIEZpbmRD
bGllbnRFZmw6OkZpbmRDbGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKaW5kZXggNzU0MWUyNi4u
MWRkNzkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xp
ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRF
ZmwuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Rm9ybUNsaWVudEVmbC5oIgogCi0jaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJF
d2tWaWV3Q2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVkZSAiZXdrX2Zv
cm1fc3VibWlzc2lvbl9yZXF1ZXN0X3ByaXZhdGUuaCIKIApAQCAtNDIsNyArNDIsNyBAQCB2b2lk
IEZvcm1DbGllbnRFZmw6OndpbGxTdWJtaXRGb3JtKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiAvKmZy
YW1lKi8sIFdLRnJhbWVSZWYgLwogICAgIEZvcm1DbGllbnRFZmwqIGZvcm1DbGllbnQgPSB0b0Zv
cm1DbGllbnRFZmwoY2xpZW50SW5mbyk7CiAKICAgICBSZWZQdHI8RXdrX0Zvcm1fU3VibWlzc2lv
bl9SZXF1ZXN0PiByZXF1ZXN0ID0gRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0OjpjcmVhdGUo
dmFsdWVzLCBsaXN0ZW5lcik7Ci0gICAgZm9ybUNsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtTmV3
Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOworICAgIGZvcm1DbGllbnQtPm1f
dmlld0ltcGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpOZXdGb3JtU3VibWlzc2lv
blJlcXVlc3Q+KHJlcXVlc3QuZ2V0KCkpOwogfQogCiBGb3JtQ2xpZW50RWZsOjpGb3JtQ2xpZW50
RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggM2IzYjdiNi4uYzYyMjkxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTI3LDcg
KzI3LDcgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogCiAjaW5jbHVkZSAiRHJhd2lu
Z0FyZWFQcm94eUltcGwuaCIKLSNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIkV3
a1ZpZXdDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJbnB1dE1ldGhvZENvbnRleHRFZmwuaCIKICNp
bmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9q
b2JfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3Zp
ZXcuaCIKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQpAQCAtMTE3LDEwICsxMTgsMjEg
QEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKICAgICAvLyBDaGVj
ayBpZiBsb2FkaW5nIHdhcyBvbmdvaW5nLCB3aGVuIHdlYiBwcm9jZXNzIGNyYXNoZWQuCiAgICAg
ZG91YmxlIGxvYWRQcm9ncmVzcyA9IGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0KG1fdmlld0lt
cGwtPnZpZXcoKSk7Ci0gICAgaWYgKGxvYWRQcm9ncmVzcyA+PSAwICYmIGxvYWRQcm9ncmVzcyA8
IDEpCi0gICAgICAgIG1fdmlld0ltcGwtPmluZm9ybUxvYWRQcm9ncmVzcygxKTsKKyAgICBpZiAo
bG9hZFByb2dyZXNzID49IDAgJiYgbG9hZFByb2dyZXNzIDwgMSkgeworICAgICAgICBsb2FkUHJv
Z3Jlc3MgPSAxOworICAgICAgICBtX3ZpZXdJbXBsLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3
SW1wbDo6TG9hZFByb2dyZXNzPigmbG9hZFByb2dyZXNzKTsKKyAgICB9CiAKLSAgICBtX3ZpZXdJ
bXBsLT5pbmZvcm1XZWJQcm9jZXNzQ3Jhc2hlZCgpOworICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNl
OworICAgIG1fdmlld0ltcGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpXZWJQcm9j
ZXNzQ3Jhc2hlZD4oJmhhbmRsZWQpOworCisgICAgaWYgKCFoYW5kbGVkKSB7CisgICAgICAgIENT
dHJpbmcgdXJsID0gbV92aWV3SW1wbC0+cGFnZSgpLT51cmxBdFByb2Nlc3NFeGl0KCkudXRmOCgp
OworICAgICAgICBXQVJOKCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nlc3MgZXhwZXJpZW5jZWQgYSBj
cmFzaCBvbiAnJXMnLlxuIiwgdXJsLmRhdGEoKSk7CisKKyAgICAgICAgLy8gRGlzcGxheSBhbiBl
cnJvciBwYWdlCisgICAgICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQobV92aWV3SW1wbC0+
dmlldygpLCAiVGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkLiIsIDAsIHVybC5kYXRhKCkpOwor
ICAgIH0KIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKQEAg
LTEzNyw3ICsxNDksMTAgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCgpCiAKIHZv
aWQgUGFnZUNsaWVudEltcGw6OnRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgbmV3VG9vbFRpcCkKIHsKLSAgICBtX3ZpZXdJbXBsLT5pbmZvcm1Ub29sdGlwVGV4dENo
YW5nZShuZXdUb29sVGlwKTsKKyAgICBpZiAobmV3VG9vbFRpcC5pc0VtcHR5KCkpCisgICAgICAg
IG1fdmlld0ltcGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpUb29sdGlwVGV4dFVu
c2V0PigpOworICAgIGVsc2UKKyAgICAgICAgbV92aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8
RXdrVmlld0ltcGw6OlRvb2x0aXBUZXh0U2V0PihuZXdUb29sVGlwKTsKIH0KIAogdm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcAppbmRleCA3YmY2
YmRhLi42ZjkxM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Bh
Z2VMb2FkQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Bh
Z2VMb2FkQ2xpZW50RWZsLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlBhZ2VMb2FkQ2xpZW50RWZsLmgiCiAKLSNpbmNsdWRlICJFd2tWaWV3SW1w
bC5oIgorI2luY2x1ZGUgIkV3a1ZpZXdDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKICNpbmNsdWRlICJXS0ZyYW1lLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCkBAIC00OSw3ICs0
OSw3IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdL
UGFnZVJlZiwgV0tTdHJpbmdSZWYgdGl0bGUsIFdLCiAgICAgICAgIHJldHVybjsKIAogICAgIEV3
a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZp
ZXdJbXBsKCk7Ci0gICAgdmlld0ltcGwtPmluZm9ybVRpdGxlQ2hhbmdlKHRvSW1wbCh0aXRsZSkt
PnN0cmluZygpKTsKKyAgICB2aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6
OlRpdGxlQ2hhbmdlPih0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSk7CiB9CiAKICNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRp
ZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLSW50ZW50CiB7
CiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJ
bmZvKS0+dmlld0ltcGwoKTsKICAgICBSZWZQdHI8RXdrX0ludGVudD4gZXdrSW50ZW50ID0gRXdr
X0ludGVudDo6Y3JlYXRlKGludGVudCk7Ci0gICAgdmlld0ltcGwtPmluZm9ybUludGVudFJlcXVl
c3QoZXdrSW50ZW50LmdldCgpKTsKKyAgICB2aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdr
Vmlld0ltcGw6OkludGVudFJlcXVlc3Q+KGV3a0ludGVudC5nZXQoKSk7CiB9CiAjZW5kaWYKIApA
QCAtNjYsMTQgKzY2LDE1IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OnJlZ2lzdGVySW50ZW50
U2VydmljZUZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tJCiB7CiAgICAgRXdrVmll
d0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmlld0lt
cGwoKTsKICAgICBSZWZQdHI8RXdrX0ludGVudF9TZXJ2aWNlPiBld2tJbnRlbnRTZXJ2aWNlID0g
RXdrX0ludGVudF9TZXJ2aWNlOjpjcmVhdGUoc2VydmljZUluZm8pOwotICAgIHZpZXdJbXBsLT5p
bmZvcm1JbnRlbnRTZXJ2aWNlUmVnaXN0cmF0aW9uKGV3a0ludGVudFNlcnZpY2UuZ2V0KCkpOwor
ICAgIHZpZXdJbXBsLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6SW50ZW50U2Vydmlj
ZVJlZ2lzdHJhdGlvbj4oZXdrSW50ZW50U2VydmljZS5nZXQoKSk7CiB9CiAjZW5kaWYKIAogdm9p
ZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkQ2hhbmdlUHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2UsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9Q
YWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKLSAgICB2aWV3SW1wbC0+
aW5mb3JtTG9hZFByb2dyZXNzKFdLUGFnZUdldEVzdGltYXRlZFByb2dyZXNzKHBhZ2UpKTsKKyAg
ICBkb3VibGUgcHJvZ3Jlc3MgPSBXS1BhZ2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhwYWdlKTsKKyAg
ICB2aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6OkxvYWRQcm9ncmVzcz4o
JnByb2dyZXNzKTsKIH0KIAogdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIC8qdXNlckRhdGEq
LywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTgyLDcgKzgzLDcgQEAgdm9pZCBQYWdlTG9h
ZENsaWVudEVmbDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tUeXAKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBs
ID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKLSAgICB2aWV3
SW1wbC0+aW5mb3JtTG9hZEZpbmlzaGVkKCk7CisgICAgdmlld0ltcGwtPmNhbGxTbWFydENhbGxi
YWNrPEV3a1ZpZXdJbXBsOjpMb2FkRmluaXNoZWQ+KCk7CiB9CiAKIHZvaWQgUGFnZUxvYWRDbGll
bnRFZmw6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCkBAIC05Miw4ICs5Myw4IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZEZhaWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lCiAKICAgICBFd2tW
aWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3
SW1wbCgpOwogICAgIE93blB0cjxFd2tfRXJyb3I+IGV3a0Vycm9yID0gRXdrX0Vycm9yOjpjcmVh
dGUoZXJyb3IpOwotICAgIHZpZXdJbXBsLT5pbmZvcm1Mb2FkRXJyb3IoZXdrRXJyb3IuZ2V0KCkp
OwotICAgIHZpZXdJbXBsLT5pbmZvcm1Mb2FkRmluaXNoZWQoKTsKKyAgICB2aWV3SW1wbC0+Y2Fs
bFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6OkxvYWRFcnJvcj4oZXdrRXJyb3IuZ2V0KCkpOwor
ICAgIHZpZXdJbXBsLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6TG9hZEZpbmlzaGVk
PigpOwogfQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIC8qdXNlckRh
dGEqLywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTEwMiw3ICsxMDMsOCBAQCB2b2lkIFBh
Z2VMb2FkQ2xpZW50RWZsOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJl
ZiwgV0tGcmFtZVJlZiBmcgogICAgICAgICByZXR1cm47CiAKICAgICBFd2tWaWV3SW1wbCogdmll
d0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwotICAg
IHZpZXdJbXBsLT5pbmZvcm1Qcm92aXNpb25hbExvYWRTdGFydGVkKCk7CisgICAgdmlld0ltcGwt
PmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpVUkxDaGFuZ2U+KCk7CisgICAgdmlld0lt
cGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpQcm92aXNpb25hbExvYWRTdGFydGVk
PigpOwogfQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLVHlwZVJlZiAvKnVzZXJEYXRhKi8sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xMTEs
NyArMTEzLDggQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWcKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZv
KS0+dmlld0ltcGwoKTsKLSAgICB2aWV3SW1wbC0+aW5mb3JtUHJvdmlzaW9uYWxMb2FkUmVkaXJl
Y3QoKTsKKyAgICB2aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6OlVSTENo
YW5nZT4oKTsKKyAgICB2aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6OlBy
b3Zpc2lvbmFsTG9hZFJlZGlyZWN0PigpOwogfQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCkBAIC0xMjEsNyArMTI0LDcgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmEKIAogICAg
IEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbykt
PnZpZXdJbXBsKCk7CiAgICAgT3duUHRyPEV3a19FcnJvcj4gZXdrRXJyb3IgPSBFd2tfRXJyb3I6
OmNyZWF0ZShlcnJvcik7Ci0gICAgdmlld0ltcGwtPmluZm9ybVByb3Zpc2lvbmFsTG9hZEZhaWxl
ZChld2tFcnJvci5nZXQoKSk7CisgICAgdmlld0ltcGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1Zp
ZXdJbXBsOjpQcm92aXNpb25hbExvYWRGYWlsZWQ+KGV3a0Vycm9yLmdldCgpKTsKIH0KIAogI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQpAQCAtMTMxLDcgKzEzNCw3IEBAIHZvaWQgUGFnZUxv
YWRDbGllbnRFZmw6OmRpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLVHlwCiAgICAgICAgIHJldHVybjsKIAogICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1w
bCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7Ci0gICAgdmll
d0ltcGwtPmluZm9ybUxvYWRDb21taXR0ZWQoKTsKKyAgICB2aWV3SW1wbC0+Y2FsbFNtYXJ0Q2Fs
bGJhY2s8RXdrVmlld0ltcGw6OkxvYWRDb21taXR0ZWQ+KCk7CiB9CiAjZW5kaWYKIApAQCAtMTQ0
LDcgKzE0Nyw3IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZENoYW5nZUJhY2tGb3J3YXJk
TGlzdChXS1BhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlCiAgICAgQVNTRVJUKGxpc3QpOwog
ICAgIGxpc3QtPnVwZGF0ZShhZGRlZEl0ZW0sIHJlbW92ZWRJdGVtcyk7CiAKLSAgICB2aWV3SW1w
bC0+aW5mb3JtQmFja0ZvcndhcmRMaXN0Q2hhbmdlKCk7CisgICAgdmlld0ltcGwtPmNhbGxTbWFy
dENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpCYWNrRm9yd2FyZExpc3RDaGFuZ2U+KCk7CiB9CiAKIHZv
aWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShX
S1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUs
IFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTE1Myw3ICsxNTYsNyBAQCB2
b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmCiAgICAgICAgIHJldHVybjsKIAogICAgIEV3a1ZpZXdJbXBs
KiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7
Ci0gICAgdmlld0ltcGwtPmluZm9ybVVSTENoYW5nZSgpOworICAgIHZpZXdJbXBsLT5jYWxsU21h
cnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6VVJMQ2hhbmdlPigpOwogfQogCiBQYWdlTG9hZENsaWVu
dEVmbDo6UGFnZUxvYWRDbGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNsaWVudEVmbC5jcHAKaW5k
ZXggYTYzYmI1ZS4uMmQ1MTM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFnZVBvbGljeUNsaWVudEVmbC5oIgogCi0jaW5jbHVk
ZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJFd2tWaWV3Q2FsbGJhY2tzLmgiCiAjaW5jbHVk
ZSAiV0tGcmFtZS5oIgogI2luY2x1ZGUgIldLRnJhbWVQb2xpY3lMaXN0ZW5lci5oIgogI2luY2x1
ZGUgIldlYkZyYW1lUHJveHkuaCIKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBQYWdlUG9saWN5Q2xp
ZW50RWZsOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwKICAgICBQYWdlUG9saWN5Q2xpZW50RWZsKiBwb2xpY3lDbGllbnQgPSB0b1BhZ2VQb2xp
Y3lDbGllbnRFZmwoY2xpZW50SW5mbyk7CiAKICAgICBSZWZQdHI8RXdrX05hdmlnYXRpb25fUG9s
aWN5X0RlY2lzaW9uPiBkZWNpc2lvbiA9IEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbjo6
Y3JlYXRlKG5hdmlnYXRpb25UeXBlLCBtb3VzZUJ1dHRvbiwgbW9kaWZpZXJzLCByZXF1ZXN0LCAw
LCBsaXN0ZW5lcik7Ci0gICAgcG9saWN5Q2xpZW50LT5tX3ZpZXdJbXBsLT5pbmZvcm1OYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24oZGVjaXNpb24uZ2V0KCkpOworICAgIHBvbGljeUNsaWVudC0+bV92
aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6Ok5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbj4oZGVjaXNpb24uZ2V0KCkpOwogfQogCiB2b2lkIFBhZ2VQb2xpY3lDbGllbnRFZmw6
OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdL
RnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2Rp
ZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJl
cXVlc3QsIFdLU3RyaW5nUmVmIGZyYW1lTmFtZSwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxp
c3RlbmVyLCBXS1R5cGVSZWYgLyp1c2VyRGF0YSovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpA
QCAtNTUsNyArNTUsNyBAQCB2b2lkIFBhZ2VQb2xpY3lDbGllbnRFZmw6OmRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsCiAgICAgUGFnZVBvbGljeUNs
aWVudEVmbCogcG9saWN5Q2xpZW50ID0gdG9QYWdlUG9saWN5Q2xpZW50RWZsKGNsaWVudEluZm8p
OwogCiAgICAgUmVmUHRyPEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbj4gZGVjaXNpb24g
PSBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb246OmNyZWF0ZShuYXZpZ2F0aW9uVHlwZSwg
bW91c2VCdXR0b24sIG1vZGlmaWVycywgcmVxdWVzdCwgdG9JbXBsKGZyYW1lTmFtZSktPnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIGxpc3RlbmVyKTsKLSAgICBwb2xpY3lDbGllbnQtPm1fdmlld0lt
cGwtPmluZm9ybU5ld1dpbmRvd1BvbGljeURlY2lzaW9uKGRlY2lzaW9uLmdldCgpKTsKKyAgICBw
b2xpY3lDbGllbnQtPm1fdmlld0ltcGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpO
ZXdXaW5kb3dQb2xpY3lEZWNpc2lvbj4oZGVjaXNpb24uZ2V0KCkpOwogfQogCiB2b2lkIFBhZ2VQ
b2xpY3lDbGllbnRFZmw6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlQ2FsbGJhY2soV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBXS1VSTFJlcXVl
c3RSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmIC8qdXNl
ckRhdGEqLywgY29uc3Qgdm9pZCogLypjbGllbnRJbmZvKi8pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAKaW5kZXggY2M0
YmRmOC4uMGY2NGMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9S
ZXNvdXJjZUxvYWRDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZENsaWVudEVmbC5oIgogCi0jaW5jbHVk
ZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJFd2tWaWV3Q2FsbGJhY2tzLmgiCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tGcmFtZS5oIgogI2luY2x1ZGUgIldLUGFnZS5o
IgpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImV3a19lcnJvcl9wcml2YXRlLmgiCiAjaW5j
bHVkZSAiZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3Bv
bnNlX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtNTYsNyArNTcsOCBAQCB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6
ZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIHdrRgogICAg
IHJlc291cmNlTG9hZENsaWVudC0+bV9sb2FkaW5nUmVzb3VyY2VzTWFwLmFkZChyZXNvdXJjZUlk
ZW50aWZpZXIsIHJlc291cmNlKTsKIAogICAgIFJlZlB0cjxFd2tfVXJsX1JlcXVlc3Q+IHJlcXVl
c3QgPSBFd2tfVXJsX1JlcXVlc3Q6OmNyZWF0ZSh3a1JlcXVlc3QpOwotICAgIHJlc291cmNlTG9h
ZENsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtUmVzb3VyY2VMb2FkU3RhcnRlZChyZXNvdXJjZS5n
ZXQoKSwgcmVxdWVzdC5nZXQoKSk7CisgICAgRXdrX1Jlc291cmNlX1JlcXVlc3QgcmVzb3VyY2VS
ZXF1ZXN0ID0ge3Jlc291cmNlLmdldCgpLCByZXF1ZXN0LmdldCgpLCAwfTsKKyAgICByZXNvdXJj
ZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpS
ZXNvdXJjZUxvYWRTdGFydGVkPigmcmVzb3VyY2VSZXF1ZXN0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRDbGllbnRFZmw6OmRpZFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiB3a1Jl
cXVlc3QsIFdLVVJMUmVzcG9uc2VSZWYgd2tSZWRpcmVjdFJlc3BvbnNlLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQpAQCAtNzAsNyArNzIsOCBAQCB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6
ZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbgogCiAg
ICAgUmVmUHRyPEV3a19VcmxfUmVxdWVzdD4gcmVxdWVzdCA9IEV3a19VcmxfUmVxdWVzdDo6Y3Jl
YXRlKHdrUmVxdWVzdCk7CiAgICAgUmVmUHRyPEV3a19VcmxfUmVzcG9uc2U+IHJlZGlyZWN0UmVz
cG9uc2UgPSBFd2tfVXJsX1Jlc3BvbnNlOjpjcmVhdGUod2tSZWRpcmVjdFJlc3BvbnNlKTsKLSAg
ICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmluZm9ybVJlc291cmNlUmVxdWVzdFNl
bnQocmVzb3VyY2UuZ2V0KCksIHJlcXVlc3QuZ2V0KCksIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkp
OworICAgIEV3a19SZXNvdXJjZV9SZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHtyZXNvdXJjZS5n
ZXQoKSwgcmVxdWVzdC5nZXQoKSwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKX07CisgICAgcmVzb3Vy
Y2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6
UmVzb3VyY2VSZXF1ZXN0U2VudD4oJnJlc291cmNlUmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tVUkxSZXNwb25zZVJl
ZiB3a1Jlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtODMsNyArODYsOCBAQCB2
b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2Uo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLAogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8RXdr
X1VybF9SZXNwb25zZT4gcmVzcG9uc2UgPSBFd2tfVXJsX1Jlc3BvbnNlOjpjcmVhdGUod2tSZXNw
b25zZSk7Ci0gICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5pbmZvcm1SZXNvdXJj
ZUxvYWRSZXNwb25zZShyZXNvdXJjZS5nZXQoKSwgcmVzcG9uc2UuZ2V0KCkpOworICAgIEV3a19S
ZXNvdXJjZV9Mb2FkX1Jlc3BvbnNlIHJlc291cmNlTG9hZFJlc3BvbnNlID0ge3Jlc291cmNlLmdl
dCgpLCByZXNwb25zZS5nZXQoKX07CisgICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBs
LT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6UmVzb3VyY2VMb2FkUmVzcG9uc2U+KCZy
ZXNvdXJjZUxvYWRSZXNwb25zZSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpk
aWRGaW5pc2hMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCBy
ZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC05NSw3ICs5OSw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2Uo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5pbmZvcm1SZXNv
dXJjZUxvYWRGaW5pc2hlZChyZXNvdXJjZS5nZXQoKSk7CisgICAgcmVzb3VyY2VMb2FkQ2xpZW50
LT5tX3ZpZXdJbXBsLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6UmVzb3VyY2VMb2Fk
RmluaXNoZWQ+KHJlc291cmNlLmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRF
Zmw6OmRpZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRf
dCByZXNvdXJjZUlkZW50aWZpZXIsIFdLRXJyb3JSZWYgd2tFcnJvciwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKQEAgLTEwOCw4ICsxMTIsOSBAQCB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6
ZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NAogICAg
ICAgICByZXR1cm47CiAKICAgICBPd25QdHI8RXdrX0Vycm9yPiBld2tFcnJvciA9IEV3a19FcnJv
cjo6Y3JlYXRlKHdrRXJyb3IpOwotICAgIHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+
aW5mb3JtUmVzb3VyY2VMb2FkRmFpbGVkKHJlc291cmNlLmdldCgpLCBld2tFcnJvci5nZXQoKSk7
Ci0gICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5pbmZvcm1SZXNvdXJjZUxvYWRG
aW5pc2hlZChyZXNvdXJjZS5nZXQoKSk7CisgICAgRXdrX1Jlc291cmNlX0xvYWRfRXJyb3IgcmVz
b3VyY2VMb2FkRXJyb3IgPSB7cmVzb3VyY2UuZ2V0KCksIGV3a0Vycm9yLmdldCgpfTsKKyAgICBy
ZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJ
bXBsOjpSZXNvdXJjZUxvYWRGYWlsZWQ+KCZyZXNvdXJjZUxvYWRFcnJvcik7CisgICAgcmVzb3Vy
Y2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6
UmVzb3VyY2VMb2FkRmluaXNoZWQ+KHJlc291cmNlLmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRDbGllbnRFZmw6Om9uVmlld1Byb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQodm9pZCogdXNlckRh
dGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCopCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171107</attachid>
            <date>2012-10-27 15:40:49 -0700</date>
            <delta_ts>2012-10-28 08:56:16 -0700</delta_ts>
            <desc>rebased</desc>
            <filename>bug100506</filename>
            <type>text/plain</type>
            <size>43020</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGQ0MGM0Yjk0MGEzZjM3Zjc0YjM3YWFiNTRlYzczYTZlYTg1ZDdkYWIKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
U3VuIE9jdCAyOCAwMToxNzowOCAyMDEyICswMzAwCgogICAgYnVnMTAwNTA2CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDkwM2Q1MDMuLmE2Yjk4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxMi0x
MC0yNyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIFNpbXBsaWZ5IHNpZ25hbCBlbWl0dGluZyBBUEkgaW4gRXdr
Vmlld0ltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMDUwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vdyBzaWduYWwgZW1pdHRpbmcgQVBJIGluIEV3a1ZpZXdJbXBsIGlzIHNpbXBsaWZpZWQgc28g
dGhhdAorICAgICAgICB0aGVyZSBpcyBvbmUgRXdrVmlld0ltcGw6OmNhbGxTbWFydENhbGxiYWNr
IHRlbXBsYXRlIG1ldGhvZAorICAgICAgICBjYWxsaW5nIHNtYXJ0IGNhbGxiYWNrIGZyb20gRXdr
X3ZpZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmg6
IEFkZGVkLgorICAgICAgICAoRXdrVmlld0ltcGw6OmNhbGxTbWFydENhbGxiYWNrKToKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjpVUkxDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkQ29tbWl0
dGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAg
ICAoRXdrVmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDoKKyAgICAgICAgKGV3a192aWV3X3VybF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVsb2Fk
KToKKyAgICAgICAgKGV3a192aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUpOgorICAgICAgICAoZXdr
X3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9Eb3dubG9h
ZE1hbmFnZXJFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJFZmw6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRN
YW5hZ2VyRWZsOjpkaWRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJF
Zmw6OmRpZEZpbmlzaCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RmluZENsaWVudEVmbDo6ZGlkRmluZFN0cmluZyk6CisgICAg
ICAgIChXZWJLaXQ6OkZpbmRDbGllbnRFZmw6OmRpZEZhaWxUb0ZpbmRTdHJpbmcpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZv
cm1DbGllbnRFZmw6OndpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1Bh
Z2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnByb2Nl
c3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp0b29sVGlwQ2hh
bmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlSW50ZW50
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6cmVnaXN0ZXJJ
bnRlbnRTZXJ2aWNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVm
bDo6ZGlkQ2hhbmdlUHJvZ3Jlc3MpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVm
bDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGll
bnRFZmw6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlTG9hZENsaWVudEVmbDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xp
ZW50RWZsOjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlz
dCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNs
aWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VQb2xpY3lDbGllbnRFZmw6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQYWdlUG9saWN5
Q2xpZW50RWZsOjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkU2VuZFJlcXVlc3RGb3JSZXNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRDbGll
bnRFZmw6OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZENsaWVudEVmbDo6ZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisKIDIwMTItMTAtMjcg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBZZXQgbW9yZSBNZXNzYWdl
UmVjZWl2ZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXdDYWxsYmFja3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWI5
MmM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0NhbGxiYWNrcy5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgRXdrVmlld0NhbGxiYWNrc19oCisjZGVmaW5lIEV3a1ZpZXdDYWxsYmFja3NfaAor
CisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3RlbXBsYXRlIDxFd2tWaWV3SW1wbDo6Q2Fs
bGJhY2sgY2FsbGJhY2tUeXBlPgordm9pZCBFd2tWaWV3SW1wbDo6Y2FsbFNtYXJ0Q2FsbGJhY2so
dm9pZCopCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3RlbXBsYXRlPEV3a1Zp
ZXdJbXBsOjpDYWxsYmFjayBjYWxsYmFja1R5cGU+Cit2b2lkIEV3a1ZpZXdJbXBsOjpjYWxsU21h
cnRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGFyZykKK3sKKyAgICBjYWxsU21hcnRDYWxsYmFjazxj
YWxsYmFja1R5cGU+KGNvbnN0X2Nhc3Q8Y2hhcio+KGFyZy51dGY4KCkuZGF0YSgpKSk7Cit9CisK
KyNkZWZpbmUgREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhjYWxsYmFja1R5cGUsIHN0cmluZykg
ICAgICAgICAgICAgICAgICBcCit0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoraW5saW5lIHZvaWQgRXdrVmll
d0ltcGw6OmNhbGxTbWFydENhbGxiYWNrPGNhbGxiYWNrVHlwZT4odm9pZCogYXJndW1lbnQpIFwK
K3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbCht
X3ZpZXcsIHN0cmluZywgYXJndW1lbnQpOyAgICAgICAgICAgXAorfQorCitERUNMQVJFX0VXS19W
SUVXX0NBTExCQUNLKEV3a1ZpZXdJbXBsOjpEb3dubG9hZEpvYkNhbmNlbGxlZCwgImRvd25sb2Fk
LGNhbmNlbGxlZCIpCitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEV3a1ZpZXdJbXBsOjpEb3du
bG9hZEpvYkZhaWxlZCwgImRvd25sb2FkLGZhaWxlZCIpCitERUNMQVJFX0VXS19WSUVXX0NBTExC
QUNLKEV3a1ZpZXdJbXBsOjpEb3dubG9hZEpvYkZpbmlzaGVkLCAiZG93bmxvYWQsZmluaXNoZWQi
KQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhFd2tWaWV3SW1wbDo6RG93bmxvYWRKb2JSZXF1
ZXN0ZWQsICJkb3dubG9hZCxyZXF1ZXN0IikKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdr
Vmlld0ltcGw6Ok5ld0Zvcm1TdWJtaXNzaW9uUmVxdWVzdCwgImZvcm0sc3VibWlzc2lvbixyZXF1
ZXN0IikKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdrVmlld0ltcGw6OkxvYWRFcnJvciwg
ImxvYWQsZXJyb3IiKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhFd2tWaWV3SW1wbDo6TG9h
ZEZpbmlzaGVkLCAibG9hZCxmaW5pc2hlZCIpCitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEV3
a1ZpZXdJbXBsOjpMb2FkUHJvZ3Jlc3MsICJsb2FkLHByb2dyZXNzIikKK0RFQ0xBUkVfRVdLX1ZJ
RVdfQ0FMTEJBQ0soRXdrVmlld0ltcGw6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCwgImxvYWQscHJv
dmlzaW9uYWwsZmFpbGVkIikKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdrVmlld0ltcGw6
OlByb3Zpc2lvbmFsTG9hZFJlZGlyZWN0LCAibG9hZCxwcm92aXNpb25hbCxyZWRpcmVjdCIpCitE
RUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEV3a1ZpZXdJbXBsOjpQcm92aXNpb25hbExvYWRTdGFy
dGVkLCAibG9hZCxwcm92aXNpb25hbCxzdGFydGVkIikKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJB
Q0soRXdrVmlld0ltcGw6OlJlc291cmNlTG9hZFN0YXJ0ZWQsICJyZXNvdXJjZSxyZXF1ZXN0LG5l
dyIpCitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEV3a1ZpZXdJbXBsOjpSZXNvdXJjZUxvYWRS
ZXNwb25zZSwgInJlc291cmNlLHJlcXVlc3QscmVzcG9uc2UiKQorREVDTEFSRV9FV0tfVklFV19D
QUxMQkFDSyhFd2tWaWV3SW1wbDo6UmVzb3VyY2VMb2FkRmFpbGVkLCAicmVzb3VyY2UscmVxdWVz
dCxmYWlsZWQiKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhFd2tWaWV3SW1wbDo6UmVzb3Vy
Y2VMb2FkRmluaXNoZWQsICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIikKK0RFQ0xBUkVfRVdL
X1ZJRVdfQ0FMTEJBQ0soRXdrVmlld0ltcGw6OlJlc291cmNlUmVxdWVzdFNlbnQsICJyZXNvdXJj
ZSxyZXF1ZXN0LHNlbnQiKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhFd2tWaWV3SW1wbDo6
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uLCAicG9saWN5LGRlY2lzaW9uLG5hdmlnYXRpb24iKQor
REVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhFd2tWaWV3SW1wbDo6TmV3V2luZG93UG9saWN5RGVj
aXNpb24sICJwb2xpY3ksZGVjaXNpb24sbmV3LHdpbmRvdyIpCitERUNMQVJFX0VXS19WSUVXX0NB
TExCQUNLKEV3a1ZpZXdJbXBsOjpCYWNrRm9yd2FyZExpc3RDaGFuZ2UsICJiYWNrLGZvcndhcmQs
bGlzdCxjaGFuZ2VkIikKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdrVmlld0ltcGw6OlRp
dGxlQ2hhbmdlLCAidGl0bGUsY2hhbmdlZCIpCitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEV3
a1ZpZXdJbXBsOjpUb29sdGlwVGV4dFVuc2V0LCAidG9vbHRpcCx0ZXh0LHVuc2V0IikKK0RFQ0xB
UkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdrVmlld0ltcGw6OlRvb2x0aXBUZXh0U2V0LCAidG9vbHRp
cCx0ZXh0LHNldCIpCitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEV3a1ZpZXdJbXBsOjpUZXh0
Rm91bmQsICJ0ZXh0LGZvdW5kIikKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdrVmlld0lt
cGw6Okljb25DaGFuZ2UsICJpY29uLGNoYW5nZWQiKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFD
SyhFd2tWaWV3SW1wbDo6V2ViUHJvY2Vzc0NyYXNoZWQsICJ3ZWJwcm9jZXNzLGNyYXNoZWQiKQor
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdrVmll
d0ltcGw6OkludGVudFJlcXVlc3QsICJpbnRlbnQscmVxdWVzdCxuZXciKQorI2VuZGlmCisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRXdrVmll
d0ltcGw6OkludGVudFNlcnZpY2VSZWdpc3RyYXRpb24sICJpbnRlbnQsc2VydmljZSxyZWdpc3Rl
ciIpCisjZW5kaWYKKworLy8gU3BlY2lhbCBjYXNlLgordGVtcGxhdGUgPD4KK2lubGluZSB2b2lk
IEV3a1ZpZXdJbXBsOjpjYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6VVJMQ2hhbmdlPih2
b2lkKikKK3sKKyAgICBpbmZvcm1VUkxDaGFuZ2UoKTsKK30KKworI2VuZGlmIC8vICNpZm5kZWYg
RXdrVmlld0NhbGxiYWNrc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3SW1wbC5jcHAKaW5kZXggYWI4ZjRlMC4uMTQyZmE4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcApAQCAtMjcwLDYyICsy
NzAsNiBAQCB2b2lkIEV3a1ZpZXdJbXBsOjpyZWRyYXdSZWdpb24oY29uc3QgSW50UmVjdCYgcmVj
dCkKICAgICBtX2RpcnR5UmVjdHMuYXBwZW5kKHJlY3QpOwogfQogCi0vKioKLSAqIEBpbnRlcm5h
bAotICogQSBkb3dubG9hZCBmb3IgdGhhdCB2aWV3IHdhcyBjYW5jZWxsZWQuCi0gKgotICogRW1p
dHMgc2lnbmFsOiAiZG93bmxvYWQsY2FuY2VsbGVkIiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfRG93
bmxvYWRfSm9iLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Eb3dubG9hZEpvYkNhbmNl
bGxlZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKG1fdmlldywgImRvd25sb2FkLGNhbmNlbGxlZCIsIGRvd25sb2FkKTsK
LX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIEEgZG93bmxvYWQgZm9yIHRoYXQgdmlldyBoYXMg
ZmFpbGVkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImRvd25sb2FkLGZhaWxlZCIgd2l0aCBwb2lu
dGVyIHRvIGEgRXdrX0Rvd25sb2FkX0pvYl9FcnJvci4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6
aW5mb3JtRG93bmxvYWRKb2JGYWlsZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQsIEV3a19F
cnJvciogZXJyb3IpCi17Ci0gICAgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciBkb3dubG9hZEVycm9y
ID0geyBkb3dubG9hZCwgZXJyb3IgfTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgImRvd25sb2FkLGZhaWxlZCIsICZkb3dubG9hZEVycm9yKTsKLX0KLQotLyoq
Ci0gKiBAaW50ZXJuYWwKLSAqIEEgZG93bmxvYWQgZm9yIHRoYXQgdmlldyBmaW5pc2hlZCBzdWNj
ZXNzZnVsbHkuCi0gKgotICogRW1pdHMgc2lnbmFsOiAiZG93bmxvYWQsZmluaXNoZWQiIHdpdGgg
cG9pbnRlciB0byBhIEV3a19Eb3dubG9hZF9Kb2IuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6Omlu
Zm9ybURvd25sb2FkSm9iRmluaXNoZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQpCi17Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJkb3dubG9hZCxmaW5p
c2hlZCIsIGRvd25sb2FkKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIEEgbmV3IGRvd25s
b2FkIGhhcyBiZWVuIHJlcXVlc3RlZCBmb3IgdGhhdCB2aWV3LgotICoKLSAqIEVtaXRzIHNpZ25h
bDogImRvd25sb2FkLHJlcXVlc3QiIHdpdGggcG9pbnRlciB0byBhIEV3a19Eb3dubG9hZF9Kb2Iu
Ci0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybURvd25sb2FkSm9iUmVxdWVzdGVkKEV3a19E
b3dubG9hZF9Kb2IqIGRvd25sb2FkKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwobV92aWV3LCAiZG93bmxvYWQscmVxdWVzdCIsIGRvd25sb2FkKTsKLX0KLQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqIGluZm9ybXMgdGhhdCBhIGZvcm0gcmVxdWVzdCBpcyBhYm91dCB0byBi
ZSBzdWJtaXR0ZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAiZm9ybSxzdWJtaXNzaW9uLHJlcXVl
c3QiIHdpdGggcG9pbnRlciB0byBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QuCi0gKi8KLXZv
aWQgRXdrVmlld0ltcGw6OmluZm9ybU5ld0Zvcm1TdWJtaXNzaW9uUmVxdWVzdChFd2tfRm9ybV9T
dWJtaXNzaW9uX1JlcXVlc3QqIHJlcXVlc3QpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChtX3ZpZXcsICJmb3JtLHN1Ym1pc3Npb24scmVxdWVzdCIsIHJlcXVlc3QpOwot
fQotCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogLyoqCiAgKiBAaW50ZXJuYWwKQEAgLTM2
Nyw1MSArMzExLDYgQEAgdm9pZCBFd2tWaWV3SW1wbDo6c2V0SW1hZ2VEYXRhKHZvaWQqIGltYWdl
RGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX2Nv
cHlfc2V0KHNkLT5pbWFnZSwgaW1hZ2VEYXRhKTsKIH0KIAotLyoqCi0gKiBAaW50ZXJuYWwKLSAq
IGluZm9ybXMgbG9hZCBmYWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KLSAqCi0gKiBFbWl0
cyBzaWduYWw6ICJsb2FkLGVycm9yIiB3aXRoIHBvaW50ZXIgdG8gRXdrX0Vycm9yLgotICovCi12
b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkRXJyb3IoRXdrX0Vycm9yKiBlcnJvcikKLXsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQsZXJyb3IiLCBl
cnJvcik7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIGxvYWQgZmluaXNoZWQu
Ci0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxmaW5pc2hlZCIuCi0gKi8KLXZvaWQgRXdrVmll
d0ltcGw6OmluZm9ybUxvYWRGaW5pc2hlZCgpCi17Ci0gICAgaW5mb3JtVVJMQ2hhbmdlKCk7Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2FkLGZpbmlzaGVk
IiwgMCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIGxvYWQgcHJvZ3Jlc3Mg
Y2hhbmdlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb2dyZXNzIiB3aXRoIHBvaW50
ZXIgdG8gYSBkb3VibGUgZnJvbSAwLjAgdG8gMS4wLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjpp
bmZvcm1Mb2FkUHJvZ3Jlc3MoZG91YmxlIHByb2dyZXNzKQotewotICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibG9hZCxwcm9ncmVzcyIsICZwcm9ncmVzcyk7Ci19
Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIHZpZXcgcHJvdmlzaW9uYWwgbG9hZCBm
YWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2Fk
LHByb3Zpc2lvbmFsLGZhaWxlZCIgd2l0aCBwb2ludGVyIHRvIEV3a19FcnJvci4KLSAqLwotdm9p
ZCBFd2tWaWV3SW1wbDo6aW5mb3JtUHJvdmlzaW9uYWxMb2FkRmFpbGVkKEV3a19FcnJvciogZXJy
b3IpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2Fk
LHByb3Zpc2lvbmFsLGZhaWxlZCIsIGVycm9yKTsKLX0KLQogI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQogdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtTG9hZENvbW1pdHRlZCgpCiB7CkBAIC00
MTksMTQ2ICszMTgsNiBAQCB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkQ29tbWl0dGVkKCkK
IH0KICNlbmRpZgogCi0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3JtcyB2aWV3IHJlY2VpdmVk
IHJlZGlyZWN0IGZvciBwcm92aXNpb25hbCBsb2FkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxv
YWQscHJvdmlzaW9uYWwscmVkaXJlY3QiLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Q
cm92aXNpb25hbExvYWRSZWRpcmVjdCgpCi17Ci0gICAgaW5mb3JtVVJMQ2hhbmdlKCk7Ci0gICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2FkLHByb3Zpc2lvbmFs
LHJlZGlyZWN0IiwgMCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIHZpZXcg
cHJvdmlzaW9uYWwgbG9hZCBzdGFydGVkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJv
dmlzaW9uYWwsc3RhcnRlZCIuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVByb3Zpc2lv
bmFsTG9hZFN0YXJ0ZWQoKQotewotICAgIGluZm9ybVVSTENoYW5nZSgpOwotICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibG9hZCxwcm92aXNpb25hbCxzdGFydGVk
IiwgMCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIHRoYXQgYSBuYXZpZ2F0
aW9uIHBvbGljeSBkZWNpc2lvbiBzaG91bGQgYmUgdGFrZW4uCi0gKgotICogRW1pdHMgc2lnbmFs
OiAicG9saWN5LGRlY2lzaW9uLG5hdmlnYXRpb24iLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjpp
bmZvcm1OYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lz
aW9uKiBkZWNpc2lvbikKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1f
dmlldywgInBvbGljeSxkZWNpc2lvbixuYXZpZ2F0aW9uIiwgZGVjaXNpb24pOwotfQotCi0vKioK
LSAqIEBpbnRlcm5hbAotICogaW5mb3JtcyB0aGF0IGEgbmV3IHdpbmRvdyBwb2xpY3kgZGVjaXNp
b24gc2hvdWxkIGJlIHRha2VuLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInBvbGljeSxkZWNpc2lv
bixuZXcsd2luZG93Ii4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtTmV3V2luZG93UG9s
aWN5RGVjaXNpb24oRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbikKLXsK
LSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInBvbGljeSxkZWNp
c2lvbixuZXcsd2luZG93IiwgZGVjaXNpb24pOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICog
TG9hZCB3YXMgaW5pdGlhdGVkIGZvciBhIHJlc291cmNlIGluIHRoZSB2aWV3LgotICoKLSAqIEVt
aXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QsbmV3IiB3aXRoIHBvaW50ZXIgdG8gcmVzb3Vy
Y2UgcmVxdWVzdC4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtUmVzb3VyY2VMb2FkU3Rh
cnRlZChFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpCi17
Ci0gICAgRXdrX1Jlc291cmNlX1JlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCBy
ZXF1ZXN0LCAwfTsKLQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3
LCAicmVzb3VyY2UscmVxdWVzdCxuZXciLCAmcmVzb3VyY2VSZXF1ZXN0KTsKLX0KLQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqIFJlY2VpdmVkIGEgcmVzcG9uc2UgdG8gYSByZXNvdXJjZSBsb2FkIHJl
cXVlc3QgaW4gdGhlIHZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVz
dCxyZXNwb25zZSIgd2l0aCBwb2ludGVyIHRvIHJlc291cmNlIHJlc3BvbnNlLgotICovCi12b2lk
IEV3a1ZpZXdJbXBsOjppbmZvcm1SZXNvdXJjZUxvYWRSZXNwb25zZShFd2tfUmVzb3VyY2UqIHJl
c291cmNlLCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSkKLXsKLSAgICBFd2tfUmVzb3VyY2Vf
TG9hZF9SZXNwb25zZSByZXNvdXJjZUxvYWRSZXNwb25zZSA9IHtyZXNvdXJjZSwgcmVzcG9uc2V9
OwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2Us
cmVxdWVzdCxyZXNwb25zZSIsICZyZXNvdXJjZUxvYWRSZXNwb25zZSk7Ci19Ci0KLS8qKgotICog
QGludGVybmFsCi0gKiBGYWlsZWQgbG9hZGluZyBhIHJlc291cmNlIGluIHRoZSB2aWV3LgotICoK
LSAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiIHdpdGggcG9pbnRl
ciB0byB0aGUgcmVzb3VyY2UgbG9hZCBlcnJvci4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5m
b3JtUmVzb3VyY2VMb2FkRmFpbGVkKEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19FcnJvciog
ZXJyb3IpCi17Ci0gICAgRXdrX1Jlc291cmNlX0xvYWRfRXJyb3IgcmVzb3VyY2VMb2FkRXJyb3Ig
PSB7cmVzb3VyY2UsIGVycm9yfTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG1fdmlldywgInJlc291cmNlLHJlcXVlc3QsZmFpbGVkIiwgJnJlc291cmNlTG9hZEVycm9yKTsK
LX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIEZpbmlzaGVkIGxvYWRpbmcgYSByZXNvdXJjZSBp
biB0aGUgdmlldy4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlz
aGVkIiB3aXRoIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlLgotICovCi12b2lkIEV3a1ZpZXdJbXBs
OjppbmZvcm1SZXNvdXJjZUxvYWRGaW5pc2hlZChFd2tfUmVzb3VyY2UqIHJlc291cmNlKQotewot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVx
dWVzdCxmaW5pc2hlZCIsIHJlc291cmNlKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJl
cXVlc3Qgd2FzIHNlbnQgZm9yIGEgcmVzb3VyY2UgaW4gdGhlIHZpZXcuCi0gKgotICogRW1pdHMg
c2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxzZW50IiB3aXRoIHBvaW50ZXIgdG8gcmVzb3VyY2Ug
cmVxdWVzdCBhbmQgcG9zc2libGUgcmVkaXJlY3QgcmVzcG9uc2UuCi0gKi8KLXZvaWQgRXdrVmll
d0ltcGw6OmluZm9ybVJlc291cmNlUmVxdWVzdFNlbnQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwg
RXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3Bv
bnNlKQotewotICAgIEV3a19SZXNvdXJjZV9SZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHtyZXNv
dXJjZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZX07Ci0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiLCAmcmVzb3VyY2VS
ZXF1ZXN0KTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFRoZSB2aWV3IHRpdGxlIHdhcyBj
aGFuZ2VkIGJ5IHRoZSBmcmFtZSBsb2FkZXIuCi0gKgotICogRW1pdHMgc2lnbmFsOiAidGl0bGUs
Y2hhbmdlZCIgd2l0aCBwb2ludGVyIHRvIG5ldyB0aXRsZSBzdHJpbmcuCi0gKi8KLXZvaWQgRXdr
Vmlld0ltcGw6OmluZm9ybVRpdGxlQ2hhbmdlKGNvbnN0IFN0cmluZyYgdGl0bGUpCi17Ci0gICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ0aXRsZSxjaGFuZ2VkIiwg
Y29uc3RfY2FzdDxjaGFyKj4odGl0bGUudXRmOCgpLmRhdGEoKSkpOwotfQotCi0vKioKLSAqIEBp
bnRlcm5hbAotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Ub29sdGlwVGV4dENoYW5nZShj
b25zdCBTdHJpbmcmIHRleHQpCi17Ci0gICAgaWYgKHRleHQuaXNFbXB0eSgpKQotICAgICAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInRvb2x0aXAsdGV4dCx1bnNl
dCIsIDApOwotICAgIGVsc2UKLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChtX3ZpZXcsICJ0b29sdGlwLHRleHQsc2V0IiwgY29uc3RfY2FzdDxjaGFyKj4odGV4dC51dGY4
KCkuZGF0YSgpKSk7Ci0KLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIGluZm9ybXMgdGhhdCB0
aGUgcmVxdWVzdGVkIHRleHQgd2FzIGZvdW5kLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInRleHQs
Zm91bmQiIHdpdGggdGhlIG51bWJlciBvZiBtYXRjaGVzLgotICovCi12b2lkIEV3a1ZpZXdJbXBs
OjppbmZvcm1UZXh0Rm91bmQodW5zaWduZWQgbWF0Y2hDb3VudCkKLXsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInRleHQsZm91bmQiLCAmbWF0Y2hDb3VudCk7
Ci19Ci0KIEludFNpemUgRXdrVmlld0ltcGw6OnNpemUoKSBjb25zdAogewogICAgIGludCB3aWR0
aCwgaGVpZ2h0OwpAQCAtNjg5LDMyICs0NDgsNiBAQCB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1J
Y29uQ2hhbmdlKCkKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywg
Imljb24sY2hhbmdlZCIsIDApOwogfQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqIFRoZSB2aWV3IHJlY2VpdmVkIGEgbmV3IGludGVudCByZXF1ZXN0Lgot
ICoKLSAqIEVtaXRzIHNpZ25hbDogImludGVudCxyZXF1ZXN0LG5ldyIgd2l0aCBwb2ludGVyIHRv
IGEgRXdrX0ludGVudC4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtSW50ZW50UmVxdWVz
dChFd2tfSW50ZW50KiBld2tJbnRlbnQpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChtX3ZpZXcsICJpbnRlbnQscmVxdWVzdCxuZXciLCBld2tJbnRlbnQpOwotfQotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotLyoqCi0gKiBAaW50ZXJuYWwKLSAq
IFRoZSB2aWV3IHJlY2VpdmVkIGEgbmV3IGludGVudCBzZXJ2aWNlIHJlZ2lzdHJhdGlvbi4KLSAq
Ci0gKiBFbWl0cyBzaWduYWw6ICJpbnRlbnQsc2VydmljZSxyZWdpc3RlciIgd2l0aCBwb2ludGVy
IHRvIGEgRXdrX0ludGVudF9TZXJ2aWNlLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1J
bnRlbnRTZXJ2aWNlUmVnaXN0cmF0aW9uKEV3a19JbnRlbnRfU2VydmljZSogZXdrSW50ZW50U2Vy
dmljZSkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImlu
dGVudCxzZXJ2aWNlLHJlZ2lzdGVyIiwgZXdrSW50ZW50U2VydmljZSk7Ci19Ci0jZW5kaWYgLy8g
RU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKIGJvb2wgRXdrVmlld0ltcGw6OmNyZWF0ZUdMU3VyZmFjZShjb25zdCBJbnRTaXplJiB2aWV3
U2l6ZSkKIHsKQEAgLTgzMywzNyArNTY2LDYgQEAgdm9pZCBFd2tWaWV3SW1wbDo6ZGlzbWlzc0Nv
bG9yUGlja2VyKCkKIH0KICNlbmRpZgogCi0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3JtcyB0
aGF0IHRoZSB2aWV3J3MgYmFjayAvIGZvcndhcmQgbGlzdCBoYXMgY2hhbmdlZC4KLSAqCi0gKiBF
bWl0cyBzaWduYWw6ICJiYWNrLGZvcndhcmQsbGlzdCxjaGFuZ2VkIi4KLSAqLwotdm9pZCBFd2tW
aWV3SW1wbDo6aW5mb3JtQmFja0ZvcndhcmRMaXN0Q2hhbmdlKCkKLXsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQi
LCAwKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFdlYiBwcm9jZXNzIGhhcyBjcmFzaGVk
LgotICoKLSAqIEVtaXRzIHNpZ25hbDogIndlYnByb2Nlc3MsY3Jhc2hlZCIgd2l0aCBwb2ludGVy
IHRvIGNyYXNoIGhhbmRsaW5nIGJvb2xlYW4uCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9y
bVdlYlByb2Nlc3NDcmFzaGVkKCkKLXsKLSAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKLSAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgIndlYnByb2Nlc3MsY3Jhc2hl
ZCIsICZoYW5kbGVkKTsKLQotICAgIGlmICghaGFuZGxlZCkgewotICAgICAgICBDU3RyaW5nIHVy
bCA9IG1fcGFnZVByb3h5LT51cmxBdFByb2Nlc3NFeGl0KCkudXRmOCgpOwotICAgICAgICBXQVJO
KCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nlc3MgZXhwZXJpZW5jZWQgYSBjcmFzaCBvbiAnJXMnLlxu
IiwgdXJsLmRhdGEoKSk7Ci0KLSAgICAgICAgLy8gRGlzcGxheSBhbiBlcnJvciBwYWdlCi0gICAg
ICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQobV92aWV3LCAiVGhlIHdlYiBwcm9jZXNzIGhh
cyBjcmFzaGVkLiIsIDAsIHVybC5kYXRhKCkpOwotICAgIH0KLX0KLQogdm9pZCBFd2tWaWV3SW1w
bDo6aW5mb3JtQ29udGVudHNTaXplQ2hhbmdlKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXdJbXBsLmgKaW5kZXggZjRlOTE3Ny4uNDYwNjYyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC0xMDEsNiArMTAx
LDQyIEBAIHR5cGVkZWYgc3RydWN0IEV3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRf
RGF0YTsKIAogY2xhc3MgRXdrVmlld0ltcGwgewogcHVibGljOgorICAgIGVudW0gQ2FsbGJhY2sg
eworICAgICAgICBEb3dubG9hZEpvYkNhbmNlbGxlZCwKKyAgICAgICAgRG93bmxvYWRKb2JGYWls
ZWQsCisgICAgICAgIERvd25sb2FkSm9iRmluaXNoZWQsCisgICAgICAgIERvd25sb2FkSm9iUmVx
dWVzdGVkLAorICAgICAgICBOZXdGb3JtU3VibWlzc2lvblJlcXVlc3QsCisgICAgICAgIExvYWRF
cnJvciwKKyAgICAgICAgTG9hZEZpbmlzaGVkLAorICAgICAgICBMb2FkUHJvZ3Jlc3MsCisgICAg
ICAgIFByb3Zpc2lvbmFsTG9hZEZhaWxlZCwKKyAgICAgICAgUHJvdmlzaW9uYWxMb2FkUmVkaXJl
Y3QsCisgICAgICAgIFByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsCisgICAgICAgIFJlc291cmNlTG9h
ZFN0YXJ0ZWQsCisgICAgICAgIFJlc291cmNlTG9hZFJlc3BvbnNlLAorICAgICAgICBSZXNvdXJj
ZUxvYWRGYWlsZWQsCisgICAgICAgIFJlc291cmNlTG9hZEZpbmlzaGVkLAorICAgICAgICBSZXNv
dXJjZVJlcXVlc3RTZW50LAorICAgICAgICBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24sCisgICAg
ICAgIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uLAorICAgICAgICBCYWNrRm9yd2FyZExpc3RDaGFu
Z2UsCisgICAgICAgIFRpdGxlQ2hhbmdlLAorICAgICAgICBUb29sdGlwVGV4dFVuc2V0LAorICAg
ICAgICBUb29sdGlwVGV4dFNldCwKKyAgICAgICAgVGV4dEZvdW5kLAorICAgICAgICBJY29uQ2hh
bmdlLAorICAgICAgICBXZWJQcm9jZXNzQ3Jhc2hlZCwKKyAgICAgICAgVVJMQ2hhbmdlLAorICAg
ICAgICBMb2FkQ29tbWl0dGVkLAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICAgICAgSW50
ZW50UmVxdWVzdCwKKyNlbmRpZgorI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCisgICAgICAg
IEludGVudFNlcnZpY2VSZWdpc3RyYXRpb24sCisjZW5kaWYKKyAgICB9OworCiAgICAgRXdrVmll
d0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQs
IFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCk7CiAgICAgfkV3a1Zp
ZXdJbXBsKCk7CiAKQEAgLTE3MCw0NyArMjA2LDE4IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVl
c3RKU0NvbmZpcm1Qb3B1cChjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UpOwogICAg
IFdLRWluYVNoYXJlZFN0cmluZyByZXF1ZXN0SlNQcm9tcHRQb3B1cChjb25zdCBXS0VpbmFTaGFy
ZWRTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgZGVmYXVsdFZhbHVl
KTsKIAotICAgIHZvaWQgaW5mb3JtRG93bmxvYWRKb2JDYW5jZWxsZWQoRXdrX0Rvd25sb2FkX0pv
YiogZG93bmxvYWQpOwotICAgIHZvaWQgaW5mb3JtRG93bmxvYWRKb2JGYWlsZWQoRXdrX0Rvd25s
b2FkX0pvYiogZG93bmxvYWQsIEV3a19FcnJvciogZXJyb3IpOwotICAgIHZvaWQgaW5mb3JtRG93
bmxvYWRKb2JGaW5pc2hlZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCk7Ci0gICAgdm9pZCBp
bmZvcm1Eb3dubG9hZEpvYlJlcXVlc3RlZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCk7Cisg
ICAgdGVtcGxhdGU8RXdrVmlld0ltcGw6OkNhbGxiYWNrIGNhbGxiYWNrVHlwZT4KKyAgICB2b2lk
IGNhbGxTbWFydENhbGxiYWNrKHZvaWQqIGFyZyA9IDApOworCisgICAgdGVtcGxhdGU8RXdrVmll
d0ltcGw6OkNhbGxiYWNrIGNhbGxiYWNrVHlwZT4KKyAgICB2b2lkIGNhbGxTbWFydENhbGxiYWNr
KGNvbnN0IFN0cmluZyYgYXJnKTsKIAotICAgIHZvaWQgaW5mb3JtTmV3Rm9ybVN1Ym1pc3Npb25S
ZXF1ZXN0KEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdCogcmVxdWVzdCk7Ci0gICAgdm9pZCBp
bmZvcm1Mb2FkRXJyb3IoRXdrX0Vycm9yKiBlcnJvcik7Ci0gICAgdm9pZCBpbmZvcm1Mb2FkRmlu
aXNoZWQoKTsKLSAgICB2b2lkIGluZm9ybUxvYWRQcm9ncmVzcyhkb3VibGUgcHJvZ3Jlc3MpOwot
ICAgIHZvaWQgaW5mb3JtUHJvdmlzaW9uYWxMb2FkRmFpbGVkKEV3a19FcnJvciogZXJyb3IpOwog
I2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZvaWQgaW5mb3JtTG9hZENvbW1pdHRl
ZCgpOwogI2VuZGlmCi0gICAgdm9pZCBpbmZvcm1Qcm92aXNpb25hbExvYWRSZWRpcmVjdCgpOwot
ICAgIHZvaWQgaW5mb3JtUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOwotCi0gICAgdm9pZCBpbmZv
cm1SZXNvdXJjZUxvYWRTdGFydGVkKEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVx
dWVzdCogcmVxdWVzdCk7Ci0gICAgdm9pZCBpbmZvcm1SZXNvdXJjZUxvYWRSZXNwb25zZShFd2tf
UmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSk7Ci0gICAgdm9p
ZCBpbmZvcm1SZXNvdXJjZUxvYWRGYWlsZWQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX0Vy
cm9yKiBlcnJvcik7Ci0gICAgdm9pZCBpbmZvcm1SZXNvdXJjZUxvYWRGaW5pc2hlZChFd2tfUmVz
b3VyY2UqIHJlc291cmNlKTsKLSAgICB2b2lkIGluZm9ybVJlc291cmNlUmVxdWVzdFNlbnQoRXdr
X1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jl
c3BvbnNlKiByZWRpcmVjdFJlc3BvbnNlKTsKLQotICAgIHZvaWQgaW5mb3JtTmF2aWdhdGlvblBv
bGljeURlY2lzaW9uKEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pOwot
ICAgIHZvaWQgaW5mb3JtTmV3V2luZG93UG9saWN5RGVjaXNpb24oRXdrX05hdmlnYXRpb25fUG9s
aWN5X0RlY2lzaW9uKiBkZWNpc2lvbik7Ci0gICAgdm9pZCBpbmZvcm1CYWNrRm9yd2FyZExpc3RD
aGFuZ2UoKTsKLQotICAgIHZvaWQgaW5mb3JtVGl0bGVDaGFuZ2UoY29uc3QgU3RyaW5nJiB0aXRs
ZSk7Ci0gICAgdm9pZCBpbmZvcm1Ub29sdGlwVGV4dENoYW5nZShjb25zdCBTdHJpbmcmIHRleHQp
OwotICAgIHZvaWQgaW5mb3JtVGV4dEZvdW5kKHVuc2lnbmVkIG1hdGNoQ291bnQpOwotICAgIHZv
aWQgaW5mb3JtSWNvbkNoYW5nZSgpOwotICAgIHZvaWQgaW5mb3JtV2ViUHJvY2Vzc0NyYXNoZWQo
KTsKICAgICB2b2lkIGluZm9ybUNvbnRlbnRzU2l6ZUNoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBzaXplKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW5mb3JtRGF0YWJhc2VRdW90YVJl
YWNoZWQoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBj
dXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50RGF0YWJhc2VVc2Fn
ZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UpOwotICAgIHZvaWQgaW5mb3JtVVJM
Q2hhbmdlKCk7CiAKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgdm9pZCBpbmZvcm1JbnRl
bnRSZXF1ZXN0KEV3a19JbnRlbnQqIGV3a0ludGVudCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VC
X0lOVEVOVFNfVEFHKQotICAgIHZvaWQgaW5mb3JtSW50ZW50U2VydmljZVJlZ2lzdHJhdGlvbihF
d2tfSW50ZW50X1NlcnZpY2UqIGV3a0ludGVudFNlcnZpY2UpOwotI2VuZGlmCiAjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsKiBwYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KCkgeyByZXR1cm4gbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpOyB9CiAgICAgV2ViS2l0OjpQYWdlVmlld3BvcnRD
b250cm9sbGVyKiBwYWdlVmlld3BvcnRDb250cm9sbGVyKCkgeyByZXR1cm4gbV9wYWdlVmlld3Bv
cnRDb250cm9sbGVyLmdldCgpOyB9CkBAIC0yMjYsNiArMjMzLDkgQEAgcHJpdmF0ZToKICAgICBp
bmxpbmUgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKCk7CiAgICAgdm9pZCBkaXNwbGF5
VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1wbD4qKTsKIAorICAgIHZvaWQgaW5m
b3JtSWNvbkNoYW5nZSgpOworICAgIHZvaWQgaW5mb3JtVVJMQ2hhbmdlKCk7CisKICAgICBzdGF0
aWMgdm9pZCBvbk1vdXNlRG93bih2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lk
KiBldmVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIG9uTW91c2VVcCh2b2lkKiBkYXRhLCBFdmFz
KiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIG9uTW91
c2VNb3ZlKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXgg
YzAxMmEwNi4uMmIyNTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgImV3a192aWV3LmgiCiAKLSNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUg
IkV3a1ZpZXdDYWxsYmFja3MuaCIKICNpbmNsdWRlICJGaW5kQ2xpZW50RWZsLmgiCiAjaW5jbHVk
ZSAiRm9ybUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIklucHV0TWV0aG9kQ29udGV4dEVmbC5oIgpA
QCAtNTc4LDcgKzU3OCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld191cmxfc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBjaGFyKiB1cmwpCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHVybCwgZmFsc2UpOwogCiAgICAgaW1wbC0+cGFnZSgpLT5sb2FkVVJMKHVybCk7Ci0g
ICAgaW1wbC0+aW5mb3JtVVJMQ2hhbmdlKCk7CisgICAgaW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8
RXdrVmlld0ltcGw6OlVSTENoYW5nZT4oKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNjA1
LDcgKzYwNSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19yZWxvYWQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFs
c2UpOwogCiAgICAgaW1wbC0+cGFnZSgpLT5yZWxvYWQoLypyZWxvYWRGcm9tT3JpZ2luKi8gZmFs
c2UpOwotICAgIGltcGwtPmluZm9ybVVSTENoYW5nZSgpOworICAgIGltcGwtPmNhbGxTbWFydENh
bGxiYWNrPEV3a1ZpZXdJbXBsOjpVUkxDaGFuZ2U+KCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTYxNiw3ICs2MTYsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNo
ZShFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKICAgICBpbXBsLT5wYWdlKCktPnJlbG9hZCgvKnJl
bG9hZEZyb21PcmlnaW4qLyB0cnVlKTsKLSAgICBpbXBsLT5pbmZvcm1VUkxDaGFuZ2UoKTsKKyAg
ICBpbXBsLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6VVJMQ2hhbmdlPigpOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC03OTYsNyArNzk2LDcgQEAgRWluYV9Cb29sIGV3a192aWV3
X2h0bWxfc3RyaW5nX2xvYWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIGh0bWws
IGNvbnMKICAgICBlbHNlCiAgICAgICAgIGltcGwtPnBhZ2UoKS0+bG9hZEhUTUxTdHJpbmcoU3Ry
aW5nOjpmcm9tVVRGOChodG1sKSwgYmFzZVVybCA/IFN0cmluZzo6ZnJvbVVURjgoYmFzZVVybCkg
OiAiIik7CiAKLSAgICBpbXBsLT5pbmZvcm1VUkxDaGFuZ2UoKTsKKyAgICBpbXBsLT5jYWxsU21h
cnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6VVJMQ2hhbmdlPigpOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFu
YWdlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdl
ckVmbC5jcHAKaW5kZXggNWYzNTliNS4uZTQzODNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcApAQCAtMjcsMTEgKzI3LDEy
IEBACiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyRWZsLmgiCiAKICNpbmNsdWRlICJEb3dubG9h
ZFByb3h5LmgiCi0jaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJFd2tWaWV3Q2Fs
bGJhY2tzLmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIK
ICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Vycm9yX3By
aXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtNDksNyArNTAsNyBAQCBXS1N0cmluZ1JlZiBEb3dubG9hZE1hbmFnZXJFZmw6OmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dAogCiAgICAgLy8gV2Ugc2Vu
ZCB0aGUgbmV3IGRvd25sb2FkIHNpZ25hbCBvbiB0aGUgRXdrX1ZpZXcgb25seSBvbmNlIHdlIGhh
dmUgcmVjZWl2ZWQgdGhlIHJlc3BvbnNlCiAgICAgLy8gYW5kIHRoZSBzdWdnZXN0ZWQgZmlsZSBu
YW1lLgotICAgIGRvd25sb2FkLT52aWV3SW1wbCgpLT5pbmZvcm1Eb3dubG9hZEpvYlJlcXVlc3Rl
ZChkb3dubG9hZCk7CisgICAgZG93bmxvYWQtPnZpZXdJbXBsKCktPmNhbGxTbWFydENhbGxiYWNr
PEV3a1ZpZXdJbXBsOjpEb3dubG9hZEpvYlJlcXVlc3RlZD4oZG93bmxvYWQpOwogCiAgICAgLy8g
RG93bmxvYWRTb3VwIGV4cGVjdHMgdGhlIGRlc3RpbmF0aW9uIHRvIGJlIGEgVVJMLgogICAgIFN0
cmluZyBkZXN0aW5hdGlvbiA9IEFTQ0lJTGl0ZXJhbCgiZmlsZTovLyIpICsgU3RyaW5nOjpmcm9t
VVRGOChkb3dubG9hZC0+ZGVzdGluYXRpb24oKSk7CkBAIC04OCw3ICs4OSw4IEBAIHZvaWQgRG93
bmxvYWRNYW5hZ2VyRWZsOjpkaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiB3a0Rv
d25sb2FkLCBXS0Vycm9yCiAKICAgICBPd25QdHI8RXdrX0Vycm9yPiBld2tFcnJvciA9IEV3a19F
cnJvcjo6Y3JlYXRlKGVycm9yKTsKICAgICBkb3dubG9hZC0+c2V0U3RhdGUoRVdLX0RPV05MT0FE
X0pPQl9TVEFURV9GQUlMRUQpOwotICAgIGRvd25sb2FkLT52aWV3SW1wbCgpLT5pbmZvcm1Eb3du
bG9hZEpvYkZhaWxlZChkb3dubG9hZCwgZXdrRXJyb3IuZ2V0KCkpOworICAgIEV3a19Eb3dubG9h
ZF9Kb2JfRXJyb3IgZG93bmxvYWRFcnJvciA9IHsgZG93bmxvYWQsIGV3a0Vycm9yLmdldCgpIH07
CisgICAgZG93bmxvYWQtPnZpZXdJbXBsKCktPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJbXBs
OjpEb3dubG9hZEpvYkZhaWxlZD4oJmRvd25sb2FkRXJyb3IpOwogICAgIGRvd25sb2FkTWFuYWdl
ci0+dW5yZWdpc3RlckRvd25sb2FkSm9iKGRvd25sb2FkSWQpOwogfQogCkBAIC0xMDAsNyArMTAy
LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OmRpZENhbmNlbChXS0NvbnRleHRSZWYsIFdL
RG93bmxvYWRSZWYgd2tEb3dubG9hZCwgY29uc3QKICAgICBBU1NFUlQoZG93bmxvYWQpOwogCiAg
ICAgZG93bmxvYWQtPnNldFN0YXRlKEVXS19ET1dOTE9BRF9KT0JfU1RBVEVfQ0FOQ0VMTEVEKTsK
LSAgICBkb3dubG9hZC0+dmlld0ltcGwoKS0+aW5mb3JtRG93bmxvYWRKb2JDYW5jZWxsZWQoZG93
bmxvYWQpOworICAgIGRvd25sb2FkLT52aWV3SW1wbCgpLT5jYWxsU21hcnRDYWxsYmFjazxFd2tW
aWV3SW1wbDo6RG93bmxvYWRKb2JDYW5jZWxsZWQ+KGRvd25sb2FkKTsKICAgICBkb3dubG9hZE1h
bmFnZXItPnVucmVnaXN0ZXJEb3dubG9hZEpvYihkb3dubG9hZElkKTsKIH0KIApAQCAtMTEyLDcg
KzExNCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRGaW5pc2goV0tDb250ZXh0UmVm
LCBXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQsIGNvbnN0CiAgICAgQVNTRVJUKGRvd25sb2FkKTsK
IAogICAgIGRvd25sb2FkLT5zZXRTdGF0ZShFV0tfRE9XTkxPQURfSk9CX1NUQVRFX0ZJTklTSEVE
KTsKLSAgICBkb3dubG9hZC0+dmlld0ltcGwoKS0+aW5mb3JtRG93bmxvYWRKb2JGaW5pc2hlZChk
b3dubG9hZCk7CisgICAgZG93bmxvYWQtPnZpZXdJbXBsKCktPmNhbGxTbWFydENhbGxiYWNrPEV3
a1ZpZXdJbXBsOjpEb3dubG9hZEpvYkZpbmlzaGVkPihkb3dubG9hZCk7CiAgICAgZG93bmxvYWRN
YW5hZ2VyLT51bnJlZ2lzdGVyRG93bmxvYWRKb2IoZG93bmxvYWRJZCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwCmluZGV4IGE0MzFhY2Mu
LjkxOWQ4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENs
aWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50
RWZsLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkZpbmRDbGllbnRFZmwuaCIKIAotI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisjaW5jbHVkZSAi
RXdrVmlld0NhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTQwLDEzICs0MCwxMyBAQCBzdGF0aWMgaW5saW5lIEZpbmRDbGllbnRFZmwqIHRv
RmluZENsaWVudEVmbChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogdm9pZCBGaW5kQ2xpZW50RWZs
OjpkaWRGaW5kU3RyaW5nKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIHVuc2lnbmVkIG1hdGNoQ291
bnQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgRmluZENsaWVudEVmbCogZmluZENs
aWVudCA9IHRvRmluZENsaWVudEVmbChjbGllbnRJbmZvKTsKLSAgICBmaW5kQ2xpZW50LT5tX3Zp
ZXdJbXBsLT5pbmZvcm1UZXh0Rm91bmQobWF0Y2hDb3VudCk7CisgICAgZmluZENsaWVudC0+bV92
aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6OlRleHRGb3VuZD4oJm1hdGNo
Q291bnQpOwogfQogCiB2b2lkIEZpbmRDbGllbnRFZmw6OmRpZEZhaWxUb0ZpbmRTdHJpbmcoV0tQ
YWdlUmVmLCBXS1N0cmluZ1JlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBGaW5k
Q2xpZW50RWZsKiBmaW5kQ2xpZW50ID0gdG9GaW5kQ2xpZW50RWZsKGNsaWVudEluZm8pOwotICAg
IGZpbmRDbGllbnQtPm1fdmlld0ltcGwtPmluZm9ybVRleHRGb3VuZCgwKTsKKyAgICBmaW5kQ2xp
ZW50LT5tX3ZpZXdJbXBsLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6VGV4dEZvdW5k
PigwKTsKIH0KIAogRmluZENsaWVudEVmbDo6RmluZENsaWVudEVmbChFd2tWaWV3SW1wbCogdmll
d0ltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Zvcm1DbGll
bnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNw
cAppbmRleCA3NTQxZTI2Li4xZGQ3OTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJGb3JtQ2xpZW50RWZsLmgiCiAKLSNpbmNsdWRlICJFd2tWaWV3SW1w
bC5oIgorI2luY2x1ZGUgIkV3a1ZpZXdDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXS1BhZ2UuaCIK
ICNpbmNsdWRlICJld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oIgogCkBAIC00
Miw3ICs0Miw3IEBAIHZvaWQgRm9ybUNsaWVudEVmbDo6d2lsbFN1Ym1pdEZvcm0oV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmIC8qZnJhbWUqLywgV0tGcmFtZVJlZiAvCiAgICAgRm9ybUNsaWVudEVmbCog
Zm9ybUNsaWVudCA9IHRvRm9ybUNsaWVudEVmbChjbGllbnRJbmZvKTsKIAogICAgIFJlZlB0cjxF
d2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Q+IHJlcXVlc3QgPSBFd2tfRm9ybV9TdWJtaXNzaW9u
X1JlcXVlc3Q6OmNyZWF0ZSh2YWx1ZXMsIGxpc3RlbmVyKTsKLSAgICBmb3JtQ2xpZW50LT5tX3Zp
ZXdJbXBsLT5pbmZvcm1OZXdGb3JtU3VibWlzc2lvblJlcXVlc3QocmVxdWVzdC5nZXQoKSk7Cisg
ICAgZm9ybUNsaWVudC0+bV92aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6
Ok5ld0Zvcm1TdWJtaXNzaW9uUmVxdWVzdD4ocmVxdWVzdC5nZXQoKSk7CiB9CiAKIEZvcm1DbGll
bnRFZmw6OkZvcm1DbGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCAzYjNiN2I2Li5j
NjIyOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAK
ICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgotI2luY2x1ZGUgIkV3a1ZpZXdJbXBs
LmgiCisjaW5jbHVkZSAiRXdrVmlld0NhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklucHV0TWV0aG9k
Q29udGV4dEVmbC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgImV3a19j
b250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCiAjaW5jbHVk
ZSAiZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIK
ICNpbmNsdWRlICJld2tfdmlldy5oIgogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCkBA
IC0xMTcsMTAgKzExOCwyMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwcm9jZXNzRGlkQ3Jhc2go
KQogewogICAgIC8vIENoZWNrIGlmIGxvYWRpbmcgd2FzIG9uZ29pbmcsIHdoZW4gd2ViIHByb2Nl
c3MgY3Jhc2hlZC4KICAgICBkb3VibGUgbG9hZFByb2dyZXNzID0gZXdrX3ZpZXdfbG9hZF9wcm9n
cmVzc19nZXQobV92aWV3SW1wbC0+dmlldygpKTsKLSAgICBpZiAobG9hZFByb2dyZXNzID49IDAg
JiYgbG9hZFByb2dyZXNzIDwgMSkKLSAgICAgICAgbV92aWV3SW1wbC0+aW5mb3JtTG9hZFByb2dy
ZXNzKDEpOworICAgIGlmIChsb2FkUHJvZ3Jlc3MgPj0gMCAmJiBsb2FkUHJvZ3Jlc3MgPCAxKSB7
CisgICAgICAgIGxvYWRQcm9ncmVzcyA9IDE7CisgICAgICAgIG1fdmlld0ltcGwtPmNhbGxTbWFy
dENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpMb2FkUHJvZ3Jlc3M+KCZsb2FkUHJvZ3Jlc3MpOworICAg
IH0KIAotICAgIG1fdmlld0ltcGwtPmluZm9ybVdlYlByb2Nlc3NDcmFzaGVkKCk7CisgICAgYm9v
bCBoYW5kbGVkID0gZmFsc2U7CisgICAgbV92aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdr
Vmlld0ltcGw6OldlYlByb2Nlc3NDcmFzaGVkPigmaGFuZGxlZCk7CisKKyAgICBpZiAoIWhhbmRs
ZWQpIHsKKyAgICAgICAgQ1N0cmluZyB1cmwgPSBtX3ZpZXdJbXBsLT5wYWdlKCktPnVybEF0UHJv
Y2Vzc0V4aXQoKS51dGY4KCk7CisgICAgICAgIFdBUk4oIldBUk5JTkc6IFRoZSB3ZWIgcHJvY2Vz
cyBleHBlcmllbmNlZCBhIGNyYXNoIG9uICclcycuXG4iLCB1cmwuZGF0YSgpKTsKKworICAgICAg
ICAvLyBEaXNwbGF5IGFuIGVycm9yIHBhZ2UKKyAgICAgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdf
bG9hZChtX3ZpZXdJbXBsLT52aWV3KCksICJUaGUgd2ViIHByb2Nlc3MgaGFzIGNyYXNoZWQuIiwg
MCwgdXJsLmRhdGEoKSk7CisgICAgfQogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWxh
dW5jaFByb2Nlc3MoKQpAQCAtMTM3LDcgKzE0OSwxMCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpw
YWdlQ2xvc2VkKCkKIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6dG9vbFRpcENoYW5nZWQoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBuZXdUb29sVGlwKQogewotICAgIG1fdmlld0ltcGwtPmlu
Zm9ybVRvb2x0aXBUZXh0Q2hhbmdlKG5ld1Rvb2xUaXApOworICAgIGlmIChuZXdUb29sVGlwLmlz
RW1wdHkoKSkKKyAgICAgICAgbV92aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0lt
cGw6OlRvb2x0aXBUZXh0VW5zZXQ+KCk7CisgICAgZWxzZQorICAgICAgICBtX3ZpZXdJbXBsLT5j
YWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6VG9vbHRpcFRleHRTZXQ+KG5ld1Rvb2xUaXAp
OwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJz
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xp
ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRF
ZmwuY3BwCmluZGV4IDdiZjZiZGEuLjZmOTEzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFnZUxvYWRDbGllbnRFZmwuaCIKIAotI2lu
Y2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisjaW5jbHVkZSAiRXdrVmlld0NhbGxiYWNrcy5oIgogI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRnJhbWUuaCIKICNpbmNsdWRlICJXS1Bh
Z2UuaCIKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2
ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiB0aXRsZSwgV0sKICAgICAgICAg
cmV0dXJuOwogCiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVm
bChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKLSAgICB2aWV3SW1wbC0+aW5mb3JtVGl0bGVDaGFu
Z2UodG9JbXBsKHRpdGxlKS0+c3RyaW5nKCkpOworICAgIHZpZXdJbXBsLT5jYWxsU21hcnRDYWxs
YmFjazxFd2tWaWV3SW1wbDo6VGl0bGVDaGFuZ2U+KHRvSW1wbCh0aXRsZSktPnN0cmluZygpKTsK
IH0KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBQYWdl
TG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgV0tJbnRlbnQKIHsKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2Fk
Q2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwogICAgIFJlZlB0cjxFd2tfSW50ZW50
PiBld2tJbnRlbnQgPSBFd2tfSW50ZW50OjpjcmVhdGUoaW50ZW50KTsKLSAgICB2aWV3SW1wbC0+
aW5mb3JtSW50ZW50UmVxdWVzdChld2tJbnRlbnQuZ2V0KCkpOworICAgIHZpZXdJbXBsLT5jYWxs
U21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6SW50ZW50UmVxdWVzdD4oZXdrSW50ZW50LmdldCgp
KTsKIH0KICNlbmRpZgogCkBAIC02NiwxNCArNjYsMTUgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVm
bDo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBX
S0kKIHsKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNs
aWVudEluZm8pLT52aWV3SW1wbCgpOwogICAgIFJlZlB0cjxFd2tfSW50ZW50X1NlcnZpY2U+IGV3
a0ludGVudFNlcnZpY2UgPSBFd2tfSW50ZW50X1NlcnZpY2U6OmNyZWF0ZShzZXJ2aWNlSW5mbyk7
Ci0gICAgdmlld0ltcGwtPmluZm9ybUludGVudFNlcnZpY2VSZWdpc3RyYXRpb24oZXdrSW50ZW50
U2VydmljZS5nZXQoKSk7CisgICAgdmlld0ltcGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJ
bXBsOjpJbnRlbnRTZXJ2aWNlUmVnaXN0cmF0aW9uPihld2tJbnRlbnRTZXJ2aWNlLmdldCgpKTsK
IH0KICNlbmRpZgogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRDaGFuZ2VQcm9ncmVzcyhX
S1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBFd2tWaWV3SW1w
bCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgp
OwotICAgIHZpZXdJbXBsLT5pbmZvcm1Mb2FkUHJvZ3Jlc3MoV0tQYWdlR2V0RXN0aW1hdGVkUHJv
Z3Jlc3MocGFnZSkpOworICAgIGRvdWJsZSBwcm9ncmVzcyA9IFdLUGFnZUdldEVzdGltYXRlZFBy
b2dyZXNzKHBhZ2UpOworICAgIHZpZXdJbXBsLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1w
bDo6TG9hZFByb2dyZXNzPigmcHJvZ3Jlc3MpOwogfQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZs
OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5
cGVSZWYgLyp1c2VyRGF0YSovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtODIsNyArODMs
NyBAQCB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cAogICAgICAgICByZXR1cm47CiAKICAgICBFd2tW
aWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3
SW1wbCgpOwotICAgIHZpZXdJbXBsLT5pbmZvcm1Mb2FkRmluaXNoZWQoKTsKKyAgICB2aWV3SW1w
bC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6OkxvYWRGaW5pc2hlZD4oKTsKIH0KIAog
dm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1Bh
Z2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTkyLDggKzkzLDggQEAgdm9pZCBQYWdlTG9hZENsaWVu
dEVmbDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYg
ZnJhbWUKIAogICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwo
Y2xpZW50SW5mbyktPnZpZXdJbXBsKCk7CiAgICAgT3duUHRyPEV3a19FcnJvcj4gZXdrRXJyb3Ig
PSBFd2tfRXJyb3I6OmNyZWF0ZShlcnJvcik7Ci0gICAgdmlld0ltcGwtPmluZm9ybUxvYWRFcnJv
cihld2tFcnJvci5nZXQoKSk7Ci0gICAgdmlld0ltcGwtPmluZm9ybUxvYWRGaW5pc2hlZCgpOwor
ICAgIHZpZXdJbXBsLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6TG9hZEVycm9yPihl
d2tFcnJvci5nZXQoKSk7CisgICAgdmlld0ltcGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJ
bXBsOjpMb2FkRmluaXNoZWQ+KCk7CiB9CiAKIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S1R5cGVSZWYgLyp1c2VyRGF0YSovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtMTAyLDcg
KzEwMyw4IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyCiAgICAgICAgIHJldHVybjsKIAogICAg
IEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbykt
PnZpZXdJbXBsKCk7Ci0gICAgdmlld0ltcGwtPmluZm9ybVByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQo
KTsKKyAgICB2aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6OlVSTENoYW5n
ZT4oKTsKKyAgICB2aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6OlByb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQ+KCk7CiB9CiAKIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIC8qdXNlckRhdGEqLywgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKQEAgLTExMSw3ICsxMTMsOCBAQCB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZwogICAg
ICAgICByZXR1cm47CiAKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xp
ZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwotICAgIHZpZXdJbXBsLT5pbmZvcm1Qcm92
aXNpb25hbExvYWRSZWRpcmVjdCgpOworICAgIHZpZXdJbXBsLT5jYWxsU21hcnRDYWxsYmFjazxF
d2tWaWV3SW1wbDo6VVJMQ2hhbmdlPigpOworICAgIHZpZXdJbXBsLT5jYWxsU21hcnRDYWxsYmFj
azxFd2tWaWV3SW1wbDo6UHJvdmlzaW9uYWxMb2FkUmVkaXJlY3Q+KCk7CiB9CiAKIHZvaWQgUGFn
ZUxvYWRDbGllbnRFZmw6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShX
S1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTEyMSw3ICsxMjQsNyBAQCB2b2lkIFBhZ2VMb2Fk
Q2xpZW50RWZsOjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdl
UmVmLCBXS0ZyYQogCiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVu
dEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKICAgICBPd25QdHI8RXdrX0Vycm9yPiBld2tF
cnJvciA9IEV3a19FcnJvcjo6Y3JlYXRlKGVycm9yKTsKLSAgICB2aWV3SW1wbC0+aW5mb3JtUHJv
dmlzaW9uYWxMb2FkRmFpbGVkKGV3a0Vycm9yLmdldCgpKTsKKyAgICB2aWV3SW1wbC0+Y2FsbFNt
YXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZD4oZXdrRXJyb3Iu
Z2V0KCkpOwogfQogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCkBAIC0xMzEsNyArMTM0
LDcgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFn
ZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXAKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXdr
Vmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmll
d0ltcGwoKTsKLSAgICB2aWV3SW1wbC0+aW5mb3JtTG9hZENvbW1pdHRlZCgpOworICAgIHZpZXdJ
bXBsLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6TG9hZENvbW1pdHRlZD4oKTsKIH0K
ICNlbmRpZgogCkBAIC0xNDQsNyArMTQ3LDcgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlk
Q2hhbmdlQmFja0ZvcndhcmRMaXN0KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGUKICAg
ICBBU1NFUlQobGlzdCk7CiAgICAgbGlzdC0+dXBkYXRlKGFkZGVkSXRlbSwgcmVtb3ZlZEl0ZW1z
KTsKIAotICAgIHZpZXdJbXBsLT5pbmZvcm1CYWNrRm9yd2FyZExpc3RDaGFuZ2UoKTsKKyAgICB2
aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJhY2s8RXdrVmlld0ltcGw6OkJhY2tGb3J3YXJkTGlzdENo
YW5nZT4oKTsKIH0KIAogdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uVHlwZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAt
MTUzLDcgKzE1Niw3IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFNhbWVEb2N1bWVudE5h
dmlnYXRpb25Gb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYKICAgICAgICAgcmV0dXJuOwog
CiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJ
bmZvKS0+dmlld0ltcGwoKTsKLSAgICB2aWV3SW1wbC0+aW5mb3JtVVJMQ2hhbmdlKCk7CisgICAg
dmlld0ltcGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpVUkxDaGFuZ2U+KCk7CiB9
CiAKIFBhZ2VMb2FkQ2xpZW50RWZsOjpQYWdlTG9hZENsaWVudEVmbChFd2tWaWV3SW1wbCogdmll
d0ltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VQb2xp
Y3lDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5
Q2xpZW50RWZsLmNwcAppbmRleCBhNjNiYjVlLi4yZDUxMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNsaWVudEVmbC5jcHAKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYWdlUG9saWN5Q2xpZW50
RWZsLmgiCiAKLSNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIkV3a1ZpZXdDYWxs
YmFja3MuaCIKICNpbmNsdWRlICJXS0ZyYW1lLmgiCiAjaW5jbHVkZSAiV0tGcmFtZVBvbGljeUxp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpAQCAtNDcsNyArNDcsNyBAQCB2
b2lkIFBhZ2VQb2xpY3lDbGllbnRFZmw6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLAogICAgIFBhZ2VQb2xpY3lDbGllbnRFZmwqIHBvbGljeUNs
aWVudCA9IHRvUGFnZVBvbGljeUNsaWVudEVmbChjbGllbnRJbmZvKTsKIAogICAgIFJlZlB0cjxF
d2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24+IGRlY2lzaW9uID0gRXdrX05hdmlnYXRpb25f
UG9saWN5X0RlY2lzaW9uOjpjcmVhdGUobmF2aWdhdGlvblR5cGUsIG1vdXNlQnV0dG9uLCBtb2Rp
ZmllcnMsIHJlcXVlc3QsIDAsIGxpc3RlbmVyKTsKLSAgICBwb2xpY3lDbGllbnQtPm1fdmlld0lt
cGwtPmluZm9ybU5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihkZWNpc2lvbi5nZXQoKSk7CisgICAg
cG9saWN5Q2xpZW50LT5tX3ZpZXdJbXBsLT5jYWxsU21hcnRDYWxsYmFjazxFd2tWaWV3SW1wbDo6
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uPihkZWNpc2lvbi5nZXQoKSk7CiB9CiAKIHZvaWQgUGFn
ZVBvbGljeUNsaWVudEVmbDo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdLUGFnZVJl
ZiwgV0tGcmFtZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBX
S1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tTdHJpbmdSZWYgZnJhbWVOYW1lLCBXS0ZyYW1lUG9s
aWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiAvKnVzZXJEYXRhKi8sIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgUGFnZVBvbGljeUNsaWVudEVm
bDo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwK
ICAgICBQYWdlUG9saWN5Q2xpZW50RWZsKiBwb2xpY3lDbGllbnQgPSB0b1BhZ2VQb2xpY3lDbGll
bnRFZmwoY2xpZW50SW5mbyk7CiAKICAgICBSZWZQdHI8RXdrX05hdmlnYXRpb25fUG9saWN5X0Rl
Y2lzaW9uPiBkZWNpc2lvbiA9IEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbjo6Y3JlYXRl
KG5hdmlnYXRpb25UeXBlLCBtb3VzZUJ1dHRvbiwgbW9kaWZpZXJzLCByZXF1ZXN0LCB0b0ltcGwo
ZnJhbWVOYW1lKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbGlzdGVuZXIpOwotICAgIHBvbGlj
eUNsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtTmV3V2luZG93UG9saWN5RGVjaXNpb24oZGVjaXNp
b24uZ2V0KCkpOworICAgIHBvbGljeUNsaWVudC0+bV92aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJh
Y2s8RXdrVmlld0ltcGw6Ok5ld1dpbmRvd1BvbGljeURlY2lzaW9uPihkZWNpc2lvbi5nZXQoKSk7
CiB9CiAKIHZvaWQgUGFnZVBvbGljeUNsaWVudEVmbDo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VD
YWxsYmFjayhXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVVJMUmVzcG9uc2VSZWYgcmVz
cG9uc2UsIFdLVVJMUmVxdWVzdFJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVy
LCBXS1R5cGVSZWYgLyp1c2VyRGF0YSovLCBjb25zdCB2b2lkKiAvKmNsaWVudEluZm8qLykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50
RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50
RWZsLmNwcAppbmRleCBjYzRiZGY4Li4wZjY0YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuY3BwCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkQ2xpZW50
RWZsLmgiCiAKLSNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIkV3a1ZpZXdDYWxs
YmFja3MuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0ZyYW1lLmgiCiAj
aW5jbHVkZSAiV0tQYWdlLmgiCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiZXdrX2Vycm9y
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3RfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01Niw3ICs1Nyw4IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYgd2tGCiAgICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX2xvYWRpbmdSZXNvdXJjZXNN
YXAuYWRkKHJlc291cmNlSWRlbnRpZmllciwgcmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPEV3a19V
cmxfUmVxdWVzdD4gcmVxdWVzdCA9IEV3a19VcmxfUmVxdWVzdDo6Y3JlYXRlKHdrUmVxdWVzdCk7
Ci0gICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5pbmZvcm1SZXNvdXJjZUxvYWRT
dGFydGVkKHJlc291cmNlLmdldCgpLCByZXF1ZXN0LmdldCgpKTsKKyAgICBFd2tfUmVzb3VyY2Vf
UmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSB7cmVzb3VyY2UuZ2V0KCksIHJlcXVlc3QuZ2V0KCks
IDB9OworICAgIHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+Y2FsbFNtYXJ0Q2FsbGJh
Y2s8RXdrVmlld0ltcGw6OlJlc291cmNlTG9hZFN0YXJ0ZWQ+KCZyZXNvdXJjZVJlcXVlc3QpOwog
fQogCiB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJj
ZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tV
UkxSZXF1ZXN0UmVmIHdrUmVxdWVzdCwgV0tVUkxSZXNwb25zZVJlZiB3a1JlZGlyZWN0UmVzcG9u
c2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC03MCw3ICs3Miw4IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpkaWRTZW5kUmVxdWVzdEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiwgdWluCiAKICAgICBSZWZQdHI8RXdrX1VybF9SZXF1ZXN0PiByZXF1ZXN0ID0gRXdr
X1VybF9SZXF1ZXN0OjpjcmVhdGUod2tSZXF1ZXN0KTsKICAgICBSZWZQdHI8RXdrX1VybF9SZXNw
b25zZT4gcmVkaXJlY3RSZXNwb25zZSA9IEV3a19VcmxfUmVzcG9uc2U6OmNyZWF0ZSh3a1JlZGly
ZWN0UmVzcG9uc2UpOwotICAgIHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+aW5mb3Jt
UmVzb3VyY2VSZXF1ZXN0U2VudChyZXNvdXJjZS5nZXQoKSwgcmVxdWVzdC5nZXQoKSwgcmVkaXJl
Y3RSZXNwb25zZS5nZXQoKSk7CisgICAgRXdrX1Jlc291cmNlX1JlcXVlc3QgcmVzb3VyY2VSZXF1
ZXN0ID0ge3Jlc291cmNlLmdldCgpLCByZXF1ZXN0LmdldCgpLCByZWRpcmVjdFJlc3BvbnNlLmdl
dCgpfTsKKyAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmNhbGxTbWFydENhbGxi
YWNrPEV3a1ZpZXdJbXBsOjpSZXNvdXJjZVJlcXVlc3RTZW50PigmcmVzb3VyY2VSZXF1ZXN0KTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVSZXNwb25zZUZvclJl
c291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVy
LCBXS1VSTFJlc3BvbnNlUmVmIHdrUmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBA
IC04Myw3ICs4Niw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlUmVz
cG9uc2VGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsCiAgICAgICAgIHJldHVybjsK
IAogICAgIFJlZlB0cjxFd2tfVXJsX1Jlc3BvbnNlPiByZXNwb25zZSA9IEV3a19VcmxfUmVzcG9u
c2U6OmNyZWF0ZSh3a1Jlc3BvbnNlKTsKLSAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0lt
cGwtPmluZm9ybVJlc291cmNlTG9hZFJlc3BvbnNlKHJlc291cmNlLmdldCgpLCByZXNwb25zZS5n
ZXQoKSk7CisgICAgRXdrX1Jlc291cmNlX0xvYWRfUmVzcG9uc2UgcmVzb3VyY2VMb2FkUmVzcG9u
c2UgPSB7cmVzb3VyY2UuZ2V0KCksIHJlc3BvbnNlLmdldCgpfTsKKyAgICByZXNvdXJjZUxvYWRD
bGllbnQtPm1fdmlld0ltcGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJbXBsOjpSZXNvdXJj
ZUxvYWRSZXNwb25zZT4oJnJlc291cmNlTG9hZFJlc3BvbnNlKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRDbGllbnRFZmw6OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKQEAgLTk1LDcgKzk5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZEZpbmlz
aExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQKICAgICBpZiAoIXJl
c291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmll
d0ltcGwtPmluZm9ybVJlc291cmNlTG9hZEZpbmlzaGVkKHJlc291cmNlLmdldCgpKTsKKyAgICBy
ZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmNhbGxTbWFydENhbGxiYWNrPEV3a1ZpZXdJ
bXBsOjpSZXNvdXJjZUxvYWRGaW5pc2hlZD4ocmVzb3VyY2UuZ2V0KCkpOwogfQogCiB2b2lkIFJl
c291cmNlTG9hZENsaWVudEVmbDo6ZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tFcnJvclJlZiB3a0Vycm9y
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtMTA4LDggKzExMiw5IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgdWludDY0CiAgICAgICAgIHJldHVybjsKIAogICAgIE93blB0cjxFd2tfRXJyb3I+IGV3
a0Vycm9yID0gRXdrX0Vycm9yOjpjcmVhdGUod2tFcnJvcik7Ci0gICAgcmVzb3VyY2VMb2FkQ2xp
ZW50LT5tX3ZpZXdJbXBsLT5pbmZvcm1SZXNvdXJjZUxvYWRGYWlsZWQocmVzb3VyY2UuZ2V0KCks
IGV3a0Vycm9yLmdldCgpKTsKLSAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmlu
Zm9ybVJlc291cmNlTG9hZEZpbmlzaGVkKHJlc291cmNlLmdldCgpKTsKKyAgICBFd2tfUmVzb3Vy
Y2VfTG9hZF9FcnJvciByZXNvdXJjZUxvYWRFcnJvciA9IHtyZXNvdXJjZS5nZXQoKSwgZXdrRXJy
b3IuZ2V0KCl9OworICAgIHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+Y2FsbFNtYXJ0
Q2FsbGJhY2s8RXdrVmlld0ltcGw6OlJlc291cmNlTG9hZEZhaWxlZD4oJnJlc291cmNlTG9hZEVy
cm9yKTsKKyAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmNhbGxTbWFydENhbGxi
YWNrPEV3a1ZpZXdJbXBsOjpSZXNvdXJjZUxvYWRGaW5pc2hlZD4ocmVzb3VyY2UuZ2V0KCkpOwog
fQogCiB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6b25WaWV3UHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2b2lkKikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171135</attachid>
            <date>2012-10-28 10:50:04 -0700</date>
            <delta_ts>2012-10-29 01:58:32 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>bug100506_v2</filename>
            <type>text/plain</type>
            <size>43520</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDU2NjIxMzc2YzkxMzY0OWNjZjdkMjdiZjVjYWMzMmI4M2IwMGQyMGYKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
U3VuIE9jdCAyOCAxODo0Nzo1OCAyMDEyICswMjAwCgogICAgYnVnMTAwNTA2CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDkwM2Q1MDMuLjFiZGMzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMi0x
MC0yOCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIFNpbXBsaWZ5IHNpZ25hbCBlbWl0dGluZyBBUEkgaW4gRXdr
Vmlld0ltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMDUwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vdyBzaWduYWwgZW1pdHRpbmcgQVBJIGluIEV3a1ZpZXdJbXBsIGlzIHNpbXBsaWZpZWQgc28g
dGhhdAorICAgICAgICB0aGVyZSBpcyBvbmUgRXdrVmlld0ltcGw6OnNtYXJ0Q2FsbGJhY2sgdGVt
cGxhdGUgbWV0aG9kCisgICAgICAgIHJldHVybmluZyBFd2tWaWV3Q2FsbGJhY2tzOjpDYWxsQmFj
ayBjbGFzcyBpbnN0YW5jZQorICAgICAgICB3aGljaCBlbmNhcHN1bGF0ZXMgRXdrX3ZpZXcgY2Fs
bGJhY2sgaW5mbyBhbmQgYWxzbyBwcm92aWRlCisgICAgICAgIGFyZ3VtZW50cyB0eXBlIGNoZWNr
aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oOiBB
ZGRlZC4KKyAgICAgICAgKEV3a1ZpZXdDYWxsYmFja3MpOgorICAgICAgICAoQ2FsbEJhY2tJbmZv
KToKKyAgICAgICAgKEV3a1ZpZXdDYWxsYmFja3M6OkNhbGxCYWNrSW5mbzo6bmFtZSk6CisgICAg
ICAgIChFd2tWaWV3Q2FsbGJhY2tzOjpDYWxsQmFja0luZm86Omhhc0FyZ3VtZW50cyk6CisgICAg
ICAgIChDYWxsQmFjayk6CisgICAgICAgIChFd2tWaWV3Q2FsbGJhY2tzOjpDYWxsQmFjazo6Q2Fs
bEJhY2spOgorICAgICAgICAoRXdrVmlld0NhbGxiYWNrczo6Q2FsbEJhY2s6OmNhbGwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAg
ICAgICAoRXdrVmlld0ltcGw6OnNtYXJ0Q2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9l
ZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5h
Z2VyRWZsOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVmbDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkTWFuYWdlckVmbDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRNYW5hZ2VyRWZsOjpkaWRGaW5pc2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRmluZENs
aWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDbGllbnRFZmw6OmRpZEZpbmRTdHJp
bmcpOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ2xpZW50RWZsOjpkaWRGYWlsVG9GaW5kU3RyaW5n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpGb3JtQ2xpZW50RWZsOjp3aWxsU3VibWl0Rm9ybSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
dG9vbFRpcENoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRF
ZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVj
ZWl2ZUludGVudEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6
OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxv
YWRDbGllbnRFZmw6OmRpZENoYW5nZVByb2dyZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxv
YWRDbGllbnRFZmw6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VMb2FkQ2xpZW50RWZsOjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlTG9hZENsaWVudEVmbDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZENvbW1pdExvYWRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRDaGFuZ2VCYWNr
Rm9yd2FyZExpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNsaWVudEVm
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VQb2xpY3lDbGllbnRFZmw6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQYWdlUG9saWN5Q2xpZW50
RWZsOjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw6
OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZENsaWVudEVmbDo6ZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZENsaWVudEVmbDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjp+UmVzb3VyY2VMb2FkQ2xpZW50RWZsKToKKwog
MjAxMi0xMC0yNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFlldCBt
b3JlIE1lc3NhZ2VSZWNlaXZlcmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmUxNDQ1NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmgKQEAgLTAsMCArMSwxODkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgRXdrVmlld0NhbGxiYWNrc19oCisjZGVmaW5lIEV3a1ZpZXdD
YWxsYmFja3NfaAorCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8RXZhcy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworc3RydWN0IEV3a19Eb3dubG9hZF9K
b2I7CitzdHJ1Y3QgRXdrX0Rvd25sb2FkX0pvYl9FcnJvcjsKK3N0cnVjdCBFd2tfRm9ybV9TdWJt
aXNzaW9uX1JlcXVlc3Q7CitzdHJ1Y3QgRXdrX0Vycm9yOworc3RydWN0IEV3a19SZXNvdXJjZV9S
ZXF1ZXN0Oworc3RydWN0IEV3a19SZXNvdXJjZV9Mb2FkX1Jlc3BvbnNlOworc3RydWN0IEV3a19S
ZXNvdXJjZV9Mb2FkX0Vycm9yOworc3RydWN0IEV3a19SZXNvdXJjZTsKK3N0cnVjdCBFd2tfTmF2
aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb247CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorc3RydWN0
IEV3a19JbnRlbnQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorc3RydWN0
IEV3a19JbnRlbnRfU2VydmljZTsKKyNlbmRpZgorCituYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNr
cyB7CisKK2VudW0gQ2FsbGJhY2tUeXBlIHsKKyAgICBEb3dubG9hZEpvYkNhbmNlbGxlZCwKKyAg
ICBEb3dubG9hZEpvYkZhaWxlZCwKKyAgICBEb3dubG9hZEpvYkZpbmlzaGVkLAorICAgIERvd25s
b2FkSm9iUmVxdWVzdGVkLAorICAgIE5ld0Zvcm1TdWJtaXNzaW9uUmVxdWVzdCwKKyAgICBMb2Fk
RXJyb3IsCisgICAgTG9hZEZpbmlzaGVkLAorICAgIExvYWRQcm9ncmVzcywKKyAgICBQcm92aXNp
b25hbExvYWRGYWlsZWQsCisgICAgUHJvdmlzaW9uYWxMb2FkUmVkaXJlY3QsCisgICAgUHJvdmlz
aW9uYWxMb2FkU3RhcnRlZCwKKyAgICBSZXNvdXJjZUxvYWRTdGFydGVkLAorICAgIFJlc291cmNl
TG9hZFJlc3BvbnNlLAorICAgIFJlc291cmNlTG9hZEZhaWxlZCwKKyAgICBSZXNvdXJjZUxvYWRG
aW5pc2hlZCwKKyAgICBSZXNvdXJjZVJlcXVlc3RTZW50LAorICAgIE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbiwKKyAgICBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbiwKKyAgICBCYWNrRm9yd2FyZExp
c3RDaGFuZ2UsCisgICAgVGl0bGVDaGFuZ2UsCisgICAgVG9vbHRpcFRleHRVbnNldCwKKyAgICBU
b29sdGlwVGV4dFNldCwKKyAgICBUZXh0Rm91bmQsCisgICAgV2ViUHJvY2Vzc0NyYXNoZWQsCisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIEludGVudFJlcXVlc3QsCisjZW5kaWYKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorICAgIEludGVudFNlcnZpY2VSZWdpc3RyYXRpb24sCisj
ZW5kaWYKK307CisKK3RlbXBsYXRlIDxDYWxsYmFja1R5cGU+CitzdHJ1Y3QgQ2FsbEJhY2tJbmZv
IHsKKyAgICB0eXBlZGVmIHZvaWQgVHlwZTsKKworICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hh
ciogbmFtZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuICIiOworICAgIH0KKworICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNBcmd1bWVudHMo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK307CisKK3RlbXBsYXRlIDxD
YWxsYmFja1R5cGUgY2FsbGJhY2tUeXBlPgorY2xhc3MgQ2FsbEJhY2sgeworcHVibGljOgorICAg
IGV4cGxpY2l0IENhbGxCYWNrKEV2YXNfT2JqZWN0KiB2aWV3KQorICAgICAgICA6IG1fdmlldyh2
aWV3KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmlldyk7CisgICAgfQorCisgICAgdm9pZCBj
YWxsKHR5cGVuYW1lIENhbGxCYWNrSW5mbzxjYWxsYmFja1R5cGU+OjpUeXBlIGFyZ3VtZW50ID0g
MCkKKyAgICB7CisgICAgICAgIGlmIChhcmd1bWVudCAmJiAhQ2FsbEJhY2tJbmZvPGNhbGxiYWNr
VHlwZT46Omhhc0FyZ3VtZW50cygpKSB7CisgICAgICAgICAgICBBU1NFUlQoISJjYW5ub3QgcGFz
cyBhcmd1bWVudHMgZm9yIHRoaXMgY2FsbGJhY2shIik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmll
dywgQ2FsbEJhY2tJbmZvPGNhbGxiYWNrVHlwZT46Om5hbWUoKSwgc3RhdGljX2Nhc3Q8dm9pZCo+
KGFyZ3VtZW50KSk7CisgICAgfQorCisgICAgdm9pZCBjYWxsKGNvbnN0IFN0cmluZyYgYXJnKQor
ICAgIHsKKyAgICAgICAgY2FsbChjb25zdF9jYXN0PGNoYXIqPihhcmcudXRmOCgpLmRhdGEoKSkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBFdmFzX09iamVjdCogbV92aWV3OworfTsKKworI2Rl
ZmluZSBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKGNhbGxiYWNrVHlwZSwgc3RyaW5nLCB0eXBl
KSBcCit0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKK3N0cnVjdCBDYWxsQmFja0luZm88Y2FsbGJhY2tUeXBlPiB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHR5cGVkZWYgdHlwZSBUeXBlOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIGlubGluZSBjb25zdCBjaGFy
KiBuYW1lKCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1
cm4gc3RyaW5nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgaGFzQXJndW1lbnRzKCkgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisjZGVmaW5lIERFQ0xBUkVf
RVdLX1ZJRVdfU0lHTkFMKGNhbGxiYWNrVHlwZSwgc3RyaW5nKSAgICAgICAgIFwKK3RlbXBsYXRl
IDw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
c3RydWN0IENhbGxCYWNrSW5mbzxjYWxsYmFja1R5cGU+IHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgdHlwZWRlZiB2b2lkKiBUeXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIG5hbWUoKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBzdHJpbmc7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRp
YyBpbmxpbmUgYm9vbCBoYXNBcmd1bWVudHMoKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCit9CisKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRG93
bmxvYWRKb2JDYW5jZWxsZWQsICJkb3dubG9hZCxjYW5jZWxsZWQiLCBFd2tfRG93bmxvYWRfSm9i
Kik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKERvd25sb2FkSm9iRmFpbGVkLCAiZG93bmxv
YWQsZmFpbGVkIiwgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciopOworREVDTEFSRV9FV0tfVklFV19D
QUxMQkFDSyhEb3dubG9hZEpvYkZpbmlzaGVkLCAiZG93bmxvYWQsZmluaXNoZWQiLCBFd2tfRG93
bmxvYWRfSm9iKik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKERvd25sb2FkSm9iUmVxdWVz
dGVkLCAiZG93bmxvYWQscmVxdWVzdCIsIEV3a19Eb3dubG9hZF9Kb2IqKTsKK0RFQ0xBUkVfRVdL
X1ZJRVdfQ0FMTEJBQ0soTmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0LCAiZm9ybSxzdWJtaXNzaW9u
LHJlcXVlc3QiLCBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QqKTsKK0RFQ0xBUkVfRVdLX1ZJ
RVdfQ0FMTEJBQ0soTG9hZEVycm9yLCAibG9hZCxlcnJvciIsIEV3a19FcnJvciopOworREVDTEFS
RV9FV0tfVklFV19TSUdOQUwoTG9hZEZpbmlzaGVkLCAibG9hZCxmaW5pc2hlZCIpOworREVDTEFS
RV9FV0tfVklFV19DQUxMQkFDSyhMb2FkUHJvZ3Jlc3MsICJsb2FkLHByb2dyZXNzIiwgIGRvdWJs
ZSopOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhQcm92aXNpb25hbExvYWRGYWlsZWQsICJs
b2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIsIEV3a19FcnJvciopOworREVDTEFSRV9FV0tfVklFV19T
SUdOQUwoUHJvdmlzaW9uYWxMb2FkUmVkaXJlY3QsICJsb2FkLHByb3Zpc2lvbmFsLHJlZGlyZWN0
Iik7CitERUNMQVJFX0VXS19WSUVXX1NJR05BTChQcm92aXNpb25hbExvYWRTdGFydGVkLCAibG9h
ZCxwcm92aXNpb25hbCxzdGFydGVkIik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFJlc291
cmNlTG9hZFN0YXJ0ZWQsICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsIEV3a19SZXNvdXJjZV9SZXF1
ZXN0Kik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFJlc291cmNlTG9hZFJlc3BvbnNlLCAi
cmVzb3VyY2UscmVxdWVzdCxyZXNwb25zZSIsIEV3a19SZXNvdXJjZV9Mb2FkX1Jlc3BvbnNlKik7
CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFJlc291cmNlTG9hZEZhaWxlZCwgInJlc291cmNl
LHJlcXVlc3QsZmFpbGVkIiwgRXdrX1Jlc291cmNlX0xvYWRfRXJyb3IqKTsKK0RFQ0xBUkVfRVdL
X1ZJRVdfQ0FMTEJBQ0soUmVzb3VyY2VMb2FkRmluaXNoZWQsICJyZXNvdXJjZSxyZXF1ZXN0LGZp
bmlzaGVkIiwgRXdrX1Jlc291cmNlKik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFJlc291
cmNlUmVxdWVzdFNlbnQsICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiLCBFd2tfUmVzb3VyY2VfUmVx
dWVzdCopOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhOYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24sICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlvbiIsIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9E
ZWNpc2lvbiopOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhOZXdXaW5kb3dQb2xpY3lEZWNp
c2lvbiwgInBvbGljeSxkZWNpc2lvbixuZXcsd2luZG93IiwgRXdrX05hdmlnYXRpb25fUG9saWN5
X0RlY2lzaW9uKik7CitERUNMQVJFX0VXS19WSUVXX1NJR05BTChCYWNrRm9yd2FyZExpc3RDaGFu
Z2UsICJiYWNrLGZvcndhcmQsbGlzdCxjaGFuZ2VkIik7CitERUNMQVJFX0VXS19WSUVXX0NBTExC
QUNLKFRpdGxlQ2hhbmdlLCAidGl0bGUsY2hhbmdlZCIsIGNoYXIqKTsKK0RFQ0xBUkVfRVdLX1ZJ
RVdfU0lHTkFMKFRvb2x0aXBUZXh0VW5zZXQsICJ0b29sdGlwLHRleHQsdW5zZXQiKTsKK0RFQ0xB
UkVfRVdLX1ZJRVdfQ0FMTEJBQ0soVG9vbHRpcFRleHRTZXQsICJ0b29sdGlwLHRleHQsc2V0Iiwg
Y2hhciopOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhUZXh0Rm91bmQsICJ0ZXh0LGZvdW5k
IiwgdW5zaWduZWQqKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soV2ViUHJvY2Vzc0NyYXNo
ZWQsICJ3ZWJwcm9jZXNzLGNyYXNoZWQiLCBib29sKik7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhJbnRlbnRSZXF1ZXN0LCAiaW50ZW50LHJlcXVl
c3QsbmV3IiwgRXdrX0ludGVudCopOworI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RB
RykKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soSW50ZW50U2VydmljZVJlZ2lzdHJhdGlvbiwg
ImludGVudCxzZXJ2aWNlLHJlZ2lzdGVyIiwgRXdrX0ludGVudF9TZXJ2aWNlKik7CisjZW5kaWYK
KworfQorCisjZW5kaWYgLy8gI2lmbmRlZiBFd2tWaWV3Q2FsbGJhY2tzX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAppbmRleCBhYjhmNGUw
Li4xNDJmYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuY3BwCkBAIC0yNzAsNjIgKzI3MCw2IEBAIHZvaWQgRXdrVmlld0ltcGw6OnJlZHJh
d1JlZ2lvbihjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIG1fZGlydHlSZWN0cy5hcHBlbmQocmVj
dCk7CiB9CiAKLS8qKgotICogQGludGVybmFsCi0gKiBBIGRvd25sb2FkIGZvciB0aGF0IHZpZXcg
d2FzIGNhbmNlbGxlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJkb3dubG9hZCxjYW5jZWxsZWQi
IHdpdGggcG9pbnRlciB0byBhIEV3a19Eb3dubG9hZF9Kb2IuCi0gKi8KLXZvaWQgRXdrVmlld0lt
cGw6OmluZm9ybURvd25sb2FkSm9iQ2FuY2VsbGVkKEV3a19Eb3dubG9hZF9Kb2IqIGRvd25sb2Fk
KQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiZG93bmxv
YWQsY2FuY2VsbGVkIiwgZG93bmxvYWQpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogQSBk
b3dubG9hZCBmb3IgdGhhdCB2aWV3IGhhcyBmYWlsZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAi
ZG93bmxvYWQsZmFpbGVkIiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfRG93bmxvYWRfSm9iX0Vycm9y
LgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Eb3dubG9hZEpvYkZhaWxlZChFd2tfRG93
bmxvYWRfSm9iKiBkb3dubG9hZCwgRXdrX0Vycm9yKiBlcnJvcikKLXsKLSAgICBFd2tfRG93bmxv
YWRfSm9iX0Vycm9yIGRvd25sb2FkRXJyb3IgPSB7IGRvd25sb2FkLCBlcnJvciB9OwotICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiZG93bmxvYWQsZmFpbGVkIiwg
JmRvd25sb2FkRXJyb3IpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogQSBkb3dubG9hZCBm
b3IgdGhhdCB2aWV3IGZpbmlzaGVkIHN1Y2Nlc3NmdWxseS4KLSAqCi0gKiBFbWl0cyBzaWduYWw6
ICJkb3dubG9hZCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvIGEgRXdrX0Rvd25sb2FkX0pvYi4K
LSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtRG93bmxvYWRKb2JGaW5pc2hlZChFd2tfRG93
bmxvYWRfSm9iKiBkb3dubG9hZCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgImRvd25sb2FkLGZpbmlzaGVkIiwgZG93bmxvYWQpOwotfQotCi0vKioKLSAq
IEBpbnRlcm5hbAotICogQSBuZXcgZG93bmxvYWQgaGFzIGJlZW4gcmVxdWVzdGVkIGZvciB0aGF0
IHZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFsOiAiZG93bmxvYWQscmVxdWVzdCIgd2l0aCBwb2lu
dGVyIHRvIGEgRXdrX0Rvd25sb2FkX0pvYi4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3Jt
RG93bmxvYWRKb2JSZXF1ZXN0ZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQpCi17Ci0gICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJkb3dubG9hZCxyZXF1ZXN0
IiwgZG93bmxvYWQpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3JtcyB0aGF0IGEg
Zm9ybSByZXF1ZXN0IGlzIGFib3V0IHRvIGJlIHN1Ym1pdHRlZC4KLSAqCi0gKiBFbWl0cyBzaWdu
YWw6ICJmb3JtLHN1Ym1pc3Npb24scmVxdWVzdCIgd2l0aCBwb2ludGVyIHRvIEV3a19Gb3JtX1N1
Ym1pc3Npb25fUmVxdWVzdC4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtTmV3Rm9ybVN1
Ym1pc3Npb25SZXF1ZXN0KEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdCogcmVxdWVzdCkKLXsK
LSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImZvcm0sc3VibWlz
c2lvbixyZXF1ZXN0IiwgcmVxdWVzdCk7Ci19Ci0KICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiAvKioKICAqIEBpbnRlcm5hbApAQCAtMzY3LDUxICszMTEsNiBAQCB2b2lkIEV3a1ZpZXdJbXBs
OjpzZXRJbWFnZURhdGEodm9pZCogaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfY29weV9zZXQoc2QtPmltYWdlLCBpbWFnZURhdGEpOwog
fQogCi0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3JtcyBsb2FkIGZhaWxlZCB3aXRoIGVycm9y
IGluZm9ybWF0aW9uLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQsZXJyb3IiIHdpdGggcG9p
bnRlciB0byBFd2tfRXJyb3IuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUxvYWRFcnJv
cihFd2tfRXJyb3IqIGVycm9yKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobV92aWV3LCAibG9hZCxlcnJvciIsIGVycm9yKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIGluZm9ybXMgbG9hZCBmaW5pc2hlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLGZp
bmlzaGVkIi4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtTG9hZEZpbmlzaGVkKCkKLXsK
LSAgICBpbmZvcm1VUkxDaGFuZ2UoKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgImxvYWQsZmluaXNoZWQiLCAwKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIGluZm9ybXMgbG9hZCBwcm9ncmVzcyBjaGFuZ2VkLgotICoKLSAqIEVtaXRzIHNpZ25hbDog
ImxvYWQscHJvZ3Jlc3MiIHdpdGggcG9pbnRlciB0byBhIGRvdWJsZSBmcm9tIDAuMCB0byAxLjAu
Ci0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUxvYWRQcm9ncmVzcyhkb3VibGUgcHJvZ3Jl
c3MpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2Fk
LHByb2dyZXNzIiwgJnByb2dyZXNzKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIGluZm9y
bXMgdmlldyBwcm92aXNpb25hbCBsb2FkIGZhaWxlZCB3aXRoIGVycm9yIGluZm9ybWF0aW9uLgot
ICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9uYWwsZmFpbGVkIiB3aXRoIHBvaW50
ZXIgdG8gRXdrX0Vycm9yLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Qcm92aXNpb25h
bExvYWRGYWlsZWQoRXdrX0Vycm9yKiBlcnJvcikKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKG1fdmlldywgImxvYWQscHJvdmlzaW9uYWwsZmFpbGVkIiwgZXJyb3IpOwot
fQotCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2b2lkIEV3a1ZpZXdJbXBsOjppbmZv
cm1Mb2FkQ29tbWl0dGVkKCkKIHsKQEAgLTQxOSwxNDYgKzMxOCw2IEBAIHZvaWQgRXdrVmlld0lt
cGw6OmluZm9ybUxvYWRDb21taXR0ZWQoKQogfQogI2VuZGlmCiAKLS8qKgotICogQGludGVybmFs
Ci0gKiBpbmZvcm1zIHZpZXcgcmVjZWl2ZWQgcmVkaXJlY3QgZm9yIHByb3Zpc2lvbmFsIGxvYWQu
Ci0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCxyZWRpcmVjdCIuCi0gKi8K
LXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVByb3Zpc2lvbmFsTG9hZFJlZGlyZWN0KCkKLXsKLSAg
ICBpbmZvcm1VUkxDaGFuZ2UoKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG1fdmlldywgImxvYWQscHJvdmlzaW9uYWwscmVkaXJlY3QiLCAwKTsKLX0KLQotLyoqCi0gKiBA
aW50ZXJuYWwKLSAqIGluZm9ybXMgdmlldyBwcm92aXNpb25hbCBsb2FkIHN0YXJ0ZWQuCi0gKgot
ICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCxzdGFydGVkIi4KLSAqLwotdm9pZCBF
d2tWaWV3SW1wbDo6aW5mb3JtUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpCi17Ci0gICAgaW5mb3Jt
VVJMQ2hhbmdlKCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcs
ICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCAwKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIGluZm9ybXMgdGhhdCBhIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uIHNob3VsZCBiZSB0
YWtlbi4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlvbiIu
Ci0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybU5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihF
d2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lzaW9uKQotewotICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicG9saWN5LGRlY2lzaW9uLG5hdmlnYXRp
b24iLCBkZWNpc2lvbik7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIHRoYXQg
YSBuZXcgd2luZG93IHBvbGljeSBkZWNpc2lvbiBzaG91bGQgYmUgdGFrZW4uCi0gKgotICogRW1p
dHMgc2lnbmFsOiAicG9saWN5LGRlY2lzaW9uLG5ldyx3aW5kb3ciLgotICovCi12b2lkIEV3a1Zp
ZXdJbXBsOjppbmZvcm1OZXdXaW5kb3dQb2xpY3lEZWNpc2lvbihFd2tfTmF2aWdhdGlvbl9Qb2xp
Y3lfRGVjaXNpb24qIGRlY2lzaW9uKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwobV92aWV3LCAicG9saWN5LGRlY2lzaW9uLG5ldyx3aW5kb3ciLCBkZWNpc2lvbik7Ci19
Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBMb2FkIHdhcyBpbml0aWF0ZWQgZm9yIGEgcmVzb3Vy
Y2UgaW4gdGhlIHZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxu
ZXciIHdpdGggcG9pbnRlciB0byByZXNvdXJjZSByZXF1ZXN0LgotICovCi12b2lkIEV3a1ZpZXdJ
bXBsOjppbmZvcm1SZXNvdXJjZUxvYWRTdGFydGVkKEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3
a19VcmxfUmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICBFd2tfUmVzb3VyY2VfUmVxdWVzdCByZXNv
dXJjZVJlcXVlc3QgPSB7cmVzb3VyY2UsIHJlcXVlc3QsIDB9OwotCi0gICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsICZyZXNv
dXJjZVJlcXVlc3QpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVjZWl2ZWQgYSByZXNw
b25zZSB0byBhIHJlc291cmNlIGxvYWQgcmVxdWVzdCBpbiB0aGUgdmlldy4KLSAqCi0gKiBFbWl0
cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiB3aXRoIHBvaW50ZXIgdG8gcmVz
b3VyY2UgcmVzcG9uc2UuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVJlc291cmNlTG9h
ZFJlc3BvbnNlKEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVzcG9uc2UqIHJlc3Bv
bnNlKQotewotICAgIEV3a19SZXNvdXJjZV9Mb2FkX1Jlc3BvbnNlIHJlc291cmNlTG9hZFJlc3Bv
bnNlID0ge3Jlc291cmNlLCByZXNwb25zZX07Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiwgJnJlc291cmNlTG9h
ZFJlc3BvbnNlKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIEZhaWxlZCBsb2FkaW5nIGEg
cmVzb3VyY2UgaW4gdGhlIHZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVx
dWVzdCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSBsb2FkIGVycm9yLgot
ICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1SZXNvdXJjZUxvYWRGYWlsZWQoRXdrX1Jlc291
cmNlKiByZXNvdXJjZSwgRXdrX0Vycm9yKiBlcnJvcikKLXsKLSAgICBFd2tfUmVzb3VyY2VfTG9h
ZF9FcnJvciByZXNvdXJjZUxvYWRFcnJvciA9IHtyZXNvdXJjZSwgZXJyb3J9OwotICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCxmYWls
ZWQiLCAmcmVzb3VyY2VMb2FkRXJyb3IpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogRmlu
aXNoZWQgbG9hZGluZyBhIHJlc291cmNlIGluIHRoZSB2aWV3LgotICoKLSAqIEVtaXRzIHNpZ25h
bDogInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiIHdpdGggcG9pbnRlciB0byB0aGUgcmVzb3Vy
Y2UuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVJlc291cmNlTG9hZEZpbmlzaGVkKEV3
a19SZXNvdXJjZSogcmVzb3VyY2UpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiwgcmVzb3VyY2UpOwotfQot
Ci0vKioKLSAqIEBpbnRlcm5hbAotICogUmVxdWVzdCB3YXMgc2VudCBmb3IgYSByZXNvdXJjZSBp
biB0aGUgdmlldy4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQi
IHdpdGggcG9pbnRlciB0byByZXNvdXJjZSByZXF1ZXN0IGFuZCBwb3NzaWJsZSByZWRpcmVjdCBy
ZXNwb25zZS4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtUmVzb3VyY2VSZXF1ZXN0U2Vu
dChFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QsIEV3a19V
cmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UpCi17Ci0gICAgRXdrX1Jlc291cmNlX1JlcXVl
c3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
fTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInJlc291cmNl
LHJlcXVlc3Qsc2VudCIsICZyZXNvdXJjZVJlcXVlc3QpOwotfQotCi0vKioKLSAqIEBpbnRlcm5h
bAotICogVGhlIHZpZXcgdGl0bGUgd2FzIGNoYW5nZWQgYnkgdGhlIGZyYW1lIGxvYWRlci4KLSAq
Ci0gKiBFbWl0cyBzaWduYWw6ICJ0aXRsZSxjaGFuZ2VkIiB3aXRoIHBvaW50ZXIgdG8gbmV3IHRp
dGxlIHN0cmluZy4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtVGl0bGVDaGFuZ2UoY29u
c3QgU3RyaW5nJiB0aXRsZSkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG1fdmlldywgInRpdGxlLGNoYW5nZWQiLCBjb25zdF9jYXN0PGNoYXIqPih0aXRsZS51dGY4KCku
ZGF0YSgpKSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6
OmluZm9ybVRvb2x0aXBUZXh0Q2hhbmdlKGNvbnN0IFN0cmluZyYgdGV4dCkKLXsKLSAgICBpZiAo
dGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
bV92aWV3LCAidG9vbHRpcCx0ZXh0LHVuc2V0IiwgMCk7Ci0gICAgZWxzZQotICAgICAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInRvb2x0aXAsdGV4dCxzZXQiLCBj
b25zdF9jYXN0PGNoYXIqPih0ZXh0LnV0ZjgoKS5kYXRhKCkpKTsKLQotfQotCi0vKioKLSAqIEBp
bnRlcm5hbAotICogaW5mb3JtcyB0aGF0IHRoZSByZXF1ZXN0ZWQgdGV4dCB3YXMgZm91bmQuCi0g
KgotICogRW1pdHMgc2lnbmFsOiAidGV4dCxmb3VuZCIgd2l0aCB0aGUgbnVtYmVyIG9mIG1hdGNo
ZXMuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVRleHRGb3VuZCh1bnNpZ25lZCBtYXRj
aENvdW50KQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAi
dGV4dCxmb3VuZCIsICZtYXRjaENvdW50KTsKLX0KLQogSW50U2l6ZSBFd2tWaWV3SW1wbDo6c2l6
ZSgpIGNvbnN0CiB7CiAgICAgaW50IHdpZHRoLCBoZWlnaHQ7CkBAIC02ODksMzIgKzQ0OCw2IEBA
IHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUljb25DaGFuZ2UoKQogICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiaWNvbixjaGFuZ2VkIiwgMCk7CiB9CiAKLSNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCi0vKioKLSAqIEBpbnRlcm5hbAotICogVGhlIHZpZXcgcmVjZWl2
ZWQgYSBuZXcgaW50ZW50IHJlcXVlc3QuCi0gKgotICogRW1pdHMgc2lnbmFsOiAiaW50ZW50LHJl
cXVlc3QsbmV3IiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfSW50ZW50LgotICovCi12b2lkIEV3a1Zp
ZXdJbXBsOjppbmZvcm1JbnRlbnRSZXF1ZXN0KEV3a19JbnRlbnQqIGV3a0ludGVudCkKLXsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImludGVudCxyZXF1ZXN0
LG5ldyIsIGV3a0ludGVudCk7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfSU5URU5UU19U
QUcpCi0vKioKLSAqIEBpbnRlcm5hbAotICogVGhlIHZpZXcgcmVjZWl2ZWQgYSBuZXcgaW50ZW50
IHNlcnZpY2UgcmVnaXN0cmF0aW9uLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImludGVudCxzZXJ2
aWNlLHJlZ2lzdGVyIiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfSW50ZW50X1NlcnZpY2UuCi0gKi8K
LXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUludGVudFNlcnZpY2VSZWdpc3RyYXRpb24oRXdrX0lu
dGVudF9TZXJ2aWNlKiBld2tJbnRlbnRTZXJ2aWNlKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiaW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBld2tJbnRl
bnRTZXJ2aWNlKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogYm9vbCBFd2tWaWV3SW1wbDo6Y3JlYXRlR0xT
dXJmYWNlKGNvbnN0IEludFNpemUmIHZpZXdTaXplKQogewpAQCAtODMzLDM3ICs1NjYsNiBAQCB2
b2lkIEV3a1ZpZXdJbXBsOjpkaXNtaXNzQ29sb3JQaWNrZXIoKQogfQogI2VuZGlmCiAKLS8qKgot
ICogQGludGVybmFsCi0gKiBpbmZvcm1zIHRoYXQgdGhlIHZpZXcncyBiYWNrIC8gZm9yd2FyZCBs
aXN0IGhhcyBjaGFuZ2VkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImJhY2ssZm9yd2FyZCxsaXN0
LGNoYW5nZWQiLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1CYWNrRm9yd2FyZExpc3RD
aGFuZ2UoKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAi
YmFjayxmb3J3YXJkLGxpc3QsY2hhbmdlZCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAot
ICogV2ViIHByb2Nlc3MgaGFzIGNyYXNoZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAid2VicHJv
Y2VzcyxjcmFzaGVkIiB3aXRoIHBvaW50ZXIgdG8gY3Jhc2ggaGFuZGxpbmcgYm9vbGVhbi4KLSAq
Lwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtV2ViUHJvY2Vzc0NyYXNoZWQoKQotewotICAgIGJv
b2wgaGFuZGxlZCA9IGZhbHNlOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
bV92aWV3LCAid2VicHJvY2VzcyxjcmFzaGVkIiwgJmhhbmRsZWQpOwotCi0gICAgaWYgKCFoYW5k
bGVkKSB7Ci0gICAgICAgIENTdHJpbmcgdXJsID0gbV9wYWdlUHJveHktPnVybEF0UHJvY2Vzc0V4
aXQoKS51dGY4KCk7Ci0gICAgICAgIFdBUk4oIldBUk5JTkc6IFRoZSB3ZWIgcHJvY2VzcyBleHBl
cmllbmNlZCBhIGNyYXNoIG9uICclcycuXG4iLCB1cmwuZGF0YSgpKTsKLQotICAgICAgICAvLyBE
aXNwbGF5IGFuIGVycm9yIHBhZ2UKLSAgICAgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCht
X3ZpZXcsICJUaGUgd2ViIHByb2Nlc3MgaGFzIGNyYXNoZWQuIiwgMCwgdXJsLmRhdGEoKSk7Ci0g
ICAgfQotfQotCiB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Db250ZW50c1NpemVDaGFuZ2UoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIHsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCBmNGU5
MTc3Li42NDQ2M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXdJbXBsLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgRXdrVmlld0ltcGxfaAogI2Rl
ZmluZSBFd2tWaWV3SW1wbF9oCiAKKyNpbmNsdWRlICJFd2tWaWV3Q2FsbGJhY2tzLmgiCiAjaW5j
bHVkZSAiUmVmUHRyRWZsLmgiCiAjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5j
bHVkZSAiV0tSZXRhaW5QdHIuaCIKQEAgLTE3MCw0NyArMTcxLDE4IEBAIHB1YmxpYzoKICAgICBi
b29sIHJlcXVlc3RKU0NvbmZpcm1Qb3B1cChjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3Nh
Z2UpOwogICAgIFdLRWluYVNoYXJlZFN0cmluZyByZXF1ZXN0SlNQcm9tcHRQb3B1cChjb25zdCBX
S0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgZGVm
YXVsdFZhbHVlKTsKIAotICAgIHZvaWQgaW5mb3JtRG93bmxvYWRKb2JDYW5jZWxsZWQoRXdrX0Rv
d25sb2FkX0pvYiogZG93bmxvYWQpOwotICAgIHZvaWQgaW5mb3JtRG93bmxvYWRKb2JGYWlsZWQo
RXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQsIEV3a19FcnJvciogZXJyb3IpOwotICAgIHZvaWQg
aW5mb3JtRG93bmxvYWRKb2JGaW5pc2hlZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCk7Ci0g
ICAgdm9pZCBpbmZvcm1Eb3dubG9hZEpvYlJlcXVlc3RlZChFd2tfRG93bmxvYWRfSm9iKiBkb3du
bG9hZCk7CisgICAgdGVtcGxhdGU8RXdrVmlld0NhbGxiYWNrczo6Q2FsbGJhY2tUeXBlIGNhbGxi
YWNrVHlwZT4KKyAgICBFd2tWaWV3Q2FsbGJhY2tzOjpDYWxsQmFjazxjYWxsYmFja1R5cGU+IHNt
YXJ0Q2FsbGJhY2soKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEV3a1ZpZXdDYWxsYmFj
a3M6OkNhbGxCYWNrPGNhbGxiYWNrVHlwZT4obV92aWV3KTsKKyAgICB9CiAKLSAgICB2b2lkIGlu
Zm9ybU5ld0Zvcm1TdWJtaXNzaW9uUmVxdWVzdChFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Qq
IHJlcXVlc3QpOwotICAgIHZvaWQgaW5mb3JtTG9hZEVycm9yKEV3a19FcnJvciogZXJyb3IpOwot
ICAgIHZvaWQgaW5mb3JtTG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBpbmZvcm1Mb2FkUHJvZ3Jl
c3MoZG91YmxlIHByb2dyZXNzKTsKLSAgICB2b2lkIGluZm9ybVByb3Zpc2lvbmFsTG9hZEZhaWxl
ZChFd2tfRXJyb3IqIGVycm9yKTsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2
b2lkIGluZm9ybUxvYWRDb21taXR0ZWQoKTsKICNlbmRpZgotICAgIHZvaWQgaW5mb3JtUHJvdmlz
aW9uYWxMb2FkUmVkaXJlY3QoKTsKLSAgICB2b2lkIGluZm9ybVByb3Zpc2lvbmFsTG9hZFN0YXJ0
ZWQoKTsKLQotICAgIHZvaWQgaW5mb3JtUmVzb3VyY2VMb2FkU3RhcnRlZChFd2tfUmVzb3VyY2Uq
IHJlc291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpOwotICAgIHZvaWQgaW5mb3JtUmVz
b3VyY2VMb2FkUmVzcG9uc2UoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXNwb25z
ZSogcmVzcG9uc2UpOwotICAgIHZvaWQgaW5mb3JtUmVzb3VyY2VMb2FkRmFpbGVkKEV3a19SZXNv
dXJjZSogcmVzb3VyY2UsIEV3a19FcnJvciogZXJyb3IpOwotICAgIHZvaWQgaW5mb3JtUmVzb3Vy
Y2VMb2FkRmluaXNoZWQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSk7Ci0gICAgdm9pZCBpbmZvcm1S
ZXNvdXJjZVJlcXVlc3RTZW50KEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVxdWVz
dCogcmVxdWVzdCwgRXdrX1VybF9SZXNwb25zZSogcmVkaXJlY3RSZXNwb25zZSk7Ci0KLSAgICB2
b2lkIGluZm9ybU5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihFd2tfTmF2aWdhdGlvbl9Qb2xpY3lf
RGVjaXNpb24qIGRlY2lzaW9uKTsKLSAgICB2b2lkIGluZm9ybU5ld1dpbmRvd1BvbGljeURlY2lz
aW9uKEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pOwotICAgIHZvaWQg
aW5mb3JtQmFja0ZvcndhcmRMaXN0Q2hhbmdlKCk7Ci0KLSAgICB2b2lkIGluZm9ybVRpdGxlQ2hh
bmdlKGNvbnN0IFN0cmluZyYgdGl0bGUpOwotICAgIHZvaWQgaW5mb3JtVG9vbHRpcFRleHRDaGFu
Z2UoY29uc3QgU3RyaW5nJiB0ZXh0KTsKLSAgICB2b2lkIGluZm9ybVRleHRGb3VuZCh1bnNpZ25l
ZCBtYXRjaENvdW50KTsKLSAgICB2b2lkIGluZm9ybUljb25DaGFuZ2UoKTsKLSAgICB2b2lkIGlu
Zm9ybVdlYlByb2Nlc3NDcmFzaGVkKCk7CiAgICAgdm9pZCBpbmZvcm1Db250ZW50c1NpemVDaGFu
Z2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25n
IGluZm9ybURhdGFiYXNlUXVvdGFSZWFjaGVkKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3Rh
LCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxv
bmcgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdl
KTsKLSAgICB2b2lkIGluZm9ybVVSTENoYW5nZSgpOwogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQotICAgIHZvaWQgaW5mb3JtSW50ZW50UmVxdWVzdChFd2tfSW50ZW50KiBld2tJbnRlbnQpOwot
I2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICB2b2lkIGluZm9ybUludGVu
dFNlcnZpY2VSZWdpc3RyYXRpb24oRXdrX0ludGVudF9TZXJ2aWNlKiBld2tJbnRlbnRTZXJ2aWNl
KTsKLSNlbmRpZgogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFdlYktpdDo6UGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCogcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dCgpIHsgcmV0dXJuIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5nZXQoKTsgfQogICAg
IFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlciogcGFnZVZpZXdwb3J0Q29udHJvbGxlcigp
IHsgcmV0dXJuIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci5nZXQoKTsgfQpAQCAtMjIyLDEwICsx
OTQsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRFdmFzR2xTdXJmYWNlKCkgeyBtX2V2YXNH
bFN1cmZhY2UgPSAwOyB9CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBuZWVkcyByZWZhY3Rvcmlu
ZyAoc3BsaXQgY2FsbGJhY2sgaW52b2tlKQorICAgIHZvaWQgaW5mb3JtVVJMQ2hhbmdlKCk7CisK
IHByaXZhdGU6CiAgICAgaW5saW5lIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSgpOwog
ICAgIHZvaWQgZGlzcGxheVRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8RXdrVmlld0ltcGw+Kik7
CiAKKyAgICB2b2lkIGluZm9ybUljb25DaGFuZ2UoKTsKKwogICAgIHN0YXRpYyB2b2lkIG9uTW91
c2VEb3duKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbyk7
CiAgICAgc3RhdGljIHZvaWQgb25Nb3VzZVVwKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVj
dCosIHZvaWQqIGV2ZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgb25Nb3VzZU1vdmUodm9pZCog
ZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcAppbmRleCA1
ZjM1OWI1Li4xYWE2NjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCkBAIC0zMiw2ICszMiw5IEBACiAjaW5jbHVkZSAiV0tT
dHJpbmcuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdr
X2Vycm9yX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgRXdrVmlld0NhbGxiYWNrczsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ5LDcgKzUy
LDcgQEAgV0tTdHJpbmdSZWYgRG93bmxvYWRNYW5hZ2VyRWZsOjpkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHQKIAogICAgIC8vIFdlIHNlbmQgdGhlIG5ldyBk
b3dubG9hZCBzaWduYWwgb24gdGhlIEV3a19WaWV3IG9ubHkgb25jZSB3ZSBoYXZlIHJlY2VpdmVk
IHRoZSByZXNwb25zZQogICAgIC8vIGFuZCB0aGUgc3VnZ2VzdGVkIGZpbGUgbmFtZS4KLSAgICBk
b3dubG9hZC0+dmlld0ltcGwoKS0+aW5mb3JtRG93bmxvYWRKb2JSZXF1ZXN0ZWQoZG93bmxvYWQp
OworICAgIGRvd25sb2FkLT52aWV3SW1wbCgpLT5zbWFydENhbGxiYWNrPERvd25sb2FkSm9iUmVx
dWVzdGVkPigpLmNhbGwoZG93bmxvYWQpOwogCiAgICAgLy8gRG93bmxvYWRTb3VwIGV4cGVjdHMg
dGhlIGRlc3RpbmF0aW9uIHRvIGJlIGEgVVJMLgogICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IEFT
Q0lJTGl0ZXJhbCgiZmlsZTovLyIpICsgU3RyaW5nOjpmcm9tVVRGOChkb3dubG9hZC0+ZGVzdGlu
YXRpb24oKSk7CkBAIC04OCw3ICs5MSw4IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRG
YWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiB3a0Rvd25sb2FkLCBXS0Vycm9yCiAKICAg
ICBPd25QdHI8RXdrX0Vycm9yPiBld2tFcnJvciA9IEV3a19FcnJvcjo6Y3JlYXRlKGVycm9yKTsK
ICAgICBkb3dubG9hZC0+c2V0U3RhdGUoRVdLX0RPV05MT0FEX0pPQl9TVEFURV9GQUlMRUQpOwot
ICAgIGRvd25sb2FkLT52aWV3SW1wbCgpLT5pbmZvcm1Eb3dubG9hZEpvYkZhaWxlZChkb3dubG9h
ZCwgZXdrRXJyb3IuZ2V0KCkpOworICAgIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IgZG93bmxvYWRF
cnJvciA9IHsgZG93bmxvYWQsIGV3a0Vycm9yLmdldCgpIH07CisgICAgZG93bmxvYWQtPnZpZXdJ
bXBsKCktPnNtYXJ0Q2FsbGJhY2s8RG93bmxvYWRKb2JGYWlsZWQ+KCkuY2FsbCgmZG93bmxvYWRF
cnJvcik7CiAgICAgZG93bmxvYWRNYW5hZ2VyLT51bnJlZ2lzdGVyRG93bmxvYWRKb2IoZG93bmxv
YWRJZCk7CiB9CiAKQEAgLTEwMCw3ICsxMDQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlckVmbDo6
ZGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiB3a0Rvd25sb2FkLCBjb25zdAog
ICAgIEFTU0VSVChkb3dubG9hZCk7CiAKICAgICBkb3dubG9hZC0+c2V0U3RhdGUoRVdLX0RPV05M
T0FEX0pPQl9TVEFURV9DQU5DRUxMRUQpOwotICAgIGRvd25sb2FkLT52aWV3SW1wbCgpLT5pbmZv
cm1Eb3dubG9hZEpvYkNhbmNlbGxlZChkb3dubG9hZCk7CisgICAgZG93bmxvYWQtPnZpZXdJbXBs
KCktPnNtYXJ0Q2FsbGJhY2s8RG93bmxvYWRKb2JDYW5jZWxsZWQ+KCkuY2FsbChkb3dubG9hZCk7
CiAgICAgZG93bmxvYWRNYW5hZ2VyLT51bnJlZ2lzdGVyRG93bmxvYWRKb2IoZG93bmxvYWRJZCk7
CiB9CiAKQEAgLTExMiw3ICsxMTYsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlckVmbDo6ZGlkRmlu
aXNoKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiB3a0Rvd25sb2FkLCBjb25zdAogICAgIEFT
U0VSVChkb3dubG9hZCk7CiAKICAgICBkb3dubG9hZC0+c2V0U3RhdGUoRVdLX0RPV05MT0FEX0pP
Ql9TVEFURV9GSU5JU0hFRCk7Ci0gICAgZG93bmxvYWQtPnZpZXdJbXBsKCktPmluZm9ybURvd25s
b2FkSm9iRmluaXNoZWQoZG93bmxvYWQpOworICAgIGRvd25sb2FkLT52aWV3SW1wbCgpLT5zbWFy
dENhbGxiYWNrPERvd25sb2FkSm9iRmluaXNoZWQ+KCkuY2FsbChkb3dubG9hZCk7CiAgICAgZG93
bmxvYWRNYW5hZ2VyLT51bnJlZ2lzdGVyRG93bmxvYWRKb2IoZG93bmxvYWRJZCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwCmluZGV4IGE0
MzFhY2MuLjVlOTAwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
RmluZENsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9GaW5k
Q2xpZW50RWZsLmNwcApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgi
CiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tz
OworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBGaW5kQ2xpZW50RWZsKiB0
b0ZpbmRDbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTQwLDEzICs0MiwxMyBA
QCBzdGF0aWMgaW5saW5lIEZpbmRDbGllbnRFZmwqIHRvRmluZENsaWVudEVmbChjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQogdm9pZCBGaW5kQ2xpZW50RWZsOjpkaWRGaW5kU3RyaW5nKFdLUGFnZVJl
ZiwgV0tTdHJpbmdSZWYsIHVuc2lnbmVkIG1hdGNoQ291bnQsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCiB7CiAgICAgRmluZENsaWVudEVmbCogZmluZENsaWVudCA9IHRvRmluZENsaWVudEVmbChj
bGllbnRJbmZvKTsKLSAgICBmaW5kQ2xpZW50LT5tX3ZpZXdJbXBsLT5pbmZvcm1UZXh0Rm91bmQo
bWF0Y2hDb3VudCk7CisgICAgZmluZENsaWVudC0+bV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxU
ZXh0Rm91bmQ+KCkuY2FsbCgmbWF0Y2hDb3VudCk7CiB9CiAKIHZvaWQgRmluZENsaWVudEVmbDo6
ZGlkRmFpbFRvRmluZFN0cmluZyhXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQogewogICAgIEZpbmRDbGllbnRFZmwqIGZpbmRDbGllbnQgPSB0b0ZpbmRDbGll
bnRFZmwoY2xpZW50SW5mbyk7Ci0gICAgZmluZENsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtVGV4
dEZvdW5kKDApOworICAgIGZpbmRDbGllbnQtPm1fdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8VGV4
dEZvdW5kPigpLmNhbGwoKTsKIH0KIAogRmluZENsaWVudEVmbDo6RmluZENsaWVudEVmbChFd2tW
aWV3SW1wbCogdmlld0ltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL0Zvcm1DbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3Jt
Q2xpZW50RWZsLmNwcAppbmRleCA3NTQxZTI2Li41Yjg5MzA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNp
bmNsdWRlICJXS1BhZ2UuaCIKICNpbmNsdWRlICJld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3Rf
cHJpdmF0ZS5oIgogCit1c2luZyBuYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNrczsKKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIHN0YXRpYyBpbmxpbmUgRm9ybUNsaWVudEVmbCogdG9Gb3JtQ2xpZW50
RWZsKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC00Miw3ICs0NCw3IEBAIHZvaWQgRm9ybUNs
aWVudEVmbDo6d2lsbFN1Ym1pdEZvcm0oV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIC8qZnJhbWUqLywg
V0tGcmFtZVJlZiAvCiAgICAgRm9ybUNsaWVudEVmbCogZm9ybUNsaWVudCA9IHRvRm9ybUNsaWVu
dEVmbChjbGllbnRJbmZvKTsKIAogICAgIFJlZlB0cjxFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVl
c3Q+IHJlcXVlc3QgPSBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Q6OmNyZWF0ZSh2YWx1ZXMs
IGxpc3RlbmVyKTsKLSAgICBmb3JtQ2xpZW50LT5tX3ZpZXdJbXBsLT5pbmZvcm1OZXdGb3JtU3Vi
bWlzc2lvblJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CisgICAgZm9ybUNsaWVudC0+bV92aWV3SW1w
bC0+c21hcnRDYWxsYmFjazxOZXdGb3JtU3VibWlzc2lvblJlcXVlc3Q+KCkuY2FsbChyZXF1ZXN0
LmdldCgpKTsKIH0KIAogRm9ybUNsaWVudEVmbDo6Rm9ybUNsaWVudEVmbChFd2tWaWV3SW1wbCog
dmlld0ltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudElt
cGwuY3BwCmluZGV4IDNiM2I3YjYuLmJjNzRkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2IuaCIK
ICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKQEAgLTQ4LDYgKzQ5LDcgQEAKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKK3VzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApAQCAtMTE3LDEwICsxMTksMjEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJvY2Vzc0Rp
ZENyYXNoKCkKIHsKICAgICAvLyBDaGVjayBpZiBsb2FkaW5nIHdhcyBvbmdvaW5nLCB3aGVuIHdl
YiBwcm9jZXNzIGNyYXNoZWQuCiAgICAgZG91YmxlIGxvYWRQcm9ncmVzcyA9IGV3a192aWV3X2xv
YWRfcHJvZ3Jlc3NfZ2V0KG1fdmlld0ltcGwtPnZpZXcoKSk7Ci0gICAgaWYgKGxvYWRQcm9ncmVz
cyA+PSAwICYmIGxvYWRQcm9ncmVzcyA8IDEpCi0gICAgICAgIG1fdmlld0ltcGwtPmluZm9ybUxv
YWRQcm9ncmVzcygxKTsKKyAgICBpZiAobG9hZFByb2dyZXNzID49IDAgJiYgbG9hZFByb2dyZXNz
IDwgMSkgeworICAgICAgICBsb2FkUHJvZ3Jlc3MgPSAxOworICAgICAgICBtX3ZpZXdJbXBsLT5z
bWFydENhbGxiYWNrPExvYWRQcm9ncmVzcz4oKS5jYWxsKCZsb2FkUHJvZ3Jlc3MpOworICAgIH0K
IAotICAgIG1fdmlld0ltcGwtPmluZm9ybVdlYlByb2Nlc3NDcmFzaGVkKCk7CisgICAgYm9vbCBo
YW5kbGVkID0gZmFsc2U7CisgICAgbV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxXZWJQcm9jZXNz
Q3Jhc2hlZD4oKS5jYWxsKCZoYW5kbGVkKTsKKworICAgIGlmICghaGFuZGxlZCkgeworICAgICAg
ICBDU3RyaW5nIHVybCA9IG1fdmlld0ltcGwtPnBhZ2UoKS0+dXJsQXRQcm9jZXNzRXhpdCgpLnV0
ZjgoKTsKKyAgICAgICAgV0FSTigiV0FSTklORzogVGhlIHdlYiBwcm9jZXNzIGV4cGVyaWVuY2Vk
IGEgY3Jhc2ggb24gJyVzJy5cbiIsIHVybC5kYXRhKCkpOworCisgICAgICAgIC8vIERpc3BsYXkg
YW4gZXJyb3IgcGFnZQorICAgICAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKG1fdmlld0lt
cGwtPnZpZXcoKSwgIlRoZSB3ZWIgcHJvY2VzcyBoYXMgY3Jhc2hlZC4iLCAwLCB1cmwuZGF0YSgp
KTsKKyAgICB9CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJlbGF1bmNoUHJvY2Vzcygp
CkBAIC0xMzcsNyArMTUwLDEwIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQoKQog
CiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIG5ld1Rvb2xUaXApCiB7Ci0gICAgbV92aWV3SW1wbC0+aW5mb3JtVG9vbHRpcFRl
eHRDaGFuZ2UobmV3VG9vbFRpcCk7CisgICAgaWYgKG5ld1Rvb2xUaXAuaXNFbXB0eSgpKQorICAg
ICAgICBtX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFRvb2x0aXBUZXh0VW5zZXQ+KCkuY2FsbCgp
OworICAgIGVsc2UKKyAgICAgICAgbV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxUb29sdGlwVGV4
dFNldD4oKS5jYWxsKG5ld1Rvb2xUaXApOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRD
dXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwCmluZGV4IDdiZjZiZGEuLjYyNzhkYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwu
Y3BwCkBAIC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlX3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogCit1c2luZyBuYW1lc3BhY2UgRXdrVmlld0Nh
bGxiYWNrczsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBpbmxpbmUgUGFnZUxvYWRD
bGllbnRFZmwqIHRvUGFnZUxvYWRDbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAg
LTQ5LDcgKzUxLDcgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVRpdGxlRm9y
RnJhbWUoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiB0aXRsZSwgV0sKICAgICAgICAgcmV0dXJuOwog
CiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJ
bmZvKS0+dmlld0ltcGwoKTsKLSAgICB2aWV3SW1wbC0+aW5mb3JtVGl0bGVDaGFuZ2UodG9JbXBs
KHRpdGxlKS0+c3RyaW5nKCkpOworICAgIHZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFRpdGxlQ2hh
bmdlPigpLmNhbGwodG9JbXBsKHRpdGxlKS0+c3RyaW5nKCkpOwogfQogCiAjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQpAQCAtNTcsNyArNTksNyBAQCB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRS
ZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0ludGVudAogewog
ICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5m
byktPnZpZXdJbXBsKCk7CiAgICAgUmVmUHRyPEV3a19JbnRlbnQ+IGV3a0ludGVudCA9IEV3a19J
bnRlbnQ6OmNyZWF0ZShpbnRlbnQpOwotICAgIHZpZXdJbXBsLT5pbmZvcm1JbnRlbnRSZXF1ZXN0
KGV3a0ludGVudC5nZXQoKSk7CisgICAgdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8SW50ZW50UmVx
dWVzdD4oKS5jYWxsKGV3a0ludGVudC5nZXQoKSk7CiB9CiAjZW5kaWYKIApAQCAtNjYsMTQgKzY4
LDE1IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZy
YW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tJCiB7CiAgICAgRXdrVmlld0ltcGwqIHZpZXdJ
bXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKICAgICBS
ZWZQdHI8RXdrX0ludGVudF9TZXJ2aWNlPiBld2tJbnRlbnRTZXJ2aWNlID0gRXdrX0ludGVudF9T
ZXJ2aWNlOjpjcmVhdGUoc2VydmljZUluZm8pOwotICAgIHZpZXdJbXBsLT5pbmZvcm1JbnRlbnRT
ZXJ2aWNlUmVnaXN0cmF0aW9uKGV3a0ludGVudFNlcnZpY2UuZ2V0KCkpOworICAgIHZpZXdJbXBs
LT5zbWFydENhbGxiYWNrPEludGVudFNlcnZpY2VSZWdpc3RyYXRpb24+KCkuY2FsbChld2tJbnRl
bnRTZXJ2aWNlLmdldCgpKTsKIH0KICNlbmRpZgogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpk
aWRDaGFuZ2VQcm9ncmVzcyhXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
IHsKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVu
dEluZm8pLT52aWV3SW1wbCgpOwotICAgIHZpZXdJbXBsLT5pbmZvcm1Mb2FkUHJvZ3Jlc3MoV0tQ
YWdlR2V0RXN0aW1hdGVkUHJvZ3Jlc3MocGFnZSkpOworICAgIGRvdWJsZSBwcm9ncmVzcyA9IFdL
UGFnZUdldEVzdGltYXRlZFByb2dyZXNzKHBhZ2UpOworICAgIHZpZXdJbXBsLT5zbWFydENhbGxi
YWNrPExvYWRQcm9ncmVzcz4oKS5jYWxsKCZwcm9ncmVzcyk7CiB9CiAKIHZvaWQgUGFnZUxvYWRD
bGllbnRFZmw6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLVHlwZVJlZiAvKnVzZXJEYXRhKi8sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC04
Miw3ICs4NSw3IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZEZpbmlzaExvYWRGb3JGcmFt
ZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5m
byktPnZpZXdJbXBsKCk7Ci0gICAgdmlld0ltcGwtPmluZm9ybUxvYWRGaW5pc2hlZCgpOworICAg
IHZpZXdJbXBsLT5zbWFydENhbGxiYWNrPExvYWRGaW5pc2hlZD4oKS5jYWxsKCk7CiB9CiAKIHZv
aWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCkBAIC05Miw4ICs5NSw4IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRF
Zmw6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZy
YW1lCiAKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNs
aWVudEluZm8pLT52aWV3SW1wbCgpOwogICAgIE93blB0cjxFd2tfRXJyb3I+IGV3a0Vycm9yID0g
RXdrX0Vycm9yOjpjcmVhdGUoZXJyb3IpOwotICAgIHZpZXdJbXBsLT5pbmZvcm1Mb2FkRXJyb3Io
ZXdrRXJyb3IuZ2V0KCkpOwotICAgIHZpZXdJbXBsLT5pbmZvcm1Mb2FkRmluaXNoZWQoKTsKKyAg
ICB2aWV3SW1wbC0+c21hcnRDYWxsYmFjazxMb2FkRXJyb3I+KCkuY2FsbChld2tFcnJvci5nZXQo
KSk7CisgICAgdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8TG9hZEZpbmlzaGVkPigpLmNhbGwoKTsK
IH0KIAogdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiAvKnVzZXJEYXRhKi8s
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xMDIsNyArMTA1LDggQEAgdm9pZCBQYWdlTG9h
ZENsaWVudEVmbDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYgZnIKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBs
ID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKLSAgICB2aWV3
SW1wbC0+aW5mb3JtUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOworICAgIHZpZXdJbXBsLT5pbmZv
cm1VUkxDaGFuZ2UoKTsKKyAgICB2aWV3SW1wbC0+c21hcnRDYWxsYmFjazxQcm92aXNpb25hbExv
YWRTdGFydGVkPigpLmNhbGwoKTsKIH0KIAogdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgLyp1c2VyRGF0YSovLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQpAQCAtMTExLDcgKzExNSw4IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGll
bnRFZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7Ci0gICAgdmlld0ltcGwtPmluZm9ybVByb3Zp
c2lvbmFsTG9hZFJlZGlyZWN0KCk7CisgICAgdmlld0ltcGwtPmluZm9ybVVSTENoYW5nZSgpOwor
ICAgIHZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFByb3Zpc2lvbmFsTG9hZFJlZGlyZWN0PigpLmNh
bGwoKTsKIH0KIAogdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJl
ZiBlcnJvciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtMTIxLDcgKzEy
Niw3IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRo
RXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhCiAKICAgICBFd2tWaWV3SW1wbCogdmlld0lt
cGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwogICAgIE93
blB0cjxFd2tfRXJyb3I+IGV3a0Vycm9yID0gRXdrX0Vycm9yOjpjcmVhdGUoZXJyb3IpOwotICAg
IHZpZXdJbXBsLT5pbmZvcm1Qcm92aXNpb25hbExvYWRGYWlsZWQoZXdrRXJyb3IuZ2V0KCkpOwor
ICAgIHZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFByb3Zpc2lvbmFsTG9hZEZhaWxlZD4oKS5jYWxs
KGV3a0Vycm9yLmdldCgpKTsKIH0KIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQpAQCAt
MTMxLDcgKzEzNiw3IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZENvbW1pdExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwCiAgICAgICAgIHJldHVybjsK
IAogICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50
SW5mbyktPnZpZXdJbXBsKCk7Ci0gICAgdmlld0ltcGwtPmluZm9ybUxvYWRDb21taXR0ZWQoKTsK
KyAgICB2aWV3SW1wbC0+c21hcnRDYWxsYmFjazxMb2FkQ29tbWl0dGVkPigpLmNhbGwoKTsKIH0K
ICNlbmRpZgogCkBAIC0xNDQsNyArMTQ5LDcgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlk
Q2hhbmdlQmFja0ZvcndhcmRMaXN0KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGUKICAg
ICBBU1NFUlQobGlzdCk7CiAgICAgbGlzdC0+dXBkYXRlKGFkZGVkSXRlbSwgcmVtb3ZlZEl0ZW1z
KTsKIAotICAgIHZpZXdJbXBsLT5pbmZvcm1CYWNrRm9yd2FyZExpc3RDaGFuZ2UoKTsKKyAgICB2
aWV3SW1wbC0+c21hcnRDYWxsYmFjazxCYWNrRm9yd2FyZExpc3RDaGFuZ2U+KCkuY2FsbCgpOwog
fQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9y
RnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmNwcAppbmRleCBh
NjNiYjVlLi4yNTRmMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VQb2xpY3lDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZVBvbGljeUNsaWVudEVmbC5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0hUVFBTdGF0dXNDb2Rlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAordXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBzdGF0aWMgaW5saW5lIFBhZ2VQb2xpY3lDbGllbnRFZmwqIHRvUGFnZVBvbGljeUNsaWVu
dEVmbChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtNDcsNyArNDksNyBAQCB2b2lkIFBhZ2VQ
b2xpY3lDbGllbnRFZmw6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmLAogICAgIFBhZ2VQb2xpY3lDbGllbnRFZmwqIHBvbGljeUNsaWVudCA9IHRv
UGFnZVBvbGljeUNsaWVudEVmbChjbGllbnRJbmZvKTsKIAogICAgIFJlZlB0cjxFd2tfTmF2aWdh
dGlvbl9Qb2xpY3lfRGVjaXNpb24+IGRlY2lzaW9uID0gRXdrX05hdmlnYXRpb25fUG9saWN5X0Rl
Y2lzaW9uOjpjcmVhdGUobmF2aWdhdGlvblR5cGUsIG1vdXNlQnV0dG9uLCBtb2RpZmllcnMsIHJl
cXVlc3QsIDAsIGxpc3RlbmVyKTsKLSAgICBwb2xpY3lDbGllbnQtPm1fdmlld0ltcGwtPmluZm9y
bU5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihkZWNpc2lvbi5nZXQoKSk7CisgICAgcG9saWN5Q2xp
ZW50LT5tX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbj4o
KS5jYWxsKGRlY2lzaW9uLmdldCgpKTsKIH0KIAogdm9pZCBQYWdlUG9saWN5Q2xpZW50RWZsOjpk
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0Zy
YW1lTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZp
ZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJlZiByZXF1
ZXN0LCBXS1N0cmluZ1JlZiBmcmFtZU5hbWUsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0
ZW5lciwgV0tUeXBlUmVmIC8qdXNlckRhdGEqLywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAg
LTU1LDcgKzU3LDcgQEAgdm9pZCBQYWdlUG9saWN5Q2xpZW50RWZsOjpkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24oV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLAogICAgIFBhZ2VQb2xpY3lDbGll
bnRFZmwqIHBvbGljeUNsaWVudCA9IHRvUGFnZVBvbGljeUNsaWVudEVmbChjbGllbnRJbmZvKTsK
IAogICAgIFJlZlB0cjxFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24+IGRlY2lzaW9uID0g
RXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uOjpjcmVhdGUobmF2aWdhdGlvblR5cGUsIG1v
dXNlQnV0dG9uLCBtb2RpZmllcnMsIHJlcXVlc3QsIHRvSW1wbChmcmFtZU5hbWUpLT5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCBsaXN0ZW5lcik7Ci0gICAgcG9saWN5Q2xpZW50LT5tX3ZpZXdJbXBs
LT5pbmZvcm1OZXdXaW5kb3dQb2xpY3lEZWNpc2lvbihkZWNpc2lvbi5nZXQoKSk7CisgICAgcG9s
aWN5Q2xpZW50LT5tX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPE5ld1dpbmRvd1BvbGljeURlY2lz
aW9uPigpLmNhbGwoZGVjaXNpb24uZ2V0KCkpOwogfQogCiB2b2lkIFBhZ2VQb2xpY3lDbGllbnRF
Zmw6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlQ2FsbGJhY2soV0tQYWdlUmVmLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBXS1VSTFJlcXVlc3RSZWYsIFdLRnJh
bWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmIC8qdXNlckRhdGEqLywgY29u
c3Qgdm9pZCogLypjbGllbnRJbmZvKi8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAKaW5kZXggY2M0YmRmOC4uYmMwMTQ4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXNvdXJjZUxvYWRD
bGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVzb3VyY2VM
b2FkQ2xpZW50RWZsLmNwcApAQCAtMzQsOCArMzQsMTAgQEAKICNpbmNsdWRlICJld2tfZXJyb3Jf
cHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdF9wcml2YXRlLmgiCiAjaW5jbHVk
ZSAiZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNr
czsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTU2LDcgKzU4LDggQEAgdm9pZCBSZXNvdXJj
ZUxvYWRDbGllbnRFZmw6OmRpZEluaXRpYXRlTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiB3a0YKICAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fbG9hZGluZ1Jlc291cmNlc01h
cC5hZGQocmVzb3VyY2VJZGVudGlmaWVyLCByZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8RXdrX1Vy
bF9SZXF1ZXN0PiByZXF1ZXN0ID0gRXdrX1VybF9SZXF1ZXN0OjpjcmVhdGUod2tSZXF1ZXN0KTsK
LSAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmluZm9ybVJlc291cmNlTG9hZFN0
YXJ0ZWQocmVzb3VyY2UuZ2V0KCksIHJlcXVlc3QuZ2V0KCkpOworICAgIEV3a19SZXNvdXJjZV9S
ZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHtyZXNvdXJjZS5nZXQoKSwgcmVxdWVzdC5nZXQoKSwg
MH07CisgICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFJl
c291cmNlTG9hZFN0YXJ0ZWQ+KCkuY2FsbCgmcmVzb3VyY2VSZXF1ZXN0KTsKIH0KIAogdm9pZCBS
ZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2UoV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJl
ZiB3a1JlcXVlc3QsIFdLVVJMUmVzcG9uc2VSZWYgd2tSZWRpcmVjdFJlc3BvbnNlLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQpAQCAtNzAsNyArNzMsOCBAQCB2b2lkIFJlc291cmNlTG9hZENsaWVu
dEVmbDo6ZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVp
bgogCiAgICAgUmVmUHRyPEV3a19VcmxfUmVxdWVzdD4gcmVxdWVzdCA9IEV3a19VcmxfUmVxdWVz
dDo6Y3JlYXRlKHdrUmVxdWVzdCk7CiAgICAgUmVmUHRyPEV3a19VcmxfUmVzcG9uc2U+IHJlZGly
ZWN0UmVzcG9uc2UgPSBFd2tfVXJsX1Jlc3BvbnNlOjpjcmVhdGUod2tSZWRpcmVjdFJlc3BvbnNl
KTsKLSAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmluZm9ybVJlc291cmNlUmVx
dWVzdFNlbnQocmVzb3VyY2UuZ2V0KCksIHJlcXVlc3QuZ2V0KCksIHJlZGlyZWN0UmVzcG9uc2Uu
Z2V0KCkpOworICAgIEV3a19SZXNvdXJjZV9SZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHtyZXNv
dXJjZS5nZXQoKSwgcmVxdWVzdC5nZXQoKSwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKX07CisgICAg
cmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFJlc291cmNlUmVx
dWVzdFNlbnQ+KCkuY2FsbCgmcmVzb3VyY2VSZXF1ZXN0KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWRDbGllbnRFZmw6OmRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXS1VSTFJlc3BvbnNlUmVmIHdr
UmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC04Myw3ICs4Nyw4IEBAIHZvaWQg
UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZShXS1Bh
Z2VSZWYsIFdLRnJhbWVSZWYsCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxFd2tfVXJs
X1Jlc3BvbnNlPiByZXNwb25zZSA9IEV3a19VcmxfUmVzcG9uc2U6OmNyZWF0ZSh3a1Jlc3BvbnNl
KTsKLSAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmluZm9ybVJlc291cmNlTG9h
ZFJlc3BvbnNlKHJlc291cmNlLmdldCgpLCByZXNwb25zZS5nZXQoKSk7CisgICAgRXdrX1Jlc291
cmNlX0xvYWRfUmVzcG9uc2UgcmVzb3VyY2VMb2FkUmVzcG9uc2UgPSB7cmVzb3VyY2UuZ2V0KCks
IHJlc3BvbnNlLmdldCgpfTsKKyAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPnNt
YXJ0Q2FsbGJhY2s8UmVzb3VyY2VMb2FkUmVzcG9uc2U+KCkuY2FsbCgmcmVzb3VyY2VMb2FkUmVz
cG9uc2UpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkRmluaXNoTG9hZEZv
clJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlm
aWVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtOTUsNyArMTAwLDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRDbGllbnRFZmw6OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYsIHVpbnQKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmluZm9ybVJlc291cmNlTG9hZEZpbmlz
aGVkKHJlc291cmNlLmdldCgpKTsKKyAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwt
PnNtYXJ0Q2FsbGJhY2s8UmVzb3VyY2VMb2FkRmluaXNoZWQ+KCkuY2FsbChyZXNvdXJjZS5nZXQo
KSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRGYWlsTG9hZEZvclJlc291
cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBX
S0Vycm9yUmVmIHdrRXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xMDgsOCArMTEz
LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZEZhaWxMb2FkRm9yUmVzb3VyY2Uo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjQKICAgICAgICAgcmV0dXJuOwogCiAgICAgT3du
UHRyPEV3a19FcnJvcj4gZXdrRXJyb3IgPSBFd2tfRXJyb3I6OmNyZWF0ZSh3a0Vycm9yKTsKLSAg
ICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmluZm9ybVJlc291cmNlTG9hZEZhaWxl
ZChyZXNvdXJjZS5nZXQoKSwgZXdrRXJyb3IuZ2V0KCkpOwotICAgIHJlc291cmNlTG9hZENsaWVu
dC0+bV92aWV3SW1wbC0+aW5mb3JtUmVzb3VyY2VMb2FkRmluaXNoZWQocmVzb3VyY2UuZ2V0KCkp
OworICAgIEV3a19SZXNvdXJjZV9Mb2FkX0Vycm9yIHJlc291cmNlTG9hZEVycm9yID0ge3Jlc291
cmNlLmdldCgpLCBld2tFcnJvci5nZXQoKX07CisgICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3Zp
ZXdJbXBsLT5zbWFydENhbGxiYWNrPFJlc291cmNlTG9hZEZhaWxlZD4oKS5jYWxsKCZyZXNvdXJj
ZUxvYWRFcnJvcik7CisgICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5zbWFydENh
bGxiYWNrPFJlc291cmNlTG9hZEZpbmlzaGVkPigpLmNhbGwocmVzb3VyY2UuZ2V0KCkpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6b25WaWV3UHJvdmlzaW9uYWxMb2FkU3RhcnRl
ZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2b2lkKikKQEAgLTEyNCw3ICsxMzAsNyBA
QCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OlJlc291cmNlTG9hZENsaWVudEVmbChFd2tWaWV3SW1w
bCogdmlld0ltcGwpCiAgICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQogewogICAgIC8vIExpc3Rl
biBmb3IgImxvYWQscHJvdmlzaW9uYWwsc3RhcnRlZCIgb24gdGhlIHZpZXcgdG8gY2xlYXIgaW50
ZXJuYWwgcmVzb3VyY2VzIG1hcC4KLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQo
bV92aWV3SW1wbC0+dmlldygpLCAibG9hZCxwcm92aXNpb25hbCxzdGFydGVkIiwgb25WaWV3UHJv
dmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhpcyk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfYWRkKG1fdmlld0ltcGwtPnZpZXcoKSwgQ2FsbEJhY2tJbmZvPFByb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWQ+OjpuYW1lKCksIG9uVmlld1Byb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsIHRoaXMpOwogCiAg
ICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBtX3ZpZXdJbXBsLT53a1BhZ2UoKTsKICAgICBBU1NFUlQo
cGFnZVJlZik7CkBAIC0xNDQsNyArMTUwLDcgQEAgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpSZXNv
dXJjZUxvYWRDbGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQogCiBSZXNvdXJjZUxvYWRD
bGllbnRFZmw6On5SZXNvdXJjZUxvYWRDbGllbnRFZmwoKQogewotICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2RlbChtX3ZpZXdJbXBsLT52aWV3KCksICJsb2FkLHByb3Zpc2lvbmFsLHN0
YXJ0ZWQiLCBvblZpZXdQcm92aXNpb25hbExvYWRTdGFydGVkKTsKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19kZWwobV92aWV3SW1wbC0+dmlldygpLCBDYWxsQmFja0luZm88UHJvdmlz
aW9uYWxMb2FkU3RhcnRlZD46Om5hbWUoKSwgb25WaWV3UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171177</attachid>
            <date>2012-10-29 01:58:32 -0700</date>
            <delta_ts>2012-10-30 01:40:03 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>bug100506_v3</filename>
            <type>text/plain</type>
            <size>43519</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDU2NjIxMzc2YzkxMzY0OWNjZjdkMjdiZjVjYWMzMmI4M2IwMGQyMGYKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
U3VuIE9jdCAyOCAxODo0Nzo1OCAyMDEyICswMjAwCgogICAgYnVnMTAwNTA2CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDkwM2Q1MDMuLjFiZGMzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMi0x
MC0yOCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIFNpbXBsaWZ5IHNpZ25hbCBlbWl0dGluZyBBUEkgaW4gRXdr
Vmlld0ltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMDUwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vdyBzaWduYWwgZW1pdHRpbmcgQVBJIGluIEV3a1ZpZXdJbXBsIGlzIHNpbXBsaWZpZWQgc28g
dGhhdAorICAgICAgICB0aGVyZSBpcyBvbmUgRXdrVmlld0ltcGw6OnNtYXJ0Q2FsbGJhY2sgdGVt
cGxhdGUgbWV0aG9kCisgICAgICAgIHJldHVybmluZyBFd2tWaWV3Q2FsbGJhY2tzOjpDYWxsQmFj
ayBjbGFzcyBpbnN0YW5jZQorICAgICAgICB3aGljaCBlbmNhcHN1bGF0ZXMgRXdrX3ZpZXcgY2Fs
bGJhY2sgaW5mbyBhbmQgYWxzbyBwcm92aWRlCisgICAgICAgIGFyZ3VtZW50cyB0eXBlIGNoZWNr
aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oOiBB
ZGRlZC4KKyAgICAgICAgKEV3a1ZpZXdDYWxsYmFja3MpOgorICAgICAgICAoQ2FsbEJhY2tJbmZv
KToKKyAgICAgICAgKEV3a1ZpZXdDYWxsYmFja3M6OkNhbGxCYWNrSW5mbzo6bmFtZSk6CisgICAg
ICAgIChFd2tWaWV3Q2FsbGJhY2tzOjpDYWxsQmFja0luZm86Omhhc0FyZ3VtZW50cyk6CisgICAg
ICAgIChDYWxsQmFjayk6CisgICAgICAgIChFd2tWaWV3Q2FsbGJhY2tzOjpDYWxsQmFjazo6Q2Fs
bEJhY2spOgorICAgICAgICAoRXdrVmlld0NhbGxiYWNrczo6Q2FsbEJhY2s6OmNhbGwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAg
ICAgICAoRXdrVmlld0ltcGw6OnNtYXJ0Q2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9l
ZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5h
Z2VyRWZsOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVmbDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkTWFuYWdlckVmbDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRNYW5hZ2VyRWZsOjpkaWRGaW5pc2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRmluZENs
aWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDbGllbnRFZmw6OmRpZEZpbmRTdHJp
bmcpOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ2xpZW50RWZsOjpkaWRGYWlsVG9GaW5kU3RyaW5n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpGb3JtQ2xpZW50RWZsOjp3aWxsU3VibWl0Rm9ybSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
dG9vbFRpcENoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRF
ZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVj
ZWl2ZUludGVudEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6
OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxv
YWRDbGllbnRFZmw6OmRpZENoYW5nZVByb2dyZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxv
YWRDbGllbnRFZmw6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VMb2FkQ2xpZW50RWZsOjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlTG9hZENsaWVudEVmbDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZENvbW1pdExvYWRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRDaGFuZ2VCYWNr
Rm9yd2FyZExpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNsaWVudEVm
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VQb2xpY3lDbGllbnRFZmw6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQYWdlUG9saWN5Q2xpZW50
RWZsOjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw6
OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZENsaWVudEVmbDo6ZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZENsaWVudEVmbDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjp+UmVzb3VyY2VMb2FkQ2xpZW50RWZsKToKKwog
MjAxMi0xMC0yNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFlldCBt
b3JlIE1lc3NhZ2VSZWNlaXZlcmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmUxNDQ1NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmgKQEAgLTAsMCArMSwxODkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgRXdrVmlld0NhbGxiYWNrc19oCisjZGVmaW5lIEV3a1ZpZXdD
YWxsYmFja3NfaAorCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8RXZhcy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworc3RydWN0IEV3a19Eb3dubG9hZF9K
b2I7CitzdHJ1Y3QgRXdrX0Rvd25sb2FkX0pvYl9FcnJvcjsKK3N0cnVjdCBFd2tfRm9ybV9TdWJt
aXNzaW9uX1JlcXVlc3Q7CitzdHJ1Y3QgRXdrX0Vycm9yOworc3RydWN0IEV3a19SZXNvdXJjZV9S
ZXF1ZXN0Oworc3RydWN0IEV3a19SZXNvdXJjZV9Mb2FkX1Jlc3BvbnNlOworc3RydWN0IEV3a19S
ZXNvdXJjZV9Mb2FkX0Vycm9yOworc3RydWN0IEV3a19SZXNvdXJjZTsKK3N0cnVjdCBFd2tfTmF2
aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb247CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorc3RydWN0
IEV3a19JbnRlbnQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorc3RydWN0
IEV3a19JbnRlbnRfU2VydmljZTsKKyNlbmRpZgorCituYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNr
cyB7CisKK2VudW0gQ2FsbGJhY2tUeXBlIHsKKyAgICBEb3dubG9hZEpvYkNhbmNlbGxlZCwKKyAg
ICBEb3dubG9hZEpvYkZhaWxlZCwKKyAgICBEb3dubG9hZEpvYkZpbmlzaGVkLAorICAgIERvd25s
b2FkSm9iUmVxdWVzdGVkLAorICAgIE5ld0Zvcm1TdWJtaXNzaW9uUmVxdWVzdCwKKyAgICBMb2Fk
RXJyb3IsCisgICAgTG9hZEZpbmlzaGVkLAorICAgIExvYWRQcm9ncmVzcywKKyAgICBQcm92aXNp
b25hbExvYWRGYWlsZWQsCisgICAgUHJvdmlzaW9uYWxMb2FkUmVkaXJlY3QsCisgICAgUHJvdmlz
aW9uYWxMb2FkU3RhcnRlZCwKKyAgICBSZXNvdXJjZUxvYWRTdGFydGVkLAorICAgIFJlc291cmNl
TG9hZFJlc3BvbnNlLAorICAgIFJlc291cmNlTG9hZEZhaWxlZCwKKyAgICBSZXNvdXJjZUxvYWRG
aW5pc2hlZCwKKyAgICBSZXNvdXJjZVJlcXVlc3RTZW50LAorICAgIE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbiwKKyAgICBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbiwKKyAgICBCYWNrRm9yd2FyZExp
c3RDaGFuZ2UsCisgICAgVGl0bGVDaGFuZ2UsCisgICAgVG9vbHRpcFRleHRVbnNldCwKKyAgICBU
b29sdGlwVGV4dFNldCwKKyAgICBUZXh0Rm91bmQsCisgICAgV2ViUHJvY2Vzc0NyYXNoZWQsCisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIEludGVudFJlcXVlc3QsCisjZW5kaWYKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorICAgIEludGVudFNlcnZpY2VSZWdpc3RyYXRpb24sCisj
ZW5kaWYKK307CisKK3RlbXBsYXRlIDxDYWxsYmFja1R5cGU+CitzdHJ1Y3QgQ2FsbEJhY2tJbmZv
IHsKKyAgICB0eXBlZGVmIHZvaWQgVHlwZTsKKworICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hh
ciogbmFtZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuICIiOworICAgIH0KKworICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNBcmd1bWVudHMo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK307CisKK3RlbXBsYXRlIDxD
YWxsYmFja1R5cGUgY2FsbGJhY2tUeXBlPgorY2xhc3MgQ2FsbEJhY2sgeworcHVibGljOgorICAg
IGV4cGxpY2l0IENhbGxCYWNrKEV2YXNfT2JqZWN0KiB2aWV3KQorICAgICAgICA6IG1fdmlldyh2
aWV3KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmlldyk7CisgICAgfQorCisgICAgdm9pZCBj
YWxsKHR5cGVuYW1lIENhbGxCYWNrSW5mbzxjYWxsYmFja1R5cGU+OjpUeXBlIGFyZ3VtZW50ID0g
MCkKKyAgICB7CisgICAgICAgIGlmIChhcmd1bWVudCAmJiAhQ2FsbEJhY2tJbmZvPGNhbGxiYWNr
VHlwZT46Omhhc0FyZ3VtZW50cygpKSB7CisgICAgICAgICAgICBBU1NFUlQoISJjYW5ub3QgcGFz
cyBhcmd1bWVudHMgZm9yIHRoaXMgY2FsbGJhY2shIik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmll
dywgQ2FsbEJhY2tJbmZvPGNhbGxiYWNrVHlwZT46Om5hbWUoKSwgc3RhdGljX2Nhc3Q8dm9pZCo+
KGFyZ3VtZW50KSk7CisgICAgfQorCisgICAgdm9pZCBjYWxsKGNvbnN0IFN0cmluZyYgYXJnKQor
ICAgIHsKKyAgICAgICAgY2FsbChjb25zdF9jYXN0PGNoYXIqPihhcmcudXRmOCgpLmRhdGEoKSkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBFdmFzX09iamVjdCogbV92aWV3OworfTsKKworI2Rl
ZmluZSBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKGNhbGxiYWNrVHlwZSwgc3RyaW5nLCB0eXBl
KSBcCit0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKK3N0cnVjdCBDYWxsQmFja0luZm88Y2FsbGJhY2tUeXBlPiB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHR5cGVkZWYgdHlwZSBUeXBlOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIGlubGluZSBjb25zdCBjaGFy
KiBuYW1lKCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1
cm4gc3RyaW5nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgaGFzQXJndW1lbnRzKCkgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisjZGVmaW5lIERFQ0xBUkVf
RVdLX1ZJRVdfU0lHTkFMKGNhbGxiYWNrVHlwZSwgc3RyaW5nKSAgICAgICAgIFwKK3RlbXBsYXRl
IDw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
c3RydWN0IENhbGxCYWNrSW5mbzxjYWxsYmFja1R5cGU+IHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgdHlwZWRlZiB2b2lkKiBUeXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIG5hbWUoKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBzdHJpbmc7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRp
YyBpbmxpbmUgYm9vbCBoYXNBcmd1bWVudHMoKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCit9CisKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRG93
bmxvYWRKb2JDYW5jZWxsZWQsICJkb3dubG9hZCxjYW5jZWxsZWQiLCBFd2tfRG93bmxvYWRfSm9i
Kik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKERvd25sb2FkSm9iRmFpbGVkLCAiZG93bmxv
YWQsZmFpbGVkIiwgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciopOworREVDTEFSRV9FV0tfVklFV19D
QUxMQkFDSyhEb3dubG9hZEpvYkZpbmlzaGVkLCAiZG93bmxvYWQsZmluaXNoZWQiLCBFd2tfRG93
bmxvYWRfSm9iKik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKERvd25sb2FkSm9iUmVxdWVz
dGVkLCAiZG93bmxvYWQscmVxdWVzdCIsIEV3a19Eb3dubG9hZF9Kb2IqKTsKK0RFQ0xBUkVfRVdL
X1ZJRVdfQ0FMTEJBQ0soTmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0LCAiZm9ybSxzdWJtaXNzaW9u
LHJlcXVlc3QiLCBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QqKTsKK0RFQ0xBUkVfRVdLX1ZJ
RVdfQ0FMTEJBQ0soTG9hZEVycm9yLCAibG9hZCxlcnJvciIsIEV3a19FcnJvciopOworREVDTEFS
RV9FV0tfVklFV19TSUdOQUwoTG9hZEZpbmlzaGVkLCAibG9hZCxmaW5pc2hlZCIpOworREVDTEFS
RV9FV0tfVklFV19DQUxMQkFDSyhMb2FkUHJvZ3Jlc3MsICJsb2FkLHByb2dyZXNzIiwgZG91Ymxl
Kik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFByb3Zpc2lvbmFsTG9hZEZhaWxlZCwgImxv
YWQscHJvdmlzaW9uYWwsZmFpbGVkIiwgRXdrX0Vycm9yKik7CitERUNMQVJFX0VXS19WSUVXX1NJ
R05BTChQcm92aXNpb25hbExvYWRSZWRpcmVjdCwgImxvYWQscHJvdmlzaW9uYWwscmVkaXJlY3Qi
KTsKK0RFQ0xBUkVfRVdLX1ZJRVdfU0lHTkFMKFByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsICJsb2Fk
LHByb3Zpc2lvbmFsLHN0YXJ0ZWQiKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soUmVzb3Vy
Y2VMb2FkU3RhcnRlZCwgInJlc291cmNlLHJlcXVlc3QsbmV3IiwgRXdrX1Jlc291cmNlX1JlcXVl
c3QqKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soUmVzb3VyY2VMb2FkUmVzcG9uc2UsICJy
ZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiwgRXdrX1Jlc291cmNlX0xvYWRfUmVzcG9uc2UqKTsK
K0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soUmVzb3VyY2VMb2FkRmFpbGVkLCAicmVzb3VyY2Us
cmVxdWVzdCxmYWlsZWQiLCBFd2tfUmVzb3VyY2VfTG9hZF9FcnJvciopOworREVDTEFSRV9FV0tf
VklFV19DQUxMQkFDSyhSZXNvdXJjZUxvYWRGaW5pc2hlZCwgInJlc291cmNlLHJlcXVlc3QsZmlu
aXNoZWQiLCBFd2tfUmVzb3VyY2UqKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soUmVzb3Vy
Y2VSZXF1ZXN0U2VudCwgInJlc291cmNlLHJlcXVlc3Qsc2VudCIsIEV3a19SZXNvdXJjZV9SZXF1
ZXN0Kik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
biwgInBvbGljeSxkZWNpc2lvbixuYXZpZ2F0aW9uIiwgRXdrX05hdmlnYXRpb25fUG9saWN5X0Rl
Y2lzaW9uKik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKE5ld1dpbmRvd1BvbGljeURlY2lz
aW9uLCAicG9saWN5LGRlY2lzaW9uLG5ldyx3aW5kb3ciLCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lf
RGVjaXNpb24qKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfU0lHTkFMKEJhY2tGb3J3YXJkTGlzdENoYW5n
ZSwgImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJB
Q0soVGl0bGVDaGFuZ2UsICJ0aXRsZSxjaGFuZ2VkIiwgY2hhciopOworREVDTEFSRV9FV0tfVklF
V19TSUdOQUwoVG9vbHRpcFRleHRVbnNldCwgInRvb2x0aXAsdGV4dCx1bnNldCIpOworREVDTEFS
RV9FV0tfVklFV19DQUxMQkFDSyhUb29sdGlwVGV4dFNldCwgInRvb2x0aXAsdGV4dCxzZXQiLCBj
aGFyKik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFRleHRGb3VuZCwgInRleHQsZm91bmQi
LCB1bnNpZ25lZCopOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhXZWJQcm9jZXNzQ3Jhc2hl
ZCwgIndlYnByb2Nlc3MsY3Jhc2hlZCIsIGJvb2wqKTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEludGVudFJlcXVlc3QsICJpbnRlbnQscmVxdWVz
dCxuZXciLCBFd2tfSW50ZW50Kik7CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFH
KQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhJbnRlbnRTZXJ2aWNlUmVnaXN0cmF0aW9uLCAi
aW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBFd2tfSW50ZW50X1NlcnZpY2UqKTsKKyNlbmRpZgor
Cit9CisKKyNlbmRpZiAvLyAjaWZuZGVmIEV3a1ZpZXdDYWxsYmFja3NfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4IGFiOGY0ZTAu
LjE0MmZhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5jcHAKQEAgLTI3MCw2MiArMjcwLDYgQEAgdm9pZCBFd2tWaWV3SW1wbDo6cmVkcmF3
UmVnaW9uKGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgbV9kaXJ0eVJlY3RzLmFwcGVuZChyZWN0
KTsKIH0KIAotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIEEgZG93bmxvYWQgZm9yIHRoYXQgdmlldyB3
YXMgY2FuY2VsbGVkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImRvd25sb2FkLGNhbmNlbGxlZCIg
d2l0aCBwb2ludGVyIHRvIGEgRXdrX0Rvd25sb2FkX0pvYi4KLSAqLwotdm9pZCBFd2tWaWV3SW1w
bDo6aW5mb3JtRG93bmxvYWRKb2JDYW5jZWxsZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQp
Ci17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJkb3dubG9h
ZCxjYW5jZWxsZWQiLCBkb3dubG9hZCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBBIGRv
d25sb2FkIGZvciB0aGF0IHZpZXcgaGFzIGZhaWxlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJk
b3dubG9hZCxmYWlsZWQiIHdpdGggcG9pbnRlciB0byBhIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3Iu
Ci0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybURvd25sb2FkSm9iRmFpbGVkKEV3a19Eb3du
bG9hZF9Kb2IqIGRvd25sb2FkLCBFd2tfRXJyb3IqIGVycm9yKQotewotICAgIEV3a19Eb3dubG9h
ZF9Kb2JfRXJyb3IgZG93bmxvYWRFcnJvciA9IHsgZG93bmxvYWQsIGVycm9yIH07Ci0gICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJkb3dubG9hZCxmYWlsZWQiLCAm
ZG93bmxvYWRFcnJvcik7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBBIGRvd25sb2FkIGZv
ciB0aGF0IHZpZXcgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5LgotICoKLSAqIEVtaXRzIHNpZ25hbDog
ImRvd25sb2FkLGZpbmlzaGVkIiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfRG93bmxvYWRfSm9iLgot
ICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Eb3dubG9hZEpvYkZpbmlzaGVkKEV3a19Eb3du
bG9hZF9Kb2IqIGRvd25sb2FkKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobV92aWV3LCAiZG93bmxvYWQsZmluaXNoZWQiLCBkb3dubG9hZCk7Ci19Ci0KLS8qKgotICog
QGludGVybmFsCi0gKiBBIG5ldyBkb3dubG9hZCBoYXMgYmVlbiByZXF1ZXN0ZWQgZm9yIHRoYXQg
dmlldy4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJkb3dubG9hZCxyZXF1ZXN0IiB3aXRoIHBvaW50
ZXIgdG8gYSBFd2tfRG93bmxvYWRfSm9iLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1E
b3dubG9hZEpvYlJlcXVlc3RlZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCkKLXsKLSAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImRvd25sb2FkLHJlcXVlc3Qi
LCBkb3dubG9hZCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIHRoYXQgYSBm
b3JtIHJlcXVlc3QgaXMgYWJvdXQgdG8gYmUgc3VibWl0dGVkLgotICoKLSAqIEVtaXRzIHNpZ25h
bDogImZvcm0sc3VibWlzc2lvbixyZXF1ZXN0IiB3aXRoIHBvaW50ZXIgdG8gRXdrX0Zvcm1fU3Vi
bWlzc2lvbl9SZXF1ZXN0LgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1OZXdGb3JtU3Vi
bWlzc2lvblJlcXVlc3QoRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0KiByZXF1ZXN0KQotewot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiZm9ybSxzdWJtaXNz
aW9uLHJlcXVlc3QiLCByZXF1ZXN0KTsKLX0KLQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
IC8qKgogICogQGludGVybmFsCkBAIC0zNjcsNTEgKzMxMSw2IEBAIHZvaWQgRXdrVmlld0ltcGw6
OnNldEltYWdlRGF0YSh2b2lkKiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCiAgICAg
ZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9jb3B5X3NldChzZC0+aW1hZ2UsIGltYWdlRGF0YSk7CiB9
CiAKLS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIGxvYWQgZmFpbGVkIHdpdGggZXJyb3Ig
aW5mb3JtYXRpb24uCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2lu
dGVyIHRvIEV3a19FcnJvci4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtTG9hZEVycm9y
KEV3a19FcnJvciogZXJyb3IpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChtX3ZpZXcsICJsb2FkLGVycm9yIiwgZXJyb3IpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAot
ICogaW5mb3JtcyBsb2FkIGZpbmlzaGVkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQsZmlu
aXNoZWQiLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkRmluaXNoZWQoKQotewot
ICAgIGluZm9ybVVSTENoYW5nZSgpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobV92aWV3LCAibG9hZCxmaW5pc2hlZCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAot
ICogaW5mb3JtcyBsb2FkIHByb2dyZXNzIGNoYW5nZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAi
bG9hZCxwcm9ncmVzcyIgd2l0aCBwb2ludGVyIHRvIGEgZG91YmxlIGZyb20gMC4wIHRvIDEuMC4K
LSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtTG9hZFByb2dyZXNzKGRvdWJsZSBwcm9ncmVz
cykKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQs
cHJvZ3Jlc3MiLCAmcHJvZ3Jlc3MpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3Jt
cyB2aWV3IHByb3Zpc2lvbmFsIGxvYWQgZmFpbGVkIHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCi0g
KgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiIHdpdGggcG9pbnRl
ciB0byBFd2tfRXJyb3IuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVByb3Zpc2lvbmFs
TG9hZEZhaWxlZChFd2tfRXJyb3IqIGVycm9yKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobV92aWV3LCAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBlcnJvcik7Ci19
Ci0KICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKIHZvaWQgRXdrVmlld0ltcGw6OmluZm9y
bUxvYWRDb21taXR0ZWQoKQogewpAQCAtNDE5LDE0NiArMzE4LDYgQEAgdm9pZCBFd2tWaWV3SW1w
bDo6aW5mb3JtTG9hZENvbW1pdHRlZCgpCiB9CiAjZW5kaWYKIAotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIGluZm9ybXMgdmlldyByZWNlaXZlZCByZWRpcmVjdCBmb3IgcHJvdmlzaW9uYWwgbG9hZC4K
LSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFsLHJlZGlyZWN0Ii4KLSAqLwot
dm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtUHJvdmlzaW9uYWxMb2FkUmVkaXJlY3QoKQotewotICAg
IGluZm9ybVVSTENoYW5nZSgpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
bV92aWV3LCAibG9hZCxwcm92aXNpb25hbCxyZWRpcmVjdCIsIDApOwotfQotCi0vKioKLSAqIEBp
bnRlcm5hbAotICogaW5mb3JtcyB2aWV3IHByb3Zpc2lvbmFsIGxvYWQgc3RhcnRlZC4KLSAqCi0g
KiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLgotICovCi12b2lkIEV3
a1ZpZXdJbXBsOjppbmZvcm1Qcm92aXNpb25hbExvYWRTdGFydGVkKCkKLXsKLSAgICBpbmZvcm1V
UkxDaGFuZ2UoKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywg
ImxvYWQscHJvdmlzaW9uYWwsc3RhcnRlZCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAot
ICogaW5mb3JtcyB0aGF0IGEgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24gc2hvdWxkIGJlIHRh
a2VuLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInBvbGljeSxkZWNpc2lvbixuYXZpZ2F0aW9uIi4K
LSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKEV3
a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pCi17Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlv
biIsIGRlY2lzaW9uKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIGluZm9ybXMgdGhhdCBh
IG5ldyB3aW5kb3cgcG9saWN5IGRlY2lzaW9uIHNob3VsZCBiZSB0YWtlbi4KLSAqCi0gKiBFbWl0
cyBzaWduYWw6ICJwb2xpY3ksZGVjaXNpb24sbmV3LHdpbmRvdyIuCi0gKi8KLXZvaWQgRXdrVmll
d0ltcGw6OmluZm9ybU5ld1dpbmRvd1BvbGljeURlY2lzaW9uKEV3a19OYXZpZ2F0aW9uX1BvbGlj
eV9EZWNpc2lvbiogZGVjaXNpb24pCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChtX3ZpZXcsICJwb2xpY3ksZGVjaXNpb24sbmV3LHdpbmRvdyIsIGRlY2lzaW9uKTsKLX0K
LQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIExvYWQgd2FzIGluaXRpYXRlZCBmb3IgYSByZXNvdXJj
ZSBpbiB0aGUgdmlldy4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LG5l
dyIgd2l0aCBwb2ludGVyIHRvIHJlc291cmNlIHJlcXVlc3QuCi0gKi8KLXZvaWQgRXdrVmlld0lt
cGw6OmluZm9ybVJlc291cmNlTG9hZFN0YXJ0ZWQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdr
X1VybF9SZXF1ZXN0KiByZXF1ZXN0KQotewotICAgIEV3a19SZXNvdXJjZV9SZXF1ZXN0IHJlc291
cmNlUmVxdWVzdCA9IHtyZXNvdXJjZSwgcmVxdWVzdCwgMH07Ci0KLSAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInJlc291cmNlLHJlcXVlc3QsbmV3IiwgJnJlc291
cmNlUmVxdWVzdCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZWNlaXZlZCBhIHJlc3Bv
bnNlIHRvIGEgcmVzb3VyY2UgbG9hZCByZXF1ZXN0IGluIHRoZSB2aWV3LgotICoKLSAqIEVtaXRz
IHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QscmVzcG9uc2UiIHdpdGggcG9pbnRlciB0byByZXNv
dXJjZSByZXNwb25zZS4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtUmVzb3VyY2VMb2Fk
UmVzcG9uc2UoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXNwb25zZSogcmVzcG9u
c2UpCi17Ci0gICAgRXdrX1Jlc291cmNlX0xvYWRfUmVzcG9uc2UgcmVzb3VyY2VMb2FkUmVzcG9u
c2UgPSB7cmVzb3VyY2UsIHJlc3BvbnNlfTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKG1fdmlldywgInJlc291cmNlLHJlcXVlc3QscmVzcG9uc2UiLCAmcmVzb3VyY2VMb2Fk
UmVzcG9uc2UpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogRmFpbGVkIGxvYWRpbmcgYSBy
ZXNvdXJjZSBpbiB0aGUgdmlldy4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1
ZXN0LGZpbmlzaGVkIiB3aXRoIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIGxvYWQgZXJyb3IuCi0g
Ki8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVJlc291cmNlTG9hZEZhaWxlZChFd2tfUmVzb3Vy
Y2UqIHJlc291cmNlLCBFd2tfRXJyb3IqIGVycm9yKQotewotICAgIEV3a19SZXNvdXJjZV9Mb2Fk
X0Vycm9yIHJlc291cmNlTG9hZEVycm9yID0ge3Jlc291cmNlLCBlcnJvcn07Ci0gICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxl
ZCIsICZyZXNvdXJjZUxvYWRFcnJvcik7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBGaW5p
c2hlZCBsb2FkaW5nIGEgcmVzb3VyY2UgaW4gdGhlIHZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFs
OiAicmVzb3VyY2UscmVxdWVzdCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvIHRoZSByZXNvdXJj
ZS4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtUmVzb3VyY2VMb2FkRmluaXNoZWQoRXdr
X1Jlc291cmNlKiByZXNvdXJjZSkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiLCByZXNvdXJjZSk7Ci19Ci0K
LS8qKgotICogQGludGVybmFsCi0gKiBSZXF1ZXN0IHdhcyBzZW50IGZvciBhIHJlc291cmNlIGlu
IHRoZSB2aWV3LgotICoKLSAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3Qsc2VudCIg
d2l0aCBwb2ludGVyIHRvIHJlc291cmNlIHJlcXVlc3QgYW5kIHBvc3NpYmxlIHJlZGlyZWN0IHJl
c3BvbnNlLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1SZXNvdXJjZVJlcXVlc3RTZW50
KEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCwgRXdrX1Vy
bF9SZXNwb25zZSogcmVkaXJlY3RSZXNwb25zZSkKLXsKLSAgICBFd2tfUmVzb3VyY2VfUmVxdWVz
dCByZXNvdXJjZVJlcXVlc3QgPSB7cmVzb3VyY2UsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2V9
OwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2Us
cmVxdWVzdCxzZW50IiwgJnJlc291cmNlUmVxdWVzdCk7Ci19Ci0KLS8qKgotICogQGludGVybmFs
Ci0gKiBUaGUgdmlldyB0aXRsZSB3YXMgY2hhbmdlZCBieSB0aGUgZnJhbWUgbG9hZGVyLgotICoK
LSAqIEVtaXRzIHNpZ25hbDogInRpdGxlLGNoYW5nZWQiIHdpdGggcG9pbnRlciB0byBuZXcgdGl0
bGUgc3RyaW5nLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1UaXRsZUNoYW5nZShjb25z
dCBTdHJpbmcmIHRpdGxlKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
bV92aWV3LCAidGl0bGUsY2hhbmdlZCIsIGNvbnN0X2Nhc3Q8Y2hhcio+KHRpdGxlLnV0ZjgoKS5k
YXRhKCkpKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6
aW5mb3JtVG9vbHRpcFRleHRDaGFuZ2UoY29uc3QgU3RyaW5nJiB0ZXh0KQotewotICAgIGlmICh0
ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbCht
X3ZpZXcsICJ0b29sdGlwLHRleHQsdW5zZXQiLCAwKTsKLSAgICBlbHNlCi0gICAgICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAidG9vbHRpcCx0ZXh0LHNldCIsIGNv
bnN0X2Nhc3Q8Y2hhcio+KHRleHQudXRmOCgpLmRhdGEoKSkpOwotCi19Ci0KLS8qKgotICogQGlu
dGVybmFsCi0gKiBpbmZvcm1zIHRoYXQgdGhlIHJlcXVlc3RlZCB0ZXh0IHdhcyBmb3VuZC4KLSAq
Ci0gKiBFbWl0cyBzaWduYWw6ICJ0ZXh0LGZvdW5kIiB3aXRoIHRoZSBudW1iZXIgb2YgbWF0Y2hl
cy4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtVGV4dEZvdW5kKHVuc2lnbmVkIG1hdGNo
Q291bnQpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ0
ZXh0LGZvdW5kIiwgJm1hdGNoQ291bnQpOwotfQotCiBJbnRTaXplIEV3a1ZpZXdJbXBsOjpzaXpl
KCkgY29uc3QKIHsKICAgICBpbnQgd2lkdGgsIGhlaWdodDsKQEAgLTY4OSwzMiArNDQ4LDYgQEAg
dm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtSWNvbkNoYW5nZSgpCiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJpY29uLGNoYW5nZWQiLCAwKTsKIH0KIAotI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKLS8qKgotICogQGludGVybmFsCi0gKiBUaGUgdmlldyByZWNlaXZl
ZCBhIG5ldyBpbnRlbnQgcmVxdWVzdC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJpbnRlbnQscmVx
dWVzdCxuZXciIHdpdGggcG9pbnRlciB0byBhIEV3a19JbnRlbnQuCi0gKi8KLXZvaWQgRXdrVmll
d0ltcGw6OmluZm9ybUludGVudFJlcXVlc3QoRXdrX0ludGVudCogZXdrSW50ZW50KQotewotICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiaW50ZW50LHJlcXVlc3Qs
bmV3IiwgZXdrSW50ZW50KTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RB
RykKLS8qKgotICogQGludGVybmFsCi0gKiBUaGUgdmlldyByZWNlaXZlZCBhIG5ldyBpbnRlbnQg
c2VydmljZSByZWdpc3RyYXRpb24uCi0gKgotICogRW1pdHMgc2lnbmFsOiAiaW50ZW50LHNlcnZp
Y2UscmVnaXN0ZXIiIHdpdGggcG9pbnRlciB0byBhIEV3a19JbnRlbnRfU2VydmljZS4KLSAqLwot
dm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtSW50ZW50U2VydmljZVJlZ2lzdHJhdGlvbihFd2tfSW50
ZW50X1NlcnZpY2UqIGV3a0ludGVudFNlcnZpY2UpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChtX3ZpZXcsICJpbnRlbnQsc2VydmljZSxyZWdpc3RlciIsIGV3a0ludGVu
dFNlcnZpY2UpOwotfQotI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0KICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBib29sIEV3a1ZpZXdJbXBsOjpjcmVhdGVHTFN1
cmZhY2UoY29uc3QgSW50U2l6ZSYgdmlld1NpemUpCiB7CkBAIC04MzMsMzcgKzU2Niw2IEBAIHZv
aWQgRXdrVmlld0ltcGw6OmRpc21pc3NDb2xvclBpY2tlcigpCiB9CiAjZW5kaWYKIAotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqIGluZm9ybXMgdGhhdCB0aGUgdmlldydzIGJhY2sgLyBmb3J3YXJkIGxp
c3QgaGFzIGNoYW5nZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAiYmFjayxmb3J3YXJkLGxpc3Qs
Y2hhbmdlZCIuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUJhY2tGb3J3YXJkTGlzdENo
YW5nZSgpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJi
YWNrLGZvcndhcmQsbGlzdCxjaGFuZ2VkIiwgMCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0g
KiBXZWIgcHJvY2VzcyBoYXMgY3Jhc2hlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJ3ZWJwcm9j
ZXNzLGNyYXNoZWQiIHdpdGggcG9pbnRlciB0byBjcmFzaCBoYW5kbGluZyBib29sZWFuLgotICov
Ci12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1XZWJQcm9jZXNzQ3Jhc2hlZCgpCi17Ci0gICAgYm9v
bCBoYW5kbGVkID0gZmFsc2U7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbCht
X3ZpZXcsICJ3ZWJwcm9jZXNzLGNyYXNoZWQiLCAmaGFuZGxlZCk7Ci0KLSAgICBpZiAoIWhhbmRs
ZWQpIHsKLSAgICAgICAgQ1N0cmluZyB1cmwgPSBtX3BhZ2VQcm94eS0+dXJsQXRQcm9jZXNzRXhp
dCgpLnV0ZjgoKTsKLSAgICAgICAgV0FSTigiV0FSTklORzogVGhlIHdlYiBwcm9jZXNzIGV4cGVy
aWVuY2VkIGEgY3Jhc2ggb24gJyVzJy5cbiIsIHVybC5kYXRhKCkpOwotCi0gICAgICAgIC8vIERp
c3BsYXkgYW4gZXJyb3IgcGFnZQotICAgICAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKG1f
dmlldywgIlRoZSB3ZWIgcHJvY2VzcyBoYXMgY3Jhc2hlZC4iLCAwLCB1cmwuZGF0YSgpKTsKLSAg
ICB9Ci19Ci0KIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUNvbnRlbnRzU2l6ZUNoYW5nZShjb25z
dCBJbnRTaXplJiBzaXplKQogewogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCmluZGV4IGY0ZTkx
NzcuLjY0NDYzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBFd2tWaWV3SW1wbF9oCiAjZGVm
aW5lIEV3a1ZpZXdJbXBsX2gKIAorI2luY2x1ZGUgIkV3a1ZpZXdDYWxsYmFja3MuaCIKICNpbmNs
dWRlICJSZWZQdHJFZmwuaCIKICNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNs
dWRlICJXS1JldGFpblB0ci5oIgpAQCAtMTcwLDQ3ICsxNzEsMTggQEAgcHVibGljOgogICAgIGJv
b2wgcmVxdWVzdEpTQ29uZmlybVBvcHVwKGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgbWVzc2Fn
ZSk7CiAgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHJlcXVlc3RKU1Byb21wdFBvcHVwKGNvbnN0IFdL
RWluYVNoYXJlZFN0cmluZyYgbWVzc2FnZSwgY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBkZWZh
dWx0VmFsdWUpOwogCi0gICAgdm9pZCBpbmZvcm1Eb3dubG9hZEpvYkNhbmNlbGxlZChFd2tfRG93
bmxvYWRfSm9iKiBkb3dubG9hZCk7Ci0gICAgdm9pZCBpbmZvcm1Eb3dubG9hZEpvYkZhaWxlZChF
d2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCwgRXdrX0Vycm9yKiBlcnJvcik7Ci0gICAgdm9pZCBp
bmZvcm1Eb3dubG9hZEpvYkZpbmlzaGVkKEV3a19Eb3dubG9hZF9Kb2IqIGRvd25sb2FkKTsKLSAg
ICB2b2lkIGluZm9ybURvd25sb2FkSm9iUmVxdWVzdGVkKEV3a19Eb3dubG9hZF9Kb2IqIGRvd25s
b2FkKTsKKyAgICB0ZW1wbGF0ZTxFd2tWaWV3Q2FsbGJhY2tzOjpDYWxsYmFja1R5cGUgY2FsbGJh
Y2tUeXBlPgorICAgIEV3a1ZpZXdDYWxsYmFja3M6OkNhbGxCYWNrPGNhbGxiYWNrVHlwZT4gc21h
cnRDYWxsYmFjaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gRXdrVmlld0NhbGxiYWNr
czo6Q2FsbEJhY2s8Y2FsbGJhY2tUeXBlPihtX3ZpZXcpOworICAgIH0KIAotICAgIHZvaWQgaW5m
b3JtTmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0KEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdCog
cmVxdWVzdCk7Ci0gICAgdm9pZCBpbmZvcm1Mb2FkRXJyb3IoRXdrX0Vycm9yKiBlcnJvcik7Ci0g
ICAgdm9pZCBpbmZvcm1Mb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIGluZm9ybUxvYWRQcm9ncmVz
cyhkb3VibGUgcHJvZ3Jlc3MpOwotICAgIHZvaWQgaW5mb3JtUHJvdmlzaW9uYWxMb2FkRmFpbGVk
KEV3a19FcnJvciogZXJyb3IpOwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZv
aWQgaW5mb3JtTG9hZENvbW1pdHRlZCgpOwogI2VuZGlmCi0gICAgdm9pZCBpbmZvcm1Qcm92aXNp
b25hbExvYWRSZWRpcmVjdCgpOwotICAgIHZvaWQgaW5mb3JtUHJvdmlzaW9uYWxMb2FkU3RhcnRl
ZCgpOwotCi0gICAgdm9pZCBpbmZvcm1SZXNvdXJjZUxvYWRTdGFydGVkKEV3a19SZXNvdXJjZSog
cmVzb3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCk7Ci0gICAgdm9pZCBpbmZvcm1SZXNv
dXJjZUxvYWRSZXNwb25zZShFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1Jlc3BvbnNl
KiByZXNwb25zZSk7Ci0gICAgdm9pZCBpbmZvcm1SZXNvdXJjZUxvYWRGYWlsZWQoRXdrX1Jlc291
cmNlKiByZXNvdXJjZSwgRXdrX0Vycm9yKiBlcnJvcik7Ci0gICAgdm9pZCBpbmZvcm1SZXNvdXJj
ZUxvYWRGaW5pc2hlZChFd2tfUmVzb3VyY2UqIHJlc291cmNlKTsKLSAgICB2b2lkIGluZm9ybVJl
c291cmNlUmVxdWVzdFNlbnQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXF1ZXN0
KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNlKTsKLQotICAgIHZv
aWQgaW5mb3JtTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKEV3a19OYXZpZ2F0aW9uX1BvbGljeV9E
ZWNpc2lvbiogZGVjaXNpb24pOwotICAgIHZvaWQgaW5mb3JtTmV3V2luZG93UG9saWN5RGVjaXNp
b24oRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbik7Ci0gICAgdm9pZCBp
bmZvcm1CYWNrRm9yd2FyZExpc3RDaGFuZ2UoKTsKLQotICAgIHZvaWQgaW5mb3JtVGl0bGVDaGFu
Z2UoY29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0gICAgdm9pZCBpbmZvcm1Ub29sdGlwVGV4dENoYW5n
ZShjb25zdCBTdHJpbmcmIHRleHQpOwotICAgIHZvaWQgaW5mb3JtVGV4dEZvdW5kKHVuc2lnbmVk
IG1hdGNoQ291bnQpOwotICAgIHZvaWQgaW5mb3JtSWNvbkNoYW5nZSgpOwotICAgIHZvaWQgaW5m
b3JtV2ViUHJvY2Vzc0NyYXNoZWQoKTsKICAgICB2b2lkIGluZm9ybUNvbnRlbnRzU2l6ZUNoYW5n
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
aW5mb3JtRGF0YWJhc2VRdW90YVJlYWNoZWQoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEs
IHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2Up
OwotICAgIHZvaWQgaW5mb3JtVVJMQ2hhbmdlKCk7CiAKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
Ci0gICAgdm9pZCBpbmZvcm1JbnRlbnRSZXF1ZXN0KEV3a19JbnRlbnQqIGV3a0ludGVudCk7Ci0j
ZW5kaWYKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIHZvaWQgaW5mb3JtSW50ZW50
U2VydmljZVJlZ2lzdHJhdGlvbihFd2tfSW50ZW50X1NlcnZpY2UqIGV3a0ludGVudFNlcnZpY2Up
OwotI2VuZGlmCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgV2ViS2l0OjpQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKiBwYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
KCkgeyByZXR1cm4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpOyB9CiAgICAg
V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyKiBwYWdlVmlld3BvcnRDb250cm9sbGVyKCkg
eyByZXR1cm4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLmdldCgpOyB9CkBAIC0yMjIsMTAgKzE5
NCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldEV2YXNHbFN1cmZhY2UoKSB7IG1fZXZhc0ds
U3VyZmFjZSA9IDA7IH0KICNlbmRpZgogCisgICAgLy8gRklYTUU6IG5lZWRzIHJlZmFjdG9yaW5n
IChzcGxpdCBjYWxsYmFjayBpbnZva2UpCisgICAgdm9pZCBpbmZvcm1VUkxDaGFuZ2UoKTsKKwog
cHJpdmF0ZToKICAgICBpbmxpbmUgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKCk7CiAg
ICAgdm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1wbD4qKTsK
IAorICAgIHZvaWQgaW5mb3JtSWNvbkNoYW5nZSgpOworCiAgICAgc3RhdGljIHZvaWQgb25Nb3Vz
ZURvd24odm9pZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKTsK
ICAgICBzdGF0aWMgdm9pZCBvbk1vdXNlVXAodm9pZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0
Kiwgdm9pZCogZXZlbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBvbk1vdXNlTW92ZSh2b2lkKiBk
YXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCmluZGV4IDVm
MzU5YjUuLjFhYTY2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
RG93bmxvYWRNYW5hZ2VyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKQEAgLTMyLDYgKzMyLDkgQEAKICNpbmNsdWRlICJXS1N0
cmluZy5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tf
ZXJyb3JfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBFd2tWaWV3Q2FsbGJhY2tzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDksNyArNTIs
NyBAQCBXS1N0cmluZ1JlZiBEb3dubG9hZE1hbmFnZXJFZmw6OmRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dAogCiAgICAgLy8gV2Ugc2VuZCB0aGUgbmV3IGRv
d25sb2FkIHNpZ25hbCBvbiB0aGUgRXdrX1ZpZXcgb25seSBvbmNlIHdlIGhhdmUgcmVjZWl2ZWQg
dGhlIHJlc3BvbnNlCiAgICAgLy8gYW5kIHRoZSBzdWdnZXN0ZWQgZmlsZSBuYW1lLgotICAgIGRv
d25sb2FkLT52aWV3SW1wbCgpLT5pbmZvcm1Eb3dubG9hZEpvYlJlcXVlc3RlZChkb3dubG9hZCk7
CisgICAgZG93bmxvYWQtPnZpZXdJbXBsKCktPnNtYXJ0Q2FsbGJhY2s8RG93bmxvYWRKb2JSZXF1
ZXN0ZWQ+KCkuY2FsbChkb3dubG9hZCk7CiAKICAgICAvLyBEb3dubG9hZFNvdXAgZXhwZWN0cyB0
aGUgZGVzdGluYXRpb24gdG8gYmUgYSBVUkwuCiAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gQVND
SUlMaXRlcmFsKCJmaWxlOi8vIikgKyBTdHJpbmc6OmZyb21VVEY4KGRvd25sb2FkLT5kZXN0aW5h
dGlvbigpKTsKQEAgLTg4LDcgKzkxLDggQEAgdm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OmRpZEZh
aWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQsIFdLRXJyb3IKIAogICAg
IE93blB0cjxFd2tfRXJyb3I+IGV3a0Vycm9yID0gRXdrX0Vycm9yOjpjcmVhdGUoZXJyb3IpOwog
ICAgIGRvd25sb2FkLT5zZXRTdGF0ZShFV0tfRE9XTkxPQURfSk9CX1NUQVRFX0ZBSUxFRCk7Ci0g
ICAgZG93bmxvYWQtPnZpZXdJbXBsKCktPmluZm9ybURvd25sb2FkSm9iRmFpbGVkKGRvd25sb2Fk
LCBld2tFcnJvci5nZXQoKSk7CisgICAgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciBkb3dubG9hZEVy
cm9yID0geyBkb3dubG9hZCwgZXdrRXJyb3IuZ2V0KCkgfTsKKyAgICBkb3dubG9hZC0+dmlld0lt
cGwoKS0+c21hcnRDYWxsYmFjazxEb3dubG9hZEpvYkZhaWxlZD4oKS5jYWxsKCZkb3dubG9hZEVy
cm9yKTsKICAgICBkb3dubG9hZE1hbmFnZXItPnVucmVnaXN0ZXJEb3dubG9hZEpvYihkb3dubG9h
ZElkKTsKIH0KIApAQCAtMTAwLDcgKzEwNCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpk
aWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQsIGNvbnN0CiAg
ICAgQVNTRVJUKGRvd25sb2FkKTsKIAogICAgIGRvd25sb2FkLT5zZXRTdGF0ZShFV0tfRE9XTkxP
QURfSk9CX1NUQVRFX0NBTkNFTExFRCk7Ci0gICAgZG93bmxvYWQtPnZpZXdJbXBsKCktPmluZm9y
bURvd25sb2FkSm9iQ2FuY2VsbGVkKGRvd25sb2FkKTsKKyAgICBkb3dubG9hZC0+dmlld0ltcGwo
KS0+c21hcnRDYWxsYmFjazxEb3dubG9hZEpvYkNhbmNlbGxlZD4oKS5jYWxsKGRvd25sb2FkKTsK
ICAgICBkb3dubG9hZE1hbmFnZXItPnVucmVnaXN0ZXJEb3dubG9hZEpvYihkb3dubG9hZElkKTsK
IH0KIApAQCAtMTEyLDcgKzExNiw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRGaW5p
c2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQsIGNvbnN0CiAgICAgQVNT
RVJUKGRvd25sb2FkKTsKIAogICAgIGRvd25sb2FkLT5zZXRTdGF0ZShFV0tfRE9XTkxPQURfSk9C
X1NUQVRFX0ZJTklTSEVEKTsKLSAgICBkb3dubG9hZC0+dmlld0ltcGwoKS0+aW5mb3JtRG93bmxv
YWRKb2JGaW5pc2hlZChkb3dubG9hZCk7CisgICAgZG93bmxvYWQtPnZpZXdJbXBsKCktPnNtYXJ0
Q2FsbGJhY2s8RG93bmxvYWRKb2JGaW5pc2hlZD4oKS5jYWxsKGRvd25sb2FkKTsKICAgICBkb3du
bG9hZE1hbmFnZXItPnVucmVnaXN0ZXJEb3dubG9hZEpvYihkb3dubG9hZElkKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAKaW5kZXggYTQz
MWFjYy4uNWU5MDAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9G
aW5kQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0ZpbmRD
bGllbnRFZmwuY3BwCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIK
ICNpbmNsdWRlICJXS1BhZ2UuaCIKIAordXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgaW5saW5lIEZpbmRDbGllbnRFZmwqIHRv
RmluZENsaWVudEVmbChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtNDAsMTMgKzQyLDEzIEBA
IHN0YXRpYyBpbmxpbmUgRmluZENsaWVudEVmbCogdG9GaW5kQ2xpZW50RWZsKGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB2b2lkIEZpbmRDbGllbnRFZmw6OmRpZEZpbmRTdHJpbmcoV0tQYWdlUmVm
LCBXS1N0cmluZ1JlZiwgdW5zaWduZWQgbWF0Y2hDb3VudCwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKIHsKICAgICBGaW5kQ2xpZW50RWZsKiBmaW5kQ2xpZW50ID0gdG9GaW5kQ2xpZW50RWZsKGNs
aWVudEluZm8pOwotICAgIGZpbmRDbGllbnQtPm1fdmlld0ltcGwtPmluZm9ybVRleHRGb3VuZCht
YXRjaENvdW50KTsKKyAgICBmaW5kQ2xpZW50LT5tX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFRl
eHRGb3VuZD4oKS5jYWxsKCZtYXRjaENvdW50KTsKIH0KIAogdm9pZCBGaW5kQ2xpZW50RWZsOjpk
aWRGYWlsVG9GaW5kU3RyaW5nKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCiB7CiAgICAgRmluZENsaWVudEVmbCogZmluZENsaWVudCA9IHRvRmluZENsaWVu
dEVmbChjbGllbnRJbmZvKTsKLSAgICBmaW5kQ2xpZW50LT5tX3ZpZXdJbXBsLT5pbmZvcm1UZXh0
Rm91bmQoMCk7CisgICAgZmluZENsaWVudC0+bV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxUZXh0
Rm91bmQ+KCkuY2FsbCgpOwogfQogCiBGaW5kQ2xpZW50RWZsOjpGaW5kQ2xpZW50RWZsKEV3a1Zp
ZXdJbXBsKiB2aWV3SW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvRm9ybUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Zvcm1D
bGllbnRFZmwuY3BwCmluZGV4IDc1NDFlMjYuLjViODkzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcApAQCAtMzAsNiArMzAsOCBAQAogI2lu
Y2x1ZGUgIldLUGFnZS5oIgogI2luY2x1ZGUgImV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9w
cml2YXRlLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzOworCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBGb3JtQ2xpZW50RWZsKiB0b0Zvcm1DbGllbnRF
ZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTQyLDcgKzQ0LDcgQEAgdm9pZCBGb3JtQ2xp
ZW50RWZsOjp3aWxsU3VibWl0Rm9ybShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgLypmcmFtZSovLCBX
S0ZyYW1lUmVmIC8KICAgICBGb3JtQ2xpZW50RWZsKiBmb3JtQ2xpZW50ID0gdG9Gb3JtQ2xpZW50
RWZsKGNsaWVudEluZm8pOwogCiAgICAgUmVmUHRyPEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVz
dD4gcmVxdWVzdCA9IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdDo6Y3JlYXRlKHZhbHVlcywg
bGlzdGVuZXIpOwotICAgIGZvcm1DbGllbnQtPm1fdmlld0ltcGwtPmluZm9ybU5ld0Zvcm1TdWJt
aXNzaW9uUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKKyAgICBmb3JtQ2xpZW50LT5tX3ZpZXdJbXBs
LT5zbWFydENhbGxiYWNrPE5ld0Zvcm1TdWJtaXNzaW9uUmVxdWVzdD4oKS5jYWxsKHJlcXVlc3Qu
Z2V0KCkpOwogfQogCiBGb3JtQ2xpZW50RWZsOjpGb3JtQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2
aWV3SW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNs
aWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1w
bC5jcHAKaW5kZXggM2IzYjdiNi4uYmM3NGQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRl
ICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgog
I2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQpAQCAtNDgsNiArNDksNyBAQAogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwordXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC0xMTcsMTAgKzExOSwyMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwcm9jZXNzRGlk
Q3Jhc2goKQogewogICAgIC8vIENoZWNrIGlmIGxvYWRpbmcgd2FzIG9uZ29pbmcsIHdoZW4gd2Vi
IHByb2Nlc3MgY3Jhc2hlZC4KICAgICBkb3VibGUgbG9hZFByb2dyZXNzID0gZXdrX3ZpZXdfbG9h
ZF9wcm9ncmVzc19nZXQobV92aWV3SW1wbC0+dmlldygpKTsKLSAgICBpZiAobG9hZFByb2dyZXNz
ID49IDAgJiYgbG9hZFByb2dyZXNzIDwgMSkKLSAgICAgICAgbV92aWV3SW1wbC0+aW5mb3JtTG9h
ZFByb2dyZXNzKDEpOworICAgIGlmIChsb2FkUHJvZ3Jlc3MgPj0gMCAmJiBsb2FkUHJvZ3Jlc3Mg
PCAxKSB7CisgICAgICAgIGxvYWRQcm9ncmVzcyA9IDE7CisgICAgICAgIG1fdmlld0ltcGwtPnNt
YXJ0Q2FsbGJhY2s8TG9hZFByb2dyZXNzPigpLmNhbGwoJmxvYWRQcm9ncmVzcyk7CisgICAgfQog
Ci0gICAgbV92aWV3SW1wbC0+aW5mb3JtV2ViUHJvY2Vzc0NyYXNoZWQoKTsKKyAgICBib29sIGhh
bmRsZWQgPSBmYWxzZTsKKyAgICBtX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFdlYlByb2Nlc3ND
cmFzaGVkPigpLmNhbGwoJmhhbmRsZWQpOworCisgICAgaWYgKCFoYW5kbGVkKSB7CisgICAgICAg
IENTdHJpbmcgdXJsID0gbV92aWV3SW1wbC0+cGFnZSgpLT51cmxBdFByb2Nlc3NFeGl0KCkudXRm
OCgpOworICAgICAgICBXQVJOKCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nlc3MgZXhwZXJpZW5jZWQg
YSBjcmFzaCBvbiAnJXMnLlxuIiwgdXJsLmRhdGEoKSk7CisKKyAgICAgICAgLy8gRGlzcGxheSBh
biBlcnJvciBwYWdlCisgICAgICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQobV92aWV3SW1w
bC0+dmlldygpLCAiVGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkLiIsIDAsIHVybC5kYXRhKCkp
OworICAgIH0KIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkK
QEAgLTEzNyw3ICsxNTAsMTAgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCgpCiAK
IHZvaWQgUGFnZUNsaWVudEltcGw6OnRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgbmV3VG9vbFRpcCkKIHsKLSAgICBtX3ZpZXdJbXBsLT5pbmZvcm1Ub29sdGlwVGV4
dENoYW5nZShuZXdUb29sVGlwKTsKKyAgICBpZiAobmV3VG9vbFRpcC5pc0VtcHR5KCkpCisgICAg
ICAgIG1fdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8VG9vbHRpcFRleHRVbnNldD4oKS5jYWxsKCk7
CisgICAgZWxzZQorICAgICAgICBtX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFRvb2x0aXBUZXh0
U2V0PigpLmNhbGwobmV3VG9vbFRpcCk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEN1
cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5jcHAKaW5kZXggN2JmNmJkYS4uNjI3OGRiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5j
cHAKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZpY2VfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2Fs
bGJhY2tzOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBQYWdlTG9hZENs
aWVudEVmbCogdG9QYWdlTG9hZENsaWVudEVmbChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAt
NDksNyArNTEsNyBAQCB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlVGl0bGVGb3JG
cmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIHRpdGxlLCBXSwogICAgICAgICByZXR1cm47CiAK
ICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudElu
Zm8pLT52aWV3SW1wbCgpOwotICAgIHZpZXdJbXBsLT5pbmZvcm1UaXRsZUNoYW5nZSh0b0ltcGwo
dGl0bGUpLT5zdHJpbmcoKSk7CisgICAgdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8VGl0bGVDaGFu
Z2U+KCkuY2FsbCh0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSk7CiB9CiAKICNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCkBAIC01Nyw3ICs1OSw3IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFJl
Y2VpdmVJbnRlbnRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLSW50ZW50CiB7CiAg
ICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZv
KS0+dmlld0ltcGwoKTsKICAgICBSZWZQdHI8RXdrX0ludGVudD4gZXdrSW50ZW50ID0gRXdrX0lu
dGVudDo6Y3JlYXRlKGludGVudCk7Ci0gICAgdmlld0ltcGwtPmluZm9ybUludGVudFJlcXVlc3Qo
ZXdrSW50ZW50LmdldCgpKTsKKyAgICB2aWV3SW1wbC0+c21hcnRDYWxsYmFjazxJbnRlbnRSZXF1
ZXN0PigpLmNhbGwoZXdrSW50ZW50LmdldCgpKTsKIH0KICNlbmRpZgogCkBAIC02NiwxNCArNjgs
MTUgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJh
bWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0kKIHsKICAgICBFd2tWaWV3SW1wbCogdmlld0lt
cGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwogICAgIFJl
ZlB0cjxFd2tfSW50ZW50X1NlcnZpY2U+IGV3a0ludGVudFNlcnZpY2UgPSBFd2tfSW50ZW50X1Nl
cnZpY2U6OmNyZWF0ZShzZXJ2aWNlSW5mbyk7Ci0gICAgdmlld0ltcGwtPmluZm9ybUludGVudFNl
cnZpY2VSZWdpc3RyYXRpb24oZXdrSW50ZW50U2VydmljZS5nZXQoKSk7CisgICAgdmlld0ltcGwt
PnNtYXJ0Q2FsbGJhY2s8SW50ZW50U2VydmljZVJlZ2lzdHJhdGlvbj4oKS5jYWxsKGV3a0ludGVu
dFNlcnZpY2UuZ2V0KCkpOwogfQogI2VuZGlmCiAKIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRp
ZENoYW5nZVByb2dyZXNzKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQog
ewogICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50
SW5mbyktPnZpZXdJbXBsKCk7Ci0gICAgdmlld0ltcGwtPmluZm9ybUxvYWRQcm9ncmVzcyhXS1Bh
Z2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhwYWdlKSk7CisgICAgZG91YmxlIHByb2dyZXNzID0gV0tQ
YWdlR2V0RXN0aW1hdGVkUHJvZ3Jlc3MocGFnZSk7CisgICAgdmlld0ltcGwtPnNtYXJ0Q2FsbGJh
Y2s8TG9hZFByb2dyZXNzPigpLmNhbGwoJnByb2dyZXNzKTsKIH0KIAogdm9pZCBQYWdlTG9hZENs
aWVudEVmbDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tUeXBlUmVmIC8qdXNlckRhdGEqLywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTgy
LDcgKzg1LDcgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkRmluaXNoTG9hZEZvckZyYW1l
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXAKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZv
KS0+dmlld0ltcGwoKTsKLSAgICB2aWV3SW1wbC0+aW5mb3JtTG9hZEZpbmlzaGVkKCk7CisgICAg
dmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8TG9hZEZpbmlzaGVkPigpLmNhbGwoKTsKIH0KIAogdm9p
ZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VS
ZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKQEAgLTkyLDggKzk1LDggQEAgdm9pZCBQYWdlTG9hZENsaWVudEVm
bDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJh
bWUKIAogICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xp
ZW50SW5mbyktPnZpZXdJbXBsKCk7CiAgICAgT3duUHRyPEV3a19FcnJvcj4gZXdrRXJyb3IgPSBF
d2tfRXJyb3I6OmNyZWF0ZShlcnJvcik7Ci0gICAgdmlld0ltcGwtPmluZm9ybUxvYWRFcnJvcihl
d2tFcnJvci5nZXQoKSk7Ci0gICAgdmlld0ltcGwtPmluZm9ybUxvYWRGaW5pc2hlZCgpOworICAg
IHZpZXdJbXBsLT5zbWFydENhbGxiYWNrPExvYWRFcnJvcj4oKS5jYWxsKGV3a0Vycm9yLmdldCgp
KTsKKyAgICB2aWV3SW1wbC0+c21hcnRDYWxsYmFjazxMb2FkRmluaXNoZWQ+KCkuY2FsbCgpOwog
fQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIC8qdXNlckRhdGEqLywg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTEwMiw3ICsxMDUsOCBAQCB2b2lkIFBhZ2VMb2Fk
Q2xpZW50RWZsOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiBmcgogICAgICAgICByZXR1cm47CiAKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwg
PSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwotICAgIHZpZXdJ
bXBsLT5pbmZvcm1Qcm92aXNpb25hbExvYWRTdGFydGVkKCk7CisgICAgdmlld0ltcGwtPmluZm9y
bVVSTENoYW5nZSgpOworICAgIHZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFByb3Zpc2lvbmFsTG9h
ZFN0YXJ0ZWQ+KCkuY2FsbCgpOwogfQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiAvKnVzZXJEYXRhKi8sIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCkBAIC0xMTEsNyArMTE1LDggQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWcKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVu
dEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKLSAgICB2aWV3SW1wbC0+aW5mb3JtUHJvdmlz
aW9uYWxMb2FkUmVkaXJlY3QoKTsKKyAgICB2aWV3SW1wbC0+aW5mb3JtVVJMQ2hhbmdlKCk7Cisg
ICAgdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8UHJvdmlzaW9uYWxMb2FkUmVkaXJlY3Q+KCkuY2Fs
bCgpOwogfQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVm
IGVycm9yLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xMjEsNyArMTI2
LDcgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhF
cnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmEKIAogICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1w
bCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7CiAgICAgT3du
UHRyPEV3a19FcnJvcj4gZXdrRXJyb3IgPSBFd2tfRXJyb3I6OmNyZWF0ZShlcnJvcik7Ci0gICAg
dmlld0ltcGwtPmluZm9ybVByb3Zpc2lvbmFsTG9hZEZhaWxlZChld2tFcnJvci5nZXQoKSk7Cisg
ICAgdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8UHJvdmlzaW9uYWxMb2FkRmFpbGVkPigpLmNhbGwo
ZXdrRXJyb3IuZ2V0KCkpOwogfQogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCkBAIC0x
MzEsNyArMTM2LDcgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkQ29tbWl0TG9hZEZvckZy
YW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXAKICAgICAgICAgcmV0dXJuOwog
CiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJ
bmZvKS0+dmlld0ltcGwoKTsKLSAgICB2aWV3SW1wbC0+aW5mb3JtTG9hZENvbW1pdHRlZCgpOwor
ICAgIHZpZXdJbXBsLT5zbWFydENhbGxiYWNrPExvYWRDb21taXR0ZWQ+KCkuY2FsbCgpOwogfQog
I2VuZGlmCiAKQEAgLTE0NCw3ICsxNDksNyBAQCB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRD
aGFuZ2VCYWNrRm9yd2FyZExpc3QoV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZQogICAg
IEFTU0VSVChsaXN0KTsKICAgICBsaXN0LT51cGRhdGUoYWRkZWRJdGVtLCByZW1vdmVkSXRlbXMp
OwogCi0gICAgdmlld0ltcGwtPmluZm9ybUJhY2tGb3J3YXJkTGlzdENoYW5nZSgpOworICAgIHZp
ZXdJbXBsLT5zbWFydENhbGxiYWNrPEJhY2tGb3J3YXJkTGlzdENoYW5nZT4oKS5jYWxsKCk7CiB9
CiAKIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlv
blR5cGUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNsaWVudEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuY3BwCmluZGV4IGE2
M2JiNWUuLjI1NGYyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZVBvbGljeUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9QYWdlUG9saWN5Q2xpZW50RWZsLmNwcApAQCAtMzUsNiArMzUsOCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvSFRUUFN0YXR1c0NvZGVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
Cit1c2luZyBuYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNrczsKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHN0YXRpYyBpbmxpbmUgUGFnZVBvbGljeUNsaWVudEVmbCogdG9QYWdlUG9saWN5Q2xpZW50
RWZsKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC00Nyw3ICs0OSw3IEBAIHZvaWQgUGFnZVBv
bGljeUNsaWVudEVmbDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYsCiAgICAgUGFnZVBvbGljeUNsaWVudEVmbCogcG9saWN5Q2xpZW50ID0gdG9Q
YWdlUG9saWN5Q2xpZW50RWZsKGNsaWVudEluZm8pOwogCiAgICAgUmVmUHRyPEV3a19OYXZpZ2F0
aW9uX1BvbGljeV9EZWNpc2lvbj4gZGVjaXNpb24gPSBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVj
aXNpb246OmNyZWF0ZShuYXZpZ2F0aW9uVHlwZSwgbW91c2VCdXR0b24sIG1vZGlmaWVycywgcmVx
dWVzdCwgMCwgbGlzdGVuZXIpOwotICAgIHBvbGljeUNsaWVudC0+bV92aWV3SW1wbC0+aW5mb3Jt
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKGRlY2lzaW9uLmdldCgpKTsKKyAgICBwb2xpY3lDbGll
bnQtPm1fdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8TmF2aWdhdGlvblBvbGljeURlY2lzaW9uPigp
LmNhbGwoZGVjaXNpb24uZ2V0KCkpOwogfQogCiB2b2lkIFBhZ2VQb2xpY3lDbGllbnRFZmw6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLRnJh
bWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmll
cnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVl
c3QsIFdLU3RyaW5nUmVmIGZyYW1lTmFtZSwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3Rl
bmVyLCBXS1R5cGVSZWYgLyp1c2VyRGF0YSovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAt
NTUsNyArNTcsNyBAQCB2b2lkIFBhZ2VQb2xpY3lDbGllbnRFZmw6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsCiAgICAgUGFnZVBvbGljeUNsaWVu
dEVmbCogcG9saWN5Q2xpZW50ID0gdG9QYWdlUG9saWN5Q2xpZW50RWZsKGNsaWVudEluZm8pOwog
CiAgICAgUmVmUHRyPEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbj4gZGVjaXNpb24gPSBF
d2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb246OmNyZWF0ZShuYXZpZ2F0aW9uVHlwZSwgbW91
c2VCdXR0b24sIG1vZGlmaWVycywgcmVxdWVzdCwgdG9JbXBsKGZyYW1lTmFtZSktPnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIGxpc3RlbmVyKTsKLSAgICBwb2xpY3lDbGllbnQtPm1fdmlld0ltcGwt
PmluZm9ybU5ld1dpbmRvd1BvbGljeURlY2lzaW9uKGRlY2lzaW9uLmdldCgpKTsKKyAgICBwb2xp
Y3lDbGllbnQtPm1fdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8TmV3V2luZG93UG9saWN5RGVjaXNp
b24+KCkuY2FsbChkZWNpc2lvbi5nZXQoKSk7CiB9CiAKIHZvaWQgUGFnZVBvbGljeUNsaWVudEVm
bDo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VDYWxsYmFjayhXS1BhZ2VSZWYsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIFdLVVJMUmVxdWVzdFJlZiwgV0tGcmFt
ZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgLyp1c2VyRGF0YSovLCBjb25z
dCB2b2lkKiAvKmNsaWVudEluZm8qLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcAppbmRleCBjYzRiZGY4Li5iYzAxNDgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9hZENs
aWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXNvdXJjZUxv
YWRDbGllbnRFZmwuY3BwCkBAIC0zNCw4ICszNCwxMCBAQAogI2luY2x1ZGUgImV3a19lcnJvcl9w
cml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfdXJsX3Jlc3BvbnNlX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tz
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTYsNyArNTgsOCBAQCB2b2lkIFJlc291cmNl
TG9hZENsaWVudEVmbDo6ZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmIHdrRgogICAgIHJlc291cmNlTG9hZENsaWVudC0+bV9sb2FkaW5nUmVzb3VyY2VzTWFw
LmFkZChyZXNvdXJjZUlkZW50aWZpZXIsIHJlc291cmNlKTsKIAogICAgIFJlZlB0cjxFd2tfVXJs
X1JlcXVlc3Q+IHJlcXVlc3QgPSBFd2tfVXJsX1JlcXVlc3Q6OmNyZWF0ZSh3a1JlcXVlc3QpOwot
ICAgIHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtUmVzb3VyY2VMb2FkU3Rh
cnRlZChyZXNvdXJjZS5nZXQoKSwgcmVxdWVzdC5nZXQoKSk7CisgICAgRXdrX1Jlc291cmNlX1Jl
cXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLmdldCgpLCByZXF1ZXN0LmdldCgpLCAw
fTsKKyAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8UmVz
b3VyY2VMb2FkU3RhcnRlZD4oKS5jYWxsKCZyZXNvdXJjZVJlcXVlc3QpOwogfQogCiB2b2lkIFJl
c291cmNlTG9hZENsaWVudEVmbDo6ZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tVUkxSZXF1ZXN0UmVm
IHdrUmVxdWVzdCwgV0tVUkxSZXNwb25zZVJlZiB3a1JlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCkBAIC03MCw3ICs3Myw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50
RWZsOjpkaWRTZW5kUmVxdWVzdEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWlu
CiAKICAgICBSZWZQdHI8RXdrX1VybF9SZXF1ZXN0PiByZXF1ZXN0ID0gRXdrX1VybF9SZXF1ZXN0
OjpjcmVhdGUod2tSZXF1ZXN0KTsKICAgICBSZWZQdHI8RXdrX1VybF9SZXNwb25zZT4gcmVkaXJl
Y3RSZXNwb25zZSA9IEV3a19VcmxfUmVzcG9uc2U6OmNyZWF0ZSh3a1JlZGlyZWN0UmVzcG9uc2Up
OwotICAgIHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtUmVzb3VyY2VSZXF1
ZXN0U2VudChyZXNvdXJjZS5nZXQoKSwgcmVxdWVzdC5nZXQoKSwgcmVkaXJlY3RSZXNwb25zZS5n
ZXQoKSk7CisgICAgRXdrX1Jlc291cmNlX1JlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291
cmNlLmdldCgpLCByZXF1ZXN0LmdldCgpLCByZWRpcmVjdFJlc3BvbnNlLmdldCgpfTsKKyAgICBy
ZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8UmVzb3VyY2VSZXF1
ZXN0U2VudD4oKS5jYWxsKCZyZXNvdXJjZVJlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNlTG9h
ZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLVVJMUmVzcG9uc2VSZWYgd2tS
ZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTgzLDcgKzg3LDggQEAgdm9pZCBS
ZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlKFdLUGFn
ZVJlZiwgV0tGcmFtZVJlZiwKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEV3a19Vcmxf
UmVzcG9uc2U+IHJlc3BvbnNlID0gRXdrX1VybF9SZXNwb25zZTo6Y3JlYXRlKHdrUmVzcG9uc2Up
OwotICAgIHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtUmVzb3VyY2VMb2Fk
UmVzcG9uc2UocmVzb3VyY2UuZ2V0KCksIHJlc3BvbnNlLmdldCgpKTsKKyAgICBFd2tfUmVzb3Vy
Y2VfTG9hZF9SZXNwb25zZSByZXNvdXJjZUxvYWRSZXNwb25zZSA9IHtyZXNvdXJjZS5nZXQoKSwg
cmVzcG9uc2UuZ2V0KCl9OworICAgIHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+c21h
cnRDYWxsYmFjazxSZXNvdXJjZUxvYWRSZXNwb25zZT4oKS5jYWxsKCZyZXNvdXJjZUxvYWRSZXNw
b25zZSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRGaW5pc2hMb2FkRm9y
UmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZp
ZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC05NSw3ICsxMDAsNyBAQCB2b2lkIFJlc291
cmNlTG9hZENsaWVudEVmbDo6ZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiwgdWludAogICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtUmVzb3VyY2VMb2FkRmluaXNo
ZWQocmVzb3VyY2UuZ2V0KCkpOworICAgIHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+
c21hcnRDYWxsYmFjazxSZXNvdXJjZUxvYWRGaW5pc2hlZD4oKS5jYWxsKHJlc291cmNlLmdldCgp
KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZEZhaWxMb2FkRm9yUmVzb3Vy
Y2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdL
RXJyb3JSZWYgd2tFcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTEwOCw4ICsxMTMs
OSBAQCB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkRmFpbExvYWRGb3JSZXNvdXJjZShX
S1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NAogICAgICAgICByZXR1cm47CiAKICAgICBPd25Q
dHI8RXdrX0Vycm9yPiBld2tFcnJvciA9IEV3a19FcnJvcjo6Y3JlYXRlKHdrRXJyb3IpOwotICAg
IHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtUmVzb3VyY2VMb2FkRmFpbGVk
KHJlc291cmNlLmdldCgpLCBld2tFcnJvci5nZXQoKSk7Ci0gICAgcmVzb3VyY2VMb2FkQ2xpZW50
LT5tX3ZpZXdJbXBsLT5pbmZvcm1SZXNvdXJjZUxvYWRGaW5pc2hlZChyZXNvdXJjZS5nZXQoKSk7
CisgICAgRXdrX1Jlc291cmNlX0xvYWRfRXJyb3IgcmVzb3VyY2VMb2FkRXJyb3IgPSB7cmVzb3Vy
Y2UuZ2V0KCksIGV3a0Vycm9yLmdldCgpfTsKKyAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmll
d0ltcGwtPnNtYXJ0Q2FsbGJhY2s8UmVzb3VyY2VMb2FkRmFpbGVkPigpLmNhbGwoJnJlc291cmNl
TG9hZEVycm9yKTsKKyAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPnNtYXJ0Q2Fs
bGJhY2s8UmVzb3VyY2VMb2FkRmluaXNoZWQ+KCkuY2FsbChyZXNvdXJjZS5nZXQoKSk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpvblZpZXdQcm92aXNpb25hbExvYWRTdGFydGVk
KHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVjdCosIHZvaWQqKQpAQCAtMTI0LDcgKzEzMCw3IEBA
IFJlc291cmNlTG9hZENsaWVudEVmbDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsKEV3a1ZpZXdJbXBs
KiB2aWV3SW1wbCkKICAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCiB7CiAgICAgLy8gTGlzdGVu
IGZvciAibG9hZCxwcm92aXNpb25hbCxzdGFydGVkIiBvbiB0aGUgdmlldyB0byBjbGVhciBpbnRl
cm5hbCByZXNvdXJjZXMgbWFwLgotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCht
X3ZpZXdJbXBsLT52aWV3KCksICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCBvblZpZXdQcm92
aXNpb25hbExvYWRTdGFydGVkLCB0aGlzKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19hZGQobV92aWV3SW1wbC0+dmlldygpLCBDYWxsQmFja0luZm88UHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZD46Om5hbWUoKSwgb25WaWV3UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhpcyk7CiAKICAg
ICBXS1BhZ2VSZWYgcGFnZVJlZiA9IG1fdmlld0ltcGwtPndrUGFnZSgpOwogICAgIEFTU0VSVChw
YWdlUmVmKTsKQEAgLTE0NCw3ICsxNTAsNyBAQCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OlJlc291
cmNlTG9hZENsaWVudEVmbChFd2tWaWV3SW1wbCogdmlld0ltcGwpCiAKIFJlc291cmNlTG9hZENs
aWVudEVmbDo6flJlc291cmNlTG9hZENsaWVudEVmbCgpCiB7Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfZGVsKG1fdmlld0ltcGwtPnZpZXcoKSwgImxvYWQscHJvdmlzaW9uYWwsc3Rh
cnRlZCIsIG9uVmlld1Byb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2RlbChtX3ZpZXdJbXBsLT52aWV3KCksIENhbGxCYWNrSW5mbzxQcm92aXNp
b25hbExvYWRTdGFydGVkPjo6bmFtZSgpLCBvblZpZXdQcm92aXNpb25hbExvYWRTdGFydGVkKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171397</attachid>
            <date>2012-10-30 01:40:03 -0700</date>
            <delta_ts>2012-10-30 02:45:13 -0700</delta_ts>
            <desc>patch v4</desc>
            <filename>bug100506_v4</filename>
            <type>text/plain</type>
            <size>42570</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDhiMmJmMmIzZmY3MzVhZWNiNjM3YzczNTVkYzU1NzIzZmI5ZDVlMDUKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
U3VuIE9jdCAyOCAxODo0Nzo1OCAyMDEyICswMjAwCgogICAgYnVnMTAwNTA2CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGI1NjUxYWUuLjJlOTE2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMi0x
MC0yOCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIFNpbXBsaWZ5IHNpZ25hbCBlbWl0dGluZyBBUEkgaW4gRXdr
Vmlld0ltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMDUwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vdyBzaWduYWwgZW1pdHRpbmcgQVBJIGluIEV3a1ZpZXdJbXBsIGlzIHNpbXBsaWZpZWQgc28g
dGhhdAorICAgICAgICB0aGVyZSBpcyBvbmUgRXdrVmlld0ltcGw6OnNtYXJ0Q2FsbGJhY2sgdGVt
cGxhdGUgbWV0aG9kCisgICAgICAgIHJldHVybmluZyBFd2tWaWV3Q2FsbGJhY2tzOjpDYWxsQmFj
ayBjbGFzcyBpbnN0YW5jZQorICAgICAgICB3aGljaCBlbmNhcHN1bGF0ZXMgRXdrX3ZpZXcgY2Fs
bGJhY2sgaW5mbyBhbmQgYWxzbyBwcm92aWRlCisgICAgICAgIGFyZ3VtZW50cyB0eXBlIGNoZWNr
aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oOiBB
ZGRlZC4KKyAgICAgICAgKEV3a1ZpZXdDYWxsYmFja3MpOgorICAgICAgICAoQ2FsbEJhY2tJbmZv
KToKKyAgICAgICAgKEV3a1ZpZXdDYWxsYmFja3M6OkNhbGxCYWNrSW5mbzo6bmFtZSk6CisgICAg
ICAgIChFd2tWaWV3Q2FsbGJhY2tzOjpDYWxsQmFja0luZm86Omhhc0FyZ3VtZW50cyk6CisgICAg
ICAgIChDYWxsQmFjayk6CisgICAgICAgIChFd2tWaWV3Q2FsbGJhY2tzOjpDYWxsQmFjazo6Q2Fs
bEJhY2spOgorICAgICAgICAoRXdrVmlld0NhbGxiYWNrczo6Q2FsbEJhY2s6OmNhbGwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAg
ICAgICAoRXdrVmlld0ltcGw6OnNtYXJ0Q2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9l
ZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5h
Z2VyRWZsOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVmbDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkTWFuYWdlckVmbDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRNYW5hZ2VyRWZsOjpkaWRGaW5pc2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRmluZENs
aWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDbGllbnRFZmw6OmRpZEZpbmRTdHJp
bmcpOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ2xpZW50RWZsOjpkaWRGYWlsVG9GaW5kU3RyaW5n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpGb3JtQ2xpZW50RWZsOjp3aWxsU3VibWl0Rm9ybSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
dG9vbFRpcENoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRF
ZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVj
ZWl2ZUludGVudEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6
OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxv
YWRDbGllbnRFZmw6OmRpZENoYW5nZVByb2dyZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxv
YWRDbGllbnRFZmw6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VMb2FkQ2xpZW50RWZsOjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlTG9hZENsaWVudEVmbDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZENvbW1pdExvYWRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRDaGFuZ2VCYWNr
Rm9yd2FyZExpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNsaWVudEVm
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VQb2xpY3lDbGllbnRFZmw6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQYWdlUG9saWN5Q2xpZW50
RWZsOjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw6
OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZENsaWVudEVmbDo6ZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZENsaWVudEVmbDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjp+UmVzb3VyY2VMb2FkQ2xpZW50RWZsKToKKwog
MjAxMi0xMC0yOSAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEuY29t
PgogCiAgICAgICAgIFtXSzJdIEVuYWJsZSBkZWxlZ2F0ZWQgc2Nyb2xsaW5nIGFzIHNvb24gYXMg
dGhlIEZyYW1lVmlldyBpcyBjcmVhdGVkIHdoZW4gdXNpbmcgZml4ZWQgbGF5b3V0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBkOTQ3YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaApA
QCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFd2tWaWV3Q2Fs
bGJhY2tzX2gKKyNkZWZpbmUgRXdrVmlld0NhbGxiYWNrc19oCisKKyNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorCitzdHJ1Y3QgRXdrX0Rvd25sb2FkX0pvYjsKK3N0cnVjdCBFd2tfRG93bmxvYWRfSm9iX0Vy
cm9yOworc3RydWN0IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdDsKK3N0cnVjdCBFd2tfRXJy
b3I7CitzdHJ1Y3QgRXdrX1Jlc291cmNlX1JlcXVlc3Q7CitzdHJ1Y3QgRXdrX1Jlc291cmNlX0xv
YWRfUmVzcG9uc2U7CitzdHJ1Y3QgRXdrX1Jlc291cmNlX0xvYWRfRXJyb3I7CitzdHJ1Y3QgRXdr
X1Jlc291cmNlOworc3RydWN0IEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbjsKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCitzdHJ1Y3QgRXdrX0ludGVudDsKKyNlbmRpZgorI2lmIEVOQUJM
RShXRUJfSU5URU5UU19UQUcpCitzdHJ1Y3QgRXdrX0ludGVudF9TZXJ2aWNlOworI2VuZGlmCisK
K25hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzIHsKKworZW51bSBDYWxsYmFja1R5cGUgeworICAg
IERvd25sb2FkSm9iQ2FuY2VsbGVkLAorICAgIERvd25sb2FkSm9iRmFpbGVkLAorICAgIERvd25s
b2FkSm9iRmluaXNoZWQsCisgICAgRG93bmxvYWRKb2JSZXF1ZXN0ZWQsCisgICAgTmV3Rm9ybVN1
Ym1pc3Npb25SZXF1ZXN0LAorICAgIExvYWRFcnJvciwKKyAgICBMb2FkRmluaXNoZWQsCisgICAg
TG9hZFByb2dyZXNzLAorICAgIFByb3Zpc2lvbmFsTG9hZEZhaWxlZCwKKyAgICBQcm92aXNpb25h
bExvYWRSZWRpcmVjdCwKKyAgICBQcm92aXNpb25hbExvYWRTdGFydGVkLAorICAgIFJlc291cmNl
TG9hZFN0YXJ0ZWQsCisgICAgUmVzb3VyY2VMb2FkUmVzcG9uc2UsCisgICAgUmVzb3VyY2VMb2Fk
RmFpbGVkLAorICAgIFJlc291cmNlTG9hZEZpbmlzaGVkLAorICAgIFJlc291cmNlUmVxdWVzdFNl
bnQsCisgICAgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uLAorICAgIE5ld1dpbmRvd1BvbGljeURl
Y2lzaW9uLAorICAgIEJhY2tGb3J3YXJkTGlzdENoYW5nZSwKKyAgICBUaXRsZUNoYW5nZSwKKyAg
ICBUb29sdGlwVGV4dFVuc2V0LAorICAgIFRvb2x0aXBUZXh0U2V0LAorICAgIFRleHRGb3VuZCwK
KyAgICBXZWJQcm9jZXNzQ3Jhc2hlZCwKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgSW50
ZW50UmVxdWVzdCwKKyNlbmRpZgorI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCisgICAgSW50
ZW50U2VydmljZVJlZ2lzdHJhdGlvbiwKKyNlbmRpZgorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK2lubGluZSBib29sIGNhbGxiYWNrQXJndW1lbnRzRXhwZWN0ZWQoKQoreworICAgIHJldHVy
biB0cnVlOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBjYWxsYmFja0FyZ3VtZW50c0V4
cGVjdGVkPHZvaWQ+KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxDYWxs
YmFja1R5cGU+CitzdHJ1Y3QgQ2FsbEJhY2tJbmZvIHsKKyAgICB0eXBlZGVmIHZvaWQqIFR5cGU7
CisKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIG5hbWUoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9Cit9OworCit0
ZW1wbGF0ZSA8Q2FsbGJhY2tUeXBlIGNhbGxiYWNrVHlwZT4KK2NsYXNzIENhbGxCYWNrIHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVuYW1lIENhbGxCYWNrSW5mbzxjYWxsYmFja1R5cGU+OjpU
eXBlIEFyZ1R5cGU7CisKKyAgICBleHBsaWNpdCBDYWxsQmFjayhFdmFzX09iamVjdCogdmlldykK
KyAgICAgICAgOiBtX3ZpZXcodmlldykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3ZpZXcpOwor
ICAgIH0KKworICAgIHZvaWQgY2FsbChBcmdUeXBlKiBhcmd1bWVudCA9IDApCisgICAgeworICAg
ICAgICBpZiAoYXJndW1lbnQgJiYgIWNhbGxiYWNrQXJndW1lbnRzRXhwZWN0ZWQ8QXJnVHlwZT4o
KSkgeworICAgICAgICAgICAgQVNTRVJUKCEic2hvdWxkIG5vdCBwYXNzIGFyZ3VtZW50cyBmb3Ig
dGhpcyBjYWxsYmFjayEiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCBDYWxsQmFja0luZm88
Y2FsbGJhY2tUeXBlPjo6bmFtZSgpLCBzdGF0aWNfY2FzdDx2b2lkKj4oYXJndW1lbnQpKTsKKyAg
ICB9CisKKyAgICB2b2lkIGNhbGwoY29uc3QgU3RyaW5nJiBhcmcpCisgICAgeworICAgICAgICBj
YWxsKGNvbnN0X2Nhc3Q8Y2hhcio+KGFyZy51dGY4KCkuZGF0YSgpKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7Cit9OworCisjZGVmaW5lIERFQ0xBUkVfRVdL
X1ZJRVdfQ0FMTEJBQ0soY2FsbGJhY2tUeXBlLCBzdHJpbmcsIHR5cGUpIFwKK3RlbXBsYXRlIDw+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorc3Ry
dWN0IENhbGxCYWNrSW5mbzxjYWxsYmFja1R5cGU+IHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgdHlwZWRlZiB0eXBlIFR5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIG5hbWUoKSB7IHJldHVy
biBzdHJpbmc7IH0gICAgICAgXAorfQorCisvLyBOb3RlOiB0eXBlICd2b2lkJyBtZWFucyB0aGF0
IG5vIGFyZ3VtZW50cyBhcmUgZXhwZWN0ZWQuCitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKERv
d25sb2FkSm9iQ2FuY2VsbGVkLCAiZG93bmxvYWQsY2FuY2VsbGVkIiwgRXdrX0Rvd25sb2FkX0pv
Yik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKERvd25sb2FkSm9iRmFpbGVkLCAiZG93bmxv
YWQsZmFpbGVkIiwgRXdrX0Rvd25sb2FkX0pvYl9FcnJvcik7CitERUNMQVJFX0VXS19WSUVXX0NB
TExCQUNLKERvd25sb2FkSm9iRmluaXNoZWQsICJkb3dubG9hZCxmaW5pc2hlZCIsIEV3a19Eb3du
bG9hZF9Kb2IpOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhEb3dubG9hZEpvYlJlcXVlc3Rl
ZCwgImRvd25sb2FkLHJlcXVlc3QiLCBFd2tfRG93bmxvYWRfSm9iKTsKK0RFQ0xBUkVfRVdLX1ZJ
RVdfQ0FMTEJBQ0soTmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0LCAiZm9ybSxzdWJtaXNzaW9uLHJl
cXVlc3QiLCBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QpOworREVDTEFSRV9FV0tfVklFV19D
QUxMQkFDSyhMb2FkRXJyb3IsICJsb2FkLGVycm9yIiwgRXdrX0Vycm9yKTsKK0RFQ0xBUkVfRVdL
X1ZJRVdfQ0FMTEJBQ0soTG9hZEZpbmlzaGVkLCAibG9hZCxmaW5pc2hlZCIsIHZvaWQpOworREVD
TEFSRV9FV0tfVklFV19DQUxMQkFDSyhMb2FkUHJvZ3Jlc3MsICJsb2FkLHByb2dyZXNzIiwgZG91
YmxlKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soUHJvdmlzaW9uYWxMb2FkRmFpbGVkLCAi
bG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBFd2tfRXJyb3IpOworREVDTEFSRV9FV0tfVklFV19D
QUxMQkFDSyhQcm92aXNpb25hbExvYWRSZWRpcmVjdCwgImxvYWQscHJvdmlzaW9uYWwscmVkaXJl
Y3QiLCB2b2lkKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soUHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCwgImxvYWQscHJvdmlzaW9uYWwsc3RhcnRlZCIsIHZvaWQpOworREVDTEFSRV9FV0tfVklF
V19DQUxMQkFDSyhSZXNvdXJjZUxvYWRTdGFydGVkLCAicmVzb3VyY2UscmVxdWVzdCxuZXciLCBF
d2tfUmVzb3VyY2VfUmVxdWVzdCk7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFJlc291cmNl
TG9hZFJlc3BvbnNlLCAicmVzb3VyY2UscmVxdWVzdCxyZXNwb25zZSIsIEV3a19SZXNvdXJjZV9M
b2FkX1Jlc3BvbnNlKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soUmVzb3VyY2VMb2FkRmFp
bGVkLCAicmVzb3VyY2UscmVxdWVzdCxmYWlsZWQiLCBFd2tfUmVzb3VyY2VfTG9hZF9FcnJvcik7
CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFJlc291cmNlTG9hZEZpbmlzaGVkLCAicmVzb3Vy
Y2UscmVxdWVzdCxmaW5pc2hlZCIsIEV3a19SZXNvdXJjZSk7CitERUNMQVJFX0VXS19WSUVXX0NB
TExCQUNLKFJlc291cmNlUmVxdWVzdFNlbnQsICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiLCBFd2tf
UmVzb3VyY2VfUmVxdWVzdCk7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbiwgInBvbGljeSxkZWNpc2lvbixuYXZpZ2F0aW9uIiwgRXdrX05hdmlnYXRp
b25fUG9saWN5X0RlY2lzaW9uKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soTmV3V2luZG93
UG9saWN5RGVjaXNpb24sICJwb2xpY3ksZGVjaXNpb24sbmV3LHdpbmRvdyIsIEV3a19OYXZpZ2F0
aW9uX1BvbGljeV9EZWNpc2lvbik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEJhY2tGb3J3
YXJkTGlzdENoYW5nZSwgImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCB2b2lkKTsKK0RFQ0xB
UkVfRVdLX1ZJRVdfQ0FMTEJBQ0soVGl0bGVDaGFuZ2UsICJ0aXRsZSxjaGFuZ2VkIiwgY2hhcik7
CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFRvb2x0aXBUZXh0VW5zZXQsICJ0b29sdGlwLHRl
eHQsdW5zZXQiLCB2b2lkKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soVG9vbHRpcFRleHRT
ZXQsICJ0b29sdGlwLHRleHQsc2V0IiwgY2hhcik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNL
KFRleHRGb3VuZCwgInRleHQsZm91bmQiLCB1bnNpZ25lZCk7CitERUNMQVJFX0VXS19WSUVXX0NB
TExCQUNLKFdlYlByb2Nlc3NDcmFzaGVkLCAid2VicHJvY2VzcyxjcmFzaGVkIiwgYm9vbCk7Cisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhJbnRlbnRS
ZXF1ZXN0LCAiaW50ZW50LHJlcXVlc3QsbmV3IiwgRXdrX0ludGVudCk7CisjZW5kaWYKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhJbnRlbnRT
ZXJ2aWNlUmVnaXN0cmF0aW9uLCAiaW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBFd2tfSW50ZW50
X1NlcnZpY2UpOworI2VuZGlmCisKK30KKworI2VuZGlmIC8vICNpZm5kZWYgRXdrVmlld0NhbGxi
YWNrc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5jcHAKaW5kZXggZjU0ZDc2Zi4uYTg4N2FiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcApAQCAtMjcwLDYyICsyNzAsNiBAQCB2b2lk
IEV3a1ZpZXdJbXBsOjpyZWRyYXdSZWdpb24oY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBtX2Rp
cnR5UmVjdHMuYXBwZW5kKHJlY3QpOwogfQogCi0vKioKLSAqIEBpbnRlcm5hbAotICogQSBkb3du
bG9hZCBmb3IgdGhhdCB2aWV3IHdhcyBjYW5jZWxsZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAi
ZG93bmxvYWQsY2FuY2VsbGVkIiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfRG93bmxvYWRfSm9iLgot
ICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Eb3dubG9hZEpvYkNhbmNlbGxlZChFd2tfRG93
bmxvYWRfSm9iKiBkb3dubG9hZCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgImRvd25sb2FkLGNhbmNlbGxlZCIsIGRvd25sb2FkKTsKLX0KLQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqIEEgZG93bmxvYWQgZm9yIHRoYXQgdmlldyBoYXMgZmFpbGVkLgotICoK
LSAqIEVtaXRzIHNpZ25hbDogImRvd25sb2FkLGZhaWxlZCIgd2l0aCBwb2ludGVyIHRvIGEgRXdr
X0Rvd25sb2FkX0pvYl9FcnJvci4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtRG93bmxv
YWRKb2JGYWlsZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQsIEV3a19FcnJvciogZXJyb3Ip
Ci17Ci0gICAgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciBkb3dubG9hZEVycm9yID0geyBkb3dubG9h
ZCwgZXJyb3IgfTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywg
ImRvd25sb2FkLGZhaWxlZCIsICZkb3dubG9hZEVycm9yKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJu
YWwKLSAqIEEgZG93bmxvYWQgZm9yIHRoYXQgdmlldyBmaW5pc2hlZCBzdWNjZXNzZnVsbHkuCi0g
KgotICogRW1pdHMgc2lnbmFsOiAiZG93bmxvYWQsZmluaXNoZWQiIHdpdGggcG9pbnRlciB0byBh
IEV3a19Eb3dubG9hZF9Kb2IuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybURvd25sb2Fk
Sm9iRmluaXNoZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQpCi17Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJkb3dubG9hZCxmaW5pc2hlZCIsIGRvd25s
b2FkKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIEEgbmV3IGRvd25sb2FkIGhhcyBiZWVu
IHJlcXVlc3RlZCBmb3IgdGhhdCB2aWV3LgotICoKLSAqIEVtaXRzIHNpZ25hbDogImRvd25sb2Fk
LHJlcXVlc3QiIHdpdGggcG9pbnRlciB0byBhIEV3a19Eb3dubG9hZF9Kb2IuCi0gKi8KLXZvaWQg
RXdrVmlld0ltcGw6OmluZm9ybURvd25sb2FkSm9iUmVxdWVzdGVkKEV3a19Eb3dubG9hZF9Kb2Iq
IGRvd25sb2FkKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3
LCAiZG93bmxvYWQscmVxdWVzdCIsIGRvd25sb2FkKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIGluZm9ybXMgdGhhdCBhIGZvcm0gcmVxdWVzdCBpcyBhYm91dCB0byBiZSBzdWJtaXR0ZWQu
Ci0gKgotICogRW1pdHMgc2lnbmFsOiAiZm9ybSxzdWJtaXNzaW9uLHJlcXVlc3QiIHdpdGggcG9p
bnRlciB0byBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QuCi0gKi8KLXZvaWQgRXdrVmlld0lt
cGw6OmluZm9ybU5ld0Zvcm1TdWJtaXNzaW9uUmVxdWVzdChFd2tfRm9ybV9TdWJtaXNzaW9uX1Jl
cXVlc3QqIHJlcXVlc3QpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbCht
X3ZpZXcsICJmb3JtLHN1Ym1pc3Npb24scmVxdWVzdCIsIHJlcXVlc3QpOwotfQotCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogLyoqCiAgKiBAaW50ZXJuYWwKQEAgLTM2Nyw1MSArMzExLDYg
QEAgdm9pZCBFd2tWaWV3SW1wbDo6c2V0SW1hZ2VEYXRhKHZvaWQqIGltYWdlRGF0YSwgY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX2NvcHlfc2V0KHNkLT5p
bWFnZSwgaW1hZ2VEYXRhKTsKIH0KIAotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIGluZm9ybXMgbG9h
ZCBmYWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJs
b2FkLGVycm9yIiB3aXRoIHBvaW50ZXIgdG8gRXdrX0Vycm9yLgotICovCi12b2lkIEV3a1ZpZXdJ
bXBsOjppbmZvcm1Mb2FkRXJyb3IoRXdrX0Vycm9yKiBlcnJvcikKLXsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQsZXJyb3IiLCBlcnJvcik7Ci19Ci0K
LS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIGxvYWQgZmluaXNoZWQuCi0gKgotICogRW1p
dHMgc2lnbmFsOiAibG9hZCxmaW5pc2hlZCIuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9y
bUxvYWRGaW5pc2hlZCgpCi17Ci0gICAgaW5mb3JtVVJMQ2hhbmdlKCk7Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2FkLGZpbmlzaGVkIiwgMCk7Ci19Ci0K
LS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIGxvYWQgcHJvZ3Jlc3MgY2hhbmdlZC4KLSAq
Ci0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb2dyZXNzIiB3aXRoIHBvaW50ZXIgdG8gYSBkb3Vi
bGUgZnJvbSAwLjAgdG8gMS4wLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkUHJv
Z3Jlc3MoZG91YmxlIHByb2dyZXNzKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwobV92aWV3LCAibG9hZCxwcm9ncmVzcyIsICZwcm9ncmVzcyk7Ci19Ci0KLS8qKgotICog
QGludGVybmFsCi0gKiBpbmZvcm1zIHZpZXcgcHJvdmlzaW9uYWwgbG9hZCBmYWlsZWQgd2l0aCBl
cnJvciBpbmZvcm1hdGlvbi4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFs
LGZhaWxlZCIgd2l0aCBwb2ludGVyIHRvIEV3a19FcnJvci4KLSAqLwotdm9pZCBFd2tWaWV3SW1w
bDo6aW5mb3JtUHJvdmlzaW9uYWxMb2FkRmFpbGVkKEV3a19FcnJvciogZXJyb3IpCi17Ci0gICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2FkLHByb3Zpc2lvbmFs
LGZhaWxlZCIsIGVycm9yKTsKLX0KLQogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogdm9p
ZCBFd2tWaWV3SW1wbDo6aW5mb3JtTG9hZENvbW1pdHRlZCgpCiB7CkBAIC00MTksMTQ2ICszMTgs
NiBAQCB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkQ29tbWl0dGVkKCkKIH0KICNlbmRpZgog
Ci0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3JtcyB2aWV3IHJlY2VpdmVkIHJlZGlyZWN0IGZv
ciBwcm92aXNpb25hbCBsb2FkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9u
YWwscmVkaXJlY3QiLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Qcm92aXNpb25hbExv
YWRSZWRpcmVjdCgpCi17Ci0gICAgaW5mb3JtVVJMQ2hhbmdlKCk7Ci0gICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLHJlZGlyZWN0Iiwg
MCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIHZpZXcgcHJvdmlzaW9uYWwg
bG9hZCBzdGFydGVkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9uYWwsc3Rh
cnRlZCIuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVByb3Zpc2lvbmFsTG9hZFN0YXJ0
ZWQoKQotewotICAgIGluZm9ybVVSTENoYW5nZSgpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobV92aWV3LCAibG9hZCxwcm92aXNpb25hbCxzdGFydGVkIiwgMCk7Ci19Ci0K
LS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIHRoYXQgYSBuYXZpZ2F0aW9uIHBvbGljeSBk
ZWNpc2lvbiBzaG91bGQgYmUgdGFrZW4uCi0gKgotICogRW1pdHMgc2lnbmFsOiAicG9saWN5LGRl
Y2lzaW9uLG5hdmlnYXRpb24iLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1OYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24oRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lv
bikKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInBvbGlj
eSxkZWNpc2lvbixuYXZpZ2F0aW9uIiwgZGVjaXNpb24pOwotfQotCi0vKioKLSAqIEBpbnRlcm5h
bAotICogaW5mb3JtcyB0aGF0IGEgbmV3IHdpbmRvdyBwb2xpY3kgZGVjaXNpb24gc2hvdWxkIGJl
IHRha2VuLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInBvbGljeSxkZWNpc2lvbixuZXcsd2luZG93
Ii4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtTmV3V2luZG93UG9saWN5RGVjaXNpb24o
RXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbikKLXsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInBvbGljeSxkZWNpc2lvbixuZXcsd2lu
ZG93IiwgZGVjaXNpb24pOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogTG9hZCB3YXMgaW5p
dGlhdGVkIGZvciBhIHJlc291cmNlIGluIHRoZSB2aWV3LgotICoKLSAqIEVtaXRzIHNpZ25hbDog
InJlc291cmNlLHJlcXVlc3QsbmV3IiB3aXRoIHBvaW50ZXIgdG8gcmVzb3VyY2UgcmVxdWVzdC4K
LSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtUmVzb3VyY2VMb2FkU3RhcnRlZChFd2tfUmVz
b3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpCi17Ci0gICAgRXdrX1Jl
c291cmNlX1JlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCByZXF1ZXN0LCAwfTsK
LQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2Us
cmVxdWVzdCxuZXciLCAmcmVzb3VyY2VSZXF1ZXN0KTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIFJlY2VpdmVkIGEgcmVzcG9uc2UgdG8gYSByZXNvdXJjZSBsb2FkIHJlcXVlc3QgaW4gdGhl
IHZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxyZXNwb25zZSIg
d2l0aCBwb2ludGVyIHRvIHJlc291cmNlIHJlc3BvbnNlLgotICovCi12b2lkIEV3a1ZpZXdJbXBs
OjppbmZvcm1SZXNvdXJjZUxvYWRSZXNwb25zZShFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tf
VXJsX1Jlc3BvbnNlKiByZXNwb25zZSkKLXsKLSAgICBFd2tfUmVzb3VyY2VfTG9hZF9SZXNwb25z
ZSByZXNvdXJjZUxvYWRSZXNwb25zZSA9IHtyZXNvdXJjZSwgcmVzcG9uc2V9OwotICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCxyZXNw
b25zZSIsICZyZXNvdXJjZUxvYWRSZXNwb25zZSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0g
KiBGYWlsZWQgbG9hZGluZyBhIHJlc291cmNlIGluIHRoZSB2aWV3LgotICoKLSAqIEVtaXRzIHNp
Z25hbDogInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiIHdpdGggcG9pbnRlciB0byB0aGUgcmVz
b3VyY2UgbG9hZCBlcnJvci4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtUmVzb3VyY2VM
b2FkRmFpbGVkKEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19FcnJvciogZXJyb3IpCi17Ci0g
ICAgRXdrX1Jlc291cmNlX0xvYWRfRXJyb3IgcmVzb3VyY2VMb2FkRXJyb3IgPSB7cmVzb3VyY2Us
IGVycm9yfTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInJl
c291cmNlLHJlcXVlc3QsZmFpbGVkIiwgJnJlc291cmNlTG9hZEVycm9yKTsKLX0KLQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqIEZpbmlzaGVkIGxvYWRpbmcgYSByZXNvdXJjZSBpbiB0aGUgdmlldy4K
LSAqCi0gKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB3aXRoIHBv
aW50ZXIgdG8gdGhlIHJlc291cmNlLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1SZXNv
dXJjZUxvYWRGaW5pc2hlZChFd2tfUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCxmaW5pc2hl
ZCIsIHJlc291cmNlKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcXVlc3Qgd2FzIHNl
bnQgZm9yIGEgcmVzb3VyY2UgaW4gdGhlIHZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFsOiAicmVz
b3VyY2UscmVxdWVzdCxzZW50IiB3aXRoIHBvaW50ZXIgdG8gcmVzb3VyY2UgcmVxdWVzdCBhbmQg
cG9zc2libGUgcmVkaXJlY3QgcmVzcG9uc2UuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9y
bVJlc291cmNlUmVxdWVzdFNlbnQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXF1
ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNlKQotewotICAg
IEV3a19SZXNvdXJjZV9SZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHtyZXNvdXJjZSwgcmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZX07Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiLCAmcmVzb3VyY2VSZXF1ZXN0KTsKLX0K
LQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFRoZSB2aWV3IHRpdGxlIHdhcyBjaGFuZ2VkIGJ5IHRo
ZSBmcmFtZSBsb2FkZXIuCi0gKgotICogRW1pdHMgc2lnbmFsOiAidGl0bGUsY2hhbmdlZCIgd2l0
aCBwb2ludGVyIHRvIG5ldyB0aXRsZSBzdHJpbmcuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6Omlu
Zm9ybVRpdGxlQ2hhbmdlKGNvbnN0IFN0cmluZyYgdGl0bGUpCi17Ci0gICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ0aXRsZSxjaGFuZ2VkIiwgY29uc3RfY2FzdDxj
aGFyKj4odGl0bGUudXRmOCgpLmRhdGEoKSkpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICov
Ci12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Ub29sdGlwVGV4dENoYW5nZShjb25zdCBTdHJpbmcm
IHRleHQpCi17Ci0gICAgaWYgKHRleHQuaXNFbXB0eSgpKQotICAgICAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInRvb2x0aXAsdGV4dCx1bnNldCIsIDApOwotICAg
IGVsc2UKLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ0
b29sdGlwLHRleHQsc2V0IiwgY29uc3RfY2FzdDxjaGFyKj4odGV4dC51dGY4KCkuZGF0YSgpKSk7
Ci0KLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIGluZm9ybXMgdGhhdCB0aGUgcmVxdWVzdGVk
IHRleHQgd2FzIGZvdW5kLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInRleHQsZm91bmQiIHdpdGgg
dGhlIG51bWJlciBvZiBtYXRjaGVzLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1UZXh0
Rm91bmQodW5zaWduZWQgbWF0Y2hDb3VudCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG1fdmlldywgInRleHQsZm91bmQiLCAmbWF0Y2hDb3VudCk7Ci19Ci0KIEludFNp
emUgRXdrVmlld0ltcGw6OnNpemUoKSBjb25zdAogewogICAgIGludCB3aWR0aCwgaGVpZ2h0OwpA
QCAtNjg5LDMyICs0NDgsNiBAQCB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1JY29uQ2hhbmdlKCkK
ICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImljb24sY2hhbmdl
ZCIsIDApOwogfQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIFRoZSB2aWV3IHJlY2VpdmVkIGEgbmV3IGludGVudCByZXF1ZXN0LgotICoKLSAqIEVtaXRz
IHNpZ25hbDogImludGVudCxyZXF1ZXN0LG5ldyIgd2l0aCBwb2ludGVyIHRvIGEgRXdrX0ludGVu
dC4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtSW50ZW50UmVxdWVzdChFd2tfSW50ZW50
KiBld2tJbnRlbnQpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3Zp
ZXcsICJpbnRlbnQscmVxdWVzdCxuZXciLCBld2tJbnRlbnQpOwotfQotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFRoZSB2aWV3IHJl
Y2VpdmVkIGEgbmV3IGludGVudCBzZXJ2aWNlIHJlZ2lzdHJhdGlvbi4KLSAqCi0gKiBFbWl0cyBz
aWduYWw6ICJpbnRlbnQsc2VydmljZSxyZWdpc3RlciIgd2l0aCBwb2ludGVyIHRvIGEgRXdrX0lu
dGVudF9TZXJ2aWNlLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1JbnRlbnRTZXJ2aWNl
UmVnaXN0cmF0aW9uKEV3a19JbnRlbnRfU2VydmljZSogZXdrSW50ZW50U2VydmljZSkKLXsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImludGVudCxzZXJ2aWNl
LHJlZ2lzdGVyIiwgZXdrSW50ZW50U2VydmljZSk7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQl9J
TlRFTlRTX1RBRykKLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIGJvb2wgRXdr
Vmlld0ltcGw6OmNyZWF0ZUdMU3VyZmFjZShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSkKIHsKQEAg
LTgzOCwzNyArNTcxLDYgQEAgdm9pZCBFd2tWaWV3SW1wbDo6ZGlzbWlzc0NvbG9yUGlja2VyKCkK
IH0KICNlbmRpZgogCi0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3JtcyB0aGF0IHRoZSB2aWV3
J3MgYmFjayAvIGZvcndhcmQgbGlzdCBoYXMgY2hhbmdlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6
ICJiYWNrLGZvcndhcmQsbGlzdCxjaGFuZ2VkIi4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5m
b3JtQmFja0ZvcndhcmRMaXN0Q2hhbmdlKCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG1fdmlldywgImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCAwKTsKLX0KLQot
LyoqCi0gKiBAaW50ZXJuYWwKLSAqIFdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkLgotICoKLSAqIEVt
aXRzIHNpZ25hbDogIndlYnByb2Nlc3MsY3Jhc2hlZCIgd2l0aCBwb2ludGVyIHRvIGNyYXNoIGhh
bmRsaW5nIGJvb2xlYW4uCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVdlYlByb2Nlc3ND
cmFzaGVkKCkKLXsKLSAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKLSAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgIndlYnByb2Nlc3MsY3Jhc2hlZCIsICZoYW5kbGVk
KTsKLQotICAgIGlmICghaGFuZGxlZCkgewotICAgICAgICBDU3RyaW5nIHVybCA9IG1fcGFnZVBy
b3h5LT51cmxBdFByb2Nlc3NFeGl0KCkudXRmOCgpOwotICAgICAgICBXQVJOKCJXQVJOSU5HOiBU
aGUgd2ViIHByb2Nlc3MgZXhwZXJpZW5jZWQgYSBjcmFzaCBvbiAnJXMnLlxuIiwgdXJsLmRhdGEo
KSk7Ci0KLSAgICAgICAgLy8gRGlzcGxheSBhbiBlcnJvciBwYWdlCi0gICAgICAgIGV3a192aWV3
X2h0bWxfc3RyaW5nX2xvYWQobV92aWV3LCAiVGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkLiIs
IDAsIHVybC5kYXRhKCkpOwotICAgIH0KLX0KLQogdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtQ29u
dGVudHNTaXplQ2hhbmdlKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXdJbXBsLmgKaW5kZXggZjRlOTE3Ny4uNjQ0NjNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVm
IEV3a1ZpZXdJbXBsX2gKICNkZWZpbmUgRXdrVmlld0ltcGxfaAogCisjaW5jbHVkZSAiRXdrVmll
d0NhbGxiYWNrcy5oIgogI2luY2x1ZGUgIlJlZlB0ckVmbC5oIgogI2luY2x1ZGUgIldLRWluYVNo
YXJlZFN0cmluZy5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCkBAIC0xNzAsNDcgKzE3MSwx
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXF1ZXN0SlNDb25maXJtUG9wdXAoY29uc3QgV0tFaW5h
U2hhcmVkU3RyaW5nJiBtZXNzYWdlKTsKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgcmVxdWVzdEpT
UHJvbXB0UG9wdXAoY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBXS0Vp
bmFTaGFyZWRTdHJpbmcmIGRlZmF1bHRWYWx1ZSk7CiAKLSAgICB2b2lkIGluZm9ybURvd25sb2Fk
Sm9iQ2FuY2VsbGVkKEV3a19Eb3dubG9hZF9Kb2IqIGRvd25sb2FkKTsKLSAgICB2b2lkIGluZm9y
bURvd25sb2FkSm9iRmFpbGVkKEV3a19Eb3dubG9hZF9Kb2IqIGRvd25sb2FkLCBFd2tfRXJyb3Iq
IGVycm9yKTsKLSAgICB2b2lkIGluZm9ybURvd25sb2FkSm9iRmluaXNoZWQoRXdrX0Rvd25sb2Fk
X0pvYiogZG93bmxvYWQpOwotICAgIHZvaWQgaW5mb3JtRG93bmxvYWRKb2JSZXF1ZXN0ZWQoRXdr
X0Rvd25sb2FkX0pvYiogZG93bmxvYWQpOworICAgIHRlbXBsYXRlPEV3a1ZpZXdDYWxsYmFja3M6
OkNhbGxiYWNrVHlwZSBjYWxsYmFja1R5cGU+CisgICAgRXdrVmlld0NhbGxiYWNrczo6Q2FsbEJh
Y2s8Y2FsbGJhY2tUeXBlPiBzbWFydENhbGxiYWNrKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBFd2tWaWV3Q2FsbGJhY2tzOjpDYWxsQmFjazxjYWxsYmFja1R5cGU+KG1fdmlldyk7Cisg
ICAgfQogCi0gICAgdm9pZCBpbmZvcm1OZXdGb3JtU3VibWlzc2lvblJlcXVlc3QoRXdrX0Zvcm1f
U3VibWlzc2lvbl9SZXF1ZXN0KiByZXF1ZXN0KTsKLSAgICB2b2lkIGluZm9ybUxvYWRFcnJvcihF
d2tfRXJyb3IqIGVycm9yKTsKLSAgICB2b2lkIGluZm9ybUxvYWRGaW5pc2hlZCgpOwotICAgIHZv
aWQgaW5mb3JtTG9hZFByb2dyZXNzKGRvdWJsZSBwcm9ncmVzcyk7Ci0gICAgdm9pZCBpbmZvcm1Q
cm92aXNpb25hbExvYWRGYWlsZWQoRXdrX0Vycm9yKiBlcnJvcik7CiAjaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCiAgICAgdm9pZCBpbmZvcm1Mb2FkQ29tbWl0dGVkKCk7CiAjZW5kaWYKLSAg
ICB2b2lkIGluZm9ybVByb3Zpc2lvbmFsTG9hZFJlZGlyZWN0KCk7Ci0gICAgdm9pZCBpbmZvcm1Q
cm92aXNpb25hbExvYWRTdGFydGVkKCk7Ci0KLSAgICB2b2lkIGluZm9ybVJlc291cmNlTG9hZFN0
YXJ0ZWQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0KTsK
LSAgICB2b2lkIGluZm9ybVJlc291cmNlTG9hZFJlc3BvbnNlKEV3a19SZXNvdXJjZSogcmVzb3Vy
Y2UsIEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlKTsKLSAgICB2b2lkIGluZm9ybVJlc291cmNl
TG9hZEZhaWxlZChFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfRXJyb3IqIGVycm9yKTsKLSAg
ICB2b2lkIGluZm9ybVJlc291cmNlTG9hZEZpbmlzaGVkKEV3a19SZXNvdXJjZSogcmVzb3VyY2Up
OwotICAgIHZvaWQgaW5mb3JtUmVzb3VyY2VSZXF1ZXN0U2VudChFd2tfUmVzb3VyY2UqIHJlc291
cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QsIEV3a19VcmxfUmVzcG9uc2UqIHJlZGlyZWN0
UmVzcG9uc2UpOwotCi0gICAgdm9pZCBpbmZvcm1OYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oRXdr
X05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbik7Ci0gICAgdm9pZCBpbmZvcm1O
ZXdXaW5kb3dQb2xpY3lEZWNpc2lvbihFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRl
Y2lzaW9uKTsKLSAgICB2b2lkIGluZm9ybUJhY2tGb3J3YXJkTGlzdENoYW5nZSgpOwotCi0gICAg
dm9pZCBpbmZvcm1UaXRsZUNoYW5nZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKLSAgICB2b2lkIGlu
Zm9ybVRvb2x0aXBUZXh0Q2hhbmdlKGNvbnN0IFN0cmluZyYgdGV4dCk7Ci0gICAgdm9pZCBpbmZv
cm1UZXh0Rm91bmQodW5zaWduZWQgbWF0Y2hDb3VudCk7Ci0gICAgdm9pZCBpbmZvcm1JY29uQ2hh
bmdlKCk7Ci0gICAgdm9pZCBpbmZvcm1XZWJQcm9jZXNzQ3Jhc2hlZCgpOwogICAgIHZvaWQgaW5m
b3JtQ29udGVudHNTaXplQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOwogICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbmZvcm1EYXRhYmFzZVF1b3RhUmVhY2hlZChjb25zdCBTdHJp
bmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9u
ZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2Fn
ZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1bnNpZ25lZCBsb25n
IGxvbmcgZXhwZWN0ZWRVc2FnZSk7Ci0gICAgdm9pZCBpbmZvcm1VUkxDaGFuZ2UoKTsKIAotI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB2b2lkIGluZm9ybUludGVudFJlcXVlc3QoRXdrX0lu
dGVudCogZXdrSW50ZW50KTsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0g
ICAgdm9pZCBpbmZvcm1JbnRlbnRTZXJ2aWNlUmVnaXN0cmF0aW9uKEV3a19JbnRlbnRfU2Vydmlj
ZSogZXdrSW50ZW50U2VydmljZSk7Ci0jZW5kaWYKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9S
RSkKICAgICBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwqIHBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnQoKSB7IHJldHVybiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnQuZ2V0KCk7IH0KICAgICBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIHBhZ2VW
aWV3cG9ydENvbnRyb2xsZXIoKSB7IHJldHVybiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuZ2V0
KCk7IH0KQEAgLTIyMiwxMCArMTk0LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0RXZhc0ds
U3VyZmFjZSgpIHsgbV9ldmFzR2xTdXJmYWNlID0gMDsgfQogI2VuZGlmCiAKKyAgICAvLyBGSVhN
RTogbmVlZHMgcmVmYWN0b3JpbmcgKHNwbGl0IGNhbGxiYWNrIGludm9rZSkKKyAgICB2b2lkIGlu
Zm9ybVVSTENoYW5nZSgpOworCiBwcml2YXRlOgogICAgIGlubGluZSBFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEoKTsKICAgICB2b2lkIGRpc3BsYXlUaW1lckZpcmVkKFdlYkNvcmU6OlRp
bWVyPEV3a1ZpZXdJbXBsPiopOwogCisgICAgdm9pZCBpbmZvcm1JY29uQ2hhbmdlKCk7CisKICAg
ICBzdGF0aWMgdm9pZCBvbk1vdXNlRG93bih2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3Qq
LCB2b2lkKiBldmVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIG9uTW91c2VVcCh2b2lkKiBkYXRh
LCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pOwogICAgIHN0YXRpYyB2b2lk
IG9uTW91c2VNb3ZlKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50
SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2Fk
TWFuYWdlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFu
YWdlckVmbC5jcHAKaW5kZXggNWYzNTliNS4uMWFhNjY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcApAQCAtMzIsNiArMzIs
OSBAQAogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgImV3a19lcnJvcl9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcu
aCIKKwordXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCkBAIC00OSw3ICs1Miw3IEBAIFdLU3RyaW5nUmVmIERvd25sb2FkTWFuYWdlckVmbDo6
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0CiAKICAgICAv
LyBXZSBzZW5kIHRoZSBuZXcgZG93bmxvYWQgc2lnbmFsIG9uIHRoZSBFd2tfVmlldyBvbmx5IG9u
Y2Ugd2UgaGF2ZSByZWNlaXZlZCB0aGUgcmVzcG9uc2UKICAgICAvLyBhbmQgdGhlIHN1Z2dlc3Rl
ZCBmaWxlIG5hbWUuCi0gICAgZG93bmxvYWQtPnZpZXdJbXBsKCktPmluZm9ybURvd25sb2FkSm9i
UmVxdWVzdGVkKGRvd25sb2FkKTsKKyAgICBkb3dubG9hZC0+dmlld0ltcGwoKS0+c21hcnRDYWxs
YmFjazxEb3dubG9hZEpvYlJlcXVlc3RlZD4oKS5jYWxsKGRvd25sb2FkKTsKIAogICAgIC8vIERv
d25sb2FkU291cCBleHBlY3RzIHRoZSBkZXN0aW5hdGlvbiB0byBiZSBhIFVSTC4KICAgICBTdHJp
bmcgZGVzdGluYXRpb24gPSBBU0NJSUxpdGVyYWwoImZpbGU6Ly8iKSArIFN0cmluZzo6ZnJvbVVU
RjgoZG93bmxvYWQtPmRlc3RpbmF0aW9uKCkpOwpAQCAtODgsNyArOTEsOCBAQCB2b2lkIERvd25s
b2FkTWFuYWdlckVmbDo6ZGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgd2tEb3du
bG9hZCwgV0tFcnJvcgogCiAgICAgT3duUHRyPEV3a19FcnJvcj4gZXdrRXJyb3IgPSBFd2tfRXJy
b3I6OmNyZWF0ZShlcnJvcik7CiAgICAgZG93bmxvYWQtPnNldFN0YXRlKEVXS19ET1dOTE9BRF9K
T0JfU1RBVEVfRkFJTEVEKTsKLSAgICBkb3dubG9hZC0+dmlld0ltcGwoKS0+aW5mb3JtRG93bmxv
YWRKb2JGYWlsZWQoZG93bmxvYWQsIGV3a0Vycm9yLmdldCgpKTsKKyAgICBFd2tfRG93bmxvYWRf
Sm9iX0Vycm9yIGRvd25sb2FkRXJyb3IgPSB7IGRvd25sb2FkLCBld2tFcnJvci5nZXQoKSB9Owor
ICAgIGRvd25sb2FkLT52aWV3SW1wbCgpLT5zbWFydENhbGxiYWNrPERvd25sb2FkSm9iRmFpbGVk
PigpLmNhbGwoJmRvd25sb2FkRXJyb3IpOwogICAgIGRvd25sb2FkTWFuYWdlci0+dW5yZWdpc3Rl
ckRvd25sb2FkSm9iKGRvd25sb2FkSWQpOwogfQogCkBAIC0xMDAsNyArMTA0LDcgQEAgdm9pZCBE
b3dubG9hZE1hbmFnZXJFZmw6OmRpZENhbmNlbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYg
d2tEb3dubG9hZCwgY29uc3QKICAgICBBU1NFUlQoZG93bmxvYWQpOwogCiAgICAgZG93bmxvYWQt
PnNldFN0YXRlKEVXS19ET1dOTE9BRF9KT0JfU1RBVEVfQ0FOQ0VMTEVEKTsKLSAgICBkb3dubG9h
ZC0+dmlld0ltcGwoKS0+aW5mb3JtRG93bmxvYWRKb2JDYW5jZWxsZWQoZG93bmxvYWQpOworICAg
IGRvd25sb2FkLT52aWV3SW1wbCgpLT5zbWFydENhbGxiYWNrPERvd25sb2FkSm9iQ2FuY2VsbGVk
PigpLmNhbGwoZG93bmxvYWQpOwogICAgIGRvd25sb2FkTWFuYWdlci0+dW5yZWdpc3RlckRvd25s
b2FkSm9iKGRvd25sb2FkSWQpOwogfQogCkBAIC0xMTIsNyArMTE2LDcgQEAgdm9pZCBEb3dubG9h
ZE1hbmFnZXJFZmw6OmRpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgd2tEb3du
bG9hZCwgY29uc3QKICAgICBBU1NFUlQoZG93bmxvYWQpOwogCiAgICAgZG93bmxvYWQtPnNldFN0
YXRlKEVXS19ET1dOTE9BRF9KT0JfU1RBVEVfRklOSVNIRUQpOwotICAgIGRvd25sb2FkLT52aWV3
SW1wbCgpLT5pbmZvcm1Eb3dubG9hZEpvYkZpbmlzaGVkKGRvd25sb2FkKTsKKyAgICBkb3dubG9h
ZC0+dmlld0ltcGwoKS0+c21hcnRDYWxsYmFjazxEb3dubG9hZEpvYkZpbmlzaGVkPigpLmNhbGwo
ZG93bmxvYWQpOwogICAgIGRvd25sb2FkTWFuYWdlci0+dW5yZWdpc3RlckRvd25sb2FkSm9iKGRv
d25sb2FkSWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L0ZpbmRDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9GaW5kQ2xp
ZW50RWZsLmNwcAppbmRleCBhNDMxYWNjLi41ZTkwMDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNs
dWRlICJFd2tWaWV3SW1wbC5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgogCit1c2luZyBuYW1lc3Bh
Y2UgRXdrVmlld0NhbGxiYWNrczsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBpbmxp
bmUgRmluZENsaWVudEVmbCogdG9GaW5kQ2xpZW50RWZsKGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CkBAIC00MCwxMyArNDIsMTMgQEAgc3RhdGljIGlubGluZSBGaW5kQ2xpZW50RWZsKiB0b0ZpbmRD
bGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHZvaWQgRmluZENsaWVudEVmbDo6ZGlk
RmluZFN0cmluZyhXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCB1bnNpZ25lZCBtYXRjaENvdW50LCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIEZpbmRDbGllbnRFZmwqIGZpbmRDbGllbnQg
PSB0b0ZpbmRDbGllbnRFZmwoY2xpZW50SW5mbyk7Ci0gICAgZmluZENsaWVudC0+bV92aWV3SW1w
bC0+aW5mb3JtVGV4dEZvdW5kKG1hdGNoQ291bnQpOworICAgIGZpbmRDbGllbnQtPm1fdmlld0lt
cGwtPnNtYXJ0Q2FsbGJhY2s8VGV4dEZvdW5kPigpLmNhbGwoJm1hdGNoQ291bnQpOwogfQogCiB2
b2lkIEZpbmRDbGllbnRFZmw6OmRpZEZhaWxUb0ZpbmRTdHJpbmcoV0tQYWdlUmVmLCBXS1N0cmlu
Z1JlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBGaW5kQ2xpZW50RWZsKiBmaW5k
Q2xpZW50ID0gdG9GaW5kQ2xpZW50RWZsKGNsaWVudEluZm8pOwotICAgIGZpbmRDbGllbnQtPm1f
dmlld0ltcGwtPmluZm9ybVRleHRGb3VuZCgwKTsKKyAgICBmaW5kQ2xpZW50LT5tX3ZpZXdJbXBs
LT5zbWFydENhbGxiYWNrPFRleHRGb3VuZD4oKS5jYWxsKCk7CiB9CiAKIEZpbmRDbGllbnRFZmw6
OkZpbmRDbGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKaW5kZXggNzU0MWUyNi4uNWI4OTMwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwCkBA
IC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVkZSAiZXdrX2Zvcm1f
c3VibWlzc2lvbl9yZXF1ZXN0X3ByaXZhdGUuaCIKIAordXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdD
YWxsYmFja3M7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgaW5saW5lIEZvcm1DbGll
bnRFZmwqIHRvRm9ybUNsaWVudEVmbChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtNDIsNyAr
NDQsNyBAQCB2b2lkIEZvcm1DbGllbnRFZmw6OndpbGxTdWJtaXRGb3JtKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiAvKmZyYW1lKi8sIFdLRnJhbWVSZWYgLwogICAgIEZvcm1DbGllbnRFZmwqIGZvcm1D
bGllbnQgPSB0b0Zvcm1DbGllbnRFZmwoY2xpZW50SW5mbyk7CiAKICAgICBSZWZQdHI8RXdrX0Zv
cm1fU3VibWlzc2lvbl9SZXF1ZXN0PiByZXF1ZXN0ID0gRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1
ZXN0OjpjcmVhdGUodmFsdWVzLCBsaXN0ZW5lcik7Ci0gICAgZm9ybUNsaWVudC0+bV92aWV3SW1w
bC0+aW5mb3JtTmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOworICAgIGZv
cm1DbGllbnQtPm1fdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8TmV3Rm9ybVN1Ym1pc3Npb25SZXF1
ZXN0PigpLmNhbGwocmVxdWVzdC5nZXQoKSk7CiB9CiAKIEZvcm1DbGllbnRFZmw6OkZvcm1DbGll
bnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCAzYjNiN2I2Li5iYzc0ZDU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNDEs
NiArNDEsNyBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJl
d2tfZG93bmxvYWRfam9iLmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgi
CisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogCiAjaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCkBAIC00OCw2ICs0OSw3IEBACiAjZW5kaWYKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNrczsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTExNywxMCArMTE5LDIxIEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OnByb2Nlc3NEaWRDcmFzaCgpCiB7CiAgICAgLy8gQ2hlY2sgaWYgbG9hZGluZyB3
YXMgb25nb2luZywgd2hlbiB3ZWIgcHJvY2VzcyBjcmFzaGVkLgogICAgIGRvdWJsZSBsb2FkUHJv
Z3Jlc3MgPSBld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldChtX3ZpZXdJbXBsLT52aWV3KCkpOwot
ICAgIGlmIChsb2FkUHJvZ3Jlc3MgPj0gMCAmJiBsb2FkUHJvZ3Jlc3MgPCAxKQotICAgICAgICBt
X3ZpZXdJbXBsLT5pbmZvcm1Mb2FkUHJvZ3Jlc3MoMSk7CisgICAgaWYgKGxvYWRQcm9ncmVzcyA+
PSAwICYmIGxvYWRQcm9ncmVzcyA8IDEpIHsKKyAgICAgICAgbG9hZFByb2dyZXNzID0gMTsKKyAg
ICAgICAgbV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxMb2FkUHJvZ3Jlc3M+KCkuY2FsbCgmbG9h
ZFByb2dyZXNzKTsKKyAgICB9CiAKLSAgICBtX3ZpZXdJbXBsLT5pbmZvcm1XZWJQcm9jZXNzQ3Jh
c2hlZCgpOworICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAgIG1fdmlld0ltcGwtPnNtYXJ0
Q2FsbGJhY2s8V2ViUHJvY2Vzc0NyYXNoZWQ+KCkuY2FsbCgmaGFuZGxlZCk7CisKKyAgICBpZiAo
IWhhbmRsZWQpIHsKKyAgICAgICAgQ1N0cmluZyB1cmwgPSBtX3ZpZXdJbXBsLT5wYWdlKCktPnVy
bEF0UHJvY2Vzc0V4aXQoKS51dGY4KCk7CisgICAgICAgIFdBUk4oIldBUk5JTkc6IFRoZSB3ZWIg
cHJvY2VzcyBleHBlcmllbmNlZCBhIGNyYXNoIG9uICclcycuXG4iLCB1cmwuZGF0YSgpKTsKKwor
ICAgICAgICAvLyBEaXNwbGF5IGFuIGVycm9yIHBhZ2UKKyAgICAgICAgZXdrX3ZpZXdfaHRtbF9z
dHJpbmdfbG9hZChtX3ZpZXdJbXBsLT52aWV3KCksICJUaGUgd2ViIHByb2Nlc3MgaGFzIGNyYXNo
ZWQuIiwgMCwgdXJsLmRhdGEoKSk7CisgICAgfQogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpk
aWRSZWxhdW5jaFByb2Nlc3MoKQpAQCAtMTM3LDcgKzE1MCwxMCBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpwYWdlQ2xvc2VkKCkKIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6dG9vbFRpcENoYW5nZWQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBuZXdUb29sVGlwKQogewotICAgIG1fdmlld0lt
cGwtPmluZm9ybVRvb2x0aXBUZXh0Q2hhbmdlKG5ld1Rvb2xUaXApOworICAgIGlmIChuZXdUb29s
VGlwLmlzRW1wdHkoKSkKKyAgICAgICAgbV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxUb29sdGlw
VGV4dFVuc2V0PigpLmNhbGwoKTsKKyAgICBlbHNlCisgICAgICAgIG1fdmlld0ltcGwtPnNtYXJ0
Q2FsbGJhY2s8VG9vbHRpcFRleHRTZXQ+KCkuY2FsbChuZXdUb29sVGlwKTsKIH0KIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcAppbmRleCA3
YmY2YmRhLi42Mjc4ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VMb2FkQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VMb2FkQ2xpZW50RWZsLmNwcApAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgImV3a19p
bnRlbnRfc2VydmljZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKIAordXNpbmcg
bmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0
aWMgaW5saW5lIFBhZ2VMb2FkQ2xpZW50RWZsKiB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCkBAIC00OSw3ICs1MSw3IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6
OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgdGl0bGUsIFdL
CiAgICAgICAgIHJldHVybjsKIAogICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxv
YWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7Ci0gICAgdmlld0ltcGwtPmluZm9y
bVRpdGxlQ2hhbmdlKHRvSW1wbCh0aXRsZSktPnN0cmluZygpKTsKKyAgICB2aWV3SW1wbC0+c21h
cnRDYWxsYmFjazxUaXRsZUNoYW5nZT4oKS5jYWxsKHRvSW1wbCh0aXRsZSktPnN0cmluZygpKTsK
IH0KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKQEAgLTU3LDcgKzU5LDcgQEAgdm9pZCBQYWdl
TG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgV0tJbnRlbnQKIHsKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2Fk
Q2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwogICAgIFJlZlB0cjxFd2tfSW50ZW50
PiBld2tJbnRlbnQgPSBFd2tfSW50ZW50OjpjcmVhdGUoaW50ZW50KTsKLSAgICB2aWV3SW1wbC0+
aW5mb3JtSW50ZW50UmVxdWVzdChld2tJbnRlbnQuZ2V0KCkpOworICAgIHZpZXdJbXBsLT5zbWFy
dENhbGxiYWNrPEludGVudFJlcXVlc3Q+KCkuY2FsbChld2tJbnRlbnQuZ2V0KCkpOwogfQogI2Vu
ZGlmCiAKQEAgLTY2LDE0ICs2OCwxNSBAQCB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpyZWdpc3Rl
ckludGVudFNlcnZpY2VGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLSQogewogICAg
IEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbykt
PnZpZXdJbXBsKCk7CiAgICAgUmVmUHRyPEV3a19JbnRlbnRfU2VydmljZT4gZXdrSW50ZW50U2Vy
dmljZSA9IEV3a19JbnRlbnRfU2VydmljZTo6Y3JlYXRlKHNlcnZpY2VJbmZvKTsKLSAgICB2aWV3
SW1wbC0+aW5mb3JtSW50ZW50U2VydmljZVJlZ2lzdHJhdGlvbihld2tJbnRlbnRTZXJ2aWNlLmdl
dCgpKTsKKyAgICB2aWV3SW1wbC0+c21hcnRDYWxsYmFjazxJbnRlbnRTZXJ2aWNlUmVnaXN0cmF0
aW9uPigpLmNhbGwoZXdrSW50ZW50U2VydmljZS5nZXQoKSk7CiB9CiAjZW5kaWYKIAogdm9pZCBQ
YWdlTG9hZENsaWVudEVmbDo6ZGlkQ2hhbmdlUHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdl
TG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKLSAgICB2aWV3SW1wbC0+aW5m
b3JtTG9hZFByb2dyZXNzKFdLUGFnZUdldEVzdGltYXRlZFByb2dyZXNzKHBhZ2UpKTsKKyAgICBk
b3VibGUgcHJvZ3Jlc3MgPSBXS1BhZ2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhwYWdlKTsKKyAgICB2
aWV3SW1wbC0+c21hcnRDYWxsYmFjazxMb2FkUHJvZ3Jlc3M+KCkuY2FsbCgmcHJvZ3Jlc3MpOwog
fQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgLyp1c2VyRGF0YSovLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQpAQCAtODIsNyArODUsNyBAQCB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpk
aWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cAog
ICAgICAgICByZXR1cm47CiAKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2Fk
Q2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwotICAgIHZpZXdJbXBsLT5pbmZvcm1M
b2FkRmluaXNoZWQoKTsKKyAgICB2aWV3SW1wbC0+c21hcnRDYWxsYmFjazxMb2FkRmluaXNoZWQ+
KCkuY2FsbCgpOwogfQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRGYWlsTG9hZFdpdGhF
cnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJlZiBlcnJv
ciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtOTIsOCArOTUsOCBAQCB2
b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFn
ZVJlZiwgV0tGcmFtZVJlZiBmcmFtZQogCiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9Q
YWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKICAgICBPd25QdHI8RXdr
X0Vycm9yPiBld2tFcnJvciA9IEV3a19FcnJvcjo6Y3JlYXRlKGVycm9yKTsKLSAgICB2aWV3SW1w
bC0+aW5mb3JtTG9hZEVycm9yKGV3a0Vycm9yLmdldCgpKTsKLSAgICB2aWV3SW1wbC0+aW5mb3Jt
TG9hZEZpbmlzaGVkKCk7CisgICAgdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8TG9hZEVycm9yPigp
LmNhbGwoZXdrRXJyb3IuZ2V0KCkpOworICAgIHZpZXdJbXBsLT5zbWFydENhbGxiYWNrPExvYWRG
aW5pc2hlZD4oKS5jYWxsKCk7CiB9CiAKIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5
cGVSZWYgLyp1c2VyRGF0YSovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtMTAyLDcgKzEw
NSw4IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyCiAgICAgICAgIHJldHVybjsKIAogICAgIEV3
a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZp
ZXdJbXBsKCk7Ci0gICAgdmlld0ltcGwtPmluZm9ybVByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKTsK
KyAgICB2aWV3SW1wbC0+aW5mb3JtVVJMQ2hhbmdlKCk7CisgICAgdmlld0ltcGwtPnNtYXJ0Q2Fs
bGJhY2s8UHJvdmlzaW9uYWxMb2FkU3RhcnRlZD4oKS5jYWxsKCk7CiB9CiAKIHZvaWQgUGFnZUxv
YWRDbGllbnRFZmw6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIC8qdXNlckRhdGEq
LywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTExMSw3ICsxMTUsOCBAQCB2b2lkIFBhZ2VM
b2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZShXS1BhZwogICAgICAgICByZXR1cm47CiAKICAgICBFd2tWaWV3SW1wbCogdmlld0lt
cGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwotICAgIHZp
ZXdJbXBsLT5pbmZvcm1Qcm92aXNpb25hbExvYWRSZWRpcmVjdCgpOworICAgIHZpZXdJbXBsLT5p
bmZvcm1VUkxDaGFuZ2UoKTsKKyAgICB2aWV3SW1wbC0+c21hcnRDYWxsYmFjazxQcm92aXNpb25h
bExvYWRSZWRpcmVjdD4oKS5jYWxsKCk7CiB9CiAKIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRp
ZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVS
ZWYgZnJhbWUsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKQEAgLTEyMSw3ICsxMjYsNyBAQCB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRGYWls
UHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYQogCiAgICAg
RXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+
dmlld0ltcGwoKTsKICAgICBPd25QdHI8RXdrX0Vycm9yPiBld2tFcnJvciA9IEV3a19FcnJvcjo6
Y3JlYXRlKGVycm9yKTsKLSAgICB2aWV3SW1wbC0+aW5mb3JtUHJvdmlzaW9uYWxMb2FkRmFpbGVk
KGV3a0Vycm9yLmdldCgpKTsKKyAgICB2aWV3SW1wbC0+c21hcnRDYWxsYmFjazxQcm92aXNpb25h
bExvYWRGYWlsZWQ+KCkuY2FsbChld2tFcnJvci5nZXQoKSk7CiB9CiAKICNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKQEAgLTEzMSw3ICsxMzYsNyBAQCB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZs
OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5
cAogICAgICAgICByZXR1cm47CiAKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VM
b2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwotICAgIHZpZXdJbXBsLT5pbmZv
cm1Mb2FkQ29tbWl0dGVkKCk7CisgICAgdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8TG9hZENvbW1p
dHRlZD4oKS5jYWxsKCk7CiB9CiAjZW5kaWYKIApAQCAtMTQ0LDcgKzE0OSw3IEBAIHZvaWQgUGFn
ZUxvYWRDbGllbnRFZmw6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXS1BhZ2VSZWYsIFdLQmFj
a0ZvcndhcmRMaXN0SXRlCiAgICAgQVNTRVJUKGxpc3QpOwogICAgIGxpc3QtPnVwZGF0ZShhZGRl
ZEl0ZW0sIHJlbW92ZWRJdGVtcyk7CiAKLSAgICB2aWV3SW1wbC0+aW5mb3JtQmFja0ZvcndhcmRM
aXN0Q2hhbmdlKCk7CisgICAgdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8QmFja0ZvcndhcmRMaXN0
Q2hhbmdlPigpLmNhbGwoKTsKIH0KIAogdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5
Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNs
aWVudEVmbC5jcHAKaW5kZXggYTYzYmI1ZS4uMjU0ZjI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuY3BwCkBAIC0zNSw2ICsz
NSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQU3RhdHVzQ29kZXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzOwor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBQYWdlUG9saWN5Q2xpZW50RWZs
KiB0b1BhZ2VQb2xpY3lDbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTQ3LDcg
KzQ5LDcgQEAgdm9pZCBQYWdlUG9saWN5Q2xpZW50RWZsOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwKICAgICBQYWdlUG9saWN5Q2xpZW50RWZs
KiBwb2xpY3lDbGllbnQgPSB0b1BhZ2VQb2xpY3lDbGllbnRFZmwoY2xpZW50SW5mbyk7CiAKICAg
ICBSZWZQdHI8RXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uPiBkZWNpc2lvbiA9IEV3a19O
YXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbjo6Y3JlYXRlKG5hdmlnYXRpb25UeXBlLCBtb3VzZUJ1
dHRvbiwgbW9kaWZpZXJzLCByZXF1ZXN0LCAwLCBsaXN0ZW5lcik7Ci0gICAgcG9saWN5Q2xpZW50
LT5tX3ZpZXdJbXBsLT5pbmZvcm1OYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oZGVjaXNpb24uZ2V0
KCkpOworICAgIHBvbGljeUNsaWVudC0+bV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxOYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24+KCkuY2FsbChkZWNpc2lvbi5nZXQoKSk7CiB9CiAKIHZvaWQgUGFn
ZVBvbGljeUNsaWVudEVmbDo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdLUGFnZVJl
ZiwgV0tGcmFtZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBX
S1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tTdHJpbmdSZWYgZnJhbWVOYW1lLCBXS0ZyYW1lUG9s
aWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiAvKnVzZXJEYXRhKi8sIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCkBAIC01NSw3ICs1Nyw3IEBAIHZvaWQgUGFnZVBvbGljeUNsaWVudEVm
bDo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwK
ICAgICBQYWdlUG9saWN5Q2xpZW50RWZsKiBwb2xpY3lDbGllbnQgPSB0b1BhZ2VQb2xpY3lDbGll
bnRFZmwoY2xpZW50SW5mbyk7CiAKICAgICBSZWZQdHI8RXdrX05hdmlnYXRpb25fUG9saWN5X0Rl
Y2lzaW9uPiBkZWNpc2lvbiA9IEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbjo6Y3JlYXRl
KG5hdmlnYXRpb25UeXBlLCBtb3VzZUJ1dHRvbiwgbW9kaWZpZXJzLCByZXF1ZXN0LCB0b0ltcGwo
ZnJhbWVOYW1lKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbGlzdGVuZXIpOwotICAgIHBvbGlj
eUNsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtTmV3V2luZG93UG9saWN5RGVjaXNpb24oZGVjaXNp
b24uZ2V0KCkpOworICAgIHBvbGljeUNsaWVudC0+bV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxO
ZXdXaW5kb3dQb2xpY3lEZWNpc2lvbj4oKS5jYWxsKGRlY2lzaW9uLmdldCgpKTsKIH0KIAogdm9p
ZCBQYWdlUG9saWN5Q2xpZW50RWZsOjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZUNhbGxiYWNrKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tV
UkxSZXF1ZXN0UmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJl
ZiAvKnVzZXJEYXRhKi8sIGNvbnN0IHZvaWQqIC8qY2xpZW50SW5mbyovKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuY3BwCmlu
ZGV4IGNjNGJkZjguLmJjMDE0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAKQEAgLTM0LDggKzM0LDEwIEBACiAj
aW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3Rf
cHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIgorI2luY2x1
ZGUgImV3a192aWV3LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNw
YWNlIEV3a1ZpZXdDYWxsYmFja3M7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01Niw3ICs1
OCw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNv
dXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgd2tGCiAgICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5t
X2xvYWRpbmdSZXNvdXJjZXNNYXAuYWRkKHJlc291cmNlSWRlbnRpZmllciwgcmVzb3VyY2UpOwog
CiAgICAgUmVmUHRyPEV3a19VcmxfUmVxdWVzdD4gcmVxdWVzdCA9IEV3a19VcmxfUmVxdWVzdDo6
Y3JlYXRlKHdrUmVxdWVzdCk7Ci0gICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5p
bmZvcm1SZXNvdXJjZUxvYWRTdGFydGVkKHJlc291cmNlLmdldCgpLCByZXF1ZXN0LmdldCgpKTsK
KyAgICBFd2tfUmVzb3VyY2VfUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSB7cmVzb3VyY2UuZ2V0
KCksIHJlcXVlc3QuZ2V0KCksIDB9OworICAgIHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1w
bC0+c21hcnRDYWxsYmFjazxSZXNvdXJjZUxvYWRTdGFydGVkPigpLmNhbGwoJnJlc291cmNlUmVx
dWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRTZW5kUmVxdWVzdEZv
clJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlm
aWVyLCBXS1VSTFJlcXVlc3RSZWYgd2tSZXF1ZXN0LCBXS1VSTFJlc3BvbnNlUmVmIHdrUmVkaXJl
Y3RSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTcwLDcgKzczLDggQEAgdm9p
ZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2UoV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmLCB1aW4KIAogICAgIFJlZlB0cjxFd2tfVXJsX1JlcXVlc3Q+IHJlcXVl
c3QgPSBFd2tfVXJsX1JlcXVlc3Q6OmNyZWF0ZSh3a1JlcXVlc3QpOwogICAgIFJlZlB0cjxFd2tf
VXJsX1Jlc3BvbnNlPiByZWRpcmVjdFJlc3BvbnNlID0gRXdrX1VybF9SZXNwb25zZTo6Y3JlYXRl
KHdrUmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBs
LT5pbmZvcm1SZXNvdXJjZVJlcXVlc3RTZW50KHJlc291cmNlLmdldCgpLCByZXF1ZXN0LmdldCgp
LCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKKyAgICBFd2tfUmVzb3VyY2VfUmVxdWVzdCByZXNv
dXJjZVJlcXVlc3QgPSB7cmVzb3VyY2UuZ2V0KCksIHJlcXVlc3QuZ2V0KCksIHJlZGlyZWN0UmVz
cG9uc2UuZ2V0KCl9OworICAgIHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+c21hcnRD
YWxsYmFjazxSZXNvdXJjZVJlcXVlc3RTZW50PigpLmNhbGwoJnJlc291cmNlUmVxdWVzdCk7CiB9
CiAKIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNv
dXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwg
V0tVUkxSZXNwb25zZVJlZiB3a1Jlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAt
ODMsNyArODcsOCBAQCB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLAogICAgICAgICByZXR1cm47CiAK
ICAgICBSZWZQdHI8RXdrX1VybF9SZXNwb25zZT4gcmVzcG9uc2UgPSBFd2tfVXJsX1Jlc3BvbnNl
OjpjcmVhdGUod2tSZXNwb25zZSk7Ci0gICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBs
LT5pbmZvcm1SZXNvdXJjZUxvYWRSZXNwb25zZShyZXNvdXJjZS5nZXQoKSwgcmVzcG9uc2UuZ2V0
KCkpOworICAgIEV3a19SZXNvdXJjZV9Mb2FkX1Jlc3BvbnNlIHJlc291cmNlTG9hZFJlc3BvbnNl
ID0ge3Jlc291cmNlLmdldCgpLCByZXNwb25zZS5nZXQoKX07CisgICAgcmVzb3VyY2VMb2FkQ2xp
ZW50LT5tX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFJlc291cmNlTG9hZFJlc3BvbnNlPigpLmNh
bGwoJnJlc291cmNlTG9hZFJlc3BvbnNlKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRF
Zmw6OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2
NF90IHJlc291cmNlSWRlbnRpZmllciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTk1LDcg
KzEwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRGaW5pc2hMb2FkRm9yUmVz
b3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50CiAgICAgaWYgKCFyZXNvdXJjZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5pbmZv
cm1SZXNvdXJjZUxvYWRGaW5pc2hlZChyZXNvdXJjZS5nZXQoKSk7CisgICAgcmVzb3VyY2VMb2Fk
Q2xpZW50LT5tX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFJlc291cmNlTG9hZEZpbmlzaGVkPigp
LmNhbGwocmVzb3VyY2UuZ2V0KCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6
ZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJl
c291cmNlSWRlbnRpZmllciwgV0tFcnJvclJlZiB3a0Vycm9yLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQpAQCAtMTA4LDggKzExMyw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRG
YWlsTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0CiAgICAgICAg
IHJldHVybjsKIAogICAgIE93blB0cjxFd2tfRXJyb3I+IGV3a0Vycm9yID0gRXdrX0Vycm9yOjpj
cmVhdGUod2tFcnJvcik7Ci0gICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5pbmZv
cm1SZXNvdXJjZUxvYWRGYWlsZWQocmVzb3VyY2UuZ2V0KCksIGV3a0Vycm9yLmdldCgpKTsKLSAg
ICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmluZm9ybVJlc291cmNlTG9hZEZpbmlz
aGVkKHJlc291cmNlLmdldCgpKTsKKyAgICBFd2tfUmVzb3VyY2VfTG9hZF9FcnJvciByZXNvdXJj
ZUxvYWRFcnJvciA9IHtyZXNvdXJjZS5nZXQoKSwgZXdrRXJyb3IuZ2V0KCl9OworICAgIHJlc291
cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxSZXNvdXJjZUxvYWRGYWls
ZWQ+KCkuY2FsbCgmcmVzb3VyY2VMb2FkRXJyb3IpOworICAgIHJlc291cmNlTG9hZENsaWVudC0+
bV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxSZXNvdXJjZUxvYWRGaW5pc2hlZD4oKS5jYWxsKHJl
c291cmNlLmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6Om9uVmlld1By
b3Zpc2lvbmFsTG9hZFN0YXJ0ZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCop
CkBAIC0xMjQsNyArMTMwLDcgQEAgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpSZXNvdXJjZUxvYWRD
bGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQogICAgIDogbV92aWV3SW1wbCh2aWV3SW1w
bCkKIHsKICAgICAvLyBMaXN0ZW4gZm9yICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiIG9uIHRo
ZSB2aWV3IHRvIGNsZWFyIGludGVybmFsIHJlc291cmNlcyBtYXAuCi0gICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfYWRkKG1fdmlld0ltcGwtPnZpZXcoKSwgImxvYWQscHJvdmlzaW9uYWws
c3RhcnRlZCIsIG9uVmlld1Byb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsIHRoaXMpOworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3ZpZXdJbXBsLT52aWV3KCksIENhbGxCYWNrSW5m
bzxQcm92aXNpb25hbExvYWRTdGFydGVkPjo6bmFtZSgpLCBvblZpZXdQcm92aXNpb25hbExvYWRT
dGFydGVkLCB0aGlzKTsKIAogICAgIFdLUGFnZVJlZiBwYWdlUmVmID0gbV92aWV3SW1wbC0+d2tQ
YWdlKCk7CiAgICAgQVNTRVJUKHBhZ2VSZWYpOwpAQCAtMTQ0LDcgKzE1MCw3IEBAIFJlc291cmNl
TG9hZENsaWVudEVmbDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1w
bCkKIAogUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjp+UmVzb3VyY2VMb2FkQ2xpZW50RWZsKCkKIHsK
LSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwobV92aWV3SW1wbC0+dmlldygpLCAi
bG9hZCxwcm92aXNpb25hbCxzdGFydGVkIiwgb25WaWV3UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKG1fdmlld0ltcGwtPnZpZXcoKSwg
Q2FsbEJhY2tJbmZvPFByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ+OjpuYW1lKCksIG9uVmlld1Byb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="185288"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171405</attachid>
            <date>2012-10-30 02:45:13 -0700</date>
            <delta_ts>2012-10-30 02:59:07 -0700</delta_ts>
            <desc>patch v5</desc>
            <filename>bug100506_v5</filename>
            <type>text/plain</type>
            <size>42629</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGM2YmIwYWVmZjEwNmRiMzRiMGJjMjQxNTZjYmQ3MWM4YTkwMTNlOGQKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
U3VuIE9jdCAyOCAxODo0Nzo1OCAyMDEyICswMjAwCgogICAgYnVnMTAwNTA2CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDNlMjY0YmIuLjdlZjE0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMi0x
MC0yOCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIFNpbXBsaWZ5IHNpZ25hbCBlbWl0dGluZyBBUEkgaW4gRXdr
Vmlld0ltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMDUwNgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgorCisgICAgICAgIE5vdyBzaWduYWwgZW1pdHRpbmcgQVBJIGluIEV3a1ZpZXdJbXBsIGlzIHNp
bXBsaWZpZWQgc28gdGhhdAorICAgICAgICB0aGVyZSBpcyBvbmUgRXdrVmlld0ltcGw6OnNtYXJ0
Q2FsbGJhY2sgdGVtcGxhdGUgbWV0aG9kCisgICAgICAgIHJldHVybmluZyBFd2tWaWV3Q2FsbGJh
Y2tzOjpDYWxsQmFjayBjbGFzcyBpbnN0YW5jZQorICAgICAgICB3aGljaCBlbmNhcHN1bGF0ZXMg
RXdrX3ZpZXcgY2FsbGJhY2sgaW5mbyBhbmQgYWxzbyBwcm92aWRlCisgICAgICAgIGFyZ3VtZW50
cyB0eXBlIGNoZWNraW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0Nh
bGxiYWNrcy5oOiBBZGRlZC4KKyAgICAgICAgKEV3a1ZpZXdDYWxsYmFja3MpOgorICAgICAgICAo
Q2FsbEJhY2tJbmZvKToKKyAgICAgICAgKEV3a1ZpZXdDYWxsYmFja3M6OkNhbGxCYWNrSW5mbzo6
bmFtZSk6CisgICAgICAgIChFd2tWaWV3Q2FsbGJhY2tzOjpDYWxsQmFja0luZm86Omhhc0FyZ3Vt
ZW50cyk6CisgICAgICAgIChDYWxsQmFjayk6CisgICAgICAgIChFd2tWaWV3Q2FsbGJhY2tzOjpD
YWxsQmFjazo6Q2FsbEJhY2spOgorICAgICAgICAoRXdrVmlld0NhbGxiYWNrczo6Q2FsbEJhY2s6
OmNhbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAgICAoRXdrVmll
d0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNtYXJ0Q2FsbGJhY2spOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRNYW5hZ2VyRWZsOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVmbDo6ZGlkRmFpbCk6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVmbDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRGaW5pc2gpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvRmluZENsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDbGllbnRFZmw6
OmRpZEZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ2xpZW50RWZsOjpkaWRGYWls
VG9GaW5kU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpGb3JtQ2xpZW50RWZsOjp3aWxsU3VibWl0Rm9ybSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6dG9vbFRpcENoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFn
ZUxvYWRDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVu
dEVmbDo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxv
YWRDbGllbnRFZmw6OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZENoYW5nZVByb2dyZXNzKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhF
cnJvckZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZENv
bW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpk
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVBv
bGljeUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VQb2xpY3lDbGllbnRFZmw6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQYWdl
UG9saWN5Q2xpZW50RWZsOjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkU2VuZFJlcXVlc3RG
b3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRDbGllbnRFZmw6OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsKToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjp+UmVzb3VyY2VMb2FkQ2xp
ZW50RWZsKToKKwogMjAxMi0xMC0zMCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pk
bnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFNpbXBsaWZ5IGdldHRpbmcg
aW1wbCBmcm9tIGV3a192aWV3IGV2YXMgb2JqZWN0IGluc3RhbmNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVhNzgyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaApAQCAtMCwwICsx
LDE4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFd2tWaWV3Q2FsbGJhY2tzX2gK
KyNkZWZpbmUgRXdrVmlld0NhbGxiYWNrc19oCisKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgor
I2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3N0cnVjdCBFd2tfRG93bmxvYWRfSm9iOworc3Ry
dWN0IEV3a19Eb3dubG9hZF9Kb2JfRXJyb3I7CitzdHJ1Y3QgRXdrX0Zvcm1fU3VibWlzc2lvbl9S
ZXF1ZXN0Oworc3RydWN0IEV3a19FcnJvcjsKK3N0cnVjdCBFd2tfUmVzb3VyY2VfUmVxdWVzdDsK
K3N0cnVjdCBFd2tfUmVzb3VyY2VfTG9hZF9SZXNwb25zZTsKK3N0cnVjdCBFd2tfUmVzb3VyY2Vf
TG9hZF9FcnJvcjsKK3N0cnVjdCBFd2tfUmVzb3VyY2U7CitzdHJ1Y3QgRXdrX05hdmlnYXRpb25f
UG9saWN5X0RlY2lzaW9uOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3N0cnVjdCBFd2tfSW50
ZW50OworI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKK3N0cnVjdCBFd2tfSW50
ZW50X1NlcnZpY2U7CisjZW5kaWYKKworbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3MgeworCitl
bnVtIENhbGxiYWNrVHlwZSB7CisgICAgQmFja0ZvcndhcmRMaXN0Q2hhbmdlLAorICAgIERvd25s
b2FkSm9iQ2FuY2VsbGVkLAorICAgIERvd25sb2FkSm9iRmFpbGVkLAorICAgIERvd25sb2FkSm9i
RmluaXNoZWQsCisgICAgRG93bmxvYWRKb2JSZXF1ZXN0ZWQsCisgICAgTmV3Rm9ybVN1Ym1pc3Np
b25SZXF1ZXN0LAorICAgIExvYWRFcnJvciwKKyAgICBMb2FkRmluaXNoZWQsCisgICAgTG9hZFBy
b2dyZXNzLAorICAgIFByb3Zpc2lvbmFsTG9hZEZhaWxlZCwKKyAgICBQcm92aXNpb25hbExvYWRS
ZWRpcmVjdCwKKyAgICBQcm92aXNpb25hbExvYWRTdGFydGVkLAorICAgIFJlc291cmNlTG9hZFN0
YXJ0ZWQsCisgICAgUmVzb3VyY2VMb2FkUmVzcG9uc2UsCisgICAgUmVzb3VyY2VMb2FkRmFpbGVk
LAorICAgIFJlc291cmNlTG9hZEZpbmlzaGVkLAorICAgIFJlc291cmNlUmVxdWVzdFNlbnQsCisg
ICAgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uLAorICAgIE5ld1dpbmRvd1BvbGljeURlY2lzaW9u
LAorICAgIFRleHRGb3VuZCwKKyAgICBUaXRsZUNoYW5nZSwKKyAgICBUb29sdGlwVGV4dFVuc2V0
LAorICAgIFRvb2x0aXBUZXh0U2V0LAorICAgIFdlYlByb2Nlc3NDcmFzaGVkLAorI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKKyAgICBJbnRlbnRSZXF1ZXN0LAorI2VuZGlmCisjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTX1RBRykKKyAgICBJbnRlbnRTZXJ2aWNlUmVnaXN0cmF0aW9uLAorI2VuZGlmCit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIGJvb2wgY2FsbGJhY2tBcmd1bWVudHNF
eHBlY3RlZCgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBi
b29sIGNhbGxiYWNrQXJndW1lbnRzRXhwZWN0ZWQ8dm9pZD4oKQoreworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordGVtcGxhdGUgPENhbGxiYWNrVHlwZT4KK3N0cnVjdCBDYWxsQmFja0luZm8gewor
ICAgIHR5cGVkZWYgdm9pZCogVHlwZTsKKworICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciog
bmFtZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuICIiOworICAgIH0KK307CisKK3RlbXBsYXRlIDxDYWxsYmFja1R5cGUgY2FsbGJhY2tUeXBl
PgorY2xhc3MgQ2FsbEJhY2sgeworcHVibGljOgorICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FsbEJh
Y2tJbmZvPGNhbGxiYWNrVHlwZT46OlR5cGUgQXJnVHlwZTsKKworICAgIGV4cGxpY2l0IENhbGxC
YWNrKEV2YXNfT2JqZWN0KiB2aWV3KQorICAgICAgICA6IG1fdmlldyh2aWV3KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fdmlldyk7CisgICAgfQorCisgICAgdm9pZCBjYWxsKEFyZ1R5cGUqIGFy
Z3VtZW50ID0gMCkKKyAgICB7CisgICAgICAgIGlmIChhcmd1bWVudCAmJiAhY2FsbGJhY2tBcmd1
bWVudHNFeHBlY3RlZDxBcmdUeXBlPigpKSB7CisgICAgICAgICAgICBDUklUSUNBTCgic2hvdWxk
IG5vdCBwYXNzIGFyZ3VtZW50cyBmb3IgdGhpcyBjYWxsYmFjayEiKTsKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsIENhbGxCYWNrSW5m
bzxjYWxsYmFja1R5cGU+OjpuYW1lKCksIHN0YXRpY19jYXN0PHZvaWQqPihhcmd1bWVudCkpOwor
ICAgIH0KKworICAgIHZvaWQgY2FsbChjb25zdCBTdHJpbmcmIGFyZykKKyAgICB7CisgICAgICAg
IGNhbGwoY29uc3RfY2FzdDxjaGFyKj4oYXJnLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgRXZhc19PYmplY3QqIG1fdmlldzsKK307CisKKyNkZWZpbmUgREVDTEFSRV9F
V0tfVklFV19DQUxMQkFDSyhjYWxsYmFja1R5cGUsIHN0cmluZywgdHlwZSkgXAordGVtcGxhdGUg
PD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitz
dHJ1Y3QgQ2FsbEJhY2tJbmZvPGNhbGxiYWNrVHlwZT4geyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB0eXBlZGVmIHR5cGUgVHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogbmFtZSgpIHsgcmV0
dXJuIHN0cmluZzsgfSAgICAgICBcCit9CisKKy8vIE5vdGU6IHR5cGUgJ3ZvaWQnIG1lYW5zIHRo
YXQgbm8gYXJndW1lbnRzIGFyZSBleHBlY3RlZC4KK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0so
QmFja0ZvcndhcmRMaXN0Q2hhbmdlLCAiYmFjayxmb3J3YXJkLGxpc3QsY2hhbmdlZCIsIHZvaWQp
OworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhEb3dubG9hZEpvYkNhbmNlbGxlZCwgImRvd25s
b2FkLGNhbmNlbGxlZCIsIEV3a19Eb3dubG9hZF9Kb2IpOworREVDTEFSRV9FV0tfVklFV19DQUxM
QkFDSyhEb3dubG9hZEpvYkZhaWxlZCwgImRvd25sb2FkLGZhaWxlZCIsIEV3a19Eb3dubG9hZF9K
b2JfRXJyb3IpOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhEb3dubG9hZEpvYkZpbmlzaGVk
LCAiZG93bmxvYWQsZmluaXNoZWQiLCBFd2tfRG93bmxvYWRfSm9iKTsKK0RFQ0xBUkVfRVdLX1ZJ
RVdfQ0FMTEJBQ0soRG93bmxvYWRKb2JSZXF1ZXN0ZWQsICJkb3dubG9hZCxyZXF1ZXN0IiwgRXdr
X0Rvd25sb2FkX0pvYik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKE5ld0Zvcm1TdWJtaXNz
aW9uUmVxdWVzdCwgImZvcm0sc3VibWlzc2lvbixyZXF1ZXN0IiwgRXdrX0Zvcm1fU3VibWlzc2lv
bl9SZXF1ZXN0KTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soTG9hZEVycm9yLCAibG9hZCxl
cnJvciIsIEV3a19FcnJvcik7CitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKExvYWRGaW5pc2hl
ZCwgImxvYWQsZmluaXNoZWQiLCB2b2lkKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soTG9h
ZFByb2dyZXNzLCAibG9hZCxwcm9ncmVzcyIsIGRvdWJsZSk7CitERUNMQVJFX0VXS19WSUVXX0NB
TExCQUNLKFByb3Zpc2lvbmFsTG9hZEZhaWxlZCwgImxvYWQscHJvdmlzaW9uYWwsZmFpbGVkIiwg
RXdrX0Vycm9yKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soUHJvdmlzaW9uYWxMb2FkUmVk
aXJlY3QsICJsb2FkLHByb3Zpc2lvbmFsLHJlZGlyZWN0Iiwgdm9pZCk7CitERUNMQVJFX0VXS19W
SUVXX0NBTExCQUNLKFByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsICJsb2FkLHByb3Zpc2lvbmFsLHN0
YXJ0ZWQiLCB2b2lkKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uLCAicG9saWN5LGRlY2lzaW9uLG5hdmlnYXRpb24iLCBFd2tfTmF2aWdhdGlvbl9Q
b2xpY3lfRGVjaXNpb24pOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhOZXdXaW5kb3dQb2xp
Y3lEZWNpc2lvbiwgInBvbGljeSxkZWNpc2lvbixuZXcsd2luZG93IiwgRXdrX05hdmlnYXRpb25f
UG9saWN5X0RlY2lzaW9uKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soUmVzb3VyY2VMb2Fk
U3RhcnRlZCwgInJlc291cmNlLHJlcXVlc3QsbmV3IiwgRXdrX1Jlc291cmNlX1JlcXVlc3QpOwor
REVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhSZXNvdXJjZUxvYWRSZXNwb25zZSwgInJlc291cmNl
LHJlcXVlc3QscmVzcG9uc2UiLCBFd2tfUmVzb3VyY2VfTG9hZF9SZXNwb25zZSk7CitERUNMQVJF
X0VXS19WSUVXX0NBTExCQUNLKFJlc291cmNlTG9hZEZhaWxlZCwgInJlc291cmNlLHJlcXVlc3Qs
ZmFpbGVkIiwgRXdrX1Jlc291cmNlX0xvYWRfRXJyb3IpOworREVDTEFSRV9FV0tfVklFV19DQUxM
QkFDSyhSZXNvdXJjZUxvYWRGaW5pc2hlZCwgInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiLCBF
d2tfUmVzb3VyY2UpOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhSZXNvdXJjZVJlcXVlc3RT
ZW50LCAicmVzb3VyY2UscmVxdWVzdCxzZW50IiwgRXdrX1Jlc291cmNlX1JlcXVlc3QpOworREVD
TEFSRV9FV0tfVklFV19DQUxMQkFDSyhUZXh0Rm91bmQsICJ0ZXh0LGZvdW5kIiwgdW5zaWduZWQp
OworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhUaXRsZUNoYW5nZSwgInRpdGxlLGNoYW5nZWQi
LCBjaGFyKTsKK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soVG9vbHRpcFRleHRVbnNldCwgInRv
b2x0aXAsdGV4dCx1bnNldCIsIHZvaWQpOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhUb29s
dGlwVGV4dFNldCwgInRvb2x0aXAsdGV4dCxzZXQiLCBjaGFyKTsKK0RFQ0xBUkVfRVdLX1ZJRVdf
Q0FMTEJBQ0soV2ViUHJvY2Vzc0NyYXNoZWQsICJ3ZWJwcm9jZXNzLGNyYXNoZWQiLCBib29sKTsK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEludGVu
dFJlcXVlc3QsICJpbnRlbnQscmVxdWVzdCxuZXciLCBFd2tfSW50ZW50KTsKKyNlbmRpZgorI2lm
IEVOQUJMRShXRUJfSU5URU5UU19UQUcpCitERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEludGVu
dFNlcnZpY2VSZWdpc3RyYXRpb24sICJpbnRlbnQsc2VydmljZSxyZWdpc3RlciIsIEV3a19JbnRl
bnRfU2VydmljZSk7CisjZW5kaWYKKworfQorCisjZW5kaWYgLy8gI2lmbmRlZiBFd2tWaWV3Q2Fs
bGJhY2tzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJ
bXBsLmNwcAppbmRleCA1ZTkxMGI3Li5mMjFhY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCkBAIC0yNjYsNjIgKzI2Niw2IEBAIHZv
aWQgRXdrVmlld0ltcGw6OnJlZHJhd1JlZ2lvbihjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIG1f
ZGlydHlSZWN0cy5hcHBlbmQocmVjdCk7CiB9CiAKLS8qKgotICogQGludGVybmFsCi0gKiBBIGRv
d25sb2FkIGZvciB0aGF0IHZpZXcgd2FzIGNhbmNlbGxlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6
ICJkb3dubG9hZCxjYW5jZWxsZWQiIHdpdGggcG9pbnRlciB0byBhIEV3a19Eb3dubG9hZF9Kb2Iu
Ci0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybURvd25sb2FkSm9iQ2FuY2VsbGVkKEV3a19E
b3dubG9hZF9Kb2IqIGRvd25sb2FkKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwobV92aWV3LCAiZG93bmxvYWQsY2FuY2VsbGVkIiwgZG93bmxvYWQpOwotfQotCi0vKioK
LSAqIEBpbnRlcm5hbAotICogQSBkb3dubG9hZCBmb3IgdGhhdCB2aWV3IGhhcyBmYWlsZWQuCi0g
KgotICogRW1pdHMgc2lnbmFsOiAiZG93bmxvYWQsZmFpbGVkIiB3aXRoIHBvaW50ZXIgdG8gYSBF
d2tfRG93bmxvYWRfSm9iX0Vycm9yLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Eb3du
bG9hZEpvYkZhaWxlZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCwgRXdrX0Vycm9yKiBlcnJv
cikKLXsKLSAgICBFd2tfRG93bmxvYWRfSm9iX0Vycm9yIGRvd25sb2FkRXJyb3IgPSB7IGRvd25s
b2FkLCBlcnJvciB9OwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3
LCAiZG93bmxvYWQsZmFpbGVkIiwgJmRvd25sb2FkRXJyb3IpOwotfQotCi0vKioKLSAqIEBpbnRl
cm5hbAotICogQSBkb3dubG9hZCBmb3IgdGhhdCB2aWV3IGZpbmlzaGVkIHN1Y2Nlc3NmdWxseS4K
LSAqCi0gKiBFbWl0cyBzaWduYWw6ICJkb3dubG9hZCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRv
IGEgRXdrX0Rvd25sb2FkX0pvYi4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtRG93bmxv
YWRKb2JGaW5pc2hlZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCkKLXsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImRvd25sb2FkLGZpbmlzaGVkIiwgZG93
bmxvYWQpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogQSBuZXcgZG93bmxvYWQgaGFzIGJl
ZW4gcmVxdWVzdGVkIGZvciB0aGF0IHZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFsOiAiZG93bmxv
YWQscmVxdWVzdCIgd2l0aCBwb2ludGVyIHRvIGEgRXdrX0Rvd25sb2FkX0pvYi4KLSAqLwotdm9p
ZCBFd2tWaWV3SW1wbDo6aW5mb3JtRG93bmxvYWRKb2JSZXF1ZXN0ZWQoRXdrX0Rvd25sb2FkX0pv
YiogZG93bmxvYWQpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3Zp
ZXcsICJkb3dubG9hZCxyZXF1ZXN0IiwgZG93bmxvYWQpOwotfQotCi0vKioKLSAqIEBpbnRlcm5h
bAotICogaW5mb3JtcyB0aGF0IGEgZm9ybSByZXF1ZXN0IGlzIGFib3V0IHRvIGJlIHN1Ym1pdHRl
ZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJmb3JtLHN1Ym1pc3Npb24scmVxdWVzdCIgd2l0aCBw
b2ludGVyIHRvIEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdC4KLSAqLwotdm9pZCBFd2tWaWV3
SW1wbDo6aW5mb3JtTmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0KEV3a19Gb3JtX1N1Ym1pc3Npb25f
UmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG1fdmlldywgImZvcm0sc3VibWlzc2lvbixyZXF1ZXN0IiwgcmVxdWVzdCk7Ci19Ci0KICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAvKioKICAqIEBpbnRlcm5hbApAQCAtMzYzLDUxICszMDcs
NiBAQCB2b2lkIEV3a1ZpZXdJbXBsOjpzZXRJbWFnZURhdGEodm9pZCogaW1hZ2VEYXRhLCBjb25z
dCBJbnRTaXplJiBzaXplKQogICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfY29weV9zZXQoc2Qt
PmltYWdlLCBpbWFnZURhdGEpOwogfQogCi0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3JtcyBs
b2FkIGZhaWxlZCB3aXRoIGVycm9yIGluZm9ybWF0aW9uLgotICoKLSAqIEVtaXRzIHNpZ25hbDog
ImxvYWQsZXJyb3IiIHdpdGggcG9pbnRlciB0byBFd2tfRXJyb3IuCi0gKi8KLXZvaWQgRXdrVmll
d0ltcGw6OmluZm9ybUxvYWRFcnJvcihFd2tfRXJyb3IqIGVycm9yKQotewotICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibG9hZCxlcnJvciIsIGVycm9yKTsKLX0K
LQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIGluZm9ybXMgbG9hZCBmaW5pc2hlZC4KLSAqCi0gKiBF
bWl0cyBzaWduYWw6ICJsb2FkLGZpbmlzaGVkIi4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5m
b3JtTG9hZEZpbmlzaGVkKCkKLXsKLSAgICBpbmZvcm1VUkxDaGFuZ2UoKTsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQsZmluaXNoZWQiLCAwKTsKLX0K
LQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIGluZm9ybXMgbG9hZCBwcm9ncmVzcyBjaGFuZ2VkLgot
ICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvZ3Jlc3MiIHdpdGggcG9pbnRlciB0byBhIGRv
dWJsZSBmcm9tIDAuMCB0byAxLjAuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUxvYWRQ
cm9ncmVzcyhkb3VibGUgcHJvZ3Jlc3MpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChtX3ZpZXcsICJsb2FkLHByb2dyZXNzIiwgJnByb2dyZXNzKTsKLX0KLQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqIGluZm9ybXMgdmlldyBwcm92aXNpb25hbCBsb2FkIGZhaWxlZCB3aXRo
IGVycm9yIGluZm9ybWF0aW9uLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9u
YWwsZmFpbGVkIiB3aXRoIHBvaW50ZXIgdG8gRXdrX0Vycm9yLgotICovCi12b2lkIEV3a1ZpZXdJ
bXBsOjppbmZvcm1Qcm92aXNpb25hbExvYWRGYWlsZWQoRXdrX0Vycm9yKiBlcnJvcikKLXsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQscHJvdmlzaW9u
YWwsZmFpbGVkIiwgZXJyb3IpOwotfQotCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2
b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkQ29tbWl0dGVkKCkKIHsKQEAgLTQxNSwxNDYgKzMx
NCw2IEBAIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUxvYWRDb21taXR0ZWQoKQogfQogI2VuZGlm
CiAKLS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIHZpZXcgcmVjZWl2ZWQgcmVkaXJlY3Qg
Zm9yIHByb3Zpc2lvbmFsIGxvYWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNp
b25hbCxyZWRpcmVjdCIuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVByb3Zpc2lvbmFs
TG9hZFJlZGlyZWN0KCkKLXsKLSAgICBpbmZvcm1VUkxDaGFuZ2UoKTsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQscHJvdmlzaW9uYWwscmVkaXJlY3Qi
LCAwKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIGluZm9ybXMgdmlldyBwcm92aXNpb25h
bCBsb2FkIHN0YXJ0ZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCxz
dGFydGVkIi4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtUHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCgpCi17Ci0gICAgaW5mb3JtVVJMQ2hhbmdlKCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCAwKTsKLX0K
LQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIGluZm9ybXMgdGhhdCBhIG5hdmlnYXRpb24gcG9saWN5
IGRlY2lzaW9uIHNob3VsZCBiZSB0YWtlbi4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJwb2xpY3ks
ZGVjaXNpb24sbmF2aWdhdGlvbiIuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybU5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbihFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lz
aW9uKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicG9s
aWN5LGRlY2lzaW9uLG5hdmlnYXRpb24iLCBkZWNpc2lvbik7Ci19Ci0KLS8qKgotICogQGludGVy
bmFsCi0gKiBpbmZvcm1zIHRoYXQgYSBuZXcgd2luZG93IHBvbGljeSBkZWNpc2lvbiBzaG91bGQg
YmUgdGFrZW4uCi0gKgotICogRW1pdHMgc2lnbmFsOiAicG9saWN5LGRlY2lzaW9uLG5ldyx3aW5k
b3ciLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1OZXdXaW5kb3dQb2xpY3lEZWNpc2lv
bihFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lzaW9uKQotewotICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicG9saWN5LGRlY2lzaW9uLG5ldyx3
aW5kb3ciLCBkZWNpc2lvbik7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBMb2FkIHdhcyBp
bml0aWF0ZWQgZm9yIGEgcmVzb3VyY2UgaW4gdGhlIHZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFs
OiAicmVzb3VyY2UscmVxdWVzdCxuZXciIHdpdGggcG9pbnRlciB0byByZXNvdXJjZSByZXF1ZXN0
LgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1SZXNvdXJjZUxvYWRTdGFydGVkKEV3a19S
ZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICBFd2tf
UmVzb3VyY2VfUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSB7cmVzb3VyY2UsIHJlcXVlc3QsIDB9
OwotCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJj
ZSxyZXF1ZXN0LG5ldyIsICZyZXNvdXJjZVJlcXVlc3QpOwotfQotCi0vKioKLSAqIEBpbnRlcm5h
bAotICogUmVjZWl2ZWQgYSByZXNwb25zZSB0byBhIHJlc291cmNlIGxvYWQgcmVxdWVzdCBpbiB0
aGUgdmlldy4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNl
IiB3aXRoIHBvaW50ZXIgdG8gcmVzb3VyY2UgcmVzcG9uc2UuCi0gKi8KLXZvaWQgRXdrVmlld0lt
cGw6OmluZm9ybVJlc291cmNlTG9hZFJlc3BvbnNlKEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3
a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlKQotewotICAgIEV3a19SZXNvdXJjZV9Mb2FkX1Jlc3Bv
bnNlIHJlc291cmNlTG9hZFJlc3BvbnNlID0ge3Jlc291cmNlLCByZXNwb25zZX07Ci0gICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHJl
c3BvbnNlIiwgJnJlc291cmNlTG9hZFJlc3BvbnNlKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIEZhaWxlZCBsb2FkaW5nIGEgcmVzb3VyY2UgaW4gdGhlIHZpZXcuCi0gKgotICogRW1pdHMg
c2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvIHRoZSBy
ZXNvdXJjZSBsb2FkIGVycm9yLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1SZXNvdXJj
ZUxvYWRGYWlsZWQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX0Vycm9yKiBlcnJvcikKLXsK
LSAgICBFd2tfUmVzb3VyY2VfTG9hZF9FcnJvciByZXNvdXJjZUxvYWRFcnJvciA9IHtyZXNvdXJj
ZSwgZXJyb3J9OwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAi
cmVzb3VyY2UscmVxdWVzdCxmYWlsZWQiLCAmcmVzb3VyY2VMb2FkRXJyb3IpOwotfQotCi0vKioK
LSAqIEBpbnRlcm5hbAotICogRmluaXNoZWQgbG9hZGluZyBhIHJlc291cmNlIGluIHRoZSB2aWV3
LgotICoKLSAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiIHdpdGgg
cG9pbnRlciB0byB0aGUgcmVzb3VyY2UuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVJl
c291cmNlTG9hZEZpbmlzaGVkKEV3a19SZXNvdXJjZSogcmVzb3VyY2UpCi17Ci0gICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlz
aGVkIiwgcmVzb3VyY2UpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVxdWVzdCB3YXMg
c2VudCBmb3IgYSByZXNvdXJjZSBpbiB0aGUgdmlldy4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJy
ZXNvdXJjZSxyZXF1ZXN0LHNlbnQiIHdpdGggcG9pbnRlciB0byByZXNvdXJjZSByZXF1ZXN0IGFu
ZCBwb3NzaWJsZSByZWRpcmVjdCByZXNwb25zZS4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5m
b3JtUmVzb3VyY2VSZXF1ZXN0U2VudChFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1Jl
cXVlc3QqIHJlcXVlc3QsIEV3a19VcmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UpCi17Ci0g
ICAgRXdrX1Jlc291cmNlX1JlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCByZXF1
ZXN0LCByZWRpcmVjdFJlc3BvbnNlfTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgInJlc291cmNlLHJlcXVlc3Qsc2VudCIsICZyZXNvdXJjZVJlcXVlc3QpOwot
fQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogVGhlIHZpZXcgdGl0bGUgd2FzIGNoYW5nZWQgYnkg
dGhlIGZyYW1lIGxvYWRlci4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJ0aXRsZSxjaGFuZ2VkIiB3
aXRoIHBvaW50ZXIgdG8gbmV3IHRpdGxlIHN0cmluZy4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6
aW5mb3JtVGl0bGVDaGFuZ2UoY29uc3QgU3RyaW5nJiB0aXRsZSkKLXsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInRpdGxlLGNoYW5nZWQiLCBjb25zdF9jYXN0
PGNoYXIqPih0aXRsZS51dGY4KCkuZGF0YSgpKSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0g
Ki8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVRvb2x0aXBUZXh0Q2hhbmdlKGNvbnN0IFN0cmlu
ZyYgdGV4dCkKLXsKLSAgICBpZiAodGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAidG9vbHRpcCx0ZXh0LHVuc2V0IiwgMCk7Ci0g
ICAgZWxzZQotICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywg
InRvb2x0aXAsdGV4dCxzZXQiLCBjb25zdF9jYXN0PGNoYXIqPih0ZXh0LnV0ZjgoKS5kYXRhKCkp
KTsKLQotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogaW5mb3JtcyB0aGF0IHRoZSByZXF1ZXN0
ZWQgdGV4dCB3YXMgZm91bmQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAidGV4dCxmb3VuZCIgd2l0
aCB0aGUgbnVtYmVyIG9mIG1hdGNoZXMuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVRl
eHRGb3VuZCh1bnNpZ25lZCBtYXRjaENvdW50KQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobV92aWV3LCAidGV4dCxmb3VuZCIsICZtYXRjaENvdW50KTsKLX0KLQogSW50
U2l6ZSBFd2tWaWV3SW1wbDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgaW50IHdpZHRoLCBoZWlnaHQ7
CkBAIC02ODQsMzIgKzQ0Myw2IEBAIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUljb25DaGFuZ2Uo
KQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiaWNvbixjaGFu
Z2VkIiwgMCk7CiB9CiAKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0vKioKLSAqIEBpbnRlcm5h
bAotICogVGhlIHZpZXcgcmVjZWl2ZWQgYSBuZXcgaW50ZW50IHJlcXVlc3QuCi0gKgotICogRW1p
dHMgc2lnbmFsOiAiaW50ZW50LHJlcXVlc3QsbmV3IiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfSW50
ZW50LgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1JbnRlbnRSZXF1ZXN0KEV3a19JbnRl
bnQqIGV3a0ludGVudCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1f
dmlldywgImludGVudCxyZXF1ZXN0LG5ldyIsIGV3a0ludGVudCk7Ci19Ci0jZW5kaWYKLQotI2lm
IEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0vKioKLSAqIEBpbnRlcm5hbAotICogVGhlIHZpZXcg
cmVjZWl2ZWQgYSBuZXcgaW50ZW50IHNlcnZpY2UgcmVnaXN0cmF0aW9uLgotICoKLSAqIEVtaXRz
IHNpZ25hbDogImludGVudCxzZXJ2aWNlLHJlZ2lzdGVyIiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tf
SW50ZW50X1NlcnZpY2UuCi0gKi8KLXZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUludGVudFNlcnZp
Y2VSZWdpc3RyYXRpb24oRXdrX0ludGVudF9TZXJ2aWNlKiBld2tJbnRlbnRTZXJ2aWNlKQotewot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiaW50ZW50LHNlcnZp
Y2UscmVnaXN0ZXIiLCBld2tJbnRlbnRTZXJ2aWNlKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
X0lOVEVOVFNfVEFHKQotCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogYm9vbCBF
d2tWaWV3SW1wbDo6Y3JlYXRlR0xTdXJmYWNlKGNvbnN0IEludFNpemUmIHZpZXdTaXplKQogewpA
QCAtODMzLDM3ICs1NjYsNiBAQCB2b2lkIEV3a1ZpZXdJbXBsOjpkaXNtaXNzQ29sb3JQaWNrZXIo
KQogfQogI2VuZGlmCiAKLS8qKgotICogQGludGVybmFsCi0gKiBpbmZvcm1zIHRoYXQgdGhlIHZp
ZXcncyBiYWNrIC8gZm9yd2FyZCBsaXN0IGhhcyBjaGFuZ2VkLgotICoKLSAqIEVtaXRzIHNpZ25h
bDogImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLgotICovCi12b2lkIEV3a1ZpZXdJbXBsOjpp
bmZvcm1CYWNrRm9yd2FyZExpc3RDaGFuZ2UoKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobV92aWV3LCAiYmFjayxmb3J3YXJkLGxpc3QsY2hhbmdlZCIsIDApOwotfQot
Ci0vKioKLSAqIEBpbnRlcm5hbAotICogV2ViIHByb2Nlc3MgaGFzIGNyYXNoZWQuCi0gKgotICog
RW1pdHMgc2lnbmFsOiAid2VicHJvY2VzcyxjcmFzaGVkIiB3aXRoIHBvaW50ZXIgdG8gY3Jhc2gg
aGFuZGxpbmcgYm9vbGVhbi4KLSAqLwotdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtV2ViUHJvY2Vz
c0NyYXNoZWQoKQotewotICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAid2VicHJvY2VzcyxjcmFzaGVkIiwgJmhhbmRs
ZWQpOwotCi0gICAgaWYgKCFoYW5kbGVkKSB7Ci0gICAgICAgIENTdHJpbmcgdXJsID0gbV9wYWdl
UHJveHktPnVybEF0UHJvY2Vzc0V4aXQoKS51dGY4KCk7Ci0gICAgICAgIFdBUk4oIldBUk5JTkc6
IFRoZSB3ZWIgcHJvY2VzcyBleHBlcmllbmNlZCBhIGNyYXNoIG9uICclcycuXG4iLCB1cmwuZGF0
YSgpKTsKLQotICAgICAgICAvLyBEaXNwbGF5IGFuIGVycm9yIHBhZ2UKLSAgICAgICAgZXdrX3Zp
ZXdfaHRtbF9zdHJpbmdfbG9hZChtX3ZpZXcsICJUaGUgd2ViIHByb2Nlc3MgaGFzIGNyYXNoZWQu
IiwgMCwgdXJsLmRhdGEoKSk7Ci0gICAgfQotfQotCiB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1D
b250ZW50c1NpemVDaGFuZ2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuaAppbmRleCBlYjM4NzIwLi42YjFlOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5k
ZWYgRXdrVmlld0ltcGxfaAogI2RlZmluZSBFd2tWaWV3SW1wbF9oCiAKKyNpbmNsdWRlICJFd2tW
aWV3Q2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiUmVmUHRyRWZsLmgiCiAjaW5jbHVkZSAiV0tFaW5h
U2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKQEAgLTE1Myw0NyArMTU0
LDE4IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVlc3RKU0NvbmZpcm1Qb3B1cChjb25zdCBXS0Vp
bmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UpOwogICAgIFdLRWluYVNoYXJlZFN0cmluZyByZXF1ZXN0
SlNQcm9tcHRQb3B1cChjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdL
RWluYVNoYXJlZFN0cmluZyYgZGVmYXVsdFZhbHVlKTsKIAotICAgIHZvaWQgaW5mb3JtRG93bmxv
YWRKb2JDYW5jZWxsZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQpOwotICAgIHZvaWQgaW5m
b3JtRG93bmxvYWRKb2JGYWlsZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQsIEV3a19FcnJv
ciogZXJyb3IpOwotICAgIHZvaWQgaW5mb3JtRG93bmxvYWRKb2JGaW5pc2hlZChFd2tfRG93bmxv
YWRfSm9iKiBkb3dubG9hZCk7Ci0gICAgdm9pZCBpbmZvcm1Eb3dubG9hZEpvYlJlcXVlc3RlZChF
d2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCk7CisgICAgdGVtcGxhdGU8RXdrVmlld0NhbGxiYWNr
czo6Q2FsbGJhY2tUeXBlIGNhbGxiYWNrVHlwZT4KKyAgICBFd2tWaWV3Q2FsbGJhY2tzOjpDYWxs
QmFjazxjYWxsYmFja1R5cGU+IHNtYXJ0Q2FsbGJhY2soKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIEV3a1ZpZXdDYWxsYmFja3M6OkNhbGxCYWNrPGNhbGxiYWNrVHlwZT4obV92aWV3KTsK
KyAgICB9CiAKLSAgICB2b2lkIGluZm9ybU5ld0Zvcm1TdWJtaXNzaW9uUmVxdWVzdChFd2tfRm9y
bV9TdWJtaXNzaW9uX1JlcXVlc3QqIHJlcXVlc3QpOwotICAgIHZvaWQgaW5mb3JtTG9hZEVycm9y
KEV3a19FcnJvciogZXJyb3IpOwotICAgIHZvaWQgaW5mb3JtTG9hZEZpbmlzaGVkKCk7Ci0gICAg
dm9pZCBpbmZvcm1Mb2FkUHJvZ3Jlc3MoZG91YmxlIHByb2dyZXNzKTsKLSAgICB2b2lkIGluZm9y
bVByb3Zpc2lvbmFsTG9hZEZhaWxlZChFd2tfRXJyb3IqIGVycm9yKTsKICNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKICAgICB2b2lkIGluZm9ybUxvYWRDb21taXR0ZWQoKTsKICNlbmRpZgot
ICAgIHZvaWQgaW5mb3JtUHJvdmlzaW9uYWxMb2FkUmVkaXJlY3QoKTsKLSAgICB2b2lkIGluZm9y
bVByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKTsKLQotICAgIHZvaWQgaW5mb3JtUmVzb3VyY2VMb2Fk
U3RhcnRlZChFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3Qp
OwotICAgIHZvaWQgaW5mb3JtUmVzb3VyY2VMb2FkUmVzcG9uc2UoRXdrX1Jlc291cmNlKiByZXNv
dXJjZSwgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpOwotICAgIHZvaWQgaW5mb3JtUmVzb3Vy
Y2VMb2FkRmFpbGVkKEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19FcnJvciogZXJyb3IpOwot
ICAgIHZvaWQgaW5mb3JtUmVzb3VyY2VMb2FkRmluaXNoZWQoRXdrX1Jlc291cmNlKiByZXNvdXJj
ZSk7Ci0gICAgdm9pZCBpbmZvcm1SZXNvdXJjZVJlcXVlc3RTZW50KEV3a19SZXNvdXJjZSogcmVz
b3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCwgRXdrX1VybF9SZXNwb25zZSogcmVkaXJl
Y3RSZXNwb25zZSk7Ci0KLSAgICB2b2lkIGluZm9ybU5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihF
d2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lzaW9uKTsKLSAgICB2b2lkIGluZm9y
bU5ld1dpbmRvd1BvbGljeURlY2lzaW9uKEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiog
ZGVjaXNpb24pOwotICAgIHZvaWQgaW5mb3JtQmFja0ZvcndhcmRMaXN0Q2hhbmdlKCk7Ci0KLSAg
ICB2b2lkIGluZm9ybVRpdGxlQ2hhbmdlKGNvbnN0IFN0cmluZyYgdGl0bGUpOwotICAgIHZvaWQg
aW5mb3JtVG9vbHRpcFRleHRDaGFuZ2UoY29uc3QgU3RyaW5nJiB0ZXh0KTsKLSAgICB2b2lkIGlu
Zm9ybVRleHRGb3VuZCh1bnNpZ25lZCBtYXRjaENvdW50KTsKLSAgICB2b2lkIGluZm9ybUljb25D
aGFuZ2UoKTsKLSAgICB2b2lkIGluZm9ybVdlYlByb2Nlc3NDcmFzaGVkKCk7CiAgICAgdm9pZCBp
bmZvcm1Db250ZW50c1NpemVDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7CiAg
ICAgdW5zaWduZWQgbG9uZyBsb25nIGluZm9ybURhdGFiYXNlUXVvdGFSZWFjaGVkKGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBs
b25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVz
YWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxv
bmcgbG9uZyBleHBlY3RlZFVzYWdlKTsKLSAgICB2b2lkIGluZm9ybVVSTENoYW5nZSgpOwogCi0j
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHZvaWQgaW5mb3JtSW50ZW50UmVxdWVzdChFd2tf
SW50ZW50KiBld2tJbnRlbnQpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykK
LSAgICB2b2lkIGluZm9ybUludGVudFNlcnZpY2VSZWdpc3RyYXRpb24oRXdrX0ludGVudF9TZXJ2
aWNlKiBld2tJbnRlbnRTZXJ2aWNlKTsKLSNlbmRpZgogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQogICAgIFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCogcGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudCgpIHsgcmV0dXJuIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudC5nZXQoKTsgfQogICAgIFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlciogcGFn
ZVZpZXdwb3J0Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci5n
ZXQoKTsgfQpAQCAtMjA1LDEwICsxNzcsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRFdmFz
R2xTdXJmYWNlKCkgeyBtX2V2YXNHbFN1cmZhY2UgPSAwOyB9CiAjZW5kaWYKIAorICAgIC8vIEZJ
WE1FOiBuZWVkcyByZWZhY3RvcmluZyAoc3BsaXQgY2FsbGJhY2sgaW52b2tlKQorICAgIHZvaWQg
aW5mb3JtVVJMQ2hhbmdlKCk7CisKIHByaXZhdGU6CiAgICAgaW5saW5lIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNtYXJ0RGF0YSgpOwogICAgIHZvaWQgZGlzcGxheVRpbWVyRmlyZWQoV2ViQ29yZTo6
VGltZXI8RXdrVmlld0ltcGw+Kik7CiAKKyAgICB2b2lkIGluZm9ybUljb25DaGFuZ2UoKTsKKwog
ICAgIHN0YXRpYyB2b2lkIG9uTW91c2VEb3duKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVj
dCosIHZvaWQqIGV2ZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgb25Nb3VzZVVwKHZvaWQqIGRh
dGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbyk7CiAgICAgc3RhdGljIHZv
aWQgb25Nb3VzZU1vdmUodm9pZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZl
bnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxv
YWRNYW5hZ2VyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRN
YW5hZ2VyRWZsLmNwcAppbmRleCA1ZjM1OWI1Li4xYWE2NjhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCkBAIC0zMiw2ICsz
Miw5IEBACiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2
YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmll
dy5oIgorCit1c2luZyBuYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNrczsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKQEAgLTQ5LDcgKzUyLDcgQEAgV0tTdHJpbmdSZWYgRG93bmxvYWRNYW5hZ2VyRWZs
OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHQKIAogICAg
IC8vIFdlIHNlbmQgdGhlIG5ldyBkb3dubG9hZCBzaWduYWwgb24gdGhlIEV3a19WaWV3IG9ubHkg
b25jZSB3ZSBoYXZlIHJlY2VpdmVkIHRoZSByZXNwb25zZQogICAgIC8vIGFuZCB0aGUgc3VnZ2Vz
dGVkIGZpbGUgbmFtZS4KLSAgICBkb3dubG9hZC0+dmlld0ltcGwoKS0+aW5mb3JtRG93bmxvYWRK
b2JSZXF1ZXN0ZWQoZG93bmxvYWQpOworICAgIGRvd25sb2FkLT52aWV3SW1wbCgpLT5zbWFydENh
bGxiYWNrPERvd25sb2FkSm9iUmVxdWVzdGVkPigpLmNhbGwoZG93bmxvYWQpOwogCiAgICAgLy8g
RG93bmxvYWRTb3VwIGV4cGVjdHMgdGhlIGRlc3RpbmF0aW9uIHRvIGJlIGEgVVJMLgogICAgIFN0
cmluZyBkZXN0aW5hdGlvbiA9IEFTQ0lJTGl0ZXJhbCgiZmlsZTovLyIpICsgU3RyaW5nOjpmcm9t
VVRGOChkb3dubG9hZC0+ZGVzdGluYXRpb24oKSk7CkBAIC04OCw3ICs5MSw4IEBAIHZvaWQgRG93
bmxvYWRNYW5hZ2VyRWZsOjpkaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiB3a0Rv
d25sb2FkLCBXS0Vycm9yCiAKICAgICBPd25QdHI8RXdrX0Vycm9yPiBld2tFcnJvciA9IEV3a19F
cnJvcjo6Y3JlYXRlKGVycm9yKTsKICAgICBkb3dubG9hZC0+c2V0U3RhdGUoRVdLX0RPV05MT0FE
X0pPQl9TVEFURV9GQUlMRUQpOwotICAgIGRvd25sb2FkLT52aWV3SW1wbCgpLT5pbmZvcm1Eb3du
bG9hZEpvYkZhaWxlZChkb3dubG9hZCwgZXdrRXJyb3IuZ2V0KCkpOworICAgIEV3a19Eb3dubG9h
ZF9Kb2JfRXJyb3IgZG93bmxvYWRFcnJvciA9IHsgZG93bmxvYWQsIGV3a0Vycm9yLmdldCgpIH07
CisgICAgZG93bmxvYWQtPnZpZXdJbXBsKCktPnNtYXJ0Q2FsbGJhY2s8RG93bmxvYWRKb2JGYWls
ZWQ+KCkuY2FsbCgmZG93bmxvYWRFcnJvcik7CiAgICAgZG93bmxvYWRNYW5hZ2VyLT51bnJlZ2lz
dGVyRG93bmxvYWRKb2IoZG93bmxvYWRJZCk7CiB9CiAKQEAgLTEwMCw3ICsxMDQsNyBAQCB2b2lk
IERvd25sb2FkTWFuYWdlckVmbDo6ZGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJl
ZiB3a0Rvd25sb2FkLCBjb25zdAogICAgIEFTU0VSVChkb3dubG9hZCk7CiAKICAgICBkb3dubG9h
ZC0+c2V0U3RhdGUoRVdLX0RPV05MT0FEX0pPQl9TVEFURV9DQU5DRUxMRUQpOwotICAgIGRvd25s
b2FkLT52aWV3SW1wbCgpLT5pbmZvcm1Eb3dubG9hZEpvYkNhbmNlbGxlZChkb3dubG9hZCk7Cisg
ICAgZG93bmxvYWQtPnZpZXdJbXBsKCktPnNtYXJ0Q2FsbGJhY2s8RG93bmxvYWRKb2JDYW5jZWxs
ZWQ+KCkuY2FsbChkb3dubG9hZCk7CiAgICAgZG93bmxvYWRNYW5hZ2VyLT51bnJlZ2lzdGVyRG93
bmxvYWRKb2IoZG93bmxvYWRJZCk7CiB9CiAKQEAgLTExMiw3ICsxMTYsNyBAQCB2b2lkIERvd25s
b2FkTWFuYWdlckVmbDo6ZGlkRmluaXNoKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiB3a0Rv
d25sb2FkLCBjb25zdAogICAgIEFTU0VSVChkb3dubG9hZCk7CiAKICAgICBkb3dubG9hZC0+c2V0
U3RhdGUoRVdLX0RPV05MT0FEX0pPQl9TVEFURV9GSU5JU0hFRCk7Ci0gICAgZG93bmxvYWQtPnZp
ZXdJbXBsKCktPmluZm9ybURvd25sb2FkSm9iRmluaXNoZWQoZG93bmxvYWQpOworICAgIGRvd25s
b2FkLT52aWV3SW1wbCgpLT5zbWFydENhbGxiYWNrPERvd25sb2FkSm9iRmluaXNoZWQ+KCkuY2Fs
bChkb3dubG9hZCk7CiAgICAgZG93bmxvYWRNYW5hZ2VyLT51bnJlZ2lzdGVyRG93bmxvYWRKb2Io
ZG93bmxvYWRJZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvRmluZENsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0ZpbmRD
bGllbnRFZmwuY3BwCmluZGV4IGE0MzFhY2MuLjVlOTAwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNwcApAQCAtMzAsNiArMzAsOCBAQAogI2lu
Y2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAKK3VzaW5nIG5hbWVz
cGFjZSBFd2tWaWV3Q2FsbGJhY2tzOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIGlu
bGluZSBGaW5kQ2xpZW50RWZsKiB0b0ZpbmRDbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKQEAgLTQwLDEzICs0MiwxMyBAQCBzdGF0aWMgaW5saW5lIEZpbmRDbGllbnRFZmwqIHRvRmlu
ZENsaWVudEVmbChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogdm9pZCBGaW5kQ2xpZW50RWZsOjpk
aWRGaW5kU3RyaW5nKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIHVuc2lnbmVkIG1hdGNoQ291bnQs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgRmluZENsaWVudEVmbCogZmluZENsaWVu
dCA9IHRvRmluZENsaWVudEVmbChjbGllbnRJbmZvKTsKLSAgICBmaW5kQ2xpZW50LT5tX3ZpZXdJ
bXBsLT5pbmZvcm1UZXh0Rm91bmQobWF0Y2hDb3VudCk7CisgICAgZmluZENsaWVudC0+bV92aWV3
SW1wbC0+c21hcnRDYWxsYmFjazxUZXh0Rm91bmQ+KCkuY2FsbCgmbWF0Y2hDb3VudCk7CiB9CiAK
IHZvaWQgRmluZENsaWVudEVmbDo6ZGlkRmFpbFRvRmluZFN0cmluZyhXS1BhZ2VSZWYsIFdLU3Ry
aW5nUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIEZpbmRDbGllbnRFZmwqIGZp
bmRDbGllbnQgPSB0b0ZpbmRDbGllbnRFZmwoY2xpZW50SW5mbyk7Ci0gICAgZmluZENsaWVudC0+
bV92aWV3SW1wbC0+aW5mb3JtVGV4dEZvdW5kKDApOworICAgIGZpbmRDbGllbnQtPm1fdmlld0lt
cGwtPnNtYXJ0Q2FsbGJhY2s8VGV4dEZvdW5kPigpLmNhbGwoKTsKIH0KIAogRmluZENsaWVudEVm
bDo6RmluZENsaWVudEVmbChFd2tWaWV3SW1wbCogdmlld0ltcGwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcAppbmRleCA3NTQxZTI2Li41Yjg5MzA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAK
QEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJXS1BhZ2UuaCIKICNpbmNsdWRlICJld2tfZm9y
bV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oIgogCit1c2luZyBuYW1lc3BhY2UgRXdrVmll
d0NhbGxiYWNrczsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBpbmxpbmUgRm9ybUNs
aWVudEVmbCogdG9Gb3JtQ2xpZW50RWZsKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC00Miw3
ICs0NCw3IEBAIHZvaWQgRm9ybUNsaWVudEVmbDo6d2lsbFN1Ym1pdEZvcm0oV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmIC8qZnJhbWUqLywgV0tGcmFtZVJlZiAvCiAgICAgRm9ybUNsaWVudEVmbCogZm9y
bUNsaWVudCA9IHRvRm9ybUNsaWVudEVmbChjbGllbnRJbmZvKTsKIAogICAgIFJlZlB0cjxFd2tf
Rm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Q+IHJlcXVlc3QgPSBFd2tfRm9ybV9TdWJtaXNzaW9uX1Jl
cXVlc3Q6OmNyZWF0ZSh2YWx1ZXMsIGxpc3RlbmVyKTsKLSAgICBmb3JtQ2xpZW50LT5tX3ZpZXdJ
bXBsLT5pbmZvcm1OZXdGb3JtU3VibWlzc2lvblJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CisgICAg
Zm9ybUNsaWVudC0+bV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxOZXdGb3JtU3VibWlzc2lvblJl
cXVlc3Q+KCkuY2FsbChyZXF1ZXN0LmdldCgpKTsKIH0KIAogRm9ybUNsaWVudEVmbDo6Rm9ybUNs
aWVudEVmbChFd2tWaWV3SW1wbCogdmlld0ltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDNiM2I3YjYuLmJjNzRkNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00
MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a19kb3dubG9hZF9qb2IuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iX3ByaXZhdGUu
aCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAKICNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKQEAgLTQ4LDYgKzQ5LDcgQEAKICNlbmRpZgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tz
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTE3LDEwICsxMTksMjEgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKICAgICAvLyBDaGVjayBpZiBsb2FkaW5n
IHdhcyBvbmdvaW5nLCB3aGVuIHdlYiBwcm9jZXNzIGNyYXNoZWQuCiAgICAgZG91YmxlIGxvYWRQ
cm9ncmVzcyA9IGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0KG1fdmlld0ltcGwtPnZpZXcoKSk7
Ci0gICAgaWYgKGxvYWRQcm9ncmVzcyA+PSAwICYmIGxvYWRQcm9ncmVzcyA8IDEpCi0gICAgICAg
IG1fdmlld0ltcGwtPmluZm9ybUxvYWRQcm9ncmVzcygxKTsKKyAgICBpZiAobG9hZFByb2dyZXNz
ID49IDAgJiYgbG9hZFByb2dyZXNzIDwgMSkgeworICAgICAgICBsb2FkUHJvZ3Jlc3MgPSAxOwor
ICAgICAgICBtX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPExvYWRQcm9ncmVzcz4oKS5jYWxsKCZs
b2FkUHJvZ3Jlc3MpOworICAgIH0KIAotICAgIG1fdmlld0ltcGwtPmluZm9ybVdlYlByb2Nlc3ND
cmFzaGVkKCk7CisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgbV92aWV3SW1wbC0+c21h
cnRDYWxsYmFjazxXZWJQcm9jZXNzQ3Jhc2hlZD4oKS5jYWxsKCZoYW5kbGVkKTsKKworICAgIGlm
ICghaGFuZGxlZCkgeworICAgICAgICBDU3RyaW5nIHVybCA9IG1fdmlld0ltcGwtPnBhZ2UoKS0+
dXJsQXRQcm9jZXNzRXhpdCgpLnV0ZjgoKTsKKyAgICAgICAgV0FSTigiV0FSTklORzogVGhlIHdl
YiBwcm9jZXNzIGV4cGVyaWVuY2VkIGEgY3Jhc2ggb24gJyVzJy5cbiIsIHVybC5kYXRhKCkpOwor
CisgICAgICAgIC8vIERpc3BsYXkgYW4gZXJyb3IgcGFnZQorICAgICAgICBld2tfdmlld19odG1s
X3N0cmluZ19sb2FkKG1fdmlld0ltcGwtPnZpZXcoKSwgIlRoZSB3ZWIgcHJvY2VzcyBoYXMgY3Jh
c2hlZC4iLCAwLCB1cmwuZGF0YSgpKTsKKyAgICB9CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6
OmRpZFJlbGF1bmNoUHJvY2VzcygpCkBAIC0xMzcsNyArMTUwLDEwIEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OnBhZ2VDbG9zZWQoKQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp0b29sVGlwQ2hhbmdl
ZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG5ld1Rvb2xUaXApCiB7Ci0gICAgbV92aWV3
SW1wbC0+aW5mb3JtVG9vbHRpcFRleHRDaGFuZ2UobmV3VG9vbFRpcCk7CisgICAgaWYgKG5ld1Rv
b2xUaXAuaXNFbXB0eSgpKQorICAgICAgICBtX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFRvb2x0
aXBUZXh0VW5zZXQ+KCkuY2FsbCgpOworICAgIGVsc2UKKyAgICAgICAgbV92aWV3SW1wbC0+c21h
cnRDYWxsYmFjazxUb29sdGlwVGV4dFNldD4oKS5jYWxsKG5ld1Rvb2xUaXApOwogfQogCiB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwCmluZGV4
IDdiZjZiZGEuLjYyNzhkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwCkBAIC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSAiZXdr
X2ludGVudF9zZXJ2aWNlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogCit1c2lu
ZyBuYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNrczsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0
YXRpYyBpbmxpbmUgUGFnZUxvYWRDbGllbnRFZmwqIHRvUGFnZUxvYWRDbGllbnRFZmwoY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKQEAgLTQ5LDcgKzUxLDcgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVm
bDo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiB0aXRsZSwg
V0sKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdl
TG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKLSAgICB2aWV3SW1wbC0+aW5m
b3JtVGl0bGVDaGFuZ2UodG9JbXBsKHRpdGxlKS0+c3RyaW5nKCkpOworICAgIHZpZXdJbXBsLT5z
bWFydENhbGxiYWNrPFRpdGxlQ2hhbmdlPigpLmNhbGwodG9JbXBsKHRpdGxlKS0+c3RyaW5nKCkp
OwogfQogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQpAQCAtNTcsNyArNTksNyBAQCB2b2lkIFBh
Z2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCBXS0ludGVudAogewogICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxv
YWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7CiAgICAgUmVmUHRyPEV3a19JbnRl
bnQ+IGV3a0ludGVudCA9IEV3a19JbnRlbnQ6OmNyZWF0ZShpbnRlbnQpOwotICAgIHZpZXdJbXBs
LT5pbmZvcm1JbnRlbnRSZXF1ZXN0KGV3a0ludGVudC5nZXQoKSk7CisgICAgdmlld0ltcGwtPnNt
YXJ0Q2FsbGJhY2s8SW50ZW50UmVxdWVzdD4oKS5jYWxsKGV3a0ludGVudC5nZXQoKSk7CiB9CiAj
ZW5kaWYKIApAQCAtNjYsMTQgKzY4LDE1IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OnJlZ2lz
dGVySW50ZW50U2VydmljZUZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tJCiB7CiAg
ICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZv
KS0+dmlld0ltcGwoKTsKICAgICBSZWZQdHI8RXdrX0ludGVudF9TZXJ2aWNlPiBld2tJbnRlbnRT
ZXJ2aWNlID0gRXdrX0ludGVudF9TZXJ2aWNlOjpjcmVhdGUoc2VydmljZUluZm8pOwotICAgIHZp
ZXdJbXBsLT5pbmZvcm1JbnRlbnRTZXJ2aWNlUmVnaXN0cmF0aW9uKGV3a0ludGVudFNlcnZpY2Uu
Z2V0KCkpOworICAgIHZpZXdJbXBsLT5zbWFydENhbGxiYWNrPEludGVudFNlcnZpY2VSZWdpc3Ry
YXRpb24+KCkuY2FsbChld2tJbnRlbnRTZXJ2aWNlLmdldCgpKTsKIH0KICNlbmRpZgogCiB2b2lk
IFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRDaGFuZ2VQcm9ncmVzcyhXS1BhZ2VSZWYgcGFnZSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1Bh
Z2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwotICAgIHZpZXdJbXBsLT5p
bmZvcm1Mb2FkUHJvZ3Jlc3MoV0tQYWdlR2V0RXN0aW1hdGVkUHJvZ3Jlc3MocGFnZSkpOworICAg
IGRvdWJsZSBwcm9ncmVzcyA9IFdLUGFnZUdldEVzdGltYXRlZFByb2dyZXNzKHBhZ2UpOworICAg
IHZpZXdJbXBsLT5zbWFydENhbGxiYWNrPExvYWRQcm9ncmVzcz4oKS5jYWxsKCZwcm9ncmVzcyk7
CiB9CiAKIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1Bh
Z2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiAvKnVzZXJEYXRhKi8sIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCkBAIC04Miw3ICs4NSw3IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6
OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlw
CiAgICAgICAgIHJldHVybjsKIAogICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxv
YWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7Ci0gICAgdmlld0ltcGwtPmluZm9y
bUxvYWRGaW5pc2hlZCgpOworICAgIHZpZXdJbXBsLT5zbWFydENhbGxiYWNrPExvYWRGaW5pc2hl
ZD4oKS5jYWxsKCk7CiB9CiAKIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZEZhaWxMb2FkV2l0
aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVy
cm9yLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC05Miw4ICs5NSw4IEBA
IHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQ
YWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lCiAKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0
b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwogICAgIE93blB0cjxF
d2tfRXJyb3I+IGV3a0Vycm9yID0gRXdrX0Vycm9yOjpjcmVhdGUoZXJyb3IpOwotICAgIHZpZXdJ
bXBsLT5pbmZvcm1Mb2FkRXJyb3IoZXdrRXJyb3IuZ2V0KCkpOwotICAgIHZpZXdJbXBsLT5pbmZv
cm1Mb2FkRmluaXNoZWQoKTsKKyAgICB2aWV3SW1wbC0+c21hcnRDYWxsYmFjazxMb2FkRXJyb3I+
KCkuY2FsbChld2tFcnJvci5nZXQoKSk7CisgICAgdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8TG9h
ZEZpbmlzaGVkPigpLmNhbGwoKTsKIH0KIAogdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
VHlwZVJlZiAvKnVzZXJEYXRhKi8sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xMDIsNyAr
MTA1LDggQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnIKICAgICAgICAgcmV0dXJuOwogCiAgICAg
RXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+
dmlld0ltcGwoKTsKLSAgICB2aWV3SW1wbC0+aW5mb3JtUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgp
OworICAgIHZpZXdJbXBsLT5pbmZvcm1VUkxDaGFuZ2UoKTsKKyAgICB2aWV3SW1wbC0+c21hcnRD
YWxsYmFjazxQcm92aXNpb25hbExvYWRTdGFydGVkPigpLmNhbGwoKTsKIH0KIAogdm9pZCBQYWdl
TG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgLyp1c2VyRGF0
YSovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtMTExLDcgKzExNSw4IEBAIHZvaWQgUGFn
ZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdLUGFnCiAgICAgICAgIHJldHVybjsKIAogICAgIEV3a1ZpZXdJbXBsKiB2aWV3
SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7Ci0gICAg
dmlld0ltcGwtPmluZm9ybVByb3Zpc2lvbmFsTG9hZFJlZGlyZWN0KCk7CisgICAgdmlld0ltcGwt
PmluZm9ybVVSTENoYW5nZSgpOworICAgIHZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFByb3Zpc2lv
bmFsTG9hZFJlZGlyZWN0PigpLmNhbGwoKTsKIH0KIAogdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tFcnJvclJlZiBlcnJvciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQpAQCAtMTIxLDcgKzEyNiw3IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZEZh
aWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhCiAKICAg
ICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8p
LT52aWV3SW1wbCgpOwogICAgIE93blB0cjxFd2tfRXJyb3I+IGV3a0Vycm9yID0gRXdrX0Vycm9y
OjpjcmVhdGUoZXJyb3IpOwotICAgIHZpZXdJbXBsLT5pbmZvcm1Qcm92aXNpb25hbExvYWRGYWls
ZWQoZXdrRXJyb3IuZ2V0KCkpOworICAgIHZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFByb3Zpc2lv
bmFsTG9hZEZhaWxlZD4oKS5jYWxsKGV3a0Vycm9yLmdldCgpKTsKIH0KIAogI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQpAQCAtMTMxLDcgKzEzNiw3IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRF
Zmw6OmRpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
VHlwCiAgICAgICAgIHJldHVybjsKIAogICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFn
ZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7Ci0gICAgdmlld0ltcGwtPmlu
Zm9ybUxvYWRDb21taXR0ZWQoKTsKKyAgICB2aWV3SW1wbC0+c21hcnRDYWxsYmFjazxMb2FkQ29t
bWl0dGVkPigpLmNhbGwoKTsKIH0KICNlbmRpZgogCkBAIC0xNDQsNyArMTQ5LDcgQEAgdm9pZCBQ
YWdlTG9hZENsaWVudEVmbDo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdLUGFnZVJlZiwgV0tC
YWNrRm9yd2FyZExpc3RJdGUKICAgICBBU1NFUlQobGlzdCk7CiAgICAgbGlzdC0+dXBkYXRlKGFk
ZGVkSXRlbSwgcmVtb3ZlZEl0ZW1zKTsKIAotICAgIHZpZXdJbXBsLT5pbmZvcm1CYWNrRm9yd2Fy
ZExpc3RDaGFuZ2UoKTsKKyAgICB2aWV3SW1wbC0+c21hcnRDYWxsYmFjazxCYWNrRm9yd2FyZExp
c3RDaGFuZ2U+KCkuY2FsbCgpOwogfQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VQb2xp
Y3lDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5
Q2xpZW50RWZsLmNwcAppbmRleCBhNjNiYjVlLi4yNTRmMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNsaWVudEVmbC5jcHAKQEAgLTM1LDYg
KzM1LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBTdGF0dXNDb2Rlcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgaW5saW5lIFBhZ2VQb2xpY3lDbGllbnRF
ZmwqIHRvUGFnZVBvbGljeUNsaWVudEVmbChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtNDcs
NyArNDksNyBAQCB2b2lkIFBhZ2VQb2xpY3lDbGllbnRFZmw6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLAogICAgIFBhZ2VQb2xpY3lDbGllbnRF
ZmwqIHBvbGljeUNsaWVudCA9IHRvUGFnZVBvbGljeUNsaWVudEVmbChjbGllbnRJbmZvKTsKIAog
ICAgIFJlZlB0cjxFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24+IGRlY2lzaW9uID0gRXdr
X05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uOjpjcmVhdGUobmF2aWdhdGlvblR5cGUsIG1vdXNl
QnV0dG9uLCBtb2RpZmllcnMsIHJlcXVlc3QsIDAsIGxpc3RlbmVyKTsKLSAgICBwb2xpY3lDbGll
bnQtPm1fdmlld0ltcGwtPmluZm9ybU5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihkZWNpc2lvbi5n
ZXQoKSk7CisgICAgcG9saWN5Q2xpZW50LT5tX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbj4oKS5jYWxsKGRlY2lzaW9uLmdldCgpKTsKIH0KIAogdm9pZCBQ
YWdlUG9saWN5Q2xpZW50RWZsOjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmLCBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIFdL
RXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24s
IFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBXS1N0cmluZ1JlZiBmcmFtZU5hbWUsIFdLRnJhbWVQ
b2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmIC8qdXNlckRhdGEqLywgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKQEAgLTU1LDcgKzU3LDcgQEAgdm9pZCBQYWdlUG9saWN5Q2xpZW50
RWZsOjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV0tQYWdlUmVmLCBXS0ZyYW1lUmVm
LAogICAgIFBhZ2VQb2xpY3lDbGllbnRFZmwqIHBvbGljeUNsaWVudCA9IHRvUGFnZVBvbGljeUNs
aWVudEVmbChjbGllbnRJbmZvKTsKIAogICAgIFJlZlB0cjxFd2tfTmF2aWdhdGlvbl9Qb2xpY3lf
RGVjaXNpb24+IGRlY2lzaW9uID0gRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uOjpjcmVh
dGUobmF2aWdhdGlvblR5cGUsIG1vdXNlQnV0dG9uLCBtb2RpZmllcnMsIHJlcXVlc3QsIHRvSW1w
bChmcmFtZU5hbWUpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsaXN0ZW5lcik7Ci0gICAgcG9s
aWN5Q2xpZW50LT5tX3ZpZXdJbXBsLT5pbmZvcm1OZXdXaW5kb3dQb2xpY3lEZWNpc2lvbihkZWNp
c2lvbi5nZXQoKSk7CisgICAgcG9saWN5Q2xpZW50LT5tX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNr
PE5ld1dpbmRvd1BvbGljeURlY2lzaW9uPigpLmNhbGwoZGVjaXNpb24uZ2V0KCkpOwogfQogCiB2
b2lkIFBhZ2VQb2xpY3lDbGllbnRFZmw6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlQ2FsbGJhY2so
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBX
S1VSTFJlcXVlc3RSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBl
UmVmIC8qdXNlckRhdGEqLywgY29uc3Qgdm9pZCogLypjbGllbnRJbmZvKi8pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAK
aW5kZXggY2M0YmRmOC4uYmMwMTQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcApAQCAtMzQsOCArMzQsMTAgQEAK
ICNpbmNsdWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVz
dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgiCisjaW5j
bHVkZSAiZXdrX3ZpZXcuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1l
c3BhY2UgRXdrVmlld0NhbGxiYWNrczsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTU2LDcg
KzU4LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZEluaXRpYXRlTG9hZEZvclJl
c291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiB3a0YKICAgICByZXNvdXJjZUxvYWRDbGllbnQt
Pm1fbG9hZGluZ1Jlc291cmNlc01hcC5hZGQocmVzb3VyY2VJZGVudGlmaWVyLCByZXNvdXJjZSk7
CiAKICAgICBSZWZQdHI8RXdrX1VybF9SZXF1ZXN0PiByZXF1ZXN0ID0gRXdrX1VybF9SZXF1ZXN0
OjpjcmVhdGUod2tSZXF1ZXN0KTsKLSAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwt
PmluZm9ybVJlc291cmNlTG9hZFN0YXJ0ZWQocmVzb3VyY2UuZ2V0KCksIHJlcXVlc3QuZ2V0KCkp
OworICAgIEV3a19SZXNvdXJjZV9SZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHtyZXNvdXJjZS5n
ZXQoKSwgcmVxdWVzdC5nZXQoKSwgMH07CisgICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJ
bXBsLT5zbWFydENhbGxiYWNrPFJlc291cmNlTG9hZFN0YXJ0ZWQ+KCkuY2FsbCgmcmVzb3VyY2VS
ZXF1ZXN0KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZFNlbmRSZXF1ZXN0
Rm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50
aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiB3a1JlcXVlc3QsIFdLVVJMUmVzcG9uc2VSZWYgd2tSZWRp
cmVjdFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtNzAsNyArNzMsOCBAQCB2
b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZShXS1Bh
Z2VSZWYsIFdLRnJhbWVSZWYsIHVpbgogCiAgICAgUmVmUHRyPEV3a19VcmxfUmVxdWVzdD4gcmVx
dWVzdCA9IEV3a19VcmxfUmVxdWVzdDo6Y3JlYXRlKHdrUmVxdWVzdCk7CiAgICAgUmVmUHRyPEV3
a19VcmxfUmVzcG9uc2U+IHJlZGlyZWN0UmVzcG9uc2UgPSBFd2tfVXJsX1Jlc3BvbnNlOjpjcmVh
dGUod2tSZWRpcmVjdFJlc3BvbnNlKTsKLSAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0lt
cGwtPmluZm9ybVJlc291cmNlUmVxdWVzdFNlbnQocmVzb3VyY2UuZ2V0KCksIHJlcXVlc3QuZ2V0
KCksIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOworICAgIEV3a19SZXNvdXJjZV9SZXF1ZXN0IHJl
c291cmNlUmVxdWVzdCA9IHtyZXNvdXJjZS5nZXQoKSwgcmVxdWVzdC5nZXQoKSwgcmVkaXJlY3RS
ZXNwb25zZS5nZXQoKX07CisgICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5zbWFy
dENhbGxiYWNrPFJlc291cmNlUmVxdWVzdFNlbnQ+KCkuY2FsbCgmcmVzb3VyY2VSZXF1ZXN0KTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVSZXNwb25zZUZvclJl
c291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVy
LCBXS1VSTFJlc3BvbnNlUmVmIHdrUmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBA
IC04Myw3ICs4Nyw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlUmVz
cG9uc2VGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsCiAgICAgICAgIHJldHVybjsK
IAogICAgIFJlZlB0cjxFd2tfVXJsX1Jlc3BvbnNlPiByZXNwb25zZSA9IEV3a19VcmxfUmVzcG9u
c2U6OmNyZWF0ZSh3a1Jlc3BvbnNlKTsKLSAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0lt
cGwtPmluZm9ybVJlc291cmNlTG9hZFJlc3BvbnNlKHJlc291cmNlLmdldCgpLCByZXNwb25zZS5n
ZXQoKSk7CisgICAgRXdrX1Jlc291cmNlX0xvYWRfUmVzcG9uc2UgcmVzb3VyY2VMb2FkUmVzcG9u
c2UgPSB7cmVzb3VyY2UuZ2V0KCksIHJlc3BvbnNlLmdldCgpfTsKKyAgICByZXNvdXJjZUxvYWRD
bGllbnQtPm1fdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8UmVzb3VyY2VMb2FkUmVzcG9uc2U+KCku
Y2FsbCgmcmVzb3VyY2VMb2FkUmVzcG9uc2UpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZENsaWVu
dEVmbDo6ZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWlu
dDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtOTUs
NyArMTAwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZEZpbmlzaExvYWRGb3JS
ZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQKICAgICBpZiAoIXJlc291cmNlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmlu
Zm9ybVJlc291cmNlTG9hZEZpbmlzaGVkKHJlc291cmNlLmdldCgpKTsKKyAgICByZXNvdXJjZUxv
YWRDbGllbnQtPm1fdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8UmVzb3VyY2VMb2FkRmluaXNoZWQ+
KCkuY2FsbChyZXNvdXJjZS5nZXQoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZs
OjpkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3Qg
cmVzb3VyY2VJZGVudGlmaWVyLCBXS0Vycm9yUmVmIHdrRXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCkBAIC0xMDgsOCArMTEzLDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRp
ZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjQKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgT3duUHRyPEV3a19FcnJvcj4gZXdrRXJyb3IgPSBFd2tfRXJyb3I6
OmNyZWF0ZSh3a0Vycm9yKTsKLSAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmlu
Zm9ybVJlc291cmNlTG9hZEZhaWxlZChyZXNvdXJjZS5nZXQoKSwgZXdrRXJyb3IuZ2V0KCkpOwot
ICAgIHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtUmVzb3VyY2VMb2FkRmlu
aXNoZWQocmVzb3VyY2UuZ2V0KCkpOworICAgIEV3a19SZXNvdXJjZV9Mb2FkX0Vycm9yIHJlc291
cmNlTG9hZEVycm9yID0ge3Jlc291cmNlLmdldCgpLCBld2tFcnJvci5nZXQoKX07CisgICAgcmVz
b3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFJlc291cmNlTG9hZEZh
aWxlZD4oKS5jYWxsKCZyZXNvdXJjZUxvYWRFcnJvcik7CisgICAgcmVzb3VyY2VMb2FkQ2xpZW50
LT5tX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFJlc291cmNlTG9hZEZpbmlzaGVkPigpLmNhbGwo
cmVzb3VyY2UuZ2V0KCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6b25WaWV3
UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2b2lk
KikKQEAgLTEyNCw3ICsxMzAsNyBAQCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OlJlc291cmNlTG9h
ZENsaWVudEVmbChFd2tWaWV3SW1wbCogdmlld0ltcGwpCiAgICAgOiBtX3ZpZXdJbXBsKHZpZXdJ
bXBsKQogewogICAgIC8vIExpc3RlbiBmb3IgImxvYWQscHJvdmlzaW9uYWwsc3RhcnRlZCIgb24g
dGhlIHZpZXcgdG8gY2xlYXIgaW50ZXJuYWwgcmVzb3VyY2VzIG1hcC4KLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19hZGQobV92aWV3SW1wbC0+dmlldygpLCAibG9hZCxwcm92aXNpb25h
bCxzdGFydGVkIiwgb25WaWV3UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhpcyk7CisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1fdmlld0ltcGwtPnZpZXcoKSwgQ2FsbEJhY2tJ
bmZvPFByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQ+OjpuYW1lKCksIG9uVmlld1Byb3Zpc2lvbmFsTG9h
ZFN0YXJ0ZWQsIHRoaXMpOwogCiAgICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBtX3ZpZXdJbXBsLT53
a1BhZ2UoKTsKICAgICBBU1NFUlQocGFnZVJlZik7CkBAIC0xNDQsNyArMTUwLDcgQEAgUmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpSZXNvdXJjZUxvYWRDbGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJ
bXBsKQogCiBSZXNvdXJjZUxvYWRDbGllbnRFZmw6On5SZXNvdXJjZUxvYWRDbGllbnRFZmwoKQog
ewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbChtX3ZpZXdJbXBsLT52aWV3KCks
ICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCBvblZpZXdQcm92aXNpb25hbExvYWRTdGFydGVk
KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwobV92aWV3SW1wbC0+dmlldygp
LCBDYWxsQmFja0luZm88UHJvdmlzaW9uYWxMb2FkU3RhcnRlZD46Om5hbWUoKSwgb25WaWV3UHJv
dmlzaW9uYWxMb2FkU3RhcnRlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>