<?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>55110</bug_id>
          
          <creation_ts>2011-02-23 18:16:50 -0800</creation_ts>
          <short_desc>fast/forms/input-file-not-open-without-gesture.html passes when a file picker dialog is opened without a gesture.</short_desc>
          <delta_ts>2011-05-27 06:30:58 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></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>47593</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Johnny(Jianning) Ding">jnd</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>jnd</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>356614</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-02-23 18:16:50 -0800</bug_when>
    <thetext>I was thinking about how to make this test more obvious, and I think the right thing to do is to have DumpRenderTree implement the UI delegates for the open panel (webView:runOpenPanelForFileButtonWithResultListener:allowMultipleFiles: and webView:runOpenPanelForFileButtonWithResultListener on the Mac) and have them log a message. Layout test expectations could then be based around the presence/absence of this log message.

That technique could be useful for this test as well as for the tests that will be necessary for the two dependent bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356622</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-02-23 18:43:19 -0800</bug_when>
    <thetext>Maybe this is only a problem for some ports (it is on Apple&apos;s Mac port). I didn&apos;t check if Chromium, for instance, implements these UI delegates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356904</commentid>
    <comment_count>2</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-02-24 05:23:40 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Maybe this is only a problem for some ports (it is on Apple&apos;s Mac port). I didn&apos;t check if Chromium, for instance, implements these UI delegates.

It&apos;s good idea, I like it. Chromium&apos;s implementation is similar, I have implemented delegate for WebViewImpl::runFileChooser to log a message in Chromium DRT.

Due to the super slow network speed today, I haven&apos;t finished my webkit client sync, but will upload the patch tomorrow.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358019</commentid>
    <comment_count>3</comment_count>
      <attachid>83835</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-02-25 10:36:17 -0800</bug_when>
    <thetext>Created attachment 83835
patch v1

Log the status of opening file chooser dialog in most of ports except win. It&apos;s because WebKit doesn&apos;t use UIDelegate to open the file dialog in win port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358023</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-25 10:38:45 -0800</bug_when>
    <thetext>Attachment 83835 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1

Tools/DumpRenderTree/wx/DumpRenderTreeWx.cpp:86:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebKit/wx/WebView.h:554:  The parameter name &quot;win&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358061</commentid>
    <comment_count>5</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-02-25 11:17:22 -0800</bug_when>
    <thetext>Attachment 83835 did not build on gtk:
Build output: http://queues.webkit.org/results/8044356</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358373</commentid>
    <comment_count>6</comment_count>
      <attachid>83923</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-02-25 21:15:50 -0800</bug_when>
    <thetext>Created attachment 83923
patch v1 w/ fixing gtk compilation error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358374</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-25 21:17:53 -0800</bug_when>
    <thetext>Attachment 83923 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1

Source/WebKit/wx/WebView.h:534:  The parameter name &quot;win&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/wx/WebView.h:534:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebKit/wx/WebView.h:544:  The parameter name &quot;win&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/wx/WebView.h:544:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebKit/wx/WebView.h:554:  The parameter name &quot;win&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/wx/WebView.h:554:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 6 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360829</commentid>
    <comment_count>8</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-03-02 09:10:26 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=83923) [details]
&gt; patch v1 w/ fixing gtk compilation error

@Andy, any comments for the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360899</commentid>
    <comment_count>9</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-03-02 10:35:01 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; Created an attachment (id=83923) [details] [details]
&gt; &gt; patch v1 w/ fixing gtk compilation error
&gt; 
&gt; @Andy, any comments for the patch?

Sure, I&apos;ll take a look in just a bit. Keep in mind that I&apos;m not a reviewer, but I&apos;ll be happy to give you some feedback :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361013</commentid>
    <comment_count>10</comment_count>
      <attachid>83923</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-03-02 13:03:56 -0800</bug_when>
    <thetext>Comment on attachment 83923
patch v1 w/ fixing gtk compilation error

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

I don&apos;t know enough about non-Apple ports to comment effectively, so I&apos;ll just assume you did the right thing :) It does look like you missed Apple&apos;s Windows port, though.

&gt; Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp:560
&gt; +        printf(&quot;Opened a file chooser dialog\n&quot;);

Perhaps this should print &quot;OPEN PANEL&quot; for consistency. This matches the messages for other dialogs (e.g. &quot;ALERT&quot;, &quot;CONFIRM&quot;,  &quot;PROMPT&quot;, etc.). Same comment for all the other instances of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361016</commentid>
    <comment_count>11</comment_count>
      <attachid>83923</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-03-02 13:04:46 -0800</bug_when>
    <thetext>Comment on attachment 83923
patch v1 w/ fixing gtk compilation error

I&apos;m going to r- due to the lack of an Apple/Windows implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361312</commentid>
    <comment_count>12</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-03-02 19:30:39 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 83923 [details])
&gt; I&apos;m going to r- due to the lack of an Apple/Windows implementation.

Hi Andy,
Thanks for your feedback. Missing win part is because WebKit doesn&apos;t use UIDelegate to open the file dialog in win port.
If I am going to change the webkit win port implementation to use UIDelegate to open the file dialog in win port like what mac port does. Do you think it makes sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361323</commentid>
    <comment_count>13</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-03-02 20:02:51 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 83923 [details] [details])
&gt; &gt; I&apos;m going to r- due to the lack of an Apple/Windows implementation.
&gt; 
&gt; Hi Andy,
&gt; Thanks for your feedback. Missing win part is because WebKit doesn&apos;t use UIDelegate to open the file dialog in win port.
&gt; If I am going to change the webkit win port implementation to use UIDelegate to open the file dialog in win port like what mac port does. Do you think it makes sense?

Hi Johnny,

The Windows DRT does implementation has a UIDelegate with the following method (in Tools/DumpRenderTree/win/UIDelegate.h):

    virtual HRESULT STDMETHODCALLTYPE runOpenPanelForFileButtonWithResultListener( 
        /* [in] */ IWebView *sender,
        /* [in] */ IWebOpenPanelResultListener *resultListener) { return E_NOTIMPL; }

You should just be able to implement this method, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361328</commentid>
    <comment_count>14</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-03-02 20:08:50 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 83923 [details] [details])
&gt; &gt; I&apos;m going to r- due to the lack of an Apple/Windows implementation.
&gt; 
&gt; Hi Andy,
&gt; Thanks for your feedback. Missing win part is because WebKit doesn&apos;t use UIDelegate to open the file dialog in win port.
&gt; If I am going to change the webkit win port implementation to use UIDelegate to open the file dialog in win port like what mac port does. Do you think it makes sense?

Ohh, I misunderstood you. Yea, like you said, WebKit displays the file chooser directly on Windows instead of using UIDelegate.

It&apos;d probably be best to file a separate bug about this. The popup tests can then be skipped on Windows pending the resolution of that bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361331</commentid>
    <comment_count>15</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-03-02 20:13:27 -0800</bug_when>
    <thetext>&gt; It&apos;d probably be best to file a separate bug about this. The popup tests can then be skipped on Windows pending the resolution of that bug.

Good, will file the bug later.
So if I change to print &quot;OPEN PANEL&quot; based on my last patch, are you satisfied with it? I can ask tc/adam as reviewer to get approval.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361335</commentid>
    <comment_count>16</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-03-02 20:21:02 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; It&apos;d probably be best to file a separate bug about this. The popup tests can then be skipped on Windows pending the resolution of that bug.
&gt; 
&gt; Good, will file the bug later.
&gt; So if I change to print &quot;OPEN PANEL&quot; based on my last patch, are you satisfied with it? I can ask tc/adam as reviewer to get approval.

I am! Thanks Johnny.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361339</commentid>
    <comment_count>17</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-03-02 20:21:59 -0800</bug_when>
    <thetext>Just keep in mind that any updated tests based on this patch will fail on Windows, so that new bug and associated Skipped list changes will be important to keep the bots green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361341</commentid>
    <comment_count>18</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-03-02 20:31:09 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Just keep in mind that any updated tests based on this patch will fail on Windows, so that new bug and associated Skipped list changes will be important to keep the bots green.

I see, will do add the test into skip test to make bot happy:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367636</commentid>
    <comment_count>19</comment_count>
      <attachid>85799</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-03-15 06:17:36 -0700</bug_when>
    <thetext>Created attachment 85799
patch v2

Sorry for delay.
I have changed the log content to &quot;OPEN PANEL&quot; according to andy&apos;s comments, already compiled and tested it on mac, chromium-mac/window, linux-gtk platform.

Adam and Andy, please take a look at the new patch.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367637</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-15 06:20:32 -0700</bug_when>
    <thetext>Attachment 85799 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1

Source/WebKit/wx/WebView.h:553:  The parameter name &quot;win&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367691</commentid>
    <comment_count>21</comment_count>
      <attachid>85799</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-15 09:08:25 -0700</bug_when>
    <thetext>Comment on attachment 85799
patch v2

I don&apos;t see an implementation for Apple&apos;s Windows port (in DumpRenderTree/win). Was that intentional?

Presumably this change affects test results, but I don&apos;t see any changes to LayoutTests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367710</commentid>
    <comment_count>22</comment_count>
      <attachid>85799</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-15 09:40:11 -0700</bug_when>
    <thetext>Comment on attachment 85799
patch v2

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

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:620
&gt; +    if (DumpRenderTreeSupportGtk::dumpRenderTreeModeEnabled()) {
&gt; +        gboolean retval;
&gt; +        WebKitWebFrame* webFrame = kit(frame);
&gt; +        WebKitWebView* webView = getViewFromFrame(webFrame);
&gt; +        g_signal_emit_by_name(webView, &quot;run-file-chooser&quot;, &amp;retval);
&gt; +        return;
&gt; +    }

See below.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2857
&gt; +    /**
&gt; +     * WebKitWebView::run-file-chooser:
&gt; +     * @webView: the object on which the signal is emitted
&gt; +     *
&gt; +     * This signal is emitted when we need to open a file chooser dialog,
&gt; +     * so DRT can have chance to log whether a file chooser dialog is opened or not.
&gt; +     * So far this signal is only used for DRT mode.
&gt; +     */
&gt; +    webkit_web_view_signals[RUN_FILE_CHOOSER] = g_signal_new(&quot;run-file-chooser&quot;,
&gt; +            G_TYPE_FROM_CLASS(webViewClass),
&gt; +            (GSignalFlags)G_SIGNAL_RUN_LAST,
&gt; +            0,
&gt; +            g_signal_accumulator_true_handled,
&gt; +            NULL,
&gt; +            webkit_marshal_BOOLEAN__VOID,
&gt; +            G_TYPE_BOOLEAN, 0);
&gt; +

Instead of adding the signal and risking introducing some ABI break in a future release (even for private API), maybe it&apos;s better for now to just take the approach you took for Qt with GTK+ as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367715</commentid>
    <comment_count>23</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-03-15 09:44:54 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 85799 [details])
&gt; I don&apos;t see an implementation for Apple&apos;s Windows port (in DumpRenderTree/win). Was that intentional?

Yes, it is because WebKit displays the file chooser directly on Windows instead of using UIDelegate on mac.

Andy suggested filing a separate bug for using UIDelegate to open file chooser dialog on Windows port and temporarily skip the test on Windows port.

I just filed bug 56383 for using UIDelegate to open file chooser dialog on Windows port 

&gt; Presumably this change affects test results, but I don&apos;t see any changes to LayoutTests.

The change to LayoutTests is in bug 55102.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367722</commentid>
    <comment_count>24</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-03-15 09:53:11 -0700</bug_when>
    <thetext>&gt; Instead of adding the signal and risking introducing some ABI break in a future release (even for private API), maybe it&apos;s better for now to just take the approach you took for Qt with GTK+ as well.

Thanks for your review,  Martin.

I was thinking the way to directly use printf to dump the log in ChromeClientGtk.cpp like what QT port does. But I didn&apos;t find similar usage, so I gave up that way.

If you reviewers are comfortable with this simple way, I am happy to do that:-)
Do I have the green light?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368013</commentid>
    <comment_count>25</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-15 16:01:36 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; &gt; Instead of adding the signal and risking introducing some ABI break in a future release (even for private API), maybe it&apos;s better for now to just take the approach you took for Qt with GTK+ as well.

&gt; If you reviewers are comfortable with this simple way, I am happy to do that:-)
&gt; Do I have the green light?

Sure, this seems fine for now. Eventually we&apos;ll want to implement this signal, but probably after we cut the branch for the next stable series.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368150</commentid>
    <comment_count>26</comment_count>
      <attachid>85900</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-03-15 19:57:53 -0700</bug_when>
    <thetext>Created attachment 85900
patch V3

Directly print out the open panel status when calling runOpenPanel in DRT mode according to Martin&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368152</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-15 20:00:15 -0700</bug_when>
    <thetext>Attachment 85900 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1

Tools/DumpRenderTree/wx/DumpRenderTreeWx.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393015</commentid>
    <comment_count>28</comment_count>
      <attachid>85900</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-26 16:31:26 -0700</bug_when>
    <thetext>Comment on attachment 85900
patch V3

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

Looks like you left out Apple&apos;s Windows port. It&apos;s also weird to add this new capability but not any new tests that use it.

&gt; Tools/DumpRenderTree/mac/UIDelegate.mm:267
&gt; +- (void)webView:(WebView *)sender runOpenPanelForFileButtonWithResultListener:(id&lt;WebOpenPanelResultListener&gt;)resultListener allowMultipleFiles:(BOOL)allowMultipleFiles WEBKIT_OBJC_METHOD_ANNOTATION(AVAILABLE_IN_WEBKIT_VERSION_4_0)

No need for the annotation here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393037</commentid>
    <comment_count>29</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-04-26 16:39:45 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 85900 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85900&amp;action=review
&gt; 
&gt; Looks like you left out Apple&apos;s Windows port.

There is commentary in this bug about why this is (WebKit on Windows doesn&apos;t consult UIDelegate for runOpenPanel() so DRT isn&apos;t able to override the default behavior). &lt;https://bugs.webkit.org/show_bug.cgi?id=56383&gt; tracks this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393384</commentid>
    <comment_count>30</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-04-26 23:29:37 -0700</bug_when>
    <thetext>&gt; There is commentary in this bug about why this is (WebKit on Windows doesn&apos;t consult UIDelegate for runOpenPanel() so DRT isn&apos;t able to override the default behavior). &lt;https://bugs.webkit.org/show_bug.cgi?id=56383&gt; tracks this issue.

Andy, although the patch for bug 55102 may not be necessary, but it&apos;s still good to use the patch to check open panel status since it is more obvious.
I like to change test input-file-not-open-without-gesture.html to use the new way and add it in this patch. Does it make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393704</commentid>
    <comment_count>31</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-04-27 12:17:53 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; &gt; There is commentary in this bug about why this is (WebKit on Windows doesn&apos;t consult UIDelegate for runOpenPanel() so DRT isn&apos;t able to override the default behavior). &lt;https://bugs.webkit.org/show_bug.cgi?id=56383&gt; tracks this issue.
&gt; 
&gt; Andy, although the patch for bug 55102 may not be necessary, but it&apos;s still good to use the patch to check open panel status since it is more obvious.
&gt; I like to change test input-file-not-open-without-gesture.html to use the new way and add it in this patch. Does it make sense?

Sounds good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397828</commentid>
    <comment_count>32</comment_count>
      <attachid>92219</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-05-04 05:18:06 -0700</bug_when>
    <thetext>Created attachment 92219
patch v4

change LayoutTests/fast/forms/input-file-not-open-without-gesture.html to use new way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397829</commentid>
    <comment_count>33</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-04 05:20:02 -0700</bug_when>
    <thetext>Attachment 92219 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Tools/DumpRenderTree/wx/DumpRenderTreeWx.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403466</commentid>
    <comment_count>34</comment_count>
      <attachid>93429</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-05-13 03:33:16 -0700</bug_when>
    <thetext>Created attachment 93429
patch v4 (fix style complain)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404754</commentid>
    <comment_count>35</comment_count>
      <attachid>93429</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-05-16 15:11:10 -0700</bug_when>
    <thetext>Comment on attachment 93429
patch v4 (fix style complain)

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

This is looking good. I&apos;m not a reviewer so I can&apos;t r+, but I do have a few comments.

&gt; LayoutTests/fast/forms/input-file-not-open-without-gesture.html:28
&gt; +    setTimeout(&quot;layoutTestController.notifyDone()&quot;, 100);

Are you sure a delay is necessary here? I think both the EventSender events and the synthetic click event will fire synchronously, which means the &apos;OPEN PANEL&apos; message will be logged by the time openFileDialog() returns. You should be able to call layoutTestController.notifyDone() directly. If for some reason notifyDone() needs to be called on a timer, 100ms seems far too long.

&gt; LayoutTests/fast/forms/input-file-not-open-without-gesture.html:34
&gt; +&lt;input type=&quot;file&quot; name=&quot;file&quot; id=&quot;f&quot; onclick=&quot;this.click()&quot;&gt;

Why is the onclick attribute necessary here?

&gt; LayoutTests/platform/win/Skipped:1237
&gt; +# Since WebKit displays the file chooser directly on Windows instead of using UIDelegate, we need to skip the following test on window port.

Nit: this should read &quot;on Apple&apos;s Windows port.&quot;

&gt; LayoutTests/platform/win/Skipped:1238
&gt; +# See https://bugs.webkit.org/show_bug.cgi?id=55110 for more details.

I&apos;d link to the bug that actually tracks fixing this on Windows, which is https://bugs.webkit.org/show_bug.cgi?id=56383</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410309</commentid>
    <comment_count>36</comment_count>
      <attachid>94948</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-05-26 02:23:14 -0700</bug_when>
    <thetext>Created attachment 94948
patch v5

(In reply to comment #35)
Thanks for comments, all done. 

Now I moved the startTest out of onload handler to make Event::fromUserGesture grant that the mouseDown/up is a user gesture.

@Adam, would you like to review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410373</commentid>
    <comment_count>37</comment_count>
      <attachid>94948</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-05-26 05:59:56 -0700</bug_when>
    <thetext>Comment on attachment 94948
patch v5

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

This patch as currently written will cause this test to fail in WebKit2. You&apos;ll need to implement the new &quot;OPEN PANEL&quot; dumping in WebKitTestRunner.

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:607
&gt; +        fprintf(stdout, &quot;OPEN PANEL\n&quot;);

Something more descriptive might be nice. Even just &quot;RUN OPEN PANEL&quot; would be better.

&gt; Source/WebKit/wx/WebKitSupport/DumpRenderTreeSupportWx.cpp:34
&gt; +bool DumpRenderTreeSupportWx::s_drtRun = false;

This can just be a file-level static. It doesn&apos;t need to be a member variable.E

&gt; Source/WebKit/wx/WebKitSupport/DumpRenderTreeSupportWx.h:36
&gt; +class DumpRenderTreeSupportWx {
&gt; +
&gt; +public:

Extra newline here.

&gt; Source/WebKit/wx/WebKitSupport/DumpRenderTreeSupportWx.h:38
&gt; +    DumpRenderTreeSupportWx();
&gt; +    ~DumpRenderTreeSupportWx();

No need to declare/define these. The compiler will do it for you.

&gt; LayoutTests/fast/forms/input-file-not-open-without-gesture.html:20
&gt; +function openFileDialog(withUserGesture) {
&gt; +    window.console.log(&quot;Open the file dialog &quot; + (withUserGesture ? &quot;with&quot; : &quot;without&quot;) + &quot; a user gesture.&quot;);
&gt; +    if (withUserGesture) {
&gt; +        eventSender.mouseMoveTo(10, 10);
&gt;          eventSender.mouseDown();
&gt;          eventSender.mouseUp();
&gt; -        clickFired = true;
&gt; -        testStage = OPEN_FILE_WITHOUT_GESTURE;
&gt; -        // Waits for opening the file dialog and checks whether the click event can still be received by document.
&gt; -        setTimeout(&quot;checkResult(function() { layoutTestController.notifyDone(); })&quot;, 500);
&gt; -    }, 1);
&gt; +    } else {
&gt; +        document.getElementById(&apos;f&apos;).click();
&gt; +    }
&gt;  }

Having two separate functions might be clearer.

&gt; LayoutTests/fast/forms/input-file-not-open-without-gesture.html:31
&gt; +&lt;body style=&quot;margin:0px; padding:0px&quot; onload=&quot;setTimeout(&apos;startTest();&apos;, 0)&quot;&gt;

Why is this delay needed?

&gt; LayoutTests/platform/win/Skipped:1245
&gt; +# Since WebKit displays the file chooser directly on Apple&apos;s Windows port instead of using UIDelegate, we need to skip the following test on Apple&apos;s Windows port.
&gt; +# See  https://bugs.webkit.org/show_bug.cgi?id=56383 for more details.
&gt; +fast/forms/input-file-not-open-without-gesture.html

It would be a little better to check in expected failure results for Windows rather than skipping the test. That way we&apos;ll notice if the test&apos;s behavior changes in any other way unexpectedly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411306</commentid>
    <comment_count>38</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-05-27 03:20:36 -0700</bug_when>
    <thetext>(In reply to comment #37)

&gt; &gt; LayoutTests/fast/forms/input-file-not-open-without-gesture.html:31
&gt; &gt; +&lt;body style=&quot;margin:0px; padding:0px&quot; onload=&quot;setTimeout(&apos;startTest();&apos;, 0)&quot;&gt;
&gt; 
&gt; Why is this delay needed?

If we call StartTest inside the period of handling load event, since the event of window is &quot;load&quot;, Event::fromUserGesture returns false, which causes ScriptController::processingUserGesture returns false,
then the OpenPanel will not be opened inside RenderFileUploadControl::click.

Usually there is not key/mouse input passed to webki inside the period of handling load event in normal usage, so I just simply use a timeout to trigger the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411385</commentid>
    <comment_count>39</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-05-27 06:30:58 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #37)
&gt; 
&gt; &gt; &gt; LayoutTests/fast/forms/input-file-not-open-without-gesture.html:31
&gt; &gt; &gt; +&lt;body style=&quot;margin:0px; padding:0px&quot; onload=&quot;setTimeout(&apos;startTest();&apos;, 0)&quot;&gt;
&gt; &gt; 
&gt; &gt; Why is this delay needed?
&gt; 
&gt; If we call StartTest inside the period of handling load event, since the event of window is &quot;load&quot;, Event::fromUserGesture returns false, which causes ScriptController::processingUserGesture returns false,
&gt; then the OpenPanel will not be opened inside RenderFileUploadControl::click.
&gt; 
&gt; Usually there is not key/mouse input passed to webki inside the period of handling load event in normal usage, so I just simply use a timeout to trigger the test.

Thanks for the explanation.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83835</attachid>
            <date>2011-02-25 10:36:17 -0800</date>
            <delta_ts>2011-02-25 21:15:50 -0800</delta_ts>
            <desc>patch v1</desc>
            <filename>patch_run_file_chooser.txt</filename>
            <type>text/plain</type>
            <size>15348</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NjkxKQorKysgU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMjUg
IEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmVhdGUgYSBzaWduYWwgdG8gbG9nIHRoZSBzdGF0
dXMgb2Ygb3BlbmluZyBmaWxlIGNob29zZXIgZGlhbG9nLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTAKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6
cnVuT3BlblBhbmVsKToKKwogMjAxMS0wMi0yNCAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHAJKHJldmlzaW9uIDc5NjY1KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA4LDYgKzYwOCwxMSBAQCB2
b2lkIENocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjCiAKIHZvaWQgQ2hyb21lQ2xp
ZW50OjpydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBGaWxl
Q2hvb3NlcikKIHsKKyAgICBpZiAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wUmVuZGVy
VHJlZU1vZGVFbmFibGVkKCkpIHsKKyAgICAgICAgZ2Jvb2xlYW4gcmV0dmFsOworICAgICAgICBn
X3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgInJ1bi1maWxlLWNob29zZXIiLCAmcmV0dmFs
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBSZWZQdHI8RmlsZUNob29zZXI+IGNob29z
ZXIgPSBwcnBGaWxlQ2hvb3NlcjsKIAogICAgIEd0a1dpZGdldCogZGlhbG9nID0gZ3RrX2ZpbGVf
Y2hvb3Nlcl9kaWFsb2dfbmV3KF8oIlVwbG9hZCBGaWxlIiksCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwko
cmV2aXNpb24gNzk2OTEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAyLTI1ICBKb2hubnkgRGluZyAgPGpuZEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTG9nIHRoZSBzdGF0dXMgb2Ygb3BlbmluZyBmaWxlIGNob29zZXIgZGlhbG9nIGluIERSVCBt
b2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUx
MTAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpydW5PcGVuUGFuZWwpOgorCiAyMDExLTAyLTI1
ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBDc2FiYSBPc3p0cm9nb27DoWMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkocmV2aXNpb24gNzk2NjUpCisrKyBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTU2LDYgKzU1NiwxMCBAQCBOb3RpZmljYXRpb25QcmVzZW50ZXIqIENocm9tZUNs
aWVudFF0OjpuCiAKIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJh
bWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IHBycEZpbGVDaG9vc2VyKQogeworICAgIGlmIChR
V2ViUGFnZVByaXZhdGU6OmRydFJ1bikgeworICAgICAgICBwcmludGYoIk9wZW5lZCBhIGZpbGUg
Y2hvb3NlciBkaWFsb2dcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIFJlZlB0cjxG
aWxlQ2hvb3Nlcj4gZmlsZUNob29zZXIgPSBwcnBGaWxlQ2hvb3NlcjsKICAgICBib29sIHN1cHBv
cnRNdWx0aSA9IG1fd2ViUGFnZS0+c3VwcG9ydHNFeHRlbnNpb24oUVdlYlBhZ2U6OkNob29zZU11
bHRpcGxlRmlsZXNFeHRlbnNpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNzk2
OTEpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDExLTAyLTI1ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGEg
bmV3IGV2ZW50IHd4RVZUX1dFQlZJRVdfUlVOX0ZJTEVfQ0hPT1NFUiB0byBub3RpZnkgd2Vidmll
dyB0byBvcGVuIGEgZmlsZSBjaG9vc2VyIGRpYWxvZy4KKyAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTExMAorCisgICAgICAgICogV2ViS2l0U3VwcG9y
dC9DaHJvbWVDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6
cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKHd4V2ViVmll
d1J1bkZpbGVDaG9vc2VyRXZlbnQ6Ond4V2ViVmlld1J1bkZpbGVDaG9vc2VyRXZlbnQpOgorICAg
ICAgICAqIFdlYlZpZXcuaDoKKwogMjAxMS0wMi0yNCAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5n
QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d3gvV2ViVmlldy5jcHAJKHJldmlzaW9uIDc5NjY1KQorKysgU291cmNlL1dlYktpdC93eC9XZWJW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDYgKzI1MSwxOCBAQCB3eFdlYlZpZXdTZWxl
Y3Rpb25DaGFuZ2VkRXZlbnQ6Ond4V2ViVmllCiAgICAgICAgIFNldElkKHdpbi0+R2V0SWQoKSk7
CiB9CiAKK0lNUExFTUVOVF9EWU5BTUlDX0NMQVNTKHd4V2ViVmlld1J1bkZpbGVDaG9vc2VyRXZl
bnQsIHd4Q29tbWFuZEV2ZW50KQorCitERUZJTkVfRVZFTlRfVFlQRSh3eEVWVF9XRUJWSUVXX1JV
Tl9GSUxFX0NIT09TRVIpCisKK3d4V2ViVmlld1J1bkZpbGVDaG9vc2VyRXZlbnQ6Ond4V2ViVmll
d1J1bkZpbGVDaG9vc2VyRXZlbnQod3hXaW5kb3cqIHdpbikKK3sKKyAgICBTZXRFdmVudFR5cGUo
d3hFVlRfV0VCVklFV19SVU5fRklMRV9DSE9PU0VSKTsKKyAgICBTZXRFdmVudE9iamVjdCh3aW4p
OworICAgIGlmICh3aW4pCisgICAgICAgIFNldElkKHdpbi0+R2V0SWQoKSk7Cit9CisKIC8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAv
LyBET00gRWxlbWVudCBpbmZvIGRhdGEgdHlwZQogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gv
V2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5oCShyZXZp
c2lvbiA3OTY2NSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NDUsNiArNTQ1LDE3IEBAIHB1YmxpYzoKICAgICB3eEV2ZW50ICpDbG9uZSh2b2lkKSBj
b25zdCB7IHJldHVybiBuZXcgd3hXZWJWaWV3U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KCp0aGlzKTsg
fQogfTsKIAorY2xhc3MgV1hETExJTVBFWFBfV0VCS0lUIHd4V2ViVmlld1J1bkZpbGVDaG9vc2Vy
RXZlbnQgOiBwdWJsaWMgd3hDb21tYW5kRXZlbnQgeworI2lmbmRlZiBTV0lHCisgICAgREVDTEFS
RV9EWU5BTUlDX0NMQVNTKHd4V2ViVmlld1J1bkZpbGVDaG9vc2VyRXZlbnQpCisjZW5kaWYKKyAg
ICAKK3B1YmxpYzoKKyAgICB3eFdlYlZpZXdSdW5GaWxlQ2hvb3NlckV2ZW50KHd4V2luZG93KiB3
aW4gPSBzdGF0aWNfY2FzdDx3eFdpbmRvdyo+KDApKTsKKyAgICB3eEV2ZW50ICpDbG9uZSh2b2lk
KSBjb25zdCB7IHJldHVybiBuZXcgd3hXZWJWaWV3UnVuRmlsZUNob29zZXJFdmVudCgqdGhpcyk7
IH0KKyAgICAvLyBGSVhNRTogTmVlZCB0byBhZGQgdGhlIHBhcmFtZXRlciBGaWxlQ2hvb3NlciB3
aGVuIG9wZW5pbmcgdGhlIHJlYWwgZmlsZSBjaG9vc2VyIGRpYWxvZy4KK307CisKIHR5cGVkZWYg
dm9pZCAod3hFdnRIYW5kbGVyOjoqd3hXZWJWaWV3TG9hZEV2ZW50RnVuY3Rpb24pKHd4V2ViVmll
d0xvYWRFdmVudCYpOwogdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eFdlYlZpZXdCZWZv
cmVMb2FkRXZlbnRGdW5jdGlvbikod3hXZWJWaWV3QmVmb3JlTG9hZEV2ZW50Jik7CiB0eXBlZGVm
IHZvaWQgKHd4RXZ0SGFuZGxlcjo6Knd4V2ViVmlld05ld1dpbmRvd0V2ZW50RnVuY3Rpb24pKHd4
V2ViVmlld05ld1dpbmRvd0V2ZW50Jik7CkBAIC01NTcsNiArNTY4LDcgQEAgdHlwZWRlZiB2b2lk
ICh3eEV2dEhhbmRsZXI6Oip3eFdlYlZpZXdSZQogdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6
Oip3eFdlYlZpZXdXaW5kb3dPYmplY3RDbGVhcmVkRnVuY3Rpb24pKHd4V2ViVmlld1dpbmRvd09i
amVjdENsZWFyZWRFdmVudCYpOwogdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eFdlYlZp
ZXdDb250ZW50c0NoYW5nZWRGdW5jdGlvbikod3hXZWJWaWV3Q29udGVudHNDaGFuZ2VkRXZlbnQm
KTsKIHR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hXZWJWaWV3U2VsZWN0aW9uQ2hhbmdl
ZEZ1bmN0aW9uKSh3eFdlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnQmKTsKK3R5cGVkZWYgdm9p
ZCAod3hFdnRIYW5kbGVyOjoqd3hXZWJWaWV3UnVuRmlsZUNob29zZXJFdmVudEZ1bmN0aW9uKSh3
eFdlYlZpZXdSdW5GaWxlQ2hvb3NlckV2ZW50Jik7CiAKICNkZWZpbmUgd3hXZWJWaWV3TG9hZEV2
ZW50SGFuZGxlcihmdW5jKSBcCiAgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikod3hFdmVudEZ1
bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KHd4V2ViVmlld0xvYWRFdmVudEZ1bmN0aW9uLCAmZnVu
YykKQEAgLTU4Miw2ICs1OTQsOCBAQCB0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6Knd4V2Vi
Vmlld1NlCiAgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikod3hFdmVudEZ1bmN0aW9uKXd4U3Rh
dGljQ2FzdEV2ZW50KHd4V2ViVmlld0NvbnRlbnRzQ2hhbmdlZEV2ZW50RnVuY3Rpb24sICZmdW5j
KQogI2RlZmluZSB3eFdlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnRIYW5kbGVyKGZ1bmMpIFwK
ICAgICAod3hPYmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0
RXZlbnQod3hXZWJWaWV3U2VsZWN0aW9uQ2hhbmdlZEV2ZW50RnVuY3Rpb24sICZmdW5jKQorI2Rl
ZmluZSB3eFdlYlZpZXdSdW5GaWxlQ2hvb3NlckV2ZW50SGFuZGxlcihmdW5jKSBcCisgICAgKHd4
T2JqZWN0RXZlbnRGdW5jdGlvbikod3hFdmVudEZ1bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KHd4
V2ViVmlld1J1bkZpbGVDaG9vc2VyRXZlbnRGdW5jdGlvbiwgJmZ1bmMpCiAgICAgCiAjaWZuZGVm
IFNXSUcKIEJFR0lOX0RFQ0xBUkVfRVZFTlRfVFlQRVMoKQpAQCAtNTk3LDYgKzYxMSw3IEBAIEJF
R0lOX0RFQ0xBUkVfRVZFTlRfVFlQRVMoKQogICAgIERFQ0xBUkVfRVhQT1JURURfRVZFTlRfVFlQ
RShXWERMTElNUEVYUF9XRUJLSVQsIHd4RVZUX1dFQlZJRVdfV0lORE9XX09CSkVDVF9DTEVBUkVE
LCB3eElEX0FOWSkKICAgICBERUNMQVJFX0VYUE9SVEVEX0VWRU5UX1RZUEUoV1hETExJTVBFWFBf
V0VCS0lULCB3eEVWVF9XRUJWSUVXX0NPTlRFTlRTX0NIQU5HRUQsIHd4SURfQU5ZKQogICAgIERF
Q0xBUkVfRVhQT1JURURfRVZFTlRfVFlQRShXWERMTElNUEVYUF9XRUJLSVQsIHd4RVZUX1dFQlZJ
RVdfU0VMRUNUSU9OX0NIQU5HRUQsIHd4SURfQU5ZKQorICAgIERFQ0xBUkVfRVhQT1JURURfRVZF
TlRfVFlQRShXWERMTElNUEVYUF9XRUJLSVQsIHd4RVZUX1dFQlZJRVdfUlVOX0ZJTEVfQ0hPT1NF
Uiwgd3hJRF9BTlkpCiBFTkRfREVDTEFSRV9FVkVOVF9UWVBFUygpCiAjZW5kaWYKIApAQCAtNjk1
LDYgKzcxMCwxNCBAQCBFTkRfREVDTEFSRV9FVkVOVF9UWVBFUygpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikgICBcCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHd4V2ViVmlld1NlbGVjdGlvbkNoYW5nZWRFdmVudEZ1bmN0aW9uKSAmIGZ1
bmMsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx3eE9iamVjdCo+
KDApKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworI2RlZmluZSBFVlRfV0VCVklF
V19SVU5fRklMRV9DSE9PU0VSKHdpbmlkLCBmdW5jKSAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgREVDTEFSRV9FVkVOVF9UQUJMRV9FTlRSWSh3eEVWVF9XRUJWSUVXX1JVTl9G
SUxFX0NIT09TRVIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5pZCwgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHd4SURfQU5ZLCBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikgICBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHd4V2ViVmlld1J1bkZpbGVDaG9vc2VyRXZlbnRGdW5jdGlvbikgJiBmdW5jLCBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8d3hPYmplY3QqPigwKSks
CisKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICNlbmRpZiAvLyBpZm5kZWYgV1hXRUJW
SUVXX0gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRX
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9t
ZUNsaWVudFd4LmNwcAkocmV2aXNpb24gNzk2NjUpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsNiArNDUy
LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OnNjcm9sbChjb25zdCBJbnRTaXoKIAogdm9pZCBD
aHJvbWVDbGllbnRXeDo6cnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nl
cj4pCiB7CisgICAgaWYgKG1fd2ViVmlldykgeworICAgICAgICB3eFdlYlZpZXdSdW5GaWxlQ2hv
b3NlckV2ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsKKyAgICAgICAgbV93ZWJWaWV3LT5HZXRFdmVu
dEhhbmRsZXIoKS0+UHJvY2Vzc0V2ZW50KHdrRXZlbnQpOworICAgICAgICByZXR1cm47CisgICAg
fQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NjkxKQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDItMjUgIEpvaG5u
eSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBMb2cgdGhlIHN0YXR1cyBvZiBvcGVuaW5nIGZpbGUgY2hvb3Nl
ciBkaWFsb2cgc28gd2UgY2FuIGtub3cgd2hldGhlciB3ZSBjYW4gb3BlbiBpdCBpbiBEUlQgbW9k
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MTEw
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6Cisg
ICAgICAgIChXZWJWaWV3SG9zdDo6cnVuRmlsZUNob29zZXIpOgorICAgICAgICBJbiBjaHJvbWl1
bSBwb3J0LCBvdmVycmlkZXMgV2ViVmlld0NsaWVudDo6cnVuRmlsZUNob29zZXIgdG8gbG9nIHRo
ZSBzdGF0dXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6Cisg
ICAgICAgIChydW5GaWxlQ2hvb3NlckNhbGxiYWNrKToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXcp
OgorICAgICAgICBJbiBndGsgcG9ydCwgcmFpc2VzIGEgc2lnbmFsIHRvIGxvZyB0aGUgc3RhdHVz
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAgICAg
ICgtW1VJRGVsZWdhdGUgd2ViVmlldzpydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3Vs
dExpc3RlbmVyOl0pOgorICAgICAgICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6cnVuT3BlblBhbmVs
Rm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjphbGxvd011bHRpcGxlRmlsZXM6XSk6Cisg
ICAgICAgIEluIG1hYyBwb3J0LCBpbXBsZW1lbnRzIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25X
aXRoUmVzdWx0TGlzdGVuZXIgaW4gVUlEZWxlZ2F0ZSB0byBsb2cgdGhlIHN0YXR1cy4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwOgorICAgICAgICAo
TGF5b3V0V2ViVmlld0V2ZW50SGFuZGxlcjo6YmluZEV2ZW50cyk6CisgICAgICAgIChMYXlvdXRX
ZWJWaWV3RXZlbnRIYW5kbGVyOjpPblJ1bkZpbGVDaG9vc2VyRXZlbnQpOgorICAgICAgICBpbiB3
eCBwb3J0LCBjcmVhdGVzIGEgbmV3IGV2ZW50IHd4RVZUX1dFQlZJRVdfUlVOX0ZJTEVfQ0hPT1NF
UiB0byBsb2cgdGhlIHN0YXR1cy4KKwogMjAxMS0wMi0yNCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpv
Y2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMg
S2xpbmcuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuY3BwCShyZXZpc2lvbiA3OTY2NSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1
ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgIldlYkRyYWdE
YXRhLmgiCiAjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYkZpbGVDaG9vc2Vy
Q29tcGxldGlvbi5oIgorI2luY2x1ZGUgIldlYkZpbGVDaG9vc2VyUGFyYW1zLmgiCiAjaW5jbHVk
ZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCIKICNp
bmNsdWRlICJXZWJIaXN0b3J5SXRlbS5oIgpAQCAtNDUwLDYgKzQ1MiwxMiBAQCBXZWJTdHJpbmcg
V2ViVmlld0hvc3Q6OmF1dG9Db3JyZWN0V29yZChjCiAgICAgcmV0dXJuIFdlYlN0cmluZygpOwog
fQogCitib29sIFdlYlZpZXdIb3N0OjpydW5GaWxlQ2hvb3Nlcihjb25zdCBXZWJGaWxlQ2hvb3Nl
clBhcmFtcyYsIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbiopCit7CisgICAgcHJpbnRmKCJPcGVu
ZWQgYSBmaWxlIGNob29zZXIgZGlhbG9nXG4iKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZv
aWQgV2ViVmlld0hvc3Q6OnJ1bk1vZGFsQWxlcnREaWFsb2coV2ViRnJhbWUqLCBjb25zdCBXZWJT
dHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcHJpbnRmKCJBTEVSVDogJXNcbiIsIG1lc3NhZ2UudXRm
OCgpLmRhdGEoKSk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmgJKHJldmlzaW9uIDc5NjY1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQ7CiBjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s7CitjbGFzcyBXZWJG
aWxlQ2hvb3NlckNvbXBsZXRpb247CiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudDsKIGNsYXNz
IFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uU2VydmljZU1v
Y2s7CkBAIC01Niw2ICs1Nyw3IEBAIGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjsKIGNs
YXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dExp
c3RlbmVyOwogY2xhc3MgV2ViVVJMOworc3RydWN0IFdlYkZpbGVDaG9vc2VyUGFyYW1zOwogc3Ry
dWN0IFdlYlJlY3Q7CiBzdHJ1Y3QgV2ViVVJMRXJyb3I7CiBzdHJ1Y3QgV2ViV2luZG93RmVhdHVy
ZXM7CkBAIC0xMjksNiArMTMxLDcgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0
OjpXZWJWaQogICAgIHZpcnR1YWwgdm9pZCBzcGVsbENoZWNrKGNvbnN0IFdlYktpdDo6V2ViU3Ry
aW5nJiwgaW50JiBvZmZzZXQsIGludCYgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dENoZWNraW5nT2ZUZXh0KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgV2ViS2l0OjpXZWJUZXh0
Q2hlY2tpbmdDb21wbGV0aW9uKik7CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYlN0cmluZyBhdXRv
Q29ycmVjdFdvcmQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wg
cnVuRmlsZUNob29zZXIoY29uc3QgV2ViS2l0OjpXZWJGaWxlQ2hvb3NlclBhcmFtcyYsIFdlYktp
dDo6V2ViRmlsZUNob29zZXJDb21wbGV0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFs
QWxlcnREaWFsb2coV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7
CiAgICAgdmlydHVhbCBib29sIHJ1bk1vZGFsQ29uZmlybURpYWxvZyhXZWJLaXQ6OldlYkZyYW1l
KiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgcnVuTW9kYWxQ
cm9tcHREaWFsb2coV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJLaXQ6Oldl
YlN0cmluZyogYWN0dWFsVmFsdWUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1
bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
RHVtcFJlbmRlclRyZWUuY3BwCShyZXZpc2lvbiA3OTY2NSkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzMsNiArMTAz
MywxMiBAQCBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3RDYWxsYmFjayhXZWJLCiAgICAgfQog
fQogCitzdGF0aWMgYm9vbCBydW5GaWxlQ2hvb3NlckNhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHZp
ZXcpCit7CisgICAgZnByaW50ZihzdGRvdXQsICJPcGVuZWQgYSBmaWxlIGNob29zZXIgZGlhbG9n
XG4iKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKIHN0YXRpYyBXZWJLaXRXZWJWaWV3KiBjcmVh
dGVXZWJWaWV3KCkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gV0VCS0lUX1dFQl9WSUVX
KHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CkBAIC0xMDYyLDYgKzEwNjgsNyBAQCBzdGF0aWMgV2Vi
S2l0V2ViVmlldyogY3JlYXRlV2ViVmlldygpCiAgICAgICAgICAgICAgICAgICAgICAic2lnbmFs
OjpkcmFnLWZhaWxlZCIsIGRyYWdGYWlsZWRDYWxsYmFjaywgMCwKICAgICAgICAgICAgICAgICAg
ICAgICJzaWduYWw6OmZyYW1lLWNyZWF0ZWQiLCBmcmFtZUNyZWF0ZWRDYWxsYmFjaywgMCwKICAg
ICAgICAgICAgICAgICAgICAgICJzaWduYWw6OnJlc291cmNlLXJlcXVlc3Qtc3RhcnRpbmciLCB3
aWxsU2VuZFJlcXVlc3RDYWxsYmFjaywgMCwKKyAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6
OnJ1bi1maWxlLWNob29zZXIiLCBydW5GaWxlQ2hvb3NlckNhbGxiYWNrLCAwLAogCiAgICAgICAg
ICAgICAgICAgICAgICBOVUxMKTsKICAgICBjb25uZWN0RWRpdGluZ0NhbGxiYWNrcyh2aWV3KTsK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiA3OTY2
NSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTAsNiArMjUwLDE4IEBAIC0gKEJPT0wpd2ViVmlldzooV2ViVmlldyAqKXdlYlZp
ZXcgZGlkUHIKICAgICByZXR1cm4gVFJVRTsKIH0KIAorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KGlk
PFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyPilyZXN1bHRMaXN0ZW5lcgoreworICAgIHByaW50
ZigiT3BlbmVkIGEgZmlsZSBjaG9vc2VyIGRpYWxvZ1xuIik7CisgICAgW3Jlc3VsdExpc3RlbmVy
IGNob29zZUZpbGVuYW1lOm5pbF07Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNl
bmRlciBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOihpZDxXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4pcmVzdWx0TGlzdGVuZXIgYWxsb3dNdWx0aXBsZUZpbGVz
OihCT09MKWFsbG93TXVsdGlwbGVGaWxlcyBXRUJLSVRfT0JKQ19NRVRIT0RfQU5OT1RBVElPTihB
VkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wKQoreworICAgIHByaW50ZigiT3BlbmVkIGEg
ZmlsZSBjaG9vc2VyIGRpYWxvZ1xuIik7CisgICAgW3Jlc3VsdExpc3RlbmVyIGNob29zZUZpbGVu
YW1lOm5pbF07Cit9CisKIC0gKHZvaWQpZGVhbGxvYwogewogICAgIFtkcmFnZ2luZ0luZm8gcmVs
ZWFzZV07CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJlZVd4LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJlZVd4
LmNwcAkocmV2aXNpb24gNzk2NjUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVu
ZGVyVHJlZVd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fd2ViVmlldy0+Q29ubmVjdCh3eEVWVF9XRUJWSUVXX0NPTlNPTEVfTUVTU0FHRSwg
d3hXZWJWaWV3Q29uc29sZU1lc3NhZ2VFdmVudEhhbmRsZXIoTGF5b3V0V2ViVmlld0V2ZW50SGFu
ZGxlcjo6T25Db25zb2xlTWVzc2FnZUV2ZW50KSwgTlVMTCwgdGhpcyk7CiAgICAgICAgIG1fd2Vi
Vmlldy0+Q29ubmVjdCh3eEVWVF9XRUJWSUVXX1JFQ0VJVkVEX1RJVExFLCB3eFdlYlZpZXdSZWNl
aXZlZFRpdGxlRXZlbnRIYW5kbGVyKExheW91dFdlYlZpZXdFdmVudEhhbmRsZXI6Ok9uUmVjZWl2
ZWRUaXRsZUV2ZW50KSwgTlVMTCwgdGhpcyk7CiAgICAgICAgIG1fd2ViVmlldy0+Q29ubmVjdCh3
eEVWVF9XRUJWSUVXX1dJTkRPV19PQkpFQ1RfQ0xFQVJFRCwgd3hXZWJWaWV3V2luZG93T2JqZWN0
Q2xlYXJlZEV2ZW50SGFuZGxlcihMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyOjpPbldpbmRvd09i
amVjdENsZWFyZWRFdmVudCksIE5VTEwsIHRoaXMpOworICAgICAgICBtX3dlYlZpZXctPkNvbm5l
Y3Qod3hFVlRfV0VCVklFV19SVU5fRklMRV9DSE9PU0VSLCB3eFdlYlZpZXdSdW5GaWxlQ2hvb3Nl
ckV2ZW50SGFuZGxlcihMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyOjpPblJ1bkZpbGVDaG9vc2Vy
RXZlbnQpLCBOVUxMLCB0aGlzKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBPbkxvYWRFdmVudCh3
eFdlYlZpZXdMb2FkRXZlbnQmIGV2ZW50KSAKQEAgLTEzNiw2ICsxMzcsMTEgQEAgcHVibGljOgog
ICAgICAgICBnTGF5b3V0VGVzdENvbnRyb2xsZXItPm1ha2VXaW5kb3dPYmplY3QoZXZlbnQuR2V0
SlNDb250ZXh0KCksIGV2ZW50LkdldFdpbmRvd09iamVjdCgpLCAmZXhjZXB0aW9uKTsKICAgICB9
CiAgICAgCisgICAgdm9pZCBPblJ1bkZpbGVDaG9vc2VyRXZlbnQod3hXZWJWaWV3UnVuRmlsZUNo
b29zZXJFdmVudCYgZXZlbnQpCisgICAgeworICAgICAgICBwcmludGYoIk9wZW5lZCBhIGZpbGUg
Y2hvb3NlciBkaWFsb2dcbiIpOworICAgIH0KKyAgICAKIHByaXZhdGU6CiAgICAgd3hXZWJWaWV3
KiBtX3dlYlZpZXc7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83923</attachid>
            <date>2011-02-25 21:15:50 -0800</date>
            <delta_ts>2011-03-15 06:17:36 -0700</delta_ts>
            <desc>patch v1 w/ fixing gtk compilation error</desc>
            <filename>patch_run_file_chooser_2.txt</filename>
            <type>text/plain</type>
            <size>17477</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NzU3KQorKysgU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMjUg
IEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmVhdGUgYSBzaWduYWwgdG8gbG9nIHRoZSBzdGF0
dXMgb2Ygb3BlbmluZyBmaWxlIGNob29zZXIgZGlhbG9nLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTAKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6
cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6CisKIDIwMTEtMDItMjQgIFBldGVyIEth
c3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuY3BwCShyZXZpc2lvbiA3OTY2NSkKKysrIFNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYwNiw4ICs2MDYsMTUgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNh
YwogfQogI2VuZGlmCiAKLXZvaWQgQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUqLCBQ
YXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBGaWxlQ2hvb3NlcikKK3ZvaWQgQ2hyb21lQ2xpZW50
OjpydW5PcGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBG
aWxlQ2hvb3NlcikKIHsKKyAgICBpZiAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wUmVu
ZGVyVHJlZU1vZGVFbmFibGVkKCkpIHsKKyAgICAgICAgZ2Jvb2xlYW4gcmV0dmFsOworICAgICAg
ICBXZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUgPSBraXQoZnJhbWUpOworICAgICAgICBXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZSh3ZWJGcmFtZSk7CisgICAgICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAicnVuLWZpbGUtY2hvb3NlciIsICZyZXR2YWwp
OworICAgICAgICByZXR1cm47CisgICAgfQogICAgIFJlZlB0cjxGaWxlQ2hvb3Nlcj4gY2hvb3Nl
ciA9IHBycEZpbGVDaG9vc2VyOwogCiAgICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSBndGtfZmlsZV9j
aG9vc2VyX2RpYWxvZ19uZXcoXygiVXBsb2FkIEZpbGUiKSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDc5NjY1KQorKysgU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDEsNiArMjAxLDcgQEAgZW51bSB7CiAgICAgRURJVElOR19FTkRFRCwKICAgICBWSUVXUE9SVF9B
VFRSSUJVVEVTX1JFQ09NUFVURV9SRVFVRVNURUQsCiAgICAgVklFV1BPUlRfQVRUUklCVVRFU19D
SEFOR0VELAorICAgIFJVTl9GSUxFX0NIT09TRVIsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAg
LTI4MzUsNiArMjgzNiwyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5p
dChXCiAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwKICAgICAgICAgICAgIFdFQktJVF9UWVBF
X1ZJRVdQT1JUX0FUVFJJQlVURVMpOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6
cnVuLWZpbGUtY2hvb3NlcjoKKyAgICAgKiBAd2ViVmlldzogdGhlIG9iamVjdCBvbiB3aGljaCB0
aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0
ZWQgd2hlbiB3ZSBuZWVkIHRvIG9wZW4gYSBmaWxlIGNob29zZXIgZGlhbG9nLAorICAgICAqIHNv
IERSVCBjYW4gaGF2ZSBjaGFuY2UgdG8gbG9nIHdoZXRoZXIgYSBmaWxlIGNob29zZXIgZGlhbG9n
IGlzIG9wZW5lZCBvciBub3QuCisgICAgICogU28gZmFyIHRoaXMgc2lnbmFsIGlzIG9ubHkgdXNl
ZCBmb3IgRFJUIG1vZGUuCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbUlVO
X0ZJTEVfQ0hPT1NFUl0gPSBnX3NpZ25hbF9uZXcoInJ1bi1maWxlLWNob29zZXIiLAorICAgICAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2ln
bmFsRmxhZ3MpR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAg
Z19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAg
ICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICBHX1RZ
UEVfQk9PTEVBTiwgMCk7CisKICAgICAvKgogICAgICAqIGltcGxlbWVudGF0aW9ucyBvZiB2aXJ0
dWFsIG1ldGhvZHMKICAgICAgKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTc1NykK
KysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTEtMDItMjUgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMb2cgdGhlIHN0YXR1
cyBvZiBvcGVuaW5nIGZpbGUgY2hvb3NlciBkaWFsb2cgaW4gRFJUIG1vZGUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTExMAorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50UXQ6OnJ1bk9wZW5QYW5lbCk6CisKIDIwMTEtMDItMjUgIEFuZHJhcyBCZWNzaSAg
PGFiZWNzaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dv
bsOhYy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA3OTY2NSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTYsNiAr
NTU2LDEwIEBAIE5vdGlmaWNhdGlvblByZXNlbnRlciogQ2hyb21lQ2xpZW50UXQ6Om4KIAogdm9p
ZCBDaHJvbWVDbGllbnRRdDo6cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxG
aWxlQ2hvb3Nlcj4gcHJwRmlsZUNob29zZXIpCiB7CisgICAgaWYgKFFXZWJQYWdlUHJpdmF0ZTo6
ZHJ0UnVuKSB7CisgICAgICAgIHByaW50ZigiT3BlbmVkIGEgZmlsZSBjaG9vc2VyIGRpYWxvZ1xu
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgUmVmUHRyPEZpbGVDaG9vc2VyPiBmaWxl
Q2hvb3NlciA9IHBycEZpbGVDaG9vc2VyOwogICAgIGJvb2wgc3VwcG9ydE11bHRpID0gbV93ZWJQ
YWdlLT5zdXBwb3J0c0V4dGVuc2lvbihRV2ViUGFnZTo6Q2hvb3NlTXVsdGlwbGVGaWxlc0V4dGVu
c2lvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTc1NykKKysrIFNvdXJjZS9X
ZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEt
MDItMjUgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmVhdGUgYSBuZXcgZXZlbnQgd3hFVlRf
V0VCVklFV19SVU5fRklMRV9DSE9PU0VSIHRvIG5vdGlmeSB3ZWJ2aWV3IHRvIG9wZW4gYSBmaWxl
IGNob29zZXIgZGlhbG9nLgorICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU1MTEwCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpydW5PcGVuUGFuZWwpOgor
ICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAod3hXZWJWaWV3UnVuRmlsZUNob29zZXJF
dmVudDo6d3hXZWJWaWV3UnVuRmlsZUNob29zZXJFdmVudCk6CisgICAgICAgICogV2ViVmlldy5o
OgorCiAyMDExLTAyLTI0ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gv
V2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAko
cmV2aXNpb24gNzk2NjUpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTEsNiArMjUxLDE4IEBAIHd4V2ViVmlld1NlbGVjdGlvbkNoYW5nZWRFdmVu
dDo6d3hXZWJWaWUKICAgICAgICAgU2V0SWQod2luLT5HZXRJZCgpKTsKIH0KIAorSU1QTEVNRU5U
X0RZTkFNSUNfQ0xBU1Mod3hXZWJWaWV3UnVuRmlsZUNob29zZXJFdmVudCwgd3hDb21tYW5kRXZl
bnQpCisKK0RFRklORV9FVkVOVF9UWVBFKHd4RVZUX1dFQlZJRVdfUlVOX0ZJTEVfQ0hPT1NFUikK
Kword3hXZWJWaWV3UnVuRmlsZUNob29zZXJFdmVudDo6d3hXZWJWaWV3UnVuRmlsZUNob29zZXJF
dmVudCh3eFdpbmRvdyogd2luKQoreworICAgIFNldEV2ZW50VHlwZSh3eEVWVF9XRUJWSUVXX1JV
Tl9GSUxFX0NIT09TRVIpOworICAgIFNldEV2ZW50T2JqZWN0KHdpbik7CisgICAgaWYgKHdpbikK
KyAgICAgICAgU2V0SWQod2luLT5HZXRJZCgpKTsKK30KKwogLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTSBFbGVtZW50IGlu
Zm8gZGF0YSB0eXBlCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmgJKHJldmlzaW9uIDc5NjY1KQorKysg
U291cmNlL1dlYktpdC93eC9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw3ICs1MzEs
NyBAQCBjbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgd3hXZWJWaWV3Q29udGVuCiAjZW5kaWYKIAog
cHVibGljOgotICAgIHd4V2ViVmlld0NvbnRlbnRzQ2hhbmdlZEV2ZW50KHd4V2luZG93KiB3aW4g
PSBzdGF0aWNfY2FzdDx3eFdpbmRvdyo+KDApKTsKKyAgICB3eFdlYlZpZXdDb250ZW50c0NoYW5n
ZWRFdmVudCh3eFdpbmRvdyogd2luID0gc3RhdGljX2Nhc3Q8d3hXaW5kb3cqPihOVUxMKSk7CiAg
ICAgd3hFdmVudCAqQ2xvbmUodm9pZCkgY29uc3QgeyByZXR1cm4gbmV3IHd4V2ViVmlld0NvbnRl
bnRzQ2hhbmdlZEV2ZW50KCp0aGlzKTsgfQogfTsKIApAQCAtNTQxLDEwICs1NDEsMjEgQEAgY2xh
c3MgV1hETExJTVBFWFBfV0VCS0lUIHd4V2ViVmlld1NlbGVjdAogI2VuZGlmCiAKIHB1YmxpYzoK
LSAgICB3eFdlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnQod3hXaW5kb3cqIHdpbiA9IHN0YXRp
Y19jYXN0PHd4V2luZG93Kj4oMCkpOworICAgIHd4V2ViVmlld1NlbGVjdGlvbkNoYW5nZWRFdmVu
dCh3eFdpbmRvdyogd2luID0gc3RhdGljX2Nhc3Q8d3hXaW5kb3cqPihOVUxMKSk7CiAgICAgd3hF
dmVudCAqQ2xvbmUodm9pZCkgY29uc3QgeyByZXR1cm4gbmV3IHd4V2ViVmlld1NlbGVjdGlvbkNo
YW5nZWRFdmVudCgqdGhpcyk7IH0KIH07CiAKK2NsYXNzIFdYRExMSU1QRVhQX1dFQktJVCB3eFdl
YlZpZXdSdW5GaWxlQ2hvb3NlckV2ZW50IDogcHVibGljIHd4Q29tbWFuZEV2ZW50IHsKKyNpZm5k
ZWYgU1dJRworICAgIERFQ0xBUkVfRFlOQU1JQ19DTEFTUyh3eFdlYlZpZXdSdW5GaWxlQ2hvb3Nl
ckV2ZW50KQorI2VuZGlmCisgICAgCitwdWJsaWM6CisgICAgd3hXZWJWaWV3UnVuRmlsZUNob29z
ZXJFdmVudCh3eFdpbmRvdyogd2luID0gc3RhdGljX2Nhc3Q8d3hXaW5kb3cqPihOVUxMKSk7Cisg
ICAgd3hFdmVudCAqQ2xvbmUodm9pZCkgY29uc3QgeyByZXR1cm4gbmV3IHd4V2ViVmlld1J1bkZp
bGVDaG9vc2VyRXZlbnQoKnRoaXMpOyB9CisgICAgLy8gRklYTUU6IE5lZWQgdG8gYWRkIHRoZSBw
YXJhbWV0ZXIgRmlsZUNob29zZXIgd2hlbiBvcGVuaW5nIHRoZSByZWFsIGZpbGUgY2hvb3NlciBk
aWFsb2cuCit9OworCiB0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6Knd4V2ViVmlld0xvYWRF
dmVudEZ1bmN0aW9uKSh3eFdlYlZpZXdMb2FkRXZlbnQmKTsKIHR5cGVkZWYgdm9pZCAod3hFdnRI
YW5kbGVyOjoqd3hXZWJWaWV3QmVmb3JlTG9hZEV2ZW50RnVuY3Rpb24pKHd4V2ViVmlld0JlZm9y
ZUxvYWRFdmVudCYpOwogdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eFdlYlZpZXdOZXdX
aW5kb3dFdmVudEZ1bmN0aW9uKSh3eFdlYlZpZXdOZXdXaW5kb3dFdmVudCYpOwpAQCAtNTU3LDYg
KzU2OCw3IEBAIHR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hXZWJWaWV3UmUKIHR5cGVk
ZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hXZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZEZ1bmN0
aW9uKSh3eFdlYlZpZXdXaW5kb3dPYmplY3RDbGVhcmVkRXZlbnQmKTsKIHR5cGVkZWYgdm9pZCAo
d3hFdnRIYW5kbGVyOjoqd3hXZWJWaWV3Q29udGVudHNDaGFuZ2VkRnVuY3Rpb24pKHd4V2ViVmll
d0NvbnRlbnRzQ2hhbmdlZEV2ZW50Jik7CiB0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6Knd4
V2ViVmlld1NlbGVjdGlvbkNoYW5nZWRGdW5jdGlvbikod3hXZWJWaWV3U2VsZWN0aW9uQ2hhbmdl
ZEV2ZW50Jik7Cit0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6Knd4V2ViVmlld1J1bkZpbGVD
aG9vc2VyRXZlbnRGdW5jdGlvbikod3hXZWJWaWV3UnVuRmlsZUNob29zZXJFdmVudCYpOwogCiAj
ZGVmaW5lIHd4V2ViVmlld0xvYWRFdmVudEhhbmRsZXIoZnVuYykgXAogICAgICh3eE9iamVjdEV2
ZW50RnVuY3Rpb24pKHd4RXZlbnRGdW5jdGlvbil3eFN0YXRpY0Nhc3RFdmVudCh3eFdlYlZpZXdM
b2FkRXZlbnRGdW5jdGlvbiwgJmZ1bmMpCkBAIC01ODIsNiArNTk0LDggQEAgdHlwZWRlZiB2b2lk
ICh3eEV2dEhhbmRsZXI6Oip3eFdlYlZpZXdTZQogICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24p
KHd4RXZlbnRGdW5jdGlvbil3eFN0YXRpY0Nhc3RFdmVudCh3eFdlYlZpZXdDb250ZW50c0NoYW5n
ZWRFdmVudEZ1bmN0aW9uLCAmZnVuYykKICNkZWZpbmUgd3hXZWJWaWV3U2VsZWN0aW9uQ2hhbmdl
ZEV2ZW50SGFuZGxlcihmdW5jKSBcCiAgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikod3hFdmVu
dEZ1bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KHd4V2ViVmlld1NlbGVjdGlvbkNoYW5nZWRFdmVu
dEZ1bmN0aW9uLCAmZnVuYykKKyNkZWZpbmUgd3hXZWJWaWV3UnVuRmlsZUNob29zZXJFdmVudEhh
bmRsZXIoZnVuYykgXAorICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pKHd4RXZlbnRGdW5jdGlv
bil3eFN0YXRpY0Nhc3RFdmVudCh3eFdlYlZpZXdSdW5GaWxlQ2hvb3NlckV2ZW50RnVuY3Rpb24s
ICZmdW5jKQogICAgIAogI2lmbmRlZiBTV0lHCiBCRUdJTl9ERUNMQVJFX0VWRU5UX1RZUEVTKCkK
QEAgLTU5Nyw2ICs2MTEsNyBAQCBCRUdJTl9ERUNMQVJFX0VWRU5UX1RZUEVTKCkKICAgICBERUNM
QVJFX0VYUE9SVEVEX0VWRU5UX1RZUEUoV1hETExJTVBFWFBfV0VCS0lULCB3eEVWVF9XRUJWSUVX
X1dJTkRPV19PQkpFQ1RfQ0xFQVJFRCwgd3hJRF9BTlkpCiAgICAgREVDTEFSRV9FWFBPUlRFRF9F
VkVOVF9UWVBFKFdYRExMSU1QRVhQX1dFQktJVCwgd3hFVlRfV0VCVklFV19DT05URU5UU19DSEFO
R0VELCB3eElEX0FOWSkKICAgICBERUNMQVJFX0VYUE9SVEVEX0VWRU5UX1RZUEUoV1hETExJTVBF
WFBfV0VCS0lULCB3eEVWVF9XRUJWSUVXX1NFTEVDVElPTl9DSEFOR0VELCB3eElEX0FOWSkKKyAg
ICBERUNMQVJFX0VYUE9SVEVEX0VWRU5UX1RZUEUoV1hETExJTVBFWFBfV0VCS0lULCB3eEVWVF9X
RUJWSUVXX1JVTl9GSUxFX0NIT09TRVIsIHd4SURfQU5ZKQogRU5EX0RFQ0xBUkVfRVZFTlRfVFlQ
RVMoKQogI2VuZGlmCiAKQEAgLTY5NSw2ICs3MTAsMTQgQEAgRU5EX0RFQ0xBUkVfRVZFTlRfVFlQ
RVMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24p
ICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eFdlYlZpZXdTZWxlY3Rpb25DaGFu
Z2VkRXZlbnRGdW5jdGlvbikgJiBmdW5jLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8d3hPYmplY3QqPigwKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
CisKKyNkZWZpbmUgRVZUX1dFQlZJRVdfUlVOX0ZJTEVfQ0hPT1NFUih3aW5pZCwgZnVuYykgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIERFQ0xBUkVfRVZFTlRfVEFCTEVfRU5U
Ulkod3hFVlRfV0VCVklFV19SVU5fRklMRV9DSE9PU0VSLCBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2luaWQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eElEX0FOWSwg
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pICAg
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eFdlYlZpZXdSdW5GaWxlQ2hvb3NlckV2
ZW50RnVuY3Rpb24pICYgZnVuYywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHd4T2JqZWN0Kj4oMCkpLAorCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAj
ZW5kaWYgLy8gaWZuZGVmIFdYV0VCVklFV19ICkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAJKHJldmlzaW9uIDc5NjY1KQorKysg
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUyLDYgKzQ1MiwxMSBAQCB2b2lkIENocm9tZUNsaWVudFd4OjpzY3JvbGwo
Y29uc3QgSW50U2l6CiAKIHZvaWQgQ2hyb21lQ2xpZW50V3g6OnJ1bk9wZW5QYW5lbChGcmFtZSos
IFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KQogeworICAgIGlmIChtX3dlYlZpZXcpIHsKKyAgICAg
ICAgd3hXZWJWaWV3UnVuRmlsZUNob29zZXJFdmVudCB3a0V2ZW50KG1fd2ViVmlldyk7CisgICAg
ICAgIG1fd2ViVmlldy0+R2V0RXZlbnRIYW5kbGVyKCktPlByb2Nlc3NFdmVudCh3a0V2ZW50KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA3OTc1NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMw
IEBACisyMDExLTAyLTI1ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTG9nIHRoZSBzdGF0dXMg
b2Ygb3BlbmluZyBmaWxlIGNob29zZXIgZGlhbG9nIHNvIHdlIGNhbiBrbm93IHdoZXRoZXIgd2Ug
Y2FuIG9wZW4gaXQgaW4gRFJUIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NTExMAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJ1bkZpbGVDaG9vc2Vy
KToKKyAgICAgICAgSW4gY2hyb21pdW0gcG9ydCwgb3ZlcnJpZGVzIFdlYlZpZXdDbGllbnQ6OnJ1
bkZpbGVDaG9vc2VyIHRvIGxvZyB0aGUgc3RhdHVzLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsv
RHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocnVuRmlsZUNob29zZXJDYWxsYmFjayk6Cisg
ICAgICAgIEluIGd0ayBwb3J0LCByYWlzZXMgYSBzaWduYWwgdG8gbG9nIHRoZSBzdGF0dXMuCisK
KyAgICAgICAgKGNyZWF0ZVdlYlZpZXcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9V
SURlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6cnVuT3BlblBhbmVs
Rm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0
ZSB3ZWJWaWV3OnJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6YWxs
b3dNdWx0aXBsZUZpbGVzOl0pOgorICAgICAgICBJbiBtYWMgcG9ydCwgaW1wbGVtZW50cyBydW5P
cGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyIGluIFVJRGVsZWdhdGUgdG8g
bG9nIHRoZSBzdGF0dXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVy
VHJlZVd4LmNwcDoKKyAgICAgICAgKExheW91dFdlYlZpZXdFdmVudEhhbmRsZXI6OmJpbmRFdmVu
dHMpOgorICAgICAgICAoTGF5b3V0V2ViVmlld0V2ZW50SGFuZGxlcjo6T25SdW5GaWxlQ2hvb3Nl
ckV2ZW50KToKKyAgICAgICAgaW4gd3ggcG9ydCwgY3JlYXRlcyBhIG5ldyBldmVudCB3eEVWVF9X
RUJWSUVXX1JVTl9GSUxFX0NIT09TRVIgdG8gbG9nIHRoZSBzdGF0dXMuCisKIDIwMTEtMDItMjUg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3OTMyNC4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHJldmlzaW9uIDc5NjY1KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw4IEBACiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
LmgiCiAjaW5jbHVkZSAiV2ViRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50LmgiCisj
aW5jbHVkZSAiV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmgiCisjaW5jbHVkZSAiV2ViRmlsZUNo
b29zZXJQYXJhbXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkdlb2xv
Y2F0aW9uQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCkBAIC00NTAs
NiArNDUyLDEyIEBAIFdlYlN0cmluZyBXZWJWaWV3SG9zdDo6YXV0b0NvcnJlY3RXb3JkKGMKICAg
ICByZXR1cm4gV2ViU3RyaW5nKCk7CiB9CiAKK2Jvb2wgV2ViVmlld0hvc3Q6OnJ1bkZpbGVDaG9v
c2VyKGNvbnN0IFdlYkZpbGVDaG9vc2VyUGFyYW1zJiwgV2ViRmlsZUNob29zZXJDb21wbGV0aW9u
KikKK3sKKyAgICBwcmludGYoIk9wZW5lZCBhIGZpbGUgY2hvb3NlciBkaWFsb2dcbiIpOworICAg
IHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBXZWJWaWV3SG9zdDo6cnVuTW9kYWxBbGVydERpYWxv
ZyhXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBwcmludGYoIkFM
RVJUOiAlc1xuIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAkocmV2aXNpb24gNzk2NjUpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CiBjbGFz
cyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jazsKK2NsYXNzIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbjsKIGNsYXNzIFdlYkdl
b2xvY2F0aW9uQ2xpZW50OwogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOwogY2xhc3Mg
V2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jazsKQEAgLTU2LDYgKzU3LDcgQEAgY2xhc3MgV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jazsK
IGNsYXNzIFdlYlNwZWVjaElucHV0TGlzdGVuZXI7CiBjbGFzcyBXZWJVUkw7CitzdHJ1Y3QgV2Vi
RmlsZUNob29zZXJQYXJhbXM7CiBzdHJ1Y3QgV2ViUmVjdDsKIHN0cnVjdCBXZWJVUkxFcnJvcjsK
IHN0cnVjdCBXZWJXaW5kb3dGZWF0dXJlczsKQEAgLTEyOSw2ICsxMzEsNyBAQCBjbGFzcyBXZWJW
aWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpCiAgICAgdmlydHVhbCB2b2lkIHNwZWxsQ2hl
Y2soY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBpbnQmIG9mZnNldCwgaW50JiBsZW5ndGgpOwog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlRleHQoY29uc3QgV2ViS2l0OjpXZWJT
dHJpbmcmLCBXZWJLaXQ6OldlYlRleHRDaGVja2luZ0NvbXBsZXRpb24qKTsKICAgICB2aXJ0dWFs
IFdlYktpdDo6V2ViU3RyaW5nIGF1dG9Db3JyZWN0V29yZChjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYpOworICAgIHZpcnR1YWwgYm9vbCBydW5GaWxlQ2hvb3Nlcihjb25zdCBXZWJLaXQ6OldlYkZp
bGVDaG9vc2VyUGFyYW1zJiwgV2ViS2l0OjpXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24qKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWxBbGVydERpYWxvZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgcnVuTW9kYWxDb25maXJt
RGlhbG9nKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwogICAg
IHZpcnR1YWwgYm9vbCBydW5Nb2RhbFByb21wdERpYWxvZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBk
ZWZhdWx0VmFsdWUsIFdlYktpdDo6V2ViU3RyaW5nKiBhY3R1YWxWYWx1ZSk7CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDc5NjY1
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAzMyw2ICsxMDMzLDEyIEBAIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVz
dENhbGxiYWNrKFdlYksKICAgICB9CiB9CiAKK3N0YXRpYyBib29sIHJ1bkZpbGVDaG9vc2VyQ2Fs
bGJhY2soV2ViS2l0V2ViVmlldyogdmlldykKK3sKKyAgICBmcHJpbnRmKHN0ZG91dCwgIk9wZW5l
ZCBhIGZpbGUgY2hvb3NlciBkaWFsb2dcbiIpOworICAgIHJldHVybiBGQUxTRTsKK30KKwogc3Rh
dGljIFdlYktpdFdlYlZpZXcqIGNyZWF0ZVdlYlZpZXcoKQogewogICAgIFdlYktpdFdlYlZpZXcq
IHZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKQEAgLTEwNjIs
NiArMTA2OCw3IEBAIHN0YXRpYyBXZWJLaXRXZWJWaWV3KiBjcmVhdGVXZWJWaWV3KCkKICAgICAg
ICAgICAgICAgICAgICAgICJzaWduYWw6OmRyYWctZmFpbGVkIiwgZHJhZ0ZhaWxlZENhbGxiYWNr
LCAwLAogICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDo6ZnJhbWUtY3JlYXRlZCIsIGZyYW1l
Q3JlYXRlZENhbGxiYWNrLCAwLAogICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDo6cmVzb3Vy
Y2UtcmVxdWVzdC1zdGFydGluZyIsIHdpbGxTZW5kUmVxdWVzdENhbGxiYWNrLCAwLAorICAgICAg
ICAgICAgICAgICAgICAgInNpZ25hbDo6cnVuLWZpbGUtY2hvb3NlciIsIHJ1bkZpbGVDaG9vc2Vy
Q2FsbGJhY2ssIDAsCiAKICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgIGNvbm5lY3RF
ZGl0aW5nQ2FsbGJhY2tzKHZpZXcpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJ
RGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVs
ZWdhdGUubW0JKHJldmlzaW9uIDc5NjY1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJ
RGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1MCw2ICsyNTAsMTggQEAgLSAoQk9PTCl3
ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRQcgogICAgIHJldHVybiBUUlVFOwogfQogCist
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgcnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRv
bldpdGhSZXN1bHRMaXN0ZW5lcjooaWQ8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+KXJlc3Vs
dExpc3RlbmVyCit7CisgICAgcHJpbnRmKCJPcGVuZWQgYSBmaWxlIGNob29zZXIgZGlhbG9nXG4i
KTsKKyAgICBbcmVzdWx0TGlzdGVuZXIgY2hvb3NlRmlsZW5hbWU6bmlsXTsKK30KKworLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRo
UmVzdWx0TGlzdGVuZXI6KGlkPFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyPilyZXN1bHRMaXN0
ZW5lciBhbGxvd011bHRpcGxlRmlsZXM6KEJPT0wpYWxsb3dNdWx0aXBsZUZpbGVzIFdFQktJVF9P
QkpDX01FVEhPRF9BTk5PVEFUSU9OKEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzApCit7
CisgICAgcHJpbnRmKCJPcGVuZWQgYSBmaWxlIGNob29zZXIgZGlhbG9nXG4iKTsKKyAgICBbcmVz
dWx0TGlzdGVuZXIgY2hvb3NlRmlsZW5hbWU6bmlsXTsKK30KKwogLSAodm9pZClkZWFsbG9jCiB7
CiAgICAgW2RyYWdnaW5nSW5mbyByZWxlYXNlXTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwCShyZXZpc2lvbiA3OTY2NSkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Myw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgbV93ZWJWaWV3LT5Db25uZWN0KHd4RVZUX1dF
QlZJRVdfQ09OU09MRV9NRVNTQUdFLCB3eFdlYlZpZXdDb25zb2xlTWVzc2FnZUV2ZW50SGFuZGxl
cihMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyOjpPbkNvbnNvbGVNZXNzYWdlRXZlbnQpLCBOVUxM
LCB0aGlzKTsKICAgICAgICAgbV93ZWJWaWV3LT5Db25uZWN0KHd4RVZUX1dFQlZJRVdfUkVDRUlW
RURfVElUTEUsIHd4V2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudEhhbmRsZXIoTGF5b3V0V2ViVmll
d0V2ZW50SGFuZGxlcjo6T25SZWNlaXZlZFRpdGxlRXZlbnQpLCBOVUxMLCB0aGlzKTsKICAgICAg
ICAgbV93ZWJWaWV3LT5Db25uZWN0KHd4RVZUX1dFQlZJRVdfV0lORE9XX09CSkVDVF9DTEVBUkVE
LCB3eFdlYlZpZXdXaW5kb3dPYmplY3RDbGVhcmVkRXZlbnRIYW5kbGVyKExheW91dFdlYlZpZXdF
dmVudEhhbmRsZXI6Ok9uV2luZG93T2JqZWN0Q2xlYXJlZEV2ZW50KSwgTlVMTCwgdGhpcyk7Cisg
ICAgICAgIG1fd2ViVmlldy0+Q29ubmVjdCh3eEVWVF9XRUJWSUVXX1JVTl9GSUxFX0NIT09TRVIs
IHd4V2ViVmlld1J1bkZpbGVDaG9vc2VyRXZlbnRIYW5kbGVyKExheW91dFdlYlZpZXdFdmVudEhh
bmRsZXI6Ok9uUnVuRmlsZUNob29zZXJFdmVudCksIDAsIHRoaXMpOwogICAgIH0KICAgICAKICAg
ICB2b2lkIE9uTG9hZEV2ZW50KHd4V2ViVmlld0xvYWRFdmVudCYgZXZlbnQpIApAQCAtMTM2LDYg
KzEzNywxMSBAQCBwdWJsaWM6CiAgICAgICAgIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+bWFrZVdp
bmRvd09iamVjdChldmVudC5HZXRKU0NvbnRleHQoKSwgZXZlbnQuR2V0V2luZG93T2JqZWN0KCks
ICZleGNlcHRpb24pOwogICAgIH0KICAgICAKKyAgICB2b2lkIE9uUnVuRmlsZUNob29zZXJFdmVu
dCh3eFdlYlZpZXdSdW5GaWxlQ2hvb3NlckV2ZW50JiBldmVudCkKKyAgICB7CisgICAgICAgIHBy
aW50ZigiT3BlbmVkIGEgZmlsZSBjaG9vc2VyIGRpYWxvZ1xuIik7CisgICAgfQorICAgIAogcHJp
dmF0ZToKICAgICB3eFdlYlZpZXcqIG1fd2ViVmlldzsKIAo=
</data>
<flag name="review"
          id="75827"
          type_id="1"
          status="-"
          setter="aestes"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85799</attachid>
            <date>2011-03-15 06:17:36 -0700</date>
            <delta_ts>2011-03-15 19:57:53 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>patch_run_file_chooser.txt</filename>
            <type>text/plain</type>
            <size>16821</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMTAxKQorKysgU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMjUg
IEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmVhdGUgYSBzaWduYWwgdG8gbG9nIHRoZSBzdGF0
dXMgb2Ygb3BlbmluZyBmaWxlIGNob29zZXIgZGlhbG9nLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTAKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6
cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6CisKIDIwMTEtMDMtMTEgIE1hcmNvIFBl
ZXJlYm9vbSAgPG1hcmNvQHBlZXJlYm9vbS51cz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDgxMTAxKQorKysgU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjA5LDggKzYwOSwxNSBAQCB2b2lkIENocm9tZUNsaWVudDo6cmVhY2hlZEFw
cGxpY2F0aW9uQ2FjCiB9CiAjZW5kaWYKIAotdm9pZCBDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5l
bChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IHBycEZpbGVDaG9vc2VyKQordm9pZCBD
aHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNo
b29zZXI+IHBycEZpbGVDaG9vc2VyKQogeworICAgIGlmIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6OmR1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoKSkgeworICAgICAgICBnYm9vbGVhbiByZXR2
YWw7CisgICAgICAgIFdlYktpdFdlYkZyYW1lKiB3ZWJGcmFtZSA9IGtpdChmcmFtZSk7CisgICAg
ICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKHdlYkZyYW1lKTsK
KyAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJydW4tZmlsZS1jaG9vc2Vy
IiwgJnJldHZhbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgUmVmUHRyPEZpbGVDaG9v
c2VyPiBjaG9vc2VyID0gcHJwRmlsZUNob29zZXI7CiAKICAgICBHdGtXaWRnZXQqIGRpYWxvZyA9
IGd0a19maWxlX2Nob29zZXJfZGlhbG9nX25ldyhfKCJVcGxvYWQgRmlsZSIpLApJbmRleDogU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gODExMDEp
CisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwMiw2ICsyMDIsNyBAQCBlbnVtIHsKICAgICBFRElUSU5HX0VOREVELAogICAg
IFZJRVdQT1JUX0FUVFJJQlVURVNfUkVDT01QVVRFX1JFUVVFU1RFRCwKICAgICBWSUVXUE9SVF9B
VFRSSUJVVEVTX0NIQU5HRUQsCisgICAgUlVOX0ZJTEVfQ0hPT1NFUiwKIAogICAgIExBU1RfU0lH
TkFMCiB9OwpAQCAtMjgzNyw2ICsyODM4LDIzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19jbGFzc19pbml0KFcKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAgICAgICAgICAg
V0VCS0lUX1RZUEVfVklFV1BPUlRfQVRUUklCVVRFUyk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJL
aXRXZWJWaWV3OjpydW4tZmlsZS1jaG9vc2VyOgorICAgICAqIEB3ZWJWaWV3OiB0aGUgb2JqZWN0
IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqCisgICAgICogVGhpcyBzaWdu
YWwgaXMgZW1pdHRlZCB3aGVuIHdlIG5lZWQgdG8gb3BlbiBhIGZpbGUgY2hvb3NlciBkaWFsb2cs
CisgICAgICogc28gRFJUIGNhbiBoYXZlIGNoYW5jZSB0byBsb2cgd2hldGhlciBhIGZpbGUgY2hv
b3NlciBkaWFsb2cgaXMgb3BlbmVkIG9yIG5vdC4KKyAgICAgKiBTbyBmYXIgdGhpcyBzaWduYWwg
aXMgb25seSB1c2VkIGZvciBEUlQgbW9kZS4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdf
c2lnbmFsc1tSVU5fRklMRV9DSE9PU0VSXSA9IGdfc2lnbmFsX25ldygicnVuLWZpbGUtY2hvb3Nl
ciIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAg
ICAgICAgKEdTaWduYWxGbGFncylHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgIDAsCisg
ICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAg
ICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAg
ICAgICAgIEdfVFlQRV9CT09MRUFOLCAwKTsKKwogICAgIC8qCiAgICAgICogaW1wbGVtZW50YXRp
b25zIG9mIHZpcnR1YWwgbWV0aG9kcwogICAgICAqLwpJbmRleDogU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDgxMTAxKQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMi0yNSAgSm9obm55IERpbmcgIDxqbmRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExv
ZyB0aGUgc3RhdHVzIG9mIG9wZW5pbmcgZmlsZSBjaG9vc2VyIGRpYWxvZyBpbiBEUlQgbW9kZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MTEwCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cnVuT3BlblBhbmVsKToKKwogMjAxMS0wMy0xNCAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
ZXJzIENhcmxzc29uLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHJldmlzaW9uIDgxMTAxKQorKysgU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU1OCw2ICs1NTgsMTAgQEAgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBDaHJvbWVDbGllbnRRdDo6
bgogCiB2b2lkIENocm9tZUNsaWVudFF0OjpydW5PcGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNz
UmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBGaWxlQ2hvb3NlcikKIHsKKyAgICBpZiAoUVdlYlBhZ2VQ
cml2YXRlOjpkcnRSdW4pIHsKKyAgICAgICAgcHJpbnRmKCJPUEVOIFBBTkVMXG4iKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICAgICBSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyID0g
cHJwRmlsZUNob29zZXI7CiAgICAgYm9vbCBzdXBwb3J0TXVsdGkgPSBtX3dlYlBhZ2UtPnN1cHBv
cnRzRXh0ZW5zaW9uKFFXZWJQYWdlOjpDaG9vc2VNdWx0aXBsZUZpbGVzRXh0ZW5zaW9uKTsKIApJ
bmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMTAxKQorKysgU291cmNlL1dlYktpdC93eC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMi0yNSAgSm9o
bm55IERpbmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIG5ldyBldmVudCB3eEVWVF9XRUJWSUVXX1JV
Tl9GSUxFX0NIT09TRVIgdG8gbm90aWZ5IHdlYnZpZXcgdG8gb3BlbiBhIGZpbGUgY2hvb3NlciBk
aWFsb2cuCisgICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTUxMTAKKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICog
V2ViVmlldy5jcHA6CisgICAgICAgICh3eFdlYlZpZXdSdW5GaWxlQ2hvb3NlckV2ZW50Ojp3eFdl
YlZpZXdSdW5GaWxlQ2hvb3NlckV2ZW50KToKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTEt
MDMtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAJKHJldmlzaW9uIDgxMTAx
KQorKysgU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUx
LDYgKzI1MSwxOCBAQCB3eFdlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnQ6Ond4V2ViVmllCiAg
ICAgICAgIFNldElkKHdpbi0+R2V0SWQoKSk7CiB9CiAKK0lNUExFTUVOVF9EWU5BTUlDX0NMQVNT
KHd4V2ViVmlld1J1bkZpbGVDaG9vc2VyRXZlbnQsIHd4Q29tbWFuZEV2ZW50KQorCitERUZJTkVf
RVZFTlRfVFlQRSh3eEVWVF9XRUJWSUVXX1JVTl9GSUxFX0NIT09TRVIpCisKK3d4V2ViVmlld1J1
bkZpbGVDaG9vc2VyRXZlbnQ6Ond4V2ViVmlld1J1bkZpbGVDaG9vc2VyRXZlbnQod3hXaW5kb3cq
IHdpbikKK3sKKyAgICBTZXRFdmVudFR5cGUod3hFVlRfV0VCVklFV19SVU5fRklMRV9DSE9PU0VS
KTsKKyAgICBTZXRFdmVudE9iamVjdCh3aW4pOworICAgIGlmICh3aW4pCisgICAgICAgIFNldElk
KHdpbi0+R2V0SWQoKSk7Cit9CisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET00gRWxlbWVudCBpbmZvIGRhdGEgdHlwZQog
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd3gvV2ViVmlldy5oCShyZXZpc2lvbiA4MTEwMSkKKysrIFNvdXJjZS9XZWJLaXQv
d3gvV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDQsNiArNTQ0LDE3IEBAIHB1YmxpYzoK
ICAgICB3eEV2ZW50ICpDbG9uZSh2b2lkKSBjb25zdCB7IHJldHVybiBuZXcgd3hXZWJWaWV3U2Vs
ZWN0aW9uQ2hhbmdlZEV2ZW50KCp0aGlzKTsgfQogfTsKIAorY2xhc3MgV1hETExJTVBFWFBfV0VC
S0lUIHd4V2ViVmlld1J1bkZpbGVDaG9vc2VyRXZlbnQgOiBwdWJsaWMgd3hDb21tYW5kRXZlbnQg
eworI2lmbmRlZiBTV0lHCisgICAgREVDTEFSRV9EWU5BTUlDX0NMQVNTKHd4V2ViVmlld1J1bkZp
bGVDaG9vc2VyRXZlbnQpCisjZW5kaWYKKyAgICAKK3B1YmxpYzoKKyAgICB3eFdlYlZpZXdSdW5G
aWxlQ2hvb3NlckV2ZW50KHd4V2luZG93KiB3aW4gPSBzdGF0aWNfY2FzdDx3eFdpbmRvdyo+KDAp
KTsKKyAgICB3eEV2ZW50ICpDbG9uZSh2b2lkKSBjb25zdCB7IHJldHVybiBuZXcgd3hXZWJWaWV3
UnVuRmlsZUNob29zZXJFdmVudCgqdGhpcyk7IH0KKyAgICAvLyBGSVhNRTogTmVlZCB0byBhZGQg
dGhlIHBhcmFtZXRlciBGaWxlQ2hvb3NlciB3aGVuIG9wZW5pbmcgdGhlIHJlYWwgZmlsZSBjaG9v
c2VyIGRpYWxvZy4KK307CisKIHR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hXZWJWaWV3
TG9hZEV2ZW50RnVuY3Rpb24pKHd4V2ViVmlld0xvYWRFdmVudCYpOwogdHlwZWRlZiB2b2lkICh3
eEV2dEhhbmRsZXI6Oip3eFdlYlZpZXdCZWZvcmVMb2FkRXZlbnRGdW5jdGlvbikod3hXZWJWaWV3
QmVmb3JlTG9hZEV2ZW50Jik7CiB0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6Knd4V2ViVmll
d05ld1dpbmRvd0V2ZW50RnVuY3Rpb24pKHd4V2ViVmlld05ld1dpbmRvd0V2ZW50Jik7CkBAIC01
NTYsNiArNTY3LDcgQEAgdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eFdlYlZpZXdSZQog
dHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eFdlYlZpZXdXaW5kb3dPYmplY3RDbGVhcmVk
RnVuY3Rpb24pKHd4V2ViVmlld1dpbmRvd09iamVjdENsZWFyZWRFdmVudCYpOwogdHlwZWRlZiB2
b2lkICh3eEV2dEhhbmRsZXI6Oip3eFdlYlZpZXdDb250ZW50c0NoYW5nZWRGdW5jdGlvbikod3hX
ZWJWaWV3Q29udGVudHNDaGFuZ2VkRXZlbnQmKTsKIHR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVy
Ojoqd3hXZWJWaWV3U2VsZWN0aW9uQ2hhbmdlZEZ1bmN0aW9uKSh3eFdlYlZpZXdTZWxlY3Rpb25D
aGFuZ2VkRXZlbnQmKTsKK3R5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hXZWJWaWV3UnVu
RmlsZUNob29zZXJFdmVudEZ1bmN0aW9uKSh3eFdlYlZpZXdSdW5GaWxlQ2hvb3NlckV2ZW50Jik7
CiAKICNkZWZpbmUgd3hXZWJWaWV3TG9hZEV2ZW50SGFuZGxlcihmdW5jKSBcCiAgICAgKHd4T2Jq
ZWN0RXZlbnRGdW5jdGlvbikod3hFdmVudEZ1bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KHd4V2Vi
Vmlld0xvYWRFdmVudEZ1bmN0aW9uLCAmZnVuYykKQEAgLTU4MSw2ICs1OTMsOCBAQCB0eXBlZGVm
IHZvaWQgKHd4RXZ0SGFuZGxlcjo6Knd4V2ViVmlld1NlCiAgICAgKHd4T2JqZWN0RXZlbnRGdW5j
dGlvbikod3hFdmVudEZ1bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KHd4V2ViVmlld0NvbnRlbnRz
Q2hhbmdlZEV2ZW50RnVuY3Rpb24sICZmdW5jKQogI2RlZmluZSB3eFdlYlZpZXdTZWxlY3Rpb25D
aGFuZ2VkRXZlbnRIYW5kbGVyKGZ1bmMpIFwKICAgICAod3hPYmplY3RFdmVudEZ1bmN0aW9uKSh3
eEV2ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0RXZlbnQod3hXZWJWaWV3U2VsZWN0aW9uQ2hhbmdl
ZEV2ZW50RnVuY3Rpb24sICZmdW5jKQorI2RlZmluZSB3eFdlYlZpZXdSdW5GaWxlQ2hvb3NlckV2
ZW50SGFuZGxlcihmdW5jKSBcCisgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikod3hFdmVudEZ1
bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KHd4V2ViVmlld1J1bkZpbGVDaG9vc2VyRXZlbnRGdW5j
dGlvbiwgJmZ1bmMpCiAgICAgCiAjaWZuZGVmIFNXSUcKIEJFR0lOX0RFQ0xBUkVfRVZFTlRfVFlQ
RVMoKQpAQCAtNTk2LDYgKzYxMCw3IEBAIEJFR0lOX0RFQ0xBUkVfRVZFTlRfVFlQRVMoKQogICAg
IERFQ0xBUkVfRVhQT1JURURfRVZFTlRfVFlQRShXWERMTElNUEVYUF9XRUJLSVQsIHd4RVZUX1dF
QlZJRVdfV0lORE9XX09CSkVDVF9DTEVBUkVELCB3eElEX0FOWSkKICAgICBERUNMQVJFX0VYUE9S
VEVEX0VWRU5UX1RZUEUoV1hETExJTVBFWFBfV0VCS0lULCB3eEVWVF9XRUJWSUVXX0NPTlRFTlRT
X0NIQU5HRUQsIHd4SURfQU5ZKQogICAgIERFQ0xBUkVfRVhQT1JURURfRVZFTlRfVFlQRShXWERM
TElNUEVYUF9XRUJLSVQsIHd4RVZUX1dFQlZJRVdfU0VMRUNUSU9OX0NIQU5HRUQsIHd4SURfQU5Z
KQorICAgIERFQ0xBUkVfRVhQT1JURURfRVZFTlRfVFlQRShXWERMTElNUEVYUF9XRUJLSVQsIHd4
RVZUX1dFQlZJRVdfUlVOX0ZJTEVfQ0hPT1NFUiwgd3hJRF9BTlkpCiBFTkRfREVDTEFSRV9FVkVO
VF9UWVBFUygpCiAjZW5kaWYKIApAQCAtNjk0LDYgKzcwOSwxNCBAQCBFTkRfREVDTEFSRV9FVkVO
VF9UWVBFUygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHd4T2JqZWN0RXZlbnRGdW5j
dGlvbikgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHd4V2ViVmlld1NlbGVjdGlv
bkNoYW5nZWRFdmVudEZ1bmN0aW9uKSAmIGZ1bmMsIFwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDx3eE9iamVjdCo+KDApKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKKworI2RlZmluZSBFVlRfV0VCVklFV19SVU5fRklMRV9DSE9PU0VSKHdpbmlkLCBmdW5j
KSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgREVDTEFSRV9FVkVOVF9UQUJM
RV9FTlRSWSh3eEVWVF9XRUJWSUVXX1JVTl9GSUxFX0NIT09TRVIsIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aW5pZCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4SURf
QU5ZLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlv
bikgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHd4V2ViVmlld1J1bkZpbGVDaG9v
c2VyRXZlbnRGdW5jdGlvbikgJiBmdW5jLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8d3hPYmplY3QqPigwKSksCisKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICNlbmRpZiAvLyBpZm5kZWYgV1hXRUJWSUVXX0gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAkocmV2aXNpb24gODExMDEp
CisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NTIsNiArNDUyLDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OnNj
cm9sbChjb25zdCBJbnRTaXoKIAogdm9pZCBDaHJvbWVDbGllbnRXeDo6cnVuT3BlblBhbmVsKEZy
YW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCiB7CisgICAgaWYgKG1fd2ViVmlldykgewor
ICAgICAgICB3eFdlYlZpZXdSdW5GaWxlQ2hvb3NlckV2ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsK
KyAgICAgICAgbV93ZWJWaWV3LT5HZXRFdmVudEhhbmRsZXIoKS0+UHJvY2Vzc0V2ZW50KHdrRXZl
bnQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgxMTAxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMTEtMDItMjUgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMb2cgdGhlIHN0
YXR1cyBvZiBvcGVuaW5nIGZpbGUgY2hvb3NlciBkaWFsb2cgc28gd2UgY2FuIGtub3cgd2hldGhl
ciB3ZSBjYW4gb3BlbiBpdCBpbiBEUlQgbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MTEwCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6cnVuRmlsZUNo
b29zZXIpOgorICAgICAgICBJbiBjaHJvbWl1bSBwb3J0LCBvdmVycmlkZXMgV2ViVmlld0NsaWVu
dDo6cnVuRmlsZUNob29zZXIgdG8gbG9nIHRoZSBzdGF0dXMuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChydW5GaWxlQ2hvb3NlckNhbGxiYWNr
KToKKyAgICAgICAgSW4gZ3RrIHBvcnQsIHJhaXNlcyBhIHNpZ25hbCB0byBsb2cgdGhlIHN0YXR1
cy4KKworICAgICAgICAoY3JlYXRlV2ViVmlldyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL1VJRGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpydW5PcGVu
UGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOl0pOgorICAgICAgICAoLVtVSURl
bGVnYXRlIHdlYlZpZXc6cnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5l
cjphbGxvd011bHRpcGxlRmlsZXM6XSk6CisgICAgICAgIEluIG1hYyBwb3J0LCBpbXBsZW1lbnRz
IHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXIgaW4gVUlEZWxlZ2F0
ZSB0byBsb2cgdGhlIHN0YXR1cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0R1bXBS
ZW5kZXJUcmVlV3guY3BwOgorICAgICAgICAoTGF5b3V0V2ViVmlld0V2ZW50SGFuZGxlcjo6Ymlu
ZEV2ZW50cyk6CisgICAgICAgIChMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyOjpPblJ1bkZpbGVD
aG9vc2VyRXZlbnQpOgorICAgICAgICBpbiB3eCBwb3J0LCBjcmVhdGVzIGEgbmV3IGV2ZW50IHd4
RVZUX1dFQlZJRVdfUlVOX0ZJTEVfQ0hPT1NFUiB0byBsb2cgdGhlIHN0YXR1cy4KKwogMjAxMS0w
My0xNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgxMDk0LgpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAkocmV2aXNpb24gODExMDEpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDYgKzQyLDggQEAKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suaCIKICNpbmNsdWRlICJXZWJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIldlYkVsZW1lbnQu
aCIKKyNpbmNsdWRlICJXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaCIKKyNpbmNsdWRlICJXZWJG
aWxlQ2hvb3NlclBhcmFtcy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2Vi
R2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKQEAg
LTQ1MCw2ICs0NTIsMTIgQEAgV2ViU3RyaW5nIFdlYlZpZXdIb3N0OjphdXRvQ29ycmVjdFdvcmQo
YwogICAgIHJldHVybiBXZWJTdHJpbmcoKTsKIH0KIAorYm9vbCBXZWJWaWV3SG9zdDo6cnVuRmls
ZUNob29zZXIoY29uc3QgV2ViRmlsZUNob29zZXJQYXJhbXMmLCBXZWJGaWxlQ2hvb3NlckNvbXBs
ZXRpb24qKQoreworICAgIHByaW50ZigiT1BFTiBQQU5FTFxuIik7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiB2b2lkIFdlYlZpZXdIb3N0OjpydW5Nb2RhbEFsZXJ0RGlhbG9nKFdlYkZyYW1lKiwg
Y29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHByaW50ZigiQUxFUlQ6ICVzXG4iLCBt
ZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5oCShyZXZpc2lvbiA4MTEwMSkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50OwogY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOwor
Y2xhc3MgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uOwogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGll
bnQ7CiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s7CiBjbGFzcyBXZWJHZW9sb2NhdGlv
blNlcnZpY2VNb2NrOwpAQCAtNTYsNiArNTcsNyBAQCBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXI7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwogY2xhc3MgV2ViU3Bl
ZWNoSW5wdXRMaXN0ZW5lcjsKIGNsYXNzIFdlYlVSTDsKK3N0cnVjdCBXZWJGaWxlQ2hvb3NlclBh
cmFtczsKIHN0cnVjdCBXZWJSZWN0Owogc3RydWN0IFdlYlVSTEVycm9yOwogc3RydWN0IFdlYldp
bmRvd0ZlYXR1cmVzOwpAQCAtMTI5LDYgKzEzMSw3IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVi
bGljIFdlYktpdDo6V2ViVmkKICAgICB2aXJ0dWFsIHZvaWQgc3BlbGxDaGVjayhjb25zdCBXZWJL
aXQ6OldlYlN0cmluZyYsIGludCYgb2Zmc2V0LCBpbnQmIGxlbmd0aCk7CiAgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RDaGVja2luZ09mVGV4dChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIFdlYktp
dDo6V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbiopOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJT
dHJpbmcgYXV0b0NvcnJlY3RXb3JkKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CisgICAgdmly
dHVhbCBib29sIHJ1bkZpbGVDaG9vc2VyKGNvbnN0IFdlYktpdDo6V2ViRmlsZUNob29zZXJQYXJh
bXMmLCBXZWJLaXQ6OldlYkZpbGVDaG9vc2VyQ29tcGxldGlvbiopOwogICAgIHZpcnR1YWwgdm9p
ZCBydW5Nb2RhbEFsZXJ0RGlhbG9nKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6Oldl
YlN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBydW5Nb2RhbENvbmZpcm1EaWFsb2coV2ViS2l0
OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29s
IHJ1bk1vZGFsUHJvbXB0RGlhbG9nKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6Oldl
YlN0cmluZyYgbWVzc2FnZSwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGRlZmF1bHRWYWx1ZSwg
V2ViS2l0OjpXZWJTdHJpbmcqIGFjdHVhbFZhbHVlKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gODExMDEpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDM1LDYgKzEwMzUsMTIgQEAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0Q2FsbGJhY2soV2Vi
SwogICAgIH0KIH0KIAorc3RhdGljIGJvb2wgcnVuRmlsZUNob29zZXJDYWxsYmFjayhXZWJLaXRX
ZWJWaWV3KiB2aWV3KQoreworICAgIGZwcmludGYoc3Rkb3V0LCAiT1BFTiBQQU5FTFxuIik7Cisg
ICAgcmV0dXJuIEZBTFNFOworfQorCiBzdGF0aWMgV2ViS2l0V2ViVmlldyogY3JlYXRlV2ViVmll
dygpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogdmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRf
d2ViX3ZpZXdfbmV3KCkpOwpAQCAtMTA2NCw2ICsxMDcwLDcgQEAgc3RhdGljIFdlYktpdFdlYlZp
ZXcqIGNyZWF0ZVdlYlZpZXcoKQogICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDo6ZHJhZy1m
YWlsZWQiLCBkcmFnRmFpbGVkQ2FsbGJhY2ssIDAsCiAgICAgICAgICAgICAgICAgICAgICAic2ln
bmFsOjpmcmFtZS1jcmVhdGVkIiwgZnJhbWVDcmVhdGVkQ2FsbGJhY2ssIDAsCiAgICAgICAgICAg
ICAgICAgICAgICAic2lnbmFsOjpyZXNvdXJjZS1yZXF1ZXN0LXN0YXJ0aW5nIiwgd2lsbFNlbmRS
ZXF1ZXN0Q2FsbGJhY2ssIDAsCisgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOjpydW4tZmls
ZS1jaG9vc2VyIiwgcnVuRmlsZUNob29zZXJDYWxsYmFjaywgMCwKIAogICAgICAgICAgICAgICAg
ICAgICAgTlVMTCk7CiAgICAgY29ubmVjdEVkaXRpbmdDYWxsYmFja3Modmlldyk7CkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gODExMDEpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjU4LDYgKzI1OCwxOCBAQCAtIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZFBy
CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRl
ciBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOihpZDxXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lcj4pcmVzdWx0TGlzdGVuZXIKK3sKKyAgICBwcmludGYoIk9QRU4g
UEFORUxcbiIpOworICAgIFtyZXN1bHRMaXN0ZW5lciBjaG9vc2VGaWxlbmFtZTpuaWxdOworfQor
CistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgcnVuT3BlblBhbmVsRm9yRmlsZUJ1
dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjooaWQ8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+KXJl
c3VsdExpc3RlbmVyIGFsbG93TXVsdGlwbGVGaWxlczooQk9PTClhbGxvd011bHRpcGxlRmlsZXMg
V0VCS0lUX09CSkNfTUVUSE9EX0FOTk9UQVRJT04oQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9O
XzRfMCkKK3sKKyAgICBwcmludGYoIk9QRU4gUEFORUxcbiIpOworICAgIFtyZXN1bHRMaXN0ZW5l
ciBjaG9vc2VGaWxlbmFtZTpuaWxdOworfQorCiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBbZHJh
Z2dpbmdJbmZvIHJlbGVhc2VdOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvRHVtcFJl
bmRlclRyZWVXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvRHVt
cFJlbmRlclRyZWVXeC5jcHAJKHJldmlzaW9uIDgxMTAxKQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd3gvRHVtcFJlbmRlclRyZWVXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcg
QEAgcHVibGljOgogICAgICAgICBtX3dlYlZpZXctPkNvbm5lY3Qod3hFVlRfV0VCVklFV19DT05T
T0xFX01FU1NBR0UsIHd4V2ViVmlld0NvbnNvbGVNZXNzYWdlRXZlbnRIYW5kbGVyKExheW91dFdl
YlZpZXdFdmVudEhhbmRsZXI6Ok9uQ29uc29sZU1lc3NhZ2VFdmVudCksIE5VTEwsIHRoaXMpOwog
ICAgICAgICBtX3dlYlZpZXctPkNvbm5lY3Qod3hFVlRfV0VCVklFV19SRUNFSVZFRF9USVRMRSwg
d3hXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50SGFuZGxlcihMYXlvdXRXZWJWaWV3RXZlbnRIYW5k
bGVyOjpPblJlY2VpdmVkVGl0bGVFdmVudCksIE5VTEwsIHRoaXMpOwogICAgICAgICBtX3dlYlZp
ZXctPkNvbm5lY3Qod3hFVlRfV0VCVklFV19XSU5ET1dfT0JKRUNUX0NMRUFSRUQsIHd4V2ViVmll
d1dpbmRvd09iamVjdENsZWFyZWRFdmVudEhhbmRsZXIoTGF5b3V0V2ViVmlld0V2ZW50SGFuZGxl
cjo6T25XaW5kb3dPYmplY3RDbGVhcmVkRXZlbnQpLCBOVUxMLCB0aGlzKTsKKyAgICAgICAgbV93
ZWJWaWV3LT5Db25uZWN0KHd4RVZUX1dFQlZJRVdfUlVOX0ZJTEVfQ0hPT1NFUiwgd3hXZWJWaWV3
UnVuRmlsZUNob29zZXJFdmVudEhhbmRsZXIoTGF5b3V0V2ViVmlld0V2ZW50SGFuZGxlcjo6T25S
dW5GaWxlQ2hvb3NlckV2ZW50KSwgMCwgdGhpcyk7CiAgICAgfQogICAgIAogICAgIHZvaWQgT25M
b2FkRXZlbnQod3hXZWJWaWV3TG9hZEV2ZW50JiBldmVudCkgCkBAIC0xMzYsNiArMTM3LDExIEBA
IHB1YmxpYzoKICAgICAgICAgZ0xheW91dFRlc3RDb250cm9sbGVyLT5tYWtlV2luZG93T2JqZWN0
KGV2ZW50LkdldEpTQ29udGV4dCgpLCBldmVudC5HZXRXaW5kb3dPYmplY3QoKSwgJmV4Y2VwdGlv
bik7CiAgICAgfQogICAgIAorICAgIHZvaWQgT25SdW5GaWxlQ2hvb3NlckV2ZW50KHd4V2ViVmll
d1J1bkZpbGVDaG9vc2VyRXZlbnQmIGV2ZW50KQorICAgIHsKKyAgICAgICAgcHJpbnRmKCJPUEVO
IFBBTkVMXG4iKTsKKyAgICB9CisgICAgCiBwcml2YXRlOgogICAgIHd4V2ViVmlldyogbV93ZWJW
aWV3OyAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85900</attachid>
            <date>2011-03-15 19:57:53 -0700</date>
            <delta_ts>2011-05-04 05:18:06 -0700</delta_ts>
            <desc>patch V3</desc>
            <filename>patch_run_file_chooser_2.txt</filename>
            <type>text/plain</type>
            <size>14010</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMjA2KQorKysgU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTUg
IEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMb2cgb3BlbiBwYW5lbCBzdGF0dXMgaW4gRFJUIG1v
ZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTEx
MAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorCiAyMDExLTAzLTE1ICBJ
bHlhIFNoZXJtYW4gIDxpc2hlcm1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgVG9ueSBDaGFuZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gODExMDEpCisrKyBTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MTEsNiArNjExLDEwIEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWMKIAogdm9pZCBDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NS
ZWZQdHI8RmlsZUNob29zZXI+IHBycEZpbGVDaG9vc2VyKQogeworICAgIGlmIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoKSkgeworICAgICAgICBm
cHJpbnRmKHN0ZG91dCwgIk9QRU4gUEFORUxcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQog
ICAgIFJlZlB0cjxGaWxlQ2hvb3Nlcj4gY2hvb3NlciA9IHBycEZpbGVDaG9vc2VyOwogCiAgICAg
R3RrV2lkZ2V0KiBkaWFsb2cgPSBndGtfZmlsZV9jaG9vc2VyX2RpYWxvZ19uZXcoXygiVXBsb2Fk
IEZpbGUiKSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MTIwNikKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEt
MDMtMTUgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMb2cgb3BlbiBwYW5lbCBzdGF0dXMgaW4g
RFJUIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NTExMAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJ1bk9wZW5QYW5lbCk6CisKIDIwMTEt
MDMtMTUgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkocmV2aXNpb24gODExMDEpCisr
KyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTU4LDYgKzU1OCwxMCBAQCBOb3RpZmljYXRpb25QcmVzZW50ZXIqIENo
cm9tZUNsaWVudFF0OjpuCiAKIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OnJ1bk9wZW5QYW5lbChGcmFt
ZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IHBycEZpbGVDaG9vc2VyKQogeworICAg
IGlmIChRV2ViUGFnZVByaXZhdGU6OmRydFJ1bikgeworICAgICAgICBwcmludGYoIk9QRU4gUEFO
RUxcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIFJlZlB0cjxGaWxlQ2hvb3Nlcj4g
ZmlsZUNob29zZXIgPSBwcnBGaWxlQ2hvb3NlcjsKICAgICBib29sIHN1cHBvcnRNdWx0aSA9IG1f
d2ViUGFnZS0+c3VwcG9ydHNFeHRlbnNpb24oUVdlYlBhZ2U6OkNob29zZU11bHRpcGxlRmlsZXNF
eHRlbnNpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gODEyMDYpCisrKyBTb3Vy
Y2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisy
MDExLTAzLTE1ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTG9nIG9wZW4gcGFuZWwgc3RhdHVz
IGluIERSVCBtb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTUxMTAKKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnJ1bk9wZW5QYW5lbCk6CisgICAg
ICAgICogV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRXeC5jcHA6IEFkZGVkLgor
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0V3g6OkR1bXBSZW5kZXJUcmVlU3VwcG9ydFd4
KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFd4Ojp+RHVtcFJlbmRlclRyZWVTdXBw
b3J0V3gpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0V3g6OnNldER1bXBSZW5kZXJU
cmVlTW9kZUVuYWJsZWQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0V3g6OmR1bXBS
ZW5kZXJUcmVlTW9kZUVuYWJsZWQpOgorICAgICAgICBBZGQgY2xhc3MgRHVtcFJlbmRlclRyZWVT
dXBwb3J0V3ggaW4gb3JkZXIgdG8gZ2V0IHZhcmlvdXMgc3RhdHVzIG9mIERSVCBtb2RlLgorICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0V3guaDogQWRkZWQuCisK
IDIwMTEtMDMtMTUgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAJKHJldmlzaW9uIDgxMTAx
KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShEQVRBQkFTRSkKICNp
bmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNlbmRpZgorI2luY2x1ZGUgIkR1bXBSZW5kZXJU
cmVlU3VwcG9ydFd4LmgiCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNDUyLDYgKzQ1MywxMCBAQCB2b2lkIENo
cm9tZUNsaWVudFd4OjpzY3JvbGwoY29uc3QgSW50U2l6CiAKIHZvaWQgQ2hyb21lQ2xpZW50V3g6
OnJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KQogeworICAgIGlm
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRXeDo6ZHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCgpKSB7
CisgICAgICAgIHByaW50ZigiT1BFTiBQQU5FTFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFd4LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0V3guY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFd4LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRXeC5oIgorCitib29sIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFd4OjpzX2RydFJ1biA9IGZhbHNlOworCitEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRXeDo6RHVtcFJlbmRlclRyZWVTdXBwb3J0V3goKQoreworfQorCitEdW1wUmVuZGVy
VHJlZVN1cHBvcnRXeDo6fkR1bXBSZW5kZXJUcmVlU3VwcG9ydFd4KCkKK3sKK30KKwordm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRXeDo6c2V0RHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZChib29s
IGVuYWJsZWQpCit7CisgICAgc19kcnRSdW4gPSBlbmFibGVkOworfQorCitib29sIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFd4OjpkdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKCkKK3sKKyAgICByZXR1
cm4gc19kcnRSdW47Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0V3guaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRXeC5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRX
eF9oCisjZGVmaW5lIER1bXBSZW5kZXJUcmVlU3VwcG9ydFd4X2gKKworY2xhc3MgRHVtcFJlbmRl
clRyZWVTdXBwb3J0V3ggeworCitwdWJsaWM6CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0V3go
KTsKKyAgICB+RHVtcFJlbmRlclRyZWVTdXBwb3J0V3goKTsKKworICAgIHN0YXRpYyB2b2lkIHNl
dER1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoYm9vbCk7CisgICAgc3RhdGljIGJvb2wgZHVtcFJl
bmRlclRyZWVNb2RlRW5hYmxlZCgpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBib29sIHNfZHJ0
UnVuOworfTsKKworI2VuZGlmCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MTIwNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDExLTAzLTE1ICBKb2hubnkgRGluZyAgPGpu
ZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTG9nIG9wZW4gcGFuZWwgc3RhdHVzIGluIERSVCBtb2RlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTAKKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdI
b3N0OjpydW5GaWxlQ2hvb3Nlcik6CisgICAgICAgIEluIGNocm9taXVtIHBvcnQsIG92ZXJyaWRl
cyBXZWJWaWV3Q2xpZW50OjpydW5GaWxlQ2hvb3NlciB0byBsb2cgdGhlIHN0YXR1cy4KKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUg
d2ViVmlldzpydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOl0pOgor
ICAgICAgICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6cnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldp
dGhSZXN1bHRMaXN0ZW5lcjphbGxvd011bHRpcGxlRmlsZXM6XSk6CisgICAgICAgIEluIG1hYyBw
b3J0LCBpbXBsZW1lbnRzIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVu
ZXIgaW4gVUlEZWxlZ2F0ZSB0byBsb2cgdGhlIHN0YXR1cy4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwOgorICAgICAgICAoTXlBcHA6Ok9uSW5pdCk6
CisgICAgICAgIEluIHd4IHBvcnQsIGluaXRpYWxpemUgRFJUIG1vZGUgd2hlbiBzdGFydGluZyBE
dW1wUmVuZGVyVHJlZS4KKwogMjAxMS0wMy0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAkocmV2aXNpb24gODExMDEpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDggQEAKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2suaCIKICNpbmNsdWRlICJXZWJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIldlYkVsZW1l
bnQuaCIKKyNpbmNsdWRlICJXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaCIKKyNpbmNsdWRlICJX
ZWJGaWxlQ2hvb3NlclBhcmFtcy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAi
V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIK
QEAgLTQ1MCw2ICs0NTIsMTIgQEAgV2ViU3RyaW5nIFdlYlZpZXdIb3N0OjphdXRvQ29ycmVjdFdv
cmQoYwogICAgIHJldHVybiBXZWJTdHJpbmcoKTsKIH0KIAorYm9vbCBXZWJWaWV3SG9zdDo6cnVu
RmlsZUNob29zZXIoY29uc3QgV2ViRmlsZUNob29zZXJQYXJhbXMmLCBXZWJGaWxlQ2hvb3NlckNv
bXBsZXRpb24qKQoreworICAgIHByaW50ZigiT1BFTiBQQU5FTFxuIik7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCiB2b2lkIFdlYlZpZXdIb3N0OjpydW5Nb2RhbEFsZXJ0RGlhbG9nKFdlYkZyYW1l
KiwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHByaW50ZigiQUxFUlQ6ICVzXG4i
LCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5oCShyZXZpc2lvbiA4MTEwMSkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50OwogY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
OworY2xhc3MgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uOwogY2xhc3MgV2ViR2VvbG9jYXRpb25D
bGllbnQ7CiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s7CiBjbGFzcyBXZWJHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrOwpAQCAtNTYsNiArNTcsNyBAQCBjbGFzcyBXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXI7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwogY2xhc3MgV2Vi
U3BlZWNoSW5wdXRMaXN0ZW5lcjsKIGNsYXNzIFdlYlVSTDsKK3N0cnVjdCBXZWJGaWxlQ2hvb3Nl
clBhcmFtczsKIHN0cnVjdCBXZWJSZWN0Owogc3RydWN0IFdlYlVSTEVycm9yOwogc3RydWN0IFdl
YldpbmRvd0ZlYXR1cmVzOwpAQCAtMTI5LDYgKzEzMSw3IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDog
cHVibGljIFdlYktpdDo6V2ViVmkKICAgICB2aXJ0dWFsIHZvaWQgc3BlbGxDaGVjayhjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYsIGludCYgb2Zmc2V0LCBpbnQmIGxlbmd0aCk7CiAgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RDaGVja2luZ09mVGV4dChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIFdl
YktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbiopOwogICAgIHZpcnR1YWwgV2ViS2l0OjpX
ZWJTdHJpbmcgYXV0b0NvcnJlY3RXb3JkKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CisgICAg
dmlydHVhbCBib29sIHJ1bkZpbGVDaG9vc2VyKGNvbnN0IFdlYktpdDo6V2ViRmlsZUNob29zZXJQ
YXJhbXMmLCBXZWJLaXQ6OldlYkZpbGVDaG9vc2VyQ29tcGxldGlvbiopOwogICAgIHZpcnR1YWwg
dm9pZCBydW5Nb2RhbEFsZXJ0RGlhbG9nKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBydW5Nb2RhbENvbmZpcm1EaWFsb2coV2Vi
S2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBi
b29sIHJ1bk1vZGFsUHJvbXB0RGlhbG9nKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYgbWVzc2FnZSwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGRlZmF1bHRWYWx1
ZSwgV2ViS2l0OjpXZWJTdHJpbmcqIGFjdHVhbFZhbHVlKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiA4MTEwMSkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsNiArMjU4LDE4
IEBAIC0gKEJPT0wpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGlkUHIKICAgICByZXR1cm4g
VFJVRTsKIH0KIAorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bk9wZW5QYW5l
bEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KGlkPFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyPilyZXN1bHRMaXN0ZW5lcgoreworICAgIHByaW50ZigiT1BFTiBQQU5FTFxuIik7Cisg
ICAgW3Jlc3VsdExpc3RlbmVyIGNob29zZUZpbGVuYW1lOm5pbF07Cit9CisKKy0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXNlbmRlciBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3Vs
dExpc3RlbmVyOihpZDxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4pcmVzdWx0TGlzdGVuZXIg
YWxsb3dNdWx0aXBsZUZpbGVzOihCT09MKWFsbG93TXVsdGlwbGVGaWxlcyBXRUJLSVRfT0JKQ19N
RVRIT0RfQU5OT1RBVElPTihBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wKQoreworICAg
IHByaW50ZigiT1BFTiBQQU5FTFxuIik7CisgICAgW3Jlc3VsdExpc3RlbmVyIGNob29zZUZpbGVu
YW1lOm5pbF07Cit9CisKIC0gKHZvaWQpZGVhbGxvYwogewogICAgIFtkcmFnZ2luZ0luZm8gcmVs
ZWFzZV07CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJlZVd4LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJlZVd4
LmNwcAkocmV2aXNpb24gODExMDEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVu
ZGVyVHJlZVd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkxheW91dFRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCiAjaW5jbHVk
ZSAiV29ya1F1ZXVlSXRlbS5oIgorI2luY2x1ZGUgIldlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0V3guaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHQuaD4K
IApAQCAtMjcyLDYgKzI3Myw3IEBAIGJvb2wgTXlBcHA6Ok9uSW5pdCgpCiAgICAgfQogCiAgICAg
d3hMb2dNZXNzYWdlKHd4VCgiU3RhcnRpbmcgRHVtcFJlbmRlclRvb2wsICVkIGFyZ3MuXG4iKSwg
YXJnYyk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0V3g6OnNldER1bXBSZW5kZXJUcmVlTW9k
ZUVuYWJsZWQodHJ1ZSk7CiAKICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7ICsraSkgewog
ICAgICAgICB3eFN0cmluZyBvcHRpb24gPSB3eFN0cmluZyhhcmd2W2ldKTsK
</data>
<flag name="review"
          id="78096"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92219</attachid>
            <date>2011-05-04 05:18:06 -0700</date>
            <delta_ts>2011-05-13 03:33:16 -0700</delta_ts>
            <desc>patch v4</desc>
            <filename>patch-not-require-gesture-for-file-dialog.txt</filename>
            <type>text/plain</type>
            <size>19552</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NzI2KQorKysgU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTUg
IEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMb2cgb3BlbiBwYW5lbCBzdGF0dXMgaW4gRFJUIG1v
ZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTEx
MAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorCiAyMDExLTA1LTAzICBK
dWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEBjb2RlYXVyb3JhLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDg1NzI2
KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjExLDYgKzYxMSwxMCBAQCB2b2lkIENocm9tZUNsaWVudDo6
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjCiAKIHZvaWQgQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwo
RnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBGaWxlQ2hvb3NlcikKIHsKKyAgICBp
ZiAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKCkp
IHsKKyAgICAgICAgZnByaW50ZihzdGRvdXQsICJPUEVOIFBBTkVMXG4iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KICAgICBSZWZQdHI8RmlsZUNob29zZXI+IGNob29zZXIgPSBwcnBGaWxlQ2hv
b3NlcjsKIAogICAgIEd0a1dpZGdldCogZGlhbG9nID0gZ3RrX2ZpbGVfY2hvb3Nlcl9kaWFsb2df
bmV3KF8oIlVwbG9hZCBGaWxlIiksCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gODU3MjYp
CisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzIEBACisyMDExLTAzLTE1ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTG9nIG9wZW4gcGFu
ZWwgc3RhdHVzIGluIERSVCBtb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTUxMTAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpydW5PcGVuUGFu
ZWwpOgorCiAyMDExLTA1LTAzICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEBjb2RlYXVy
b3JhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cAkocmV2aXNpb24gODU3MjYpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY5LDYgKzU2OSwxMCBAQCBOb3Rp
ZmljYXRpb25QcmVzZW50ZXIqIENocm9tZUNsaWVudFF0OjpuCiAKIHZvaWQgQ2hyb21lQ2xpZW50
UXQ6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IHBy
cEZpbGVDaG9vc2VyKQogeworICAgIGlmIChRV2ViUGFnZVByaXZhdGU6OmRydFJ1bikgeworICAg
ICAgICBwcmludGYoIk9QRU4gUEFORUxcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQogICAg
IFJlZlB0cjxGaWxlQ2hvb3Nlcj4gZmlsZUNob29zZXIgPSBwcnBGaWxlQ2hvb3NlcjsKICAgICBi
b29sIHN1cHBvcnRNdWx0aSA9IG1fd2ViUGFnZS0+c3VwcG9ydHNFeHRlbnNpb24oUVdlYlBhZ2U6
OkNob29zZU11bHRpcGxlRmlsZXNFeHRlbnNpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2
aXNpb24gODU3MjYpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIwIEBACisyMDExLTAzLTE1ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TG9nIG9wZW4gcGFuZWwgc3RhdHVzIGluIERSVCBtb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTAKKworICAgICAgICAqIFdlYktpdFN1cHBv
cnQvQ2hyb21lQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6
OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRXeC5jcHA6IEFkZGVkLgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0V3g6OkR1
bXBSZW5kZXJUcmVlU3VwcG9ydFd4KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFd4
Ojp+RHVtcFJlbmRlclRyZWVTdXBwb3J0V3gpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0V3g6OnNldER1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQpOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0V3g6OmR1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQpOgorICAgICAgICBBZGQg
Y2xhc3MgRHVtcFJlbmRlclRyZWVTdXBwb3J0V3ggaW4gb3JkZXIgdG8gZ2V0IHZhcmlvdXMgc3Rh
dHVzIG9mIERSVCBtb2RlLgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0V3guaDogQWRkZWQuCisKIDIwMTEtMDQtMjMgIEtldmluIE9sbGl2aWVyICA8a2V2aW5v
QHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeC4g
Rml4ZWQgY2FwaXRhbGl6YXRpb24gZm9yIGNhc2Ugc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLgpJbmRl
eDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3gu
Y3BwCShyZXZpc2lvbiA4NTcyNikKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9D
aHJvbWVDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpZiBF
TkFCTEUoREFUQUJBU0UpCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjZW5kaWYKKyNp
bmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRXeC5oIgogI2luY2x1ZGUgIkZpbGVDaG9vc2Vy
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTQ1Miw2
ICs0NTMsMTAgQEAgdm9pZCBDaHJvbWVDbGllbnRXeDo6c2Nyb2xsKGNvbnN0IEludFNpegogCiB2
b2lkIENocm9tZUNsaWVudFd4OjpydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVD
aG9vc2VyPikKIHsKKyAgICBpZiAoRHVtcFJlbmRlclRyZWVTdXBwb3J0V3g6OmR1bXBSZW5kZXJU
cmVlTW9kZUVuYWJsZWQoKSkgeworICAgICAgICBwcmludGYoIk9QRU4gUEFORUxcbiIpOworICAg
ICAgICByZXR1cm47CisgICAgfQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRXeC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFd4LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRXeC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBw
b3J0V3guaCIKKworYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRXeDo6c19kcnRSdW4gPSBmYWxz
ZTsKKworRHVtcFJlbmRlclRyZWVTdXBwb3J0V3g6OkR1bXBSZW5kZXJUcmVlU3VwcG9ydFd4KCkK
K3sKK30KKworRHVtcFJlbmRlclRyZWVTdXBwb3J0V3g6On5EdW1wUmVuZGVyVHJlZVN1cHBvcnRX
eCgpCit7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0V3g6OnNldER1bXBSZW5kZXJU
cmVlTW9kZUVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIHNfZHJ0UnVuID0gZW5hYmxlZDsK
K30KKworYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRXeDo6ZHVtcFJlbmRlclRyZWVNb2RlRW5h
YmxlZCgpCit7CisgICAgcmV0dXJuIHNfZHJ0UnVuOworfQpJbmRleDogU291cmNlL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFd4LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFd4LmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0V3guaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRHVt
cFJlbmRlclRyZWVTdXBwb3J0V3hfaAorI2RlZmluZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRXeF9o
CisKK2NsYXNzIER1bXBSZW5kZXJUcmVlU3VwcG9ydFd4IHsKKworcHVibGljOgorICAgIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFd4KCk7CisgICAgfkR1bXBSZW5kZXJUcmVlU3VwcG9ydFd4KCk7CisK
KyAgICBzdGF0aWMgdm9pZCBzZXREdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKGJvb2wpOworICAg
IHN0YXRpYyBib29sIGR1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoKTsKKworcHJpdmF0ZToKKyAg
ICBzdGF0aWMgYm9vbCBzX2RydFJ1bjsKK307CisKKyNlbmRpZgpJbmRleDogVG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gODU3MjYpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0wMy0x
NSAgSm9obm55IERpbmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExvZyBvcGVuIHBhbmVsIHN0YXR1cyBpbiBEUlQg
bW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1
MTEwCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6
CisgICAgICAgIChXZWJWaWV3SG9zdDo6cnVuRmlsZUNob29zZXIpOgorICAgICAgICBJbiBjaHJv
bWl1bSBwb3J0LCBvdmVycmlkZXMgV2ViVmlld0NsaWVudDo6cnVuRmlsZUNob29zZXIgdG8gbG9n
IHRoZSBzdGF0dXMuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaDoKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6cnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhS
ZXN1bHRMaXN0ZW5lcjpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB3ZWJWaWV3OnJ1bk9wZW5Q
YW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6YWxsb3dNdWx0aXBsZUZpbGVzOl0p
OgorICAgICAgICBJbiBtYWMgcG9ydCwgaW1wbGVtZW50cyBydW5PcGVuUGFuZWxGb3JGaWxlQnV0
dG9uV2l0aFJlc3VsdExpc3RlbmVyIGluIFVJRGVsZWdhdGUgdG8gbG9nIHRoZSBzdGF0dXMuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJlZVd4LmNwcDoKKyAgICAg
ICAgKE15QXBwOjpPbkluaXQpOgorICAgICAgICBJbiB3eCBwb3J0LCBpbml0aWFsaXplIERSVCBt
b2RlIHdoZW4gc3RhcnRpbmcgRHVtcFJlbmRlclRyZWUuCisKIDIwMTEtMDUtMDMgIFByYXRpayBT
b2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBC
ZXJuc3RlaW4uCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwCShyZXZpc2lvbiA4NTcyNikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQAogI2lu
Y2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgIldlYkRy
YWdEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYkZpbGVDaG9v
c2VyQ29tcGxldGlvbi5oIgorI2luY2x1ZGUgIldlYkZpbGVDaG9vc2VyUGFyYW1zLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCIK
ICNpbmNsdWRlICJXZWJIaXN0b3J5SXRlbS5oIgpAQCAtNDQ5LDYgKzQ1MSwxMiBAQCBXZWJTdHJp
bmcgV2ViVmlld0hvc3Q6OmF1dG9Db3JyZWN0V29yZChjCiAgICAgcmV0dXJuIFdlYlN0cmluZygp
OwogfQogCitib29sIFdlYlZpZXdIb3N0OjpydW5GaWxlQ2hvb3Nlcihjb25zdCBXZWJGaWxlQ2hv
b3NlclBhcmFtcyYsIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbiopCit7CisgICAgcHJpbnRmKCJP
UEVOIFBBTkVMXG4iKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgV2ViVmlld0hvc3Q6
OnJ1bk1vZGFsQWxlcnREaWFsb2coV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2Up
CiB7CiAgICAgcHJpbnRmKCJBTEVSVDogJXNcbiIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgJKHJldmlz
aW9uIDg1NzI2KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiBjbGFzcyBX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s7CitjbGFzcyBXZWJGaWxlQ2hvb3NlckNvbXBs
ZXRpb247CiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jazsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uU2VydmljZU1vY2s7CkBAIC01OSw2ICs2
MCw3IEBAIGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjsKIGNsYXNzIFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2s7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOwogY2xhc3Mg
V2ViVVJMOworc3RydWN0IFdlYkZpbGVDaG9vc2VyUGFyYW1zOwogc3RydWN0IFdlYlJlY3Q7CiBz
dHJ1Y3QgV2ViVVJMRXJyb3I7CiBzdHJ1Y3QgV2ViV2luZG93RmVhdHVyZXM7CkBAIC0xMzEsNiAr
MTMzLDcgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJTcAogICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50cygpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRF
ZGl0aW5nKCk7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUN1cnJlbnRLZXlib2FyZEV2ZW50KCk7
CisgICAgdmlydHVhbCBib29sIHJ1bkZpbGVDaG9vc2VyKGNvbnN0IFdlYktpdDo6V2ViRmlsZUNo
b29zZXJQYXJhbXMmLCBXZWJLaXQ6OldlYkZpbGVDaG9vc2VyQ29tcGxldGlvbiopOwogICAgIHZp
cnR1YWwgdm9pZCBydW5Nb2RhbEFsZXJ0RGlhbG9nKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBydW5Nb2RhbENvbmZpcm1EaWFs
b2coV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAgICAgdmly
dHVhbCBib29sIHJ1bk1vZGFsUHJvbXB0RGlhbG9nKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYgbWVzc2FnZSwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGRlZmF1
bHRWYWx1ZSwgV2ViS2l0OjpXZWJTdHJpbmcqIGFjdHVhbFZhbHVlKTsKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiA4NTcyNikKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsNiAr
MjU4LDE4IEBAIC0gKEJPT0wpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGlkUHIKICAgICBy
ZXR1cm4gVFJVRTsKIH0KIAorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bk9w
ZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KGlkPFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyPilyZXN1bHRMaXN0ZW5lcgoreworICAgIHByaW50ZigiT1BFTiBQQU5FTFxu
Iik7CisgICAgW3Jlc3VsdExpc3RlbmVyIGNob29zZUZpbGVuYW1lOm5pbF07Cit9CisKKy0gKHZv
aWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0
aFJlc3VsdExpc3RlbmVyOihpZDxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4pcmVzdWx0TGlz
dGVuZXIgYWxsb3dNdWx0aXBsZUZpbGVzOihCT09MKWFsbG93TXVsdGlwbGVGaWxlcyBXRUJLSVRf
T0JKQ19NRVRIT0RfQU5OT1RBVElPTihBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wKQor
eworICAgIHByaW50ZigiT1BFTiBQQU5FTFxuIik7CisgICAgW3Jlc3VsdExpc3RlbmVyIGNob29z
ZUZpbGVuYW1lOm5pbF07Cit9CisKIC0gKHZvaWQpZGVhbGxvYwogewogICAgIFtkcmFnZ2luZ0lu
Zm8gcmVsZWFzZV07CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJl
ZVd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVy
VHJlZVd4LmNwcAkocmV2aXNpb24gODU3MjYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9E
dW1wUmVuZGVyVHJlZVd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCiAj
aW5jbHVkZSAiV29ya1F1ZXVlSXRlbS5oIgorI2luY2x1ZGUgIldlYktpdFN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0V3guaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHQuaD4KIApAQCAtMjcyLDYgKzI3Myw3IEBAIGJvb2wgTXlBcHA6Ok9uSW5pdCgpCiAgICAgfQog
CiAgICAgd3hMb2dNZXNzYWdlKHd4VCgiU3RhcnRpbmcgRHVtcFJlbmRlclRvb2wsICVkIGFyZ3Mu
XG4iKSwgYXJnYyk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0V3g6OnNldER1bXBSZW5kZXJU
cmVlTW9kZUVuYWJsZWQodHJ1ZSk7CiAKICAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7ICsr
aSkgewogICAgICAgICB3eFN0cmluZyBvcHRpb24gPSB3eFN0cmluZyhhcmd2W2ldKTsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDg1NzI2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDMtMTUgIEpvaG5ueSBEaW5nICA8am5kQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBMb2cgYSBtZXNzYWdlIHdoZW4gb3BlbmluZyBhIGZpbGUgY2hvb3NlciBkaWFsb2cgaW4gbGF5
b3V0IHRlc3RzIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NTExMAorCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1maWxlLW5vdC1vcGVu
LXdpdGhvdXQtZ2VzdHVyZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1
dC1maWxlLW5vdC1vcGVuLXdpdGhvdXQtZ2VzdHVyZS5odG1sOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9Ta2lwcGVkOgorCiAyMDExLTA1LTA0ICBTYXRpc2ggU2FtcGF0aCAgPHNhdGlzaEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBHZW50aWxjb3JlLgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1maWxlLW5vdC1vcGVuLXdpdGhvdXQtZ2VzdHVy
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1
dC1maWxlLW5vdC1vcGVuLXdpdGhvdXQtZ2VzdHVyZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg1
NzI2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1maWxlLW5vdC1vcGVuLXdpdGhv
dXQtZ2VzdHVyZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw2IEBACitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IE9wZW4gdGhlIGZpbGUgZGlhbG9nIHdpdGhvdXQgYSB1
c2VyIGdlc3R1cmUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IE9wZW4gdGhlIGZpbGUgZGlh
bG9nIHdpdGggYSB1c2VyIGdlc3R1cmUuCitPUEVOIFBBTkVMCiAKLVRoaXMgZmlsZSBpcyB0byB0
ZXN0IHRoYXQgb3BlbmluZyBmaWxlIGRpYWxvZyByZXF1aXJlcyBhIHVzZXIgZ2VzdHVyZS4gUGxl
YXNlIHJlZmVyIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzU5
MyBmb3IgbW9yZSBkZXRhaWxzLgotVGVzdCBvcGVuaW5nIGZpbGUgZGlhbG9nIHdpdGhvdXQgdXNl
ciBnZXN0dXJlIGlzIFBBU1NFRAorVGhpcyBmaWxlIGlzIHRvIHRlc3QgdGhhdCBvcGVuaW5nIGZp
bGUgZGlhbG9nIHJlcXVpcmVzIGEgdXNlciBnZXN0dXJlLiBQbGVhc2UgcmVmZXIgdG8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NTkzIGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTAgZm9yIG1vcmUgZGV0YWlscy4KIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1maWxlLW5vdC1vcGVuLXdpdGhvdXQtZ2Vz
dHVyZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtZmls
ZS1ub3Qtb3Blbi13aXRob3V0LWdlc3R1cmUuaHRtbAkocmV2aXNpb24gODU3MjYpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWZpbGUtbm90LW9wZW4td2l0aG91dC1nZXN0dXJlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsNTcgKzQsMzUgQEAKIDxzY3JpcHQ+CiBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7CiAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQotY29uc3QgSU5JVElB
TD0gMDsKLWNvbnN0IE9QRU5fRklMRV9XSVRIT1VUX0dFU1RVUkUgPSAxOwotd2luZG93LnRlc3RT
dGFnZSA9IElOSVRJQUw7Ci13aW5kb3cuY2xpY2tSZWNlaXZlZCA9IGZhbHNlOwotd2luZG93LmNs
aWNrRmlyZWQgPSBmYWxzZTsKIAotZnVuY3Rpb24gY2hlY2tSZXN1bHQoY29udGludWVGdW5jKSB7
Ci0gICAgaWYgKCFjbGlja0ZpcmVkKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKGNsaWNrUmVj
ZWl2ZWQpIHsKLSAgICAgICAgLy8gV2hlbiB0aGUgZmlsZSBzZWxlY3QgZGlhbG9nIHNob3dzIHVw
LCBpdCdzIGEgbW9kZWwgd2luZG93IHdoaWNoIHJlY2VpdmVzCi0gICAgICAgIC8vIGFsbCBVSSBl
dmVudHMgc2VudCB0byB3aW5kb3csIHNvIHRoZSBjbGljayBldmVudCBjYW4gbm90IGJlIHJlY2Vp
dmVkIGJ5IGJvZHkuCi0gICAgICAgIC8vIElmIHdlIHJlY2VpdmVkIHRoZSBjbGljayBldmVudCwg
aXQgbWVhbnMgdGhlIGZpbGUgZGlhbG9nIHdhcyBub3Qgb3BlbmVkLgotICAgICAgICBpZiAodGVz
dFN0YWdlID09IE9QRU5fRklMRV9XSVRIT1VUX0dFU1RVUkUpCi0gICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgib3Blbl93aXRob3V0X2dlc3R1cmUiKS5pbm5lckhUTUwgPSAiUEFT
U0VEIjsKLSAgICAgICAgY2xpY2tSZWNlaXZlZCA9IGZhbHNlOwotICAgIH0gCi0gICAgY2xpY2tG
aXJlZCA9IGZhbHNlOwotICAgIGNvbnRpbnVlRnVuYygpOwotfQotCi1mdW5jdGlvbiBvcGVuRmls
ZURpYWxvZ1dpdGhvdXRVc2VyR2VzdHVyZSgpIHsKLSAgICAvLyBUcmllcyB0byBjYWxsIDxpbnB1
dCB0eXBlPWZpbGU+LmNsaWNrIHRvIG9wZW4gdGhlIGZpbGUgZGlhbG9nIHdpdGhvdXQgYSB1c2Vy
IGdlc3R1cmUuCi0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2YnKS5jbGljaygpOwotICAg
IC8vIEZpcmVzIGEgY2xpY2sgZXZlbnQuCi0gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAsIDEwMCk7CitmdW5jdGlvbiBvcGVuRmls
ZURpYWxvZyh3aXRoVXNlckdlc3R1cmUpIHsKKyAgICB3aW5kb3cuY29uc29sZS5sb2coIk9wZW4g
dGhlIGZpbGUgZGlhbG9nICIgKyAod2l0aFVzZXJHZXN0dXJlID8gIndpdGgiIDogIndpdGhvdXQi
KSArICIgYSB1c2VyIGdlc3R1cmUuIik7CisgICAgaWYgKHdpdGhVc2VyR2VzdHVyZSkgeworICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMCwgMTApOwogICAgICAgICBldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwotICAgICAgICBj
bGlja0ZpcmVkID0gdHJ1ZTsKLSAgICAgICAgdGVzdFN0YWdlID0gT1BFTl9GSUxFX1dJVEhPVVRf
R0VTVFVSRTsKLSAgICAgICAgLy8gV2FpdHMgZm9yIG9wZW5pbmcgdGhlIGZpbGUgZGlhbG9nIGFu
ZCBjaGVja3Mgd2hldGhlciB0aGUgY2xpY2sgZXZlbnQgY2FuIHN0aWxsIGJlIHJlY2VpdmVkIGJ5
IGRvY3VtZW50LgotICAgICAgICBzZXRUaW1lb3V0KCJjaGVja1Jlc3VsdChmdW5jdGlvbigpIHsg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9KSIsIDUwMCk7Ci0gICAgfSwgMSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2YnKS5jbGlj
aygpOworICAgIH0KIH0KIAogZnVuY3Rpb24gc3RhcnRUZXN0KCkgewogICAgIGlmICghd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICByZXR1cm47Ci0gICAgZG9jdW1lbnQuYm9k
eS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgeyB3aW5kb3cuY2xpY2tSZWNl
aXZlZCA9IHRydWUgfSwgdHJ1ZSk7Ci0gICAgc2V0VGltZW91dChvcGVuRmlsZURpYWxvZ1dpdGhv
dXRVc2VyR2VzdHVyZSwgMSk7CisgICAgb3BlbkZpbGVEaWFsb2coZmFsc2UpOworICAgIG9wZW5G
aWxlRGlhbG9nKHRydWUpOworICAgIC8vIFdhaXQgZm9yIHRoZSBsYXN0IHJlc3VsdCBhbmQgZW5k
IHRlc3QuCisgICAgc2V0VGltZW91dCgibGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
IiwgMTAwKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgc3R5bGU9Im1hcmdpbjowcHg7
IHBhZGRpbmc6MHB4IiBvbmxvYWQ9InN0YXJ0VGVzdCgpOyI+CiA8Zm9ybT4KLTxpbnB1dCB0eXBl
PSJmaWxlIiBuYW1lPSJmaWxlIiBpZD0iZiI+Cis8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZmls
ZSIgaWQ9ImYiIG9uY2xpY2s9InRoaXMuY2xpY2soKSI+CiA8L2Zvcm0+Ci1UaGlzIGZpbGUgaXMg
dG8gdGVzdCB0aGF0IG9wZW5pbmcgZmlsZSBkaWFsb2cgcmVxdWlyZXMgYSB1c2VyIGdlc3R1cmUu
IFBsZWFzZSByZWZlciB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDc1OTMgZm9yIG1vcmUgZGV0YWlscy48YnI+Ci1UZXN0IG9wZW5pbmcgZmlsZSBkaWFsb2cgd2l0
aG91dCB1c2VyIGdlc3R1cmUgaXMgPHNwYW4gaWQ9Im9wZW5fd2l0aG91dF9nZXN0dXJlIj5GQUlM
RUQ8L3NwYW4+PGJyPgorVGhpcyBmaWxlIGlzIHRvIHRlc3QgdGhhdCBvcGVuaW5nIGZpbGUgZGlh
bG9nIHJlcXVpcmVzIGEgdXNlciBnZXN0dXJlLiBQbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NTkzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTAgZm9yIG1vcmUgZGV0YWlscy48YnI+CiA8L2JvZHk+
CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNpb24gODU3MjYp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAt
MTIyNiw2ICsxMjI2LDEwIEBAIGZhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1zdW1tYXJ5LTYtYW5k
LWMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDk2CiBmYXN0
L2pzL2FycmF5LXNvcnQtbW9kaWZ5aW5nLXRvc3RyaW5nLmh0bWwKIAorIyBTaW5jZSBXZWJLaXQg
ZGlzcGxheXMgdGhlIGZpbGUgY2hvb3NlciBkaXJlY3RseSBvbiBXaW5kb3dzIGluc3RlYWQgb2Yg
dXNpbmcgVUlEZWxlZ2F0ZSwgd2UgbmVlZCB0byBza2lwIHRoZSBmb2xsb3dpbmcgdGVzdCBvbiB3
aW5kb3cgcG9ydC4KKyMgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NTExMCBmb3IgbW9yZSBkZXRhaWxzLgorZmFzdC9mb3Jtcy9pbnB1dC1maWxlLW5vdC1vcGVu
LXdpdGhvdXQtZ2VzdHVyZS5odG1sCisKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU2NTczCiBmYXN0L2RvbS9IVE1MS2V5Z2VuRWxlbWVudC9rZXlnZW4uaHRtbAog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93429</attachid>
            <date>2011-05-13 03:33:16 -0700</date>
            <delta_ts>2011-05-26 02:23:14 -0700</delta_ts>
            <desc>patch v4 (fix style complain)</desc>
            <filename>patch-not-require-gesture-for-file-dialog-2.txt</filename>
            <type>text/plain</type>
            <size>19510</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2NDE4KQorKysgU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTUg
IEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMb2cgb3BlbiBwYW5lbCBzdGF0dXMgaW4gRFJUIG1v
ZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTEx
MAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorCiAyMDExLTA1LTEyICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBBdHRlbXB0
IHRvIGZpeCB0aGUgR1RLKyB1bml0IHRlc3QgdGVzdHdlYnZpZXcgb24gdGhlIDMyLWJpdCBSZWxl
YXNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDg2NDE4KQorKysgU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAy
LDYgKzYwMiwxMCBAQCB2b2lkIENocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjCiAK
IHZvaWQgQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVD
aG9vc2VyPiBwcnBGaWxlQ2hvb3NlcikKIHsKKyAgICBpZiAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrOjpkdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRv
dXQsICJPUEVOIFBBTkVMXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBSZWZQdHI8
RmlsZUNob29zZXI+IGNob29zZXIgPSBwcnBGaWxlQ2hvb3NlcjsKIAogICAgIEd0a1dpZGdldCog
ZGlhbG9nID0gZ3RrX2ZpbGVfY2hvb3Nlcl9kaWFsb2dfbmV3KF8oIlVwbG9hZCBGaWxlIiksCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gODY0MTgpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTE1ICBKb2hu
bnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTG9nIG9wZW4gcGFuZWwgc3RhdHVzIGluIERSVCBtb2RlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTAKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjpydW5PcGVuUGFuZWwpOgorCiAyMDExLTA1LTEyICBZb3Vu
ZyBIYW4gTGVlICA8am95YnJvQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHJldmlzaW9uIDg2NDE4KQor
KysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU2OSw2ICs1NjksMTAgQEAgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBD
aHJvbWVDbGllbnRRdDo6bgogCiB2b2lkIENocm9tZUNsaWVudFF0OjpydW5PcGVuUGFuZWwoRnJh
bWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBGaWxlQ2hvb3NlcikKIHsKKyAg
ICBpZiAoUVdlYlBhZ2VQcml2YXRlOjpkcnRSdW4pIHsKKyAgICAgICAgcHJpbnRmKCJPUEVOIFBB
TkVMXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBSZWZQdHI8RmlsZUNob29zZXI+
IGZpbGVDaG9vc2VyID0gcHJwRmlsZUNob29zZXI7CiAgICAgYm9vbCBzdXBwb3J0TXVsdGkgPSBt
X3dlYlBhZ2UtPnN1cHBvcnRzRXh0ZW5zaW9uKFFXZWJQYWdlOjpDaG9vc2VNdWx0aXBsZUZpbGVz
RXh0ZW5zaW9uKTsKIApJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2NDE4KQorKysgU291
cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAor
MjAxMS0wMy0xNSAgSm9obm55IERpbmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExvZyBvcGVuIHBhbmVsIHN0YXR1
cyBpbiBEUlQgbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU1MTEwCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpydW5PcGVuUGFuZWwpOgorICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0V3guY3BwOiBBZGRlZC4K
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFd4OjpEdW1wUmVuZGVyVHJlZVN1cHBvcnRX
eCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRXeDo6fkR1bXBSZW5kZXJUcmVlU3Vw
cG9ydFd4KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFd4OjpzZXREdW1wUmVuZGVy
VHJlZU1vZGVFbmFibGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFd4OjpkdW1w
UmVuZGVyVHJlZU1vZGVFbmFibGVkKToKKyAgICAgICAgQWRkIGNsYXNzIER1bXBSZW5kZXJUcmVl
U3VwcG9ydFd4IGluIG9yZGVyIHRvIGdldCB2YXJpb3VzIHN0YXR1cyBvZiBEUlQgbW9kZS4KKyAg
ICAgICAgKiBXZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFd4Lmg6IEFkZGVkLgor
CiAyMDExLTA1LTA5ICBSb2JpbiBEdW5uICA8cm9iaW5AYWxsZHVubi5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAJKHJldmlzaW9uIDg2NDE4KQorKysg
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShEQVRBQkFTRSkKICNpbmNsdWRl
ICJEYXRhYmFzZVRyYWNrZXIuaCIKICNlbmRpZgorI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3Vw
cG9ydFd4LmgiCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNDUyLDYgKzQ1MywxMCBAQCB2b2lkIENocm9tZUNs
aWVudFd4OjpzY3JvbGwoY29uc3QgSW50U2l6CiAKIHZvaWQgQ2hyb21lQ2xpZW50V3g6OnJ1bk9w
ZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KQogeworICAgIGlmIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRXeDo6ZHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCgpKSB7CisgICAg
ICAgIHByaW50ZigiT1BFTiBQQU5FTFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0V3guY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFd4LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRXeC5oIgorCitib29sIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFd4OjpzX2RydFJ1biA9IGZhbHNlOworCitEdW1wUmVuZGVyVHJlZVN1cHBv
cnRXeDo6RHVtcFJlbmRlclRyZWVTdXBwb3J0V3goKQoreworfQorCitEdW1wUmVuZGVyVHJlZVN1
cHBvcnRXeDo6fkR1bXBSZW5kZXJUcmVlU3VwcG9ydFd4KCkKK3sKK30KKwordm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRXeDo6c2V0RHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZChib29sIGVuYWJs
ZWQpCit7CisgICAgc19kcnRSdW4gPSBlbmFibGVkOworfQorCitib29sIER1bXBSZW5kZXJUcmVl
U3VwcG9ydFd4OjpkdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gc19k
cnRSdW47Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0V3guaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRXeC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRXeF9oCisj
ZGVmaW5lIER1bXBSZW5kZXJUcmVlU3VwcG9ydFd4X2gKKworY2xhc3MgRHVtcFJlbmRlclRyZWVT
dXBwb3J0V3ggeworCitwdWJsaWM6CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0V3goKTsKKyAg
ICB+RHVtcFJlbmRlclRyZWVTdXBwb3J0V3goKTsKKworICAgIHN0YXRpYyB2b2lkIHNldER1bXBS
ZW5kZXJUcmVlTW9kZUVuYWJsZWQoYm9vbCk7CisgICAgc3RhdGljIGJvb2wgZHVtcFJlbmRlclRy
ZWVNb2RlRW5hYmxlZCgpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBib29sIHNfZHJ0UnVuOwor
fTsKKworI2VuZGlmCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA4NjQxOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDExLTAzLTE1ICBKb2hubnkgRGluZyAgPGpuZEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTG9nIG9wZW4gcGFuZWwgc3RhdHVzIGluIERSVCBtb2RlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTAKKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojpy
dW5GaWxlQ2hvb3Nlcik6CisgICAgICAgIEluIGNocm9taXVtIHBvcnQsIG92ZXJyaWRlcyBXZWJW
aWV3Q2xpZW50OjpydW5GaWxlQ2hvb3NlciB0byBsb2cgdGhlIHN0YXR1cy4KKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmll
dzpydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOl0pOgorICAgICAg
ICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6cnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1
bHRMaXN0ZW5lcjphbGxvd011bHRpcGxlRmlsZXM6XSk6CisgICAgICAgIEluIG1hYyBwb3J0LCBp
bXBsZW1lbnRzIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXIgaW4g
VUlEZWxlZ2F0ZSB0byBsb2cgdGhlIHN0YXR1cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwOgorICAgICAgICAoTXlBcHA6Ok9uSW5pdCk6CisgICAg
ICAgIEluIHd4IHBvcnQsIGluaXRpYWxpemUgRFJUIG1vZGUgd2hlbiBzdGFydGluZyBEdW1wUmVu
ZGVyVHJlZS4KKwogMjAxMS0wNS0xMiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHJldmlzaW9uIDg2NDE4
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBACiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAiV2ViRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJXZWJF
bGVtZW50LmgiCisjaW5jbHVkZSAiV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmgiCisjaW5jbHVk
ZSAiV2ViRmlsZUNob29zZXJQYXJhbXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1
ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVt
LmgiCkBAIC00NDksNiArNDUxLDEyIEBAIFdlYlN0cmluZyBXZWJWaWV3SG9zdDo6YXV0b0NvcnJl
Y3RXb3JkKGMKICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CiB9CiAKK2Jvb2wgV2ViVmlld0hvc3Q6
OnJ1bkZpbGVDaG9vc2VyKGNvbnN0IFdlYkZpbGVDaG9vc2VyUGFyYW1zJiwgV2ViRmlsZUNob29z
ZXJDb21wbGV0aW9uKikKK3sKKyAgICBwcmludGYoIk9QRU4gUEFORUxcbiIpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwogdm9pZCBXZWJWaWV3SG9zdDo6cnVuTW9kYWxBbGVydERpYWxvZyhXZWJG
cmFtZSosIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBwcmludGYoIkFMRVJUOiAl
c1xuIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAkocmV2aXNpb24gODY0MTgpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2
ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jazsKK2NsYXNzIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbjsKIGNsYXNzIFdlYkdlb2xvY2F0
aW9uQ2xpZW50OwogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOwogY2xhc3MgV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlTW9jazsKQEAgLTU5LDYgKzYwLDcgQEAgY2xhc3MgV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jazsKIGNsYXNz
IFdlYlNwZWVjaElucHV0TGlzdGVuZXI7CiBjbGFzcyBXZWJVUkw7CitzdHJ1Y3QgV2ViRmlsZUNo
b29zZXJQYXJhbXM7CiBzdHJ1Y3QgV2ViUmVjdDsKIHN0cnVjdCBXZWJVUkxFcnJvcjsKIHN0cnVj
dCBXZWJXaW5kb3dGZWF0dXJlczsKQEAgLTEzMSw2ICsxMzMsNyBAQCBjbGFzcyBXZWJWaWV3SG9z
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRl
bnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKICAgICB2aXJ0dWFsIGJv
b2wgaGFuZGxlQ3VycmVudEtleWJvYXJkRXZlbnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgcnVuRmls
ZUNob29zZXIoY29uc3QgV2ViS2l0OjpXZWJGaWxlQ2hvb3NlclBhcmFtcyYsIFdlYktpdDo6V2Vi
RmlsZUNob29zZXJDb21wbGV0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsQWxlcnRE
aWFsb2coV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAgICAg
dmlydHVhbCBib29sIHJ1bk1vZGFsQ29uZmlybURpYWxvZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgcnVuTW9kYWxQcm9tcHRE
aWFsb2coV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJLaXQ6OldlYlN0cmlu
ZyogYWN0dWFsVmFsdWUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdh
dGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUu
bW0JKHJldmlzaW9uIDg2NDE4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdh
dGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsMTggQEAgLSAoQk9PTCl3ZWJWaWV3
OihXZWJWaWV3ICopd2ViVmlldyBkaWRQcgogICAgIHJldHVybiBUUlVFOwogfQogCistICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgcnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhS
ZXN1bHRMaXN0ZW5lcjooaWQ8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+KXJlc3VsdExpc3Rl
bmVyCit7CisgICAgcHJpbnRmKCJPUEVOIFBBTkVMXG4iKTsKKyAgICBbcmVzdWx0TGlzdGVuZXIg
Y2hvb3NlRmlsZW5hbWU6bmlsXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KGlkPFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyPilyZXN1bHRMaXN0ZW5lciBhbGxvd011bHRpcGxlRmlsZXM6
KEJPT0wpYWxsb3dNdWx0aXBsZUZpbGVzIFdFQktJVF9PQkpDX01FVEhPRF9BTk5PVEFUSU9OKEFW
QUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzApCit7CisgICAgcHJpbnRmKCJPUEVOIFBBTkVM
XG4iKTsKKyAgICBbcmVzdWx0TGlzdGVuZXIgY2hvb3NlRmlsZW5hbWU6bmlsXTsKK30KKwogLSAo
dm9pZClkZWFsbG9jCiB7CiAgICAgW2RyYWdnaW5nSW5mbyByZWxlYXNlXTsKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwCShyZXZpc2lvbiA4NjQx
OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWUuaCIK
IAogI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViS2l0U3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRXeC5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgog
I2luY2x1ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKIApAQCAtMjcyLDYgKzI3Myw3IEBAIGJvb2wgTXlB
cHA6Ok9uSW5pdCgpCiAgICAgfQogCiAgICAgd3hMb2dNZXNzYWdlKHd4VCgiU3RhcnRpbmcgRHVt
cFJlbmRlclRvb2wsICVkIGFyZ3MuXG4iKSwgYXJnYyk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBw
b3J0V3g6OnNldER1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQodHJ1ZSk7CiAKICAgICBmb3IgKGlu
dCBpID0gMTsgaSA8IGFyZ2M7ICsraSkgewogICAgICAgICB3eFN0cmluZyBvcHRpb24gPSB3eFN0
cmluZyhhcmd2W2ldKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2NDE4KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDMtMTUgIEpv
aG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBMb2cgYSBtZXNzYWdlIHdoZW4gb3BlbmluZyBhIGZpbGUg
Y2hvb3NlciBkaWFsb2cgaW4gbGF5b3V0IHRlc3RzIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTExMAorCisgICAgICAgICogZmFzdC9mb3Jt
cy9pbnB1dC1maWxlLW5vdC1vcGVuLXdpdGhvdXQtZ2VzdHVyZS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9mb3Jtcy9pbnB1dC1maWxlLW5vdC1vcGVuLXdpdGhvdXQtZ2VzdHVyZS5odG1s
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDExLTA1LTEzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgdGVzdCBj
aGFuZ2VzLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1maWxlLW5vdC1vcGVu
LXdpdGhvdXQtZ2VzdHVyZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9pbnB1dC1maWxlLW5vdC1vcGVuLXdpdGhvdXQtZ2VzdHVyZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDg2NDE4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1maWxl
LW5vdC1vcGVuLXdpdGhvdXQtZ2VzdHVyZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSw2IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IE9wZW4gdGhlIGZpbGUgZGlh
bG9nIHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IE9w
ZW4gdGhlIGZpbGUgZGlhbG9nIHdpdGggYSB1c2VyIGdlc3R1cmUuCitPUEVOIFBBTkVMCiAKLVRo
aXMgZmlsZSBpcyB0byB0ZXN0IHRoYXQgb3BlbmluZyBmaWxlIGRpYWxvZyByZXF1aXJlcyBhIHVz
ZXIgZ2VzdHVyZS4gUGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NzU5MyBmb3IgbW9yZSBkZXRhaWxzLgotVGVzdCBvcGVuaW5nIGZpbGUgZGlh
bG9nIHdpdGhvdXQgdXNlciBnZXN0dXJlIGlzIFBBU1NFRAorVGhpcyBmaWxlIGlzIHRvIHRlc3Qg
dGhhdCBvcGVuaW5nIGZpbGUgZGlhbG9nIHJlcXVpcmVzIGEgdXNlciBnZXN0dXJlLiBQbGVhc2Ug
cmVmZXIgdG8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NTkzIGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTAgZm9yIG1vcmUg
ZGV0YWlscy4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1maWxlLW5vdC1v
cGVuLXdpdGhvdXQtZ2VzdHVyZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtZmlsZS1ub3Qtb3Blbi13aXRob3V0LWdlc3R1cmUuaHRtbAkocmV2aXNpb24g
ODY0MTgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWZpbGUtbm90LW9wZW4td2l0
aG91dC1nZXN0dXJlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsNTcgKzQsMzUgQEAKIDxzY3Jp
cHQ+CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9w
ZW5XaW5kb3dzKCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwog
fQotY29uc3QgSU5JVElBTD0gMDsKLWNvbnN0IE9QRU5fRklMRV9XSVRIT1VUX0dFU1RVUkUgPSAx
Owotd2luZG93LnRlc3RTdGFnZSA9IElOSVRJQUw7Ci13aW5kb3cuY2xpY2tSZWNlaXZlZCA9IGZh
bHNlOwotd2luZG93LmNsaWNrRmlyZWQgPSBmYWxzZTsKIAotZnVuY3Rpb24gY2hlY2tSZXN1bHQo
Y29udGludWVGdW5jKSB7Ci0gICAgaWYgKCFjbGlja0ZpcmVkKQotICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKGNsaWNrUmVjZWl2ZWQpIHsKLSAgICAgICAgLy8gV2hlbiB0aGUgZmlsZSBzZWxlY3Qg
ZGlhbG9nIHNob3dzIHVwLCBpdCdzIGEgbW9kZWwgd2luZG93IHdoaWNoIHJlY2VpdmVzCi0gICAg
ICAgIC8vIGFsbCBVSSBldmVudHMgc2VudCB0byB3aW5kb3csIHNvIHRoZSBjbGljayBldmVudCBj
YW4gbm90IGJlIHJlY2VpdmVkIGJ5IGJvZHkuCi0gICAgICAgIC8vIElmIHdlIHJlY2VpdmVkIHRo
ZSBjbGljayBldmVudCwgaXQgbWVhbnMgdGhlIGZpbGUgZGlhbG9nIHdhcyBub3Qgb3BlbmVkLgot
ICAgICAgICBpZiAodGVzdFN0YWdlID09IE9QRU5fRklMRV9XSVRIT1VUX0dFU1RVUkUpCi0gICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3Blbl93aXRob3V0X2dlc3R1cmUiKS5p
bm5lckhUTUwgPSAiUEFTU0VEIjsKLSAgICAgICAgY2xpY2tSZWNlaXZlZCA9IGZhbHNlOwotICAg
IH0gCi0gICAgY2xpY2tGaXJlZCA9IGZhbHNlOwotICAgIGNvbnRpbnVlRnVuYygpOwotfQotCi1m
dW5jdGlvbiBvcGVuRmlsZURpYWxvZ1dpdGhvdXRVc2VyR2VzdHVyZSgpIHsKLSAgICAvLyBUcmll
cyB0byBjYWxsIDxpbnB1dCB0eXBlPWZpbGU+LmNsaWNrIHRvIG9wZW4gdGhlIGZpbGUgZGlhbG9n
IHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUuCi0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Yn
KS5jbGljaygpOwotICAgIC8vIEZpcmVzIGEgY2xpY2sgZXZlbnQuCi0gICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAsIDEwMCk7Citm
dW5jdGlvbiBvcGVuRmlsZURpYWxvZyh3aXRoVXNlckdlc3R1cmUpIHsKKyAgICB3aW5kb3cuY29u
c29sZS5sb2coIk9wZW4gdGhlIGZpbGUgZGlhbG9nICIgKyAod2l0aFVzZXJHZXN0dXJlID8gIndp
dGgiIDogIndpdGhvdXQiKSArICIgYSB1c2VyIGdlc3R1cmUuIik7CisgICAgaWYgKHdpdGhVc2Vy
R2VzdHVyZSkgeworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMCwgMTApOwogICAg
ICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOwotICAgICAgICBjbGlja0ZpcmVkID0gdHJ1ZTsKLSAgICAgICAgdGVzdFN0YWdlID0gT1BF
Tl9GSUxFX1dJVEhPVVRfR0VTVFVSRTsKLSAgICAgICAgLy8gV2FpdHMgZm9yIG9wZW5pbmcgdGhl
IGZpbGUgZGlhbG9nIGFuZCBjaGVja3Mgd2hldGhlciB0aGUgY2xpY2sgZXZlbnQgY2FuIHN0aWxs
IGJlIHJlY2VpdmVkIGJ5IGRvY3VtZW50LgotICAgICAgICBzZXRUaW1lb3V0KCJjaGVja1Jlc3Vs
dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9KSIsIDUw
MCk7Ci0gICAgfSwgMSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2YnKS5jbGljaygpOworICAgIH0KIH0KIAogZnVuY3Rpb24gc3RhcnRUZXN0KCkgewog
ICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICByZXR1cm47Ci0g
ICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgeyB3
aW5kb3cuY2xpY2tSZWNlaXZlZCA9IHRydWUgfSwgdHJ1ZSk7Ci0gICAgc2V0VGltZW91dChvcGVu
RmlsZURpYWxvZ1dpdGhvdXRVc2VyR2VzdHVyZSwgMSk7CisgICAgb3BlbkZpbGVEaWFsb2coZmFs
c2UpOworICAgIG9wZW5GaWxlRGlhbG9nKHRydWUpOworICAgIC8vIFdhaXQgZm9yIHRoZSBsYXN0
IHJlc3VsdCBhbmQgZW5kIHRlc3QuCisgICAgc2V0VGltZW91dCgibGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpIiwgMTAwKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgc3R5
bGU9Im1hcmdpbjowcHg7IHBhZGRpbmc6MHB4IiBvbmxvYWQ9InN0YXJ0VGVzdCgpOyI+CiA8Zm9y
bT4KLTxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiBpZD0iZiI+Cis8aW5wdXQgdHlwZT0i
ZmlsZSIgbmFtZT0iZmlsZSIgaWQ9ImYiIG9uY2xpY2s9InRoaXMuY2xpY2soKSI+CiA8L2Zvcm0+
Ci1UaGlzIGZpbGUgaXMgdG8gdGVzdCB0aGF0IG9wZW5pbmcgZmlsZSBkaWFsb2cgcmVxdWlyZXMg
YSB1c2VyIGdlc3R1cmUuIFBsZWFzZSByZWZlciB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDc1OTMgZm9yIG1vcmUgZGV0YWlscy48YnI+Ci1UZXN0IG9wZW5pbmcg
ZmlsZSBkaWFsb2cgd2l0aG91dCB1c2VyIGdlc3R1cmUgaXMgPHNwYW4gaWQ9Im9wZW5fd2l0aG91
dF9nZXN0dXJlIj5GQUlMRUQ8L3NwYW4+PGJyPgorVGhpcyBmaWxlIGlzIHRvIHRlc3QgdGhhdCBv
cGVuaW5nIGZpbGUgZGlhbG9nIHJlcXVpcmVzIGEgdXNlciBnZXN0dXJlLiBQbGVhc2UgcmVmZXIg
dG8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NTkzIGFuZCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTAgZm9yIG1vcmUgZGV0YWls
cy48YnI+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAko
cmV2aXNpb24gODY0MTgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29y
a2luZyBjb3B5KQpAQCAtMTIzNCw2ICsxMjM0LDEwIEBAIGZhc3QvaHRtbC9kZXRhaWxzLXJlbW92
ZS1zdW1tYXJ5LTYtYW5kLWMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU2NDk2CiBmYXN0L2pzL2FycmF5LXNvcnQtbW9kaWZ5aW5nLXRvc3RyaW5nLmh0bWwKIAor
IyBTaW5jZSBXZWJLaXQgZGlzcGxheXMgdGhlIGZpbGUgY2hvb3NlciBkaXJlY3RseSBvbiBXaW5k
b3dzIGluc3RlYWQgb2YgdXNpbmcgVUlEZWxlZ2F0ZSwgd2UgbmVlZCB0byBza2lwIHRoZSBmb2xs
b3dpbmcgdGVzdCBvbiB3aW5kb3cgcG9ydC4KKyMgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NTExMCBmb3IgbW9yZSBkZXRhaWxzLgorZmFzdC9mb3Jtcy9pbnB1
dC1maWxlLW5vdC1vcGVuLXdpdGhvdXQtZ2VzdHVyZS5odG1sCisKICMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NTczCiBmYXN0L2RvbS9IVE1MS2V5Z2VuRWxlbWVu
dC9rZXlnZW4uaHRtbAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94948</attachid>
            <date>2011-05-26 02:23:14 -0700</date>
            <delta_ts>2011-05-26 05:59:56 -0700</delta_ts>
            <desc>patch v5</desc>
            <filename>patch-not-require-gesture-for-file-dialog.txt</filename>
            <type>text/plain</type>
            <size>19488</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3MzU5KQorKysgU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTUg
IEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMb2cgb3BlbiBwYW5lbCBzdGF0dXMgaW4gRFJUIG1v
ZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTEx
MAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorCiAyMDExLTA1LTIyICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQnVpbGQgZml4LiAgTW9y
ZSBwdWJsaWMgZGVzdHJ1Y3RvcnMgbmVlZGVkIHRvIHBsYXkgbmljZSB3aXRoIE93blB0ci4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcAkocmV2aXNpb24gODczNTkpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDMsNiArNjAz
LDEwIEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWMKIAogdm9pZCBD
aHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+
IHBycEZpbGVDaG9vc2VyKQogeworICAgIGlmIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmR1
bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoKSkgeworICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIk9Q
RU4gUEFORUxcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIFJlZlB0cjxGaWxlQ2hv
b3Nlcj4gY2hvb3NlciA9IHBycEZpbGVDaG9vc2VyOwogCiAgICAgR3RrV2lkZ2V0KiBkaWFsb2cg
PSBndGtfZmlsZV9jaG9vc2VyX2RpYWxvZ19uZXcoXygiVXBsb2FkIEZpbGUiKSwKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiA4NzM1OSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTUgIEpvaG5ueSBEaW5n
ICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBMb2cgb3BlbiBwYW5lbCBzdGF0dXMgaW4gRFJUIG1vZGUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTExMAorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50UXQ6OnJ1bk9wZW5QYW5lbCk6CisKIDIwMTEtMDUtMjUgIENhaW8gTWFyY2Vs
byBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHJldmlzaW9uIDg3MzU5
KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU3OCw2ICs1NzgsMTAgQEAgTm90aWZpY2F0aW9uUHJlc2VudGVy
KiBDaHJvbWVDbGllbnRRdDo6bgogCiB2b2lkIENocm9tZUNsaWVudFF0OjpydW5PcGVuUGFuZWwo
RnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBGaWxlQ2hvb3NlcikKIHsK
KyAgICBpZiAoUVdlYlBhZ2VQcml2YXRlOjpkcnRSdW4pIHsKKyAgICAgICAgcHJpbnRmKCJPUEVO
IFBBTkVMXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBSZWZQdHI8RmlsZUNob29z
ZXI+IGZpbGVDaG9vc2VyID0gcHJwRmlsZUNob29zZXI7CiAgICAgYm9vbCBzdXBwb3J0TXVsdGkg
PSBtX3dlYlBhZ2UtPnN1cHBvcnRzRXh0ZW5zaW9uKFFXZWJQYWdlOjpDaG9vc2VNdWx0aXBsZUZp
bGVzRXh0ZW5zaW9uKTsKIApJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3MzU5KQorKysg
U291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBA
QAorMjAxMS0wMy0xNSAgSm9obm55IERpbmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExvZyBvcGVuIHBhbmVsIHN0
YXR1cyBpbiBEUlQgbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU1MTEwCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpydW5PcGVuUGFuZWwpOgor
ICAgICAgICAqIFdlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0V3guY3BwOiBBZGRl
ZC4KKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFd4OjpEdW1wUmVuZGVyVHJlZVN1cHBv
cnRXeCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRXeDo6fkR1bXBSZW5kZXJUcmVl
U3VwcG9ydFd4KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFd4OjpzZXREdW1wUmVu
ZGVyVHJlZU1vZGVFbmFibGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFd4Ojpk
dW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKToKKyAgICAgICAgQWRkIGNsYXNzIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFd4IGluIG9yZGVyIHRvIGdldCB2YXJpb3VzIHN0YXR1cyBvZiBEUlQgbW9kZS4K
KyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFd4Lmg6IEFkZGVk
LgorCiAyMDExLTA1LTEzICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAJKHJldmlzaW9uIDg3MzU5KQorKysgU291
cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShEQVRBQkFTRSkKICNpbmNsdWRlICJE
YXRhYmFzZVRyYWNrZXIuaCIKICNlbmRpZgorI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9y
dFd4LmgiCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNDUyLDYgKzQ1MywxMCBAQCB2b2lkIENocm9tZUNsaWVu
dFd4OjpzY3JvbGwoY29uc3QgSW50U2l6CiAKIHZvaWQgQ2hyb21lQ2xpZW50V3g6OnJ1bk9wZW5Q
YW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KQogeworICAgIGlmIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRXeDo6ZHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCgpKSB7CisgICAgICAg
IHByaW50ZigiT1BFTiBQQU5FTFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0V3guY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dFd4LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRXeC5oIgorCitib29sIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFd4OjpzX2RydFJ1biA9IGZhbHNlOworCitEdW1wUmVuZGVyVHJlZVN1cHBvcnRX
eDo6RHVtcFJlbmRlclRyZWVTdXBwb3J0V3goKQoreworfQorCitEdW1wUmVuZGVyVHJlZVN1cHBv
cnRXeDo6fkR1bXBSZW5kZXJUcmVlU3VwcG9ydFd4KCkKK3sKK30KKwordm9pZCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRXeDo6c2V0RHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZChib29sIGVuYWJsZWQp
Cit7CisgICAgc19kcnRSdW4gPSBlbmFibGVkOworfQorCitib29sIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFd4OjpkdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gc19kcnRS
dW47Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0V3guaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRXeC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRXeF9oCisjZGVm
aW5lIER1bXBSZW5kZXJUcmVlU3VwcG9ydFd4X2gKKworY2xhc3MgRHVtcFJlbmRlclRyZWVTdXBw
b3J0V3ggeworCitwdWJsaWM6CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0V3goKTsKKyAgICB+
RHVtcFJlbmRlclRyZWVTdXBwb3J0V3goKTsKKworICAgIHN0YXRpYyB2b2lkIHNldER1bXBSZW5k
ZXJUcmVlTW9kZUVuYWJsZWQoYm9vbCk7CisgICAgc3RhdGljIGJvb2wgZHVtcFJlbmRlclRyZWVN
b2RlRW5hYmxlZCgpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBib29sIHNfZHJ0UnVuOworfTsK
KworI2VuZGlmCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA4NzM1OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI0IEBACisyMDExLTAzLTE1ICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TG9nIG9wZW4gcGFuZWwgc3RhdHVzIGluIERSVCBtb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTAKKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpydW5G
aWxlQ2hvb3Nlcik6CisgICAgICAgIEluIGNocm9taXVtIHBvcnQsIG92ZXJyaWRlcyBXZWJWaWV3
Q2xpZW50OjpydW5GaWxlQ2hvb3NlciB0byBsb2cgdGhlIHN0YXR1cy4KKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpy
dW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOl0pOgorICAgICAgICAo
LVtVSURlbGVnYXRlIHdlYlZpZXc6cnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRM
aXN0ZW5lcjphbGxvd011bHRpcGxlRmlsZXM6XSk6CisgICAgICAgIEluIG1hYyBwb3J0LCBpbXBs
ZW1lbnRzIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXIgaW4gVUlE
ZWxlZ2F0ZSB0byBsb2cgdGhlIHN0YXR1cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4
L0R1bXBSZW5kZXJUcmVlV3guY3BwOgorICAgICAgICAoTXlBcHA6Ok9uSW5pdCk6CisgICAgICAg
IEluIHd4IHBvcnQsIGluaXRpYWxpemUgRFJUIG1vZGUgd2hlbiBzdGFydGluZyBEdW1wUmVuZGVy
VHJlZS4KKwogMjAxMS0wNS0yNSAgUWkgWmhhbmcgIDxxaS4yLnpoYW5nQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHJldmlzaW9uIDg3MzU5KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0Miw4IEBACiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrLmgiCiAjaW5jbHVkZSAiV2ViRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50
LmgiCisjaW5jbHVkZSAiV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
RmlsZUNob29zZXJQYXJhbXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldl
Ykdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCkBA
IC00NDksNiArNDUxLDEyIEBAIFdlYlN0cmluZyBXZWJWaWV3SG9zdDo6YXV0b0NvcnJlY3RXb3Jk
KGMKICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CiB9CiAKK2Jvb2wgV2ViVmlld0hvc3Q6OnJ1bkZp
bGVDaG9vc2VyKGNvbnN0IFdlYkZpbGVDaG9vc2VyUGFyYW1zJiwgV2ViRmlsZUNob29zZXJDb21w
bGV0aW9uKikKK3sKKyAgICBwcmludGYoIk9QRU4gUEFORUxcbiIpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogdm9pZCBXZWJWaWV3SG9zdDo6cnVuTW9kYWxBbGVydERpYWxvZyhXZWJGcmFtZSos
IGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBwcmludGYoIkFMRVJUOiAlc1xuIiwg
bWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaAkocmV2aXNpb24gODczNTkpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazsK
K2NsYXNzIFdlYkZpbGVDaG9vc2VyQ29tcGxldGlvbjsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50OwogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOwogY2xhc3MgV2ViR2VvbG9jYXRp
b25TZXJ2aWNlTW9jazsKQEAgLTU5LDYgKzYwLDcgQEAgY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jazsKIGNsYXNzIFdlYlNw
ZWVjaElucHV0TGlzdGVuZXI7CiBjbGFzcyBXZWJVUkw7CitzdHJ1Y3QgV2ViRmlsZUNob29zZXJQ
YXJhbXM7CiBzdHJ1Y3QgV2ViUmVjdDsKIHN0cnVjdCBXZWJVUkxFcnJvcjsKIHN0cnVjdCBXZWJX
aW5kb3dGZWF0dXJlczsKQEAgLTEzMSw2ICsxMzMsNyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1
YmxpYyBXZWJLaXQ6OldlYlNwCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlQ3VycmVudEtleWJvYXJkRXZlbnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgcnVuRmlsZUNob29z
ZXIoY29uc3QgV2ViS2l0OjpXZWJGaWxlQ2hvb3NlclBhcmFtcyYsIFdlYktpdDo6V2ViRmlsZUNo
b29zZXJDb21wbGV0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsQWxlcnREaWFsb2co
V2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAgICAgdmlydHVh
bCBib29sIHJ1bk1vZGFsQ29uZmlybURpYWxvZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2Vi
S2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgcnVuTW9kYWxQcm9tcHREaWFsb2co
V2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBXZWJLaXQ6OldlYlN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJLaXQ6OldlYlN0cmluZyogYWN0
dWFsVmFsdWUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHJl
dmlzaW9uIDg3MzU5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsMTggQEAgLSAoQk9PTCl3ZWJWaWV3OihXZWJW
aWV3ICopd2ViVmlldyBkaWRQcgogICAgIHJldHVybiBUUlVFOwogfQogCistICh2b2lkKXdlYlZp
ZXc6KFdlYlZpZXcgKilzZW5kZXIgcnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRM
aXN0ZW5lcjooaWQ8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+KXJlc3VsdExpc3RlbmVyCit7
CisgICAgcHJpbnRmKCJPUEVOIFBBTkVMXG4iKTsKKyAgICBbcmVzdWx0TGlzdGVuZXIgY2hvb3Nl
RmlsZW5hbWU6bmlsXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1
bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KGlkPFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyPilyZXN1bHRMaXN0ZW5lciBhbGxvd011bHRpcGxlRmlsZXM6KEJPT0wp
YWxsb3dNdWx0aXBsZUZpbGVzIFdFQktJVF9PQkpDX01FVEhPRF9BTk5PVEFUSU9OKEFWQUlMQUJM
RV9JTl9XRUJLSVRfVkVSU0lPTl80XzApCit7CisgICAgcHJpbnRmKCJPUEVOIFBBTkVMXG4iKTsK
KyAgICBbcmVzdWx0TGlzdGVuZXIgY2hvb3NlRmlsZW5hbWU6bmlsXTsKK30KKwogLSAodm9pZClk
ZWFsbG9jCiB7CiAgICAgW2RyYWdnaW5nSW5mbyByZWxlYXNlXTsKSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwCShyZXZpc2lvbiA4NzM1OSkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKIAogI2lu
Y2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViS2l0U3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRXeC5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgogI2luY2x1
ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKIApAQCAtMjcyLDYgKzI3Myw3IEBAIGJvb2wgTXlBcHA6Ok9u
SW5pdCgpCiAgICAgfQogCiAgICAgd3hMb2dNZXNzYWdlKHd4VCgiU3RhcnRpbmcgRHVtcFJlbmRl
clRvb2wsICVkIGFyZ3MuXG4iKSwgYXJnYyk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0V3g6
OnNldER1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQodHJ1ZSk7CiAKICAgICBmb3IgKGludCBpID0g
MTsgaSA8IGFyZ2M7ICsraSkgewogICAgICAgICB3eFN0cmluZyBvcHRpb24gPSB3eFN0cmluZyhh
cmd2W2ldKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3MzU5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDMtMTUgIEpvaG5ueSBE
aW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBMb2cgYSBtZXNzYWdlIHdoZW4gb3BlbmluZyBhIGZpbGUgY2hvb3Nl
ciBkaWFsb2cgaW4gbGF5b3V0IHRlc3RzIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTExMAorCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1
dC1maWxlLW5vdC1vcGVuLXdpdGhvdXQtZ2VzdHVyZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9mb3Jtcy9pbnB1dC1maWxlLW5vdC1vcGVuLXdpdGhvdXQtZ2VzdHVyZS5odG1sOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDExLTA1LTI1ICBJZ29yIE9saXZlaXJh
ICA8aWdvci5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
dG9uaW8gR29tZXMuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWZpbGUtbm90
LW9wZW4td2l0aG91dC1nZXN0dXJlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWZpbGUtbm90LW9wZW4td2l0aG91dC1nZXN0dXJlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gODczNTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0
LWZpbGUtbm90LW9wZW4td2l0aG91dC1nZXN0dXJlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDYgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMjogT3BlbiB0aGUgZmls
ZSBkaWFsb2cgd2l0aG91dCBhIHVzZXIgZ2VzdHVyZS4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAx
MjogT3BlbiB0aGUgZmlsZSBkaWFsb2cgd2l0aCBhIHVzZXIgZ2VzdHVyZS4KK09QRU4gUEFORUwK
IAotVGhpcyBmaWxlIGlzIHRvIHRlc3QgdGhhdCBvcGVuaW5nIGZpbGUgZGlhbG9nIHJlcXVpcmVz
IGEgdXNlciBnZXN0dXJlLiBQbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ3NTkzIGZvciBtb3JlIGRldGFpbHMuCi1UZXN0IG9wZW5pbmcgZmls
ZSBkaWFsb2cgd2l0aG91dCB1c2VyIGdlc3R1cmUgaXMgUEFTU0VECitUaGlzIGZpbGUgaXMgdG8g
dGVzdCB0aGF0IG9wZW5pbmcgZmlsZSBkaWFsb2cgcmVxdWlyZXMgYSB1c2VyIGdlc3R1cmUuIFBs
ZWFzZSByZWZlciB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc1
OTMgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTExMCBmb3Ig
bW9yZSBkZXRhaWxzLgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWZpbGUt
bm90LW9wZW4td2l0aG91dC1nZXN0dXJlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9pbnB1dC1maWxlLW5vdC1vcGVuLXdpdGhvdXQtZ2VzdHVyZS5odG1sCShyZXZp
c2lvbiA4NzM1OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtZmlsZS1ub3Qtb3Bl
bi13aXRob3V0LWdlc3R1cmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw1NyArNCwzNCBAQAog
PHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
Q2FuT3BlbldpbmRvd3MoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CiB9Ci1jb25zdCBJTklUSUFMPSAwOwotY29uc3QgT1BFTl9GSUxFX1dJVEhPVVRfR0VTVFVS
RSA9IDE7Ci13aW5kb3cudGVzdFN0YWdlID0gSU5JVElBTDsKLXdpbmRvdy5jbGlja1JlY2VpdmVk
ID0gZmFsc2U7Ci13aW5kb3cuY2xpY2tGaXJlZCA9IGZhbHNlOwogCi1mdW5jdGlvbiBjaGVja1Jl
c3VsdChjb250aW51ZUZ1bmMpIHsKLSAgICBpZiAoIWNsaWNrRmlyZWQpCi0gICAgICAgIHJldHVy
bjsKLSAgICBpZiAoY2xpY2tSZWNlaXZlZCkgewotICAgICAgICAvLyBXaGVuIHRoZSBmaWxlIHNl
bGVjdCBkaWFsb2cgc2hvd3MgdXAsIGl0J3MgYSBtb2RlbCB3aW5kb3cgd2hpY2ggcmVjZWl2ZXMK
LSAgICAgICAgLy8gYWxsIFVJIGV2ZW50cyBzZW50IHRvIHdpbmRvdywgc28gdGhlIGNsaWNrIGV2
ZW50IGNhbiBub3QgYmUgcmVjZWl2ZWQgYnkgYm9keS4KLSAgICAgICAgLy8gSWYgd2UgcmVjZWl2
ZWQgdGhlIGNsaWNrIGV2ZW50LCBpdCBtZWFucyB0aGUgZmlsZSBkaWFsb2cgd2FzIG5vdCBvcGVu
ZWQuCi0gICAgICAgIGlmICh0ZXN0U3RhZ2UgPT0gT1BFTl9GSUxFX1dJVEhPVVRfR0VTVFVSRSkK
LSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvcGVuX3dpdGhvdXRfZ2VzdHVy
ZSIpLmlubmVySFRNTCA9ICJQQVNTRUQiOwotICAgICAgICBjbGlja1JlY2VpdmVkID0gZmFsc2U7
Ci0gICAgfSAKLSAgICBjbGlja0ZpcmVkID0gZmFsc2U7Ci0gICAgY29udGludWVGdW5jKCk7Ci19
Ci0KLWZ1bmN0aW9uIG9wZW5GaWxlRGlhbG9nV2l0aG91dFVzZXJHZXN0dXJlKCkgewotICAgIC8v
IFRyaWVzIHRvIGNhbGwgPGlucHV0IHR5cGU9ZmlsZT4uY2xpY2sgdG8gb3BlbiB0aGUgZmlsZSBk
aWFsb2cgd2l0aG91dCBhIHVzZXIgZ2VzdHVyZS4KLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZicpLmNsaWNrKCk7Ci0gICAgLy8gRmlyZXMgYSBjbGljayBldmVudC4KLSAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgewotICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMCwgMTAw
KTsKK2Z1bmN0aW9uIG9wZW5GaWxlRGlhbG9nKHdpdGhVc2VyR2VzdHVyZSkgeworICAgIHdpbmRv
dy5jb25zb2xlLmxvZygiT3BlbiB0aGUgZmlsZSBkaWFsb2cgIiArICh3aXRoVXNlckdlc3R1cmUg
PyAid2l0aCIgOiAid2l0aG91dCIpICsgIiBhIHVzZXIgZ2VzdHVyZS4iKTsKKyAgICBpZiAod2l0
aFVzZXJHZXN0dXJlKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwLCAxMCk7
CiAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwogICAgICAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7Ci0gICAgICAgIGNsaWNrRmlyZWQgPSB0cnVlOwotICAgICAgICB0ZXN0U3RhZ2Ug
PSBPUEVOX0ZJTEVfV0lUSE9VVF9HRVNUVVJFOwotICAgICAgICAvLyBXYWl0cyBmb3Igb3Blbmlu
ZyB0aGUgZmlsZSBkaWFsb2cgYW5kIGNoZWNrcyB3aGV0aGVyIHRoZSBjbGljayBldmVudCBjYW4g
c3RpbGwgYmUgcmVjZWl2ZWQgYnkgZG9jdW1lbnQuCi0gICAgICAgIHNldFRpbWVvdXQoImNoZWNr
UmVzdWx0KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH0p
IiwgNTAwKTsKLSAgICB9LCAxKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZicpLmNsaWNrKCk7CisgICAgfQogfQogCiBmdW5jdGlvbiBzdGFydFRlc3Qo
KSB7CiAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgIHJldHVy
bjsKLSAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24o
KSB7IHdpbmRvdy5jbGlja1JlY2VpdmVkID0gdHJ1ZSB9LCB0cnVlKTsKLSAgICBzZXRUaW1lb3V0
KG9wZW5GaWxlRGlhbG9nV2l0aG91dFVzZXJHZXN0dXJlLCAxKTsKKyAgICBvcGVuRmlsZURpYWxv
ZyhmYWxzZSk7CisgICAgb3BlbkZpbGVEaWFsb2codHJ1ZSk7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBzdHlsZT0i
bWFyZ2luOjBweDsgcGFkZGluZzowcHgiIG9ubG9hZD0ic3RhcnRUZXN0KCk7Ij4KKzxib2R5IHN0
eWxlPSJtYXJnaW46MHB4OyBwYWRkaW5nOjBweCIgb25sb2FkPSJzZXRUaW1lb3V0KCdzdGFydFRl
c3QoKTsnLCAwKSI+CiA8Zm9ybT4KIDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiBpZD0i
ZiI+CiA8L2Zvcm0+Ci1UaGlzIGZpbGUgaXMgdG8gdGVzdCB0aGF0IG9wZW5pbmcgZmlsZSBkaWFs
b2cgcmVxdWlyZXMgYSB1c2VyIGdlc3R1cmUuIFBsZWFzZSByZWZlciB0byBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc1OTMgZm9yIG1vcmUgZGV0YWlscy48YnI+Ci1U
ZXN0IG9wZW5pbmcgZmlsZSBkaWFsb2cgd2l0aG91dCB1c2VyIGdlc3R1cmUgaXMgPHNwYW4gaWQ9
Im9wZW5fd2l0aG91dF9nZXN0dXJlIj5GQUlMRUQ8L3NwYW4+PGJyPgorVGhpcyBmaWxlIGlzIHRv
IHRlc3QgdGhhdCBvcGVuaW5nIGZpbGUgZGlhbG9nIHJlcXVpcmVzIGEgdXNlciBnZXN0dXJlLiBQ
bGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3
NTkzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxMTAgZm9y
IG1vcmUgZGV0YWlscy48YnI+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZAkocmV2aXNpb24gODczNTkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTI0MCw2ICsxMjQwLDEwIEBAIGZhc3QvaHRtbC9k
ZXRhaWxzLXJlbW92ZS1zdW1tYXJ5LTYtYW5kLWMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU2NDk2CiBmYXN0L2pzL2FycmF5LXNvcnQtbW9kaWZ5aW5nLXRvc3Ry
aW5nLmh0bWwKIAorIyBTaW5jZSBXZWJLaXQgZGlzcGxheXMgdGhlIGZpbGUgY2hvb3NlciBkaXJl
Y3RseSBvbiBBcHBsZSdzIFdpbmRvd3MgcG9ydCBpbnN0ZWFkIG9mIHVzaW5nIFVJRGVsZWdhdGUs
IHdlIG5lZWQgdG8gc2tpcCB0aGUgZm9sbG93aW5nIHRlc3Qgb24gQXBwbGUncyBXaW5kb3dzIHBv
cnQuCisjIFNlZSAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2Mzgz
IGZvciBtb3JlIGRldGFpbHMuCitmYXN0L2Zvcm1zL2lucHV0LWZpbGUtbm90LW9wZW4td2l0aG91
dC1nZXN0dXJlLmh0bWwKKwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTY1NzMKIGZhc3QvZG9tL0hUTUxLZXlnZW5FbGVtZW50L2tleWdlbi5odG1sCiAK
</data>
<flag name="review"
          id="88339"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>