<?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>96481</bug_id>
          
          <creation_ts>2012-09-12 01:50:15 -0700</creation_ts>
          <short_desc>[Qt][WK2] Add API to find text from page</short_desc>
          <delta_ts>2013-01-02 07:06:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Heikki Paajanen">hepaajan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>menard</cc>
    
    <cc>pnormand</cc>
    
    <cc>svillar</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>718066</commentid>
    <comment_count>0</comment_count>
    <who name="Heikki Paajanen">hepaajan</who>
    <bug_when>2012-09-12 01:50:15 -0700</bug_when>
    <thetext>Expose functionality provided by WebPageProxy::findString and PageFindClient to QtQuick applications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718070</commentid>
    <comment_count>1</comment_count>
      <attachid>163549</attachid>
    <who name="Heikki Paajanen">hepaajan</who>
    <bug_when>2012-09-12 01:55:30 -0700</bug_when>
    <thetext>Created attachment 163549
[Qt][WK2] Add API to find text from page

Proposed implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718082</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-09-12 02:13:19 -0700</bug_when>
    <thetext>Nice! With a test too :)
If you need a review you need to set the r? flag though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718100</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 02:36:42 -0700</bug_when>
    <thetext>Attachment 163549 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 9 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>718113</commentid>
    <comment_count>4</comment_count>
      <attachid>163566</attachid>
    <who name="Heikki Paajanen">hepaajan</who>
    <bug_when>2012-09-12 02:43:32 -0700</bug_when>
    <thetext>Created attachment 163566
[Qt][WK2] Add API to find text from page

Updated ChangeLog to include bug number</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718120</commentid>
    <comment_count>5</comment_count>
      <attachid>163566</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-09-12 02:48:40 -0700</bug_when>
    <thetext>Comment on attachment 163566
[Qt][WK2] Add API to find text from page

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

&gt; Source/WebKit2/ChangeLog:3
&gt; +        [Qt][WK2] Add API to find text from page

I think this has to go into QtWebKit.experimental for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718255</commentid>
    <comment_count>6</comment_count>
      <attachid>163605</attachid>
    <who name="Heikki Paajanen">hepaajan</who>
    <bug_when>2012-09-12 05:40:14 -0700</bug_when>
    <thetext>Created attachment 163605
[Qt][WK2] Add experimental API to find text from page

New version with API moved to QtWebKit.experimental</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718393</commentid>
    <comment_count>7</comment_count>
      <attachid>163605</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-09-12 08:34:44 -0700</bug_when>
    <thetext>Comment on attachment 163605
[Qt][WK2] Add experimental API to find text from page

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

The implementation itself looks good, also with a nice QML test. I think having an example implementation with a simple UI in MiniBrowser, too, would be even better.

Although I&apos;m not sure this is the best API to provide.

Maybe others also have an opinion on how it should look like.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:289
&gt; +    enum FindOptions {

Probably not all of these options make sense for us. Although it&apos;s convenient to cast this to WebKit::FindOptions it might be worth to make the options similar to what QWebPage::FindFlags provides.
The name FindOptions is fine but I think the enum values do not need the &quot;FindOptions&quot; prefix.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:290
&gt; +        FindOptionsCaseInsensitive = 1 &lt;&lt; 0,

Since case insensitive is the default, the flag should be something like FindCaseSensitive.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:292
&gt; +        FindOptionsAtWordStarts = 1 &lt;&lt; 1,
&gt; +        FindOptionsTreatMedialCapitalAsWordStart = 1 &lt;&lt; 2,

Not sure having these options makes sense.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:293
&gt; +        FindOptionsBackwards = 1 &lt;&lt; 3,

FindBackwards, etc.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:296
&gt; +        FindOptionsShowFindIndicator = 1 &lt;&lt; 6,

If this is the setting for the small indicators on the scrollbar then we certainly do not support it since scrollbars are created by the embedder in QML.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:369
&gt; +    void findString(const QString&amp; string, FindOptions options = FindOptionsCaseInsensitive, unsigned maxMatchCount = 1000);

I think it would be better if it would resemble the Qt4 API which has:

bool findText ( const QString &amp; subString, FindFlags options = 0 )

I&apos;m not sure we should expose the maxMatchCount parameter though, I do not really see a usecase for it and passing 1000 by default seems pretty arbitrary.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:370
&gt; +    void hideFindString();

This could be omitted by making the findString clear the selection in case an empty string is passed.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:396
&gt; +    void stringFound(unsigned matchCount);
&gt; +    void stringFindFailed();

Maybe these could also be merged into one signal where matchCount would determine if the search was successful or not.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:397
&gt; +    void countedStringMatches(unsigned matchCount);

This seems to be the notification for countStringMatches and seems a bit redundant to stringFound, considering we do not implement countStringMatches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720351</commentid>
    <comment_count>8</comment_count>
      <attachid>164054</attachid>
    <who name="Heikki Paajanen">hepaajan</who>
    <bug_when>2012-09-13 23:22:08 -0700</bug_when>
    <thetext>Created attachment 164054
[Qt][WK2] Add experimental API to find text from page

Thanks for the review &amp; comments!

Here&apos;s an updated version where I tried to fix all of the issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720580</commentid>
    <comment_count>9</comment_count>
      <attachid>164054</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-09-14 04:38:08 -0700</bug_when>
    <thetext>Comment on attachment 164054
[Qt][WK2] Add experimental API to find text from page

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

I think the API looks OK now. Simon, what do you think?
Also Tor Arne might have comments on the MiniBrowser QML part.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:1343
&gt; +    d-&gt;webPageProxy-&gt;findString(string, wkOptions, std::numeric_limits&lt;unsigned&gt;::max()-1);

Missing space around the &quot;-&quot; after max().

&gt; Source/WebKit2/UIProcess/qt/QtWebPageFindClient.h:24
&gt; +#include &lt;QtGlobal&gt;

This include seems to be unneeded in the header.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageFindClient.h:26
&gt; +#include &lt;WebFrameProxy.h&gt;

Ditto.

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:356
&gt; +    Rectangle {
&gt; +        id: findBar

I think the findBar might be covered by the page when scrolling to the next occurence so you probably need to adjust z as we do for the navigationBar.

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:424
&gt; +                    font {
&gt; +                        pointSize: 11
&gt; +                        family: &quot;Sans&quot;
&gt; +                        }

The indentation is off for the bracket.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720593</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-09-14 04:52:19 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 164054 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164054&amp;action=review
&gt; 
&gt; I think the API looks OK now. Simon, what do you think?
&gt; Also Tor Arne might have comments on the MiniBrowser QML part.

I&apos;m finding it difficult right now to prioritize time for API reviews, I&apos;m instead spending my time on trying to get things stable and shippable. So maybe somebody else is up for reviewing it :), otherwise I&apos;ll take a look when I find time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721381</commentid>
    <comment_count>11</comment_count>
      <attachid>164054</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-09-14 22:53:29 -0700</bug_when>
    <thetext>Comment on attachment 164054
[Qt][WK2] Add experimental API to find text from page

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

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:295
&gt; +    enum FindFlags {
&gt; +        FindCaseSensitively = 1 &lt;&lt; 0,
&gt; +        FindBackward = 1 &lt;&lt; 1,
&gt; +        FindWrapsAroundDocument = 1 &lt;&lt; 2,
&gt; +        FindHighlightAllOccurrences = 1 &lt;&lt; 3
&gt; +    };

This should probably become a real QFlag, i.e. this type is called FindFlag and then you use Q_DECLARE_FLAGS and Q_DECLARE_OPERATORS_FOR_FLAGS to turn FindFlag into FindFlags. Then you can combine them with logical and and or operators without the need for casting, registered in the class with Q_FLAGS it makes them properly accessible through introspection and you&apos;ll get a default constructor that avoids the options = static_cast&lt;FindFlags&gt;(0) :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721712</commentid>
    <comment_count>12</comment_count>
      <attachid>164346</attachid>
    <who name="Heikki Paajanen">hepaajan</who>
    <bug_when>2012-09-17 00:04:45 -0700</bug_when>
    <thetext>Created attachment 164346
[Qt][WK2] Add experimental API to find text from page

Thanks again for review!

This version addresses the issues listed in comment #9 and comment #11

Btw, hiding find bar when page is scrolled down causes page to jump to the beginning. Is that a known issue?
I think it&apos;s caused by change in the size of WebView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742028</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-10-15 07:07:55 -0700</bug_when>
    <thetext>Would you find some time to review this patch Simon? Thanks! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762682</commentid>
    <comment_count>14</comment_count>
      <attachid>164346</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-09 01:03:53 -0800</bug_when>
    <thetext>Comment on attachment 164346
[Qt][WK2] Add experimental API to find text from page

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

It&apos;s a pretty good patch overall at this point, here are some minor issues.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:392
&gt; +    void textFound(unsigned matchCount);

I don&apos;t think we use unsigned so much in APIs, I&apos;d rather have it exposed as a signed int for consistency.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h:85
&gt; +    virtual void didFindString(unsigned matchCount);

No need to make it virtual if it won&apos;t be overridden by QQuickWebView(Legacy|Flickable)Private.

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:73
&gt; +        function toggle() {

Could you also trigger it with the ctrl+f shortcut in MiniBrowserApplication::notify?
Having the TextInput get/lose focus when toggle() is called would be awesome too.

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:94
&gt; +        MouseArea {

Please add a comment about its purpose.

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:151
&gt; +            Rectangle {
&gt; +                id: prevButton

We really have to pull this common code out in a ToolbarButton.qml as this code is getting quite duplicated, but this can be done in a different patch if you don&apos;t want to take care of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771805</commentid>
    <comment_count>15</comment_count>
      <attachid>175200</attachid>
    <who name="Heikki Paajanen">hepaajan</who>
    <bug_when>2012-11-20 06:17:28 -0800</bug_when>
    <thetext>Created attachment 175200
[Qt][WK2] Add experimental API to find text from page

Thanks for the review! Here&apos;s a new version.

I think ToolbarButton refactoring would indeed be better in it&apos;s own patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789564</commentid>
    <comment_count>16</comment_count>
      <attachid>175200</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-12-12 08:09:31 -0800</bug_when>
    <thetext>Comment on attachment 175200
[Qt][WK2] Add experimental API to find text from page

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

Sorry for taking so long, LGTM now.

&gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:106
&gt;  }
&gt; +void BrowserWindow::toggleFind()

Missing newline, please fix before landing or re-upload a patch if you want to use the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789639</commentid>
    <comment_count>17</comment_count>
      <attachid>179068</attachid>
    <who name="Heikki Paajanen">hepaajan</who>
    <bug_when>2012-12-12 09:43:10 -0800</bug_when>
    <thetext>Created attachment 179068
[Qt][WK2] Add experimental API to find text from page

Fixed missing newline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798641</commentid>
    <comment_count>18</comment_count>
    <who name="Heikki Paajanen">hepaajan</who>
    <bug_when>2013-01-02 06:35:42 -0800</bug_when>
    <thetext>Is there something I can do to help get this patch forward?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798644</commentid>
    <comment_count>19</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-01-02 06:41:03 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Is there something I can do to help get this patch forward?

I r+ed it, so the patch is approved. You just need to set the cq=? flag by clicking &quot;Details&quot; or land it yourself if you have commit rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798647</commentid>
    <comment_count>20</comment_count>
      <attachid>179068</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-01-02 06:57:51 -0800</bug_when>
    <thetext>Comment on attachment 179068
[Qt][WK2] Add experimental API to find text from page

Since this is the first change of the API after the initial release, there are two things that need to be done I think:

    (1) The API unit test needs to be adapted to not fail. (It fails when new API is added, to prevent accidental publishing of properties)

    (2) The new functionality needs to be versioned properly. If you do &quot;import QtWebKit 3.0&quot; none of the new API must be visible, if you do &quot;import QtWebKit 3.1&quot; only then it should be accessible.

This can be done in a separate patch, but I don&apos;t think it&apos;s a good idea to at least land a change that we know is going to cause the API test to fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798648</commentid>
    <comment_count>21</comment_count>
      <attachid>179068</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-01-02 06:58:48 -0800</bug_when>
    <thetext>Comment on attachment 179068
[Qt][WK2] Add experimental API to find text from page

Putting on hold for commit queue for a minute</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798649</commentid>
    <comment_count>22</comment_count>
      <attachid>179068</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-01-02 07:00:25 -0800</bug_when>
    <thetext>Comment on attachment 179068
[Qt][WK2] Add experimental API to find text from page

Ooops, sorry, it&apos;s experimental :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798650</commentid>
    <comment_count>23</comment_count>
      <attachid>179068</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-01-02 07:02:53 -0800</bug_when>
    <thetext>Comment on attachment 179068
[Qt][WK2] Add experimental API to find text from page

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

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:393
&gt; +    void textFound(int matchCount);

Some feedback on the API. Perhaps the find match count should also be a _property_, so that it&apos;s not only accessible using the imperative signal handling API but also declarative.

Maybe &quot;findMatchCount&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798652</commentid>
    <comment_count>24</comment_count>
      <attachid>179068</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-02 07:06:53 -0800</bug_when>
    <thetext>Comment on attachment 179068
[Qt][WK2] Add experimental API to find text from page

Clearing flags on attachment: 179068

Committed r138618: &lt;http://trac.webkit.org/changeset/138618&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798653</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-02 07:06:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163549</attachid>
            <date>2012-09-12 01:55:30 -0700</date>
            <delta_ts>2012-09-12 02:43:32 -0700</delta_ts>
            <desc>[Qt][WK2] Add API to find text from page</desc>
            <filename>0001-Qt-WK2-Add-API-to-find-text-from-page.patch</filename>
            <type>text/plain</type>
            <size>28839</size>
            <attacher name="Heikki Paajanen">hepaajan</attacher>
            
              <data encoding="base64">RnJvbSBmYjgzNDA0MmRjYzM2YjdjMTVmZjM0YmFkMGUyZmI0MTI0ZTY4NDZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgUGFhamFuZW4gPGhlaWtraS5wYWFqYW5lbkBwYWxt
LmNvbT4KRGF0ZTogV2VkLCAxMiBTZXAgMjAxMiAxMDoyMjoxOSArMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF1bV0syXSBBZGQgQVBJIHRvIGZpbmQgdGV4dCBmcm9tIHBhZ2UKIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjQ4MQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpFeHBvc2UgZmluZFN0cmluZyBhbmQgUGFnZUZpbmRDbGllbnQgcHJvdmlkZWQgZnVu
Y3Rpb25hbGl0eSB0byBRdFF1aWNrCmFwcGxpY2F0aW9ucy4KCiogVGFyZ2V0LnByaToKKiBVSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgooUVF1aWNrV2ViVmlld1ByaXZhdGU6Omlu
aXRpYWxpemUpOgooUVF1aWNrV2ViVmlldzo6ZmluZFN0cmluZyk6CihRUXVpY2tXZWJWaWV3Ojpo
aWRlRmluZFN0cmluZyk6CihRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmluZFN0cmluZyk6CihR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmFpbFRvRmluZFN0cmluZyk6CihRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6ZGlkQ291bnRTdHJpbmdNYXRjaGVzKToKKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnZpZXdfcC5oOgooV2ViS2l0KToKKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cF9wLmg6CihRUXVpY2tXZWJWaWV3UHJpdmF0ZSk6CiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9w
dWJsaWNhcGkvdHN0X3B1YmxpY2FwaS5jcHA6Cihpc0NoZWNrZWRFbnVtKToKKGNoZWNrS25vd25U
eXBlKToKKGdhdGhlckFQSSk6Cih0c3RfcHVibGljYXBpOjpwdWJsaWNBUEkpOgpBZGRlZCBjaGVj
ayBmb3IgZmluZCBBUEkuIEFkZGVkIHN1cHBvcnQgY2hlY2tpbmcgZW51bXMgZnJvbSBzYW1lIGNs
YXNzLgoKKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRT
dHJpbmcucW1sOiBBZGRlZC4KKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5jcHA6
IEFkZGVkLgooV2ViS2l0KToKKFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVudDo6UXRXZWJQYWdl
RmluZENsaWVudCk6CihXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZEZpbmRTdHJpbmcp
OgooV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRGYWlsVG9GaW5kU3RyaW5nKToKKFdl
YktpdDo6UXRXZWJQYWdlRmluZENsaWVudDo6ZGlkQ291bnRTdHJpbmdNYXRjaGVzKToKKFdlYktp
dDo6dG9RdFdlYlBhZ2VGaW5kQ2xpZW50KToKKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENs
aWVudC5oOiBBZGRlZC4KKFdlYktpdCk6CihRdFdlYlBhZ2VGaW5kQ2xpZW50KToKLS0tCiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDEgKysr
KysrCiBTb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgIDIgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNw
cCAgfCAgIDMzICsrKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnZpZXdfcC5oICB8ICAgMTkgKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnZpZXdfcF9wLmggICB8ICAgIDUgKwogLi4uL0FQSS9xdC90ZXN0cy9wdWJsaWNhcGkvdHN0
X3B1YmxpY2FwaS5jcHAgICAgICAgfCAgIDY4ICsrKysrKy0tLS0KIC4uLi9xdC90ZXN0cy9xbWx0
ZXN0cy9XZWJWaWV3L3RzdF9maW5kU3RyaW5nLnFtbCAgIHwgIDE1MiArKysrKysrKysrKysrKysr
KysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwICAg
fCAgIDgwICsrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VG
aW5kQ2xpZW50LmggIHwgICA1MyArKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDQyOCBpbnNlcnRp
b25zKCspLCAyNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRTdHJpbmcu
cW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZUZpbmRDbGllbnQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwY2Q5ZjFlLi5j
NzIyZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTItMDktMTIgIEhlaWtraSBQ
YWFqYW5lbiAgPGhlaWtraS5wYWFqYW5lbkBwYWxtLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0g
QWRkIEFQSSB0byBmaW5kIHRleHQgZnJvbSBwYWdlCisgICAgICAgIE5lZWQgdGhlIGJ1ZyBVUkwg
KE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFeHBvc2UgZmluZFN0cmluZyBhbmQgUGFnZUZpbmRDbGllbnQgcHJvdmlkZWQgZnVuY3Rpb25h
bGl0eSB0byBRdFF1aWNrCisgICAgICAgIGFwcGxpY2F0aW9ucy4KKworICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKFFRdWlj
a1dlYlZpZXc6OmZpbmRTdHJpbmcpOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6aGlkZUZpbmRT
dHJpbmcpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmRTdHJpbmcpOgor
ICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZhaWxUb0ZpbmRTdHJpbmcpOgorICAg
ICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENvdW50U3RyaW5nTWF0Y2hlcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oOgorICAg
ICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvcHVibGljYXBpL3RzdF9wdWJsaWNhcGkuY3BwOgorICAgICAgICAoaXNDaGVja2VkRW51
bSk6CisgICAgICAgIChjaGVja0tub3duVHlwZSk6CisgICAgICAgIChnYXRoZXJBUEkpOgorICAg
ICAgICAodHN0X3B1YmxpY2FwaTo6cHVibGljQVBJKToKKyAgICAgICAgQWRkZWQgY2hlY2sgZm9y
IGZpbmQgQVBJLiBBZGRlZCBzdXBwb3J0IGNoZWNraW5nIGVudW1zIGZyb20gc2FtZSBjbGFzcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3Rf
ZmluZFN0cmluZy5xbWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VG
aW5kQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpRdFdlYlBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6UXRXZWJQYWdlRmluZENsaWVudDo6ZGlkRmluZFN0cmluZyk6CisgICAgICAgIChXZWJL
aXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZEZhaWxUb0ZpbmRTdHJpbmcpOgorICAgICAgICAo
V2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRDb3VudFN0cmluZ01hdGNoZXMpOgorICAg
ICAgICAoV2ViS2l0Ojp0b1F0V2ViUGFnZUZpbmRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFF0V2ViUGFnZUZpbmRDbGllbnQpOgorCiAyMDEyLTA5LTEwICBBbmRyYXMgQmVjc2kg
IDxhbmRyYXMuYmVjc2lAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF1bV0syXSBRV2ViS2l0VGVz
dCBzaG91bGQgcmV0cmlldmUgdGhlIHZpZXdwb3J0IHN0YXRlIGZyb20gdGhlIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDhkNzAzNjcuLjBkZGUxY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnBy
aQpAQCAtNzc4LDYgKzc3OCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEhBVkVfUVRRVUlDSz0xKSB7
CiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oIFwKICAgICAgICAgVUlQcm9j
ZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmggXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRQYWdl
Q2xpZW50LmggXAorICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5oIFwK
ICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuaCBcCiAgICAgICAgIFVJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VQb2xpY3lDbGllbnQuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VTR05vZGUuaCBcCkBAIC04MDgsNiArODA5LDcgQEAgY29udGFpbnMoREVGSU5F
UywgSEFWRV9RVFFVSUNLPTEpIHsKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVy
LmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAgXAogICAg
ICAgICBVSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcCBcCisgICAgICAgIFVJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VMb2FkQ2xpZW50LmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQb2xpY3lD
bGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAK
aW5kZXggNDkwYjliYS4uMmY1NDY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC0zMCw5ICszMCwxMSBAQAogI2luY2x1ZGUg
IlF0V2ViRXJyb3IuaCIKICNpbmNsdWRlICJRdFdlYkljb25EYXRhYmFzZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlF0V2ViUGFnZUV2ZW50SGFuZGxlci5oIgorI2luY2x1ZGUgIlF0V2ViUGFnZUZpbmRD
bGllbnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiUXRX
ZWJQYWdlUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCisj
aW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikK
ICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclNl
cnZlci5oIgpAQCAtMzA2LDYgKzMwOCw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Omlu
aXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhCiAgICAg
UVF1aWNrV2ViUGFnZVByaXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBhZ2VWaWV3LmRh
dGEoKS0+ZDsKICAgICBwYWdlVmlld1ByaXZhdGUtPmluaXRpYWxpemUod2ViUGFnZVByb3h5Lmdl
dCgpKTsKIAorICAgIHBhZ2VGaW5kQ2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VGaW5kQ2xpZW50
KHRvQVBJKHdlYlBhZ2VQcm94eS5nZXQoKSksIHFfcHRyKSk7CiAgICAgcGFnZUxvYWRDbGllbnQu
cmVzZXQobmV3IFF0V2ViUGFnZUxvYWRDbGllbnQodG9BUEkod2ViUGFnZVByb3h5LmdldCgpKSwg
cV9wdHIpKTsKICAgICBwYWdlUG9saWN5Q2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VQb2xpY3lD
bGllbnQodG9BUEkod2ViUGFnZVByb3h5LmdldCgpKSwgcV9wdHIpKTsKICAgICBwYWdlVUlDbGll
bnQucmVzZXQobmV3IFF0V2ViUGFnZVVJQ2xpZW50KHRvQVBJKHdlYlBhZ2VQcm94eS5nZXQoKSks
IHFfcHRyKSk7CkBAIC0yMDM0LDYgKzIwMzcsMTggQEAgdm9pZCBRUXVpY2tXZWJWaWV3Ojpsb2Fk
SHRtbChjb25zdCBRU3RyaW5nJiBodG1sLCBjb25zdCBRVXJsJiBiYXNlVXJsLCBjb25zdCBRVXIK
ICAgICAgICAgZC0+d2ViUGFnZVByb3h5LT5sb2FkSFRNTFN0cmluZyhodG1sLCBiYXNlVXJsLnRv
U3RyaW5nKCkpOwogfQogCit2b2lkIFFRdWlja1dlYlZpZXc6OmZpbmRTdHJpbmcoY29uc3QgUVN0
cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50
KQoreworICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKKyAgICBkLT53ZWJQYWdlUHJveHktPmZpbmRT
dHJpbmcoc3RyaW5nLCBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPihvcHRpb25zKSwg
bWF4TWF0Y2hDb3VudCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlldzo6aGlkZUZpbmRTdHJpbmco
KQoreworICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKKyAgICBkLT53ZWJQYWdlUHJveHktPmhpZGVG
aW5kVUkoKTsKK30KKwogcXJlYWwgUVF1aWNrV2ViVmlldzo6em9vbUZhY3RvcigpIGNvbnN0CiB7
CiAgICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOwpAQCAtMjA3MCw2ICsyMDg1LDI0IEBAIHZv
aWQgUVF1aWNrV2ViVmlldzo6c2V0QWxsb3dBbnlIVFRQU0NlcnRpZmljYXRlRm9yTG9jYWxIb3N0
KGJvb2wgYWxsb3cpCiAgICAgZC0+bV9hbGxvd0FueUhUVFBTQ2VydGlmaWNhdGVGb3JMb2NhbEhv
c3QgPSBhbGxvdzsKIH0KIAordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmluZFN0cmlu
Zyh1bnNpZ25lZCBtYXRjaENvdW50KQoreworICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKKyAgICBl
bWl0IHEtPnN0cmluZ0ZvdW5kKG1hdGNoQ291bnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXdQ
cml2YXRlOjpkaWRGYWlsVG9GaW5kU3RyaW5nKCkKK3sKKyAgICBRX1EoUVF1aWNrV2ViVmlldyk7
CisgICAgZW1pdCBxLT5zdHJpbmdGaW5kRmFpbGVkKCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmll
d1ByaXZhdGU6OmRpZENvdW50U3RyaW5nTWF0Y2hlcyh1bnNpZ25lZCBtYXRjaENvdW50KQorewor
ICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKKyAgICBlbWl0IHEtPmNvdW50ZWRTdHJpbmdNYXRjaGVz
KG1hdGNoQ291bnQpOworfQorCiAvKiEKICAgICBccW1sc2lnbmFsIFdlYlZpZXc6Om9uTG9hZGlu
Z0NoYW5nZWQobG9hZFJlcXVlc3QpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCmluZGV4IDY4ZTVmY2EuLjg2ZTExN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaApAQCAt
NTEsNiArNTEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBRdFJlZkNvdW50ZWROZXR3
b3JrUmVxdWVzdERhdGE7CiBjbGFzcyBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ7CiBj
bGFzcyBRdFdlYlBhZ2VMb2FkQ2xpZW50OworY2xhc3MgUXRXZWJQYWdlRmluZENsaWVudDsKIGNs
YXNzIFF0V2ViUGFnZVBvbGljeUNsaWVudDsKIGNsYXNzIFF0V2ViUGFnZVVJQ2xpZW50OwogfQpA
QCAtODcsNiArODgsNyBAQCBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRUXVpY2tXZWJWaWV3IDogcHVi
bGljIFFRdWlja0ZsaWNrYWJsZSB7CiAgICAgUV9FTlVNUyhMb2FkU3RhdHVzKQogICAgIFFfRU5V
TVMoRXJyb3JEb21haW4pCiAgICAgUV9FTlVNUyhOYXZpZ2F0aW9uVHlwZSkKKyAgICBRX0VOVU1T
KEZpbmRPcHRpb25zKQogCiBwdWJsaWM6CiAgICAgZW51bSBOYXZpZ2F0aW9uUmVxdWVzdEFjdGlv
biB7CkBAIC0xMTYsNiArMTE4LDE3IEBAIHB1YmxpYzoKICAgICAgICAgT3RoZXJOYXZpZ2F0aW9u
CiAgICAgfTsKIAorICAgIGVudW0gRmluZE9wdGlvbnMgeworICAgICAgICBGaW5kT3B0aW9uc0Nh
c2VJbnNlbnNpdGl2ZSA9IDEgPDwgMCwKKyAgICAgICAgRmluZE9wdGlvbnNBdFdvcmRTdGFydHMg
PSAxIDw8IDEsCisgICAgICAgIEZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3Rh
cnQgPSAxIDw8IDIsCisgICAgICAgIEZpbmRPcHRpb25zQmFja3dhcmRzID0gMSA8PCAzLAorICAg
ICAgICBGaW5kT3B0aW9uc1dyYXBBcm91bmQgPSAxIDw8IDQsCisgICAgICAgIEZpbmRPcHRpb25z
U2hvd092ZXJsYXkgPSAxIDw8IDUsCisgICAgICAgIEZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0
b3IgPSAxIDw8IDYsCisgICAgICAgIEZpbmRPcHRpb25zU2hvd0hpZ2hsaWdodCA9IDEgPDwgNwor
ICAgIH07CisKICAgICBRUXVpY2tXZWJWaWV3KFFRdWlja0l0ZW0qIHBhcmVudCA9IDApOwogICAg
IHZpcnR1YWwgflFRdWlja1dlYlZpZXcoKTsKIApAQCAtMTU4LDYgKzE3MSw4IEBAIHB1YmxpYyBR
X1NMT1RTOgogICAgIHZvaWQgZ29Gb3J3YXJkKCk7CiAgICAgdm9pZCBzdG9wKCk7CiAgICAgdm9p
ZCByZWxvYWQoKTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgUVN0cmluZyYgc3RyaW5nLCBG
aW5kT3B0aW9ucyBvcHRpb25zID0gRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUsIHVuc2lnbmVk
IG1heE1hdGNoQ291bnQgPSAxMDAwKTsKKyAgICB2b2lkIGhpZGVGaW5kU3RyaW5nKCk7CiAKIFFf
U0lHTkFMUzoKICAgICB2b2lkIHRpdGxlQ2hhbmdlZCgpOwpAQCAtMTY4LDYgKzE4Myw5IEBAIFFf
U0lHTkFMUzoKICAgICB2b2lkIGljb25DaGFuZ2VkKCk7CiAgICAgdm9pZCBsaW5rSG92ZXJlZChj
b25zdCBRVXJsJiBob3ZlcmVkVXJsLCBjb25zdCBRU3RyaW5nJiBob3ZlcmVkVGl0bGUpOwogICAg
IHZvaWQgbmF2aWdhdGlvblJlcXVlc3RlZChRV2ViTmF2aWdhdGlvblJlcXVlc3QqIHJlcXVlc3Qp
OworICAgIHZvaWQgc3RyaW5nRm91bmQodW5zaWduZWQgbWF0Y2hDb3VudCk7CisgICAgdm9pZCBz
dHJpbmdGaW5kRmFpbGVkKCk7CisgICAgdm9pZCBjb3VudGVkU3RyaW5nTWF0Y2hlcyh1bnNpZ25l
ZCBtYXRjaENvdW50KTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBjaGlsZE1vdXNl
RXZlbnRGaWx0ZXIoUVF1aWNrSXRlbSosIFFFdmVudCopOwpAQCAtMjE5LDYgKzIzNyw3IEBAIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJLaXRUZXN0OwogICAgIGZyaWVuZCBjbGFzcyBX
ZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDsKICAgICBmcmllbmQgY2xhc3Mg
V2ViS2l0OjpRdFdlYlBhZ2VMb2FkQ2xpZW50OworICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlF0
V2ViUGFnZUZpbmRDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UXRXZWJQYWdlUG9s
aWN5Q2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50Owog
ICAgIGZyaWVuZCBjbGFzcyBXVFI6OlBsYXRmb3JtV2ViVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAppbmRleCBkMWQzZDll
Li43NzMwOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXdfcF9wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3X3BfcC5oCkBAIC04Miw2ICs4MiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGxvYWREaWRGYWlsKGNvbnN0IFdlYktpdDo6UXRXZWJFcnJvciYgZXJyb3IpOwogICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KFFNb3VzZUV2ZW50Kik7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluZFN0cmluZyh1bnNpZ25lZCBtYXRjaENvdW50KTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbFRvRmluZFN0cmluZygpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb3VudFN0
cmluZ01hdGNoZXModW5zaWduZWQgbWF0Y2hDb3VudCk7CisKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyYgYXR0cikgeyB9CiAKICAgICBpbnQgbG9hZFByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9s
b2FkUHJvZ3Jlc3M7IH0KQEAgLTE2NCw2ICsxNjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3duUHRy
PFFXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXM7CiAKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJL
aXQ6OlF0V2ViUGFnZUxvYWRDbGllbnQ+IHBhZ2VMb2FkQ2xpZW50OworICAgIFFTY29wZWRQb2lu
dGVyPFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVudD4gcGFnZUZpbmRDbGllbnQ7CiAgICAgUVNj
b3BlZFBvaW50ZXI8V2ViS2l0OjpRdFdlYlBhZ2VQb2xpY3lDbGllbnQ+IHBhZ2VQb2xpY3lDbGll
bnQ7CiAgICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFdlYlBhZ2VVSUNsaWVudD4gcGFnZVVJ
Q2xpZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3B1YmxpY2FwaS90c3RfcHVibGljYXBpLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcHVibGljYXBpL3RzdF9wdWJsaWNhcGkuY3BwCmluZGV4IGQwZWExYmUu
LjEzYTZmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcHVibGljYXBpL3RzdF9wdWJsaWNhcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcHVibGljYXBpL3RzdF9wdWJsaWNhcGkuY3BwCkBAIC01Nyw2ICs1
NywxNCBAQCBzdGF0aWMgUVN0cmluZ0xpc3QgZXhwZWN0ZWRBUEkgPSBRU3RyaW5nTGlzdCgpCiAg
ICAgPDwgIlFRdWlja1dlYlZpZXcuUmVsb2FkTmF2aWdhdGlvbiAtLT4gTmF2aWdhdGlvblR5cGUi
CiAgICAgPDwgIlFRdWlja1dlYlZpZXcuRm9ybVJlc3VibWl0dGVkTmF2aWdhdGlvbiAtLT4gTmF2
aWdhdGlvblR5cGUiCiAgICAgPDwgIlFRdWlja1dlYlZpZXcuT3RoZXJOYXZpZ2F0aW9uIC0tPiBO
YXZpZ2F0aW9uVHlwZSIKKyAgICA8PCAiUVF1aWNrV2ViVmlldy5GaW5kT3B0aW9uc0Nhc2VJbnNl
bnNpdGl2ZSAtLT4gRmluZE9wdGlvbnMiCisgICAgPDwgIlFRdWlja1dlYlZpZXcuRmluZE9wdGlv
bnNBdFdvcmRTdGFydHMgLS0+IEZpbmRPcHRpb25zIgorICAgIDw8ICJRUXVpY2tXZWJWaWV3LkZp
bmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQgLS0+IEZpbmRPcHRpb25zIgor
ICAgIDw8ICJRUXVpY2tXZWJWaWV3LkZpbmRPcHRpb25zQmFja3dhcmRzIC0tPiBGaW5kT3B0aW9u
cyIKKyAgICA8PCAiUVF1aWNrV2ViVmlldy5GaW5kT3B0aW9uc1dyYXBBcm91bmQgLS0+IEZpbmRP
cHRpb25zIgorICAgIDw8ICJRUXVpY2tXZWJWaWV3LkZpbmRPcHRpb25zU2hvd092ZXJsYXkgLS0+
IEZpbmRPcHRpb25zIgorICAgIDw8ICJRUXVpY2tXZWJWaWV3LkZpbmRPcHRpb25zU2hvd0ZpbmRJ
bmRpY2F0b3IgLS0+IEZpbmRPcHRpb25zIgorICAgIDw8ICJRUXVpY2tXZWJWaWV3LkZpbmRPcHRp
b25zU2hvd0hpZ2hsaWdodCAtLT4gRmluZE9wdGlvbnMiCiAgICAgPDwgIlFRdWlja1dlYlZpZXcu
dGl0bGUgLS0+IFFTdHJpbmciCiAgICAgPDwgIlFRdWlja1dlYlZpZXcudXJsIC0tPiBRVXJsIgog
ICAgIDw8ICJRUXVpY2tXZWJWaWV3Lmljb24gLS0+IFFVcmwiCkBAIC03OSw2ICs4NywxMyBAQCBz
dGF0aWMgUVN0cmluZ0xpc3QgZXhwZWN0ZWRBUEkgPSBRU3RyaW5nTGlzdCgpCiAgICAgPDwgIlFR
dWlja1dlYlZpZXcuZ29Gb3J3YXJkKCkgLS0+IHZvaWQiCiAgICAgPDwgIlFRdWlja1dlYlZpZXcu
c3RvcCgpIC0tPiB2b2lkIgogICAgIDw8ICJRUXVpY2tXZWJWaWV3LnJlbG9hZCgpIC0tPiB2b2lk
IgorICAgIDw8ICJRUXVpY2tXZWJWaWV3LmZpbmRTdHJpbmcoUVN0cmluZyxGaW5kT3B0aW9ucyx1
aW50KSAtLT4gdm9pZCIKKyAgICA8PCAiUVF1aWNrV2ViVmlldy5maW5kU3RyaW5nKFFTdHJpbmcs
RmluZE9wdGlvbnMpIC0tPiB2b2lkIgorICAgIDw8ICJRUXVpY2tXZWJWaWV3LmZpbmRTdHJpbmco
UVN0cmluZykgLS0+IHZvaWQiCisgICAgPDwgIlFRdWlja1dlYlZpZXcuaGlkZUZpbmRTdHJpbmco
KSAtLT4gdm9pZCIKKyAgICA8PCAiUVF1aWNrV2ViVmlldy5zdHJpbmdGb3VuZCh1aW50KSAtLT4g
dm9pZCIKKyAgICA8PCAiUVF1aWNrV2ViVmlldy5zdHJpbmdGaW5kRmFpbGVkKCkgLS0+IHZvaWQi
CisgICAgPDwgIlFRdWlja1dlYlZpZXcuY291bnRlZFN0cmluZ01hdGNoZXModWludCkgLS0+IHZv
aWQiCiAgICAgPDwgIlFXZWJMb2FkUmVxdWVzdC51cmwgLS0+IFFVcmwiCiAgICAgPDwgIlFXZWJM
b2FkUmVxdWVzdC5zdGF0dXMgLS0+IFFRdWlja1dlYlZpZXc6OkxvYWRTdGF0dXMiCiAgICAgPDwg
IlFXZWJMb2FkUmVxdWVzdC5lcnJvclN0cmluZyAtLT4gUVN0cmluZyIKQEAgLTkyLDE4ICsxMDcs
MjEgQEAgc3RhdGljIFFTdHJpbmdMaXN0IGV4cGVjdGVkQVBJID0gUVN0cmluZ0xpc3QoKQogICAg
IDw8ICJRV2ViTmF2aWdhdGlvblJlcXVlc3QuYWN0aW9uQ2hhbmdlZCgpIC0tPiB2b2lkIgogICAg
IDsKIAotc3RhdGljIGJvb2wgaXNDaGVja2VkRW51bShjb25zdCBRQnl0ZUFycmF5JiB0eXBlTmFt
ZSkKK3N0YXRpYyBib29sIGlzQ2hlY2tlZEVudW0oY29uc3QgUUJ5dGVBcnJheSYgY2xhc3NOYW1l
LCBjb25zdCBRQnl0ZUFycmF5JiB0eXBlTmFtZSkKIHsKKyAgICBRQnl0ZUFycmF5IGVudW1DbGFz
cyhjbGFzc05hbWUpOworICAgIFFCeXRlQXJyYXkgZW51bU5hbWUodHlwZU5hbWUpOwogICAgIFFM
aXN0PFFCeXRlQXJyYXk+IHRva2VucyA9IHR5cGVOYW1lLnNwbGl0KCc6Jyk7CiAgICAgaWYgKHRv
a2Vucy5zaXplKCkgPT0gMykgewotICAgICAgICBRQnl0ZUFycmF5JiBlbnVtQ2xhc3MgPSB0b2tl
bnNbMF07Ci0gICAgICAgIFFCeXRlQXJyYXkmIGVudW1OYW1lID0gdG9rZW5zWzJdOwotICAgICAg
ICBmb3JlYWNoIChjb25zdCBRTWV0YU9iamVjdCogbW8sIHR5cGVzVG9DaGVjaykgewotICAgICAg
ICAgICAgaWYgKG1vLT5jbGFzc05hbWUoKSAhPSBlbnVtQ2xhc3MpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gbW8tPmVudW1lcmF0b3JPZmZzZXQo
KTsgaSA8IG1vLT5lbnVtZXJhdG9yQ291bnQoKTsgKytpKQotICAgICAgICAgICAgICAgIGlmICht
by0+ZW51bWVyYXRvcihpKS5uYW1lKCkgPT0gZW51bU5hbWUpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBlbnVtQ2xhc3MgPSB0b2tlbnNbMF07CisgICAgICAgIGVu
dW1OYW1lID0gdG9rZW5zWzJdOworICAgIH0KKyAgICBmb3JlYWNoIChjb25zdCBRTWV0YU9iamVj
dCogbW8sIHR5cGVzVG9DaGVjaykgeworICAgICAgICBpZiAobW8tPmNsYXNzTmFtZSgpICE9IGVu
dW1DbGFzcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBmb3IgKGludCBpID0gbW8t
PmVudW1lcmF0b3JPZmZzZXQoKTsgaSA8IG1vLT5lbnVtZXJhdG9yQ291bnQoKTsgKytpKSB7Cisg
ICAgICAgICAgICBpZiAobW8tPmVudW1lcmF0b3IoaSkubmFtZSgpID09IGVudW1OYW1lKQorICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKQEAgLTExOSw1NSArMTM3LDU1IEBAIHN0YXRpYyBib29sIGlzQ2hlY2tlZENsYXNzKGNv
bnN0IFFCeXRlQXJyYXkmIHR5cGVOYW1lKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGlj
IHZvaWQgY2hlY2tLbm93blR5cGUoY29uc3QgUUJ5dGVBcnJheSYgdHlwZU5hbWUpCitzdGF0aWMg
dm9pZCBjaGVja0tub3duVHlwZShjb25zdCBRU3RyaW5nJiBjbGFzc05hbWUsIGNvbnN0IFFCeXRl
QXJyYXkmIHR5cGVOYW1lKQogewogICAgIGlmICgodHlwZU5hbWUgIT0gInZvaWQiICYmICFRTWV0
YVR5cGU6OnR5cGUodHlwZU5hbWUpKSB8fCBRTWV0YVR5cGU6OnR5cGUodHlwZU5hbWUpID49IFFN
ZXRhVHlwZTo6VXNlcikgewotICAgICAgICBib29sIGtub3duRW51bSA9IGlzQ2hlY2tlZEVudW0o
dHlwZU5hbWUpOworICAgICAgICBib29sIGtub3duRW51bSA9IGlzQ2hlY2tlZEVudW0oY2xhc3NO
YW1lLnRvTGF0aW4xKCksIHR5cGVOYW1lKTsKICAgICAgICAgYm9vbCBrbm93bkNsYXNzID0gaXND
aGVja2VkQ2xhc3ModHlwZU5hbWUpOwogICAgICAgICBRVkVSSUZZMihrbm93bkVudW0gfHwga25v
d25DbGFzcywgcVByaW50YWJsZShRU3RyaW5nKCJUaGUgQVBJIHVzZXMgYW4gdW5rbm93biB0eXBl
IFslMV0sIHlvdSBtaWdodCBoYXZlIHRvIGFkZCBpdCB0byB0aGUgdHlwZXNUb0NoZWNrIGxpc3Qu
IikuYXJnKHR5cGVOYW1lLmNvbnN0RGF0YSgpKSkpOwogICAgIH0KIH0KIAotc3RhdGljIHZvaWQg
Z2F0aGVyQVBJKGNvbnN0IFFTdHJpbmcmIHByZWZpeCwgY29uc3QgUU1ldGFFbnVtJiBtZXRhRW51
bSwgUVN0cmluZ0xpc3QqIG91dHB1dCkKK3N0YXRpYyB2b2lkIGdhdGhlckFQSShjb25zdCBRU3Ry
aW5nJiBjbGFzc05hbWUsIGNvbnN0IFFNZXRhRW51bSYgbWV0YUVudW0sIFFTdHJpbmdMaXN0KiBv
dXRwdXQpCiB7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtZXRhRW51bS5rZXlDb3VudCgpOyAr
K2kpCi0gICAgICAgICpvdXRwdXQgPDwgUVN0cmluZzo6ZnJvbUxhdGluMSgiJTElMiAtLT4gJTMi
KS5hcmcocHJlZml4KS5hcmcobWV0YUVudW0ua2V5KGkpKS5hcmcobWV0YUVudW0ubmFtZSgpKTsK
KyAgICAgICAgKm91dHB1dCA8PCBRU3RyaW5nOjpmcm9tTGF0aW4xKCIlMS4lMiAtLT4gJTMiKS5h
cmcoY2xhc3NOYW1lKS5hcmcobWV0YUVudW0ua2V5KGkpKS5hcmcobWV0YUVudW0ubmFtZSgpKTsK
IH0KIAotc3RhdGljIHZvaWQgZ2F0aGVyQVBJKGNvbnN0IFFTdHJpbmcmIHByZWZpeCwgY29uc3Qg
UU1ldGFQcm9wZXJ0eSYgcHJvcGVydHksIFFTdHJpbmdMaXN0KiBvdXRwdXQpCitzdGF0aWMgdm9p
ZCBnYXRoZXJBUEkoY29uc3QgUVN0cmluZyYgY2xhc3NOYW1lLCBjb25zdCBRTWV0YVByb3BlcnR5
JiBwcm9wZXJ0eSwgUVN0cmluZ0xpc3QqIG91dHB1dCkKIHsKLSAgICAqb3V0cHV0IDw8IFFTdHJp
bmc6OmZyb21MYXRpbjEoIiUxJTIgLS0+ICUzIikuYXJnKHByZWZpeCkuYXJnKHByb3BlcnR5Lm5h
bWUoKSkuYXJnKHByb3BlcnR5LnR5cGVOYW1lKCkpOwotICAgIGNoZWNrS25vd25UeXBlKHByb3Bl
cnR5LnR5cGVOYW1lKCkpOworICAgICpvdXRwdXQgPDwgUVN0cmluZzo6ZnJvbUxhdGluMSgiJTEu
JTIgLS0+ICUzIikuYXJnKGNsYXNzTmFtZSkuYXJnKHByb3BlcnR5Lm5hbWUoKSkuYXJnKHByb3Bl
cnR5LnR5cGVOYW1lKCkpOworICAgIGNoZWNrS25vd25UeXBlKGNsYXNzTmFtZSwgcHJvcGVydHku
dHlwZU5hbWUoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGdhdGhlckFQSShjb25zdCBRU3RyaW5nJiBw
cmVmaXgsIGNvbnN0IFFNZXRhTWV0aG9kJiBtZXRob2QsIFFTdHJpbmdMaXN0KiBvdXRwdXQpCitz
dGF0aWMgdm9pZCBnYXRoZXJBUEkoY29uc3QgUVN0cmluZyYgY2xhc3NOYW1lLCBjb25zdCBRTWV0
YU1ldGhvZCYgbWV0aG9kLCBRU3RyaW5nTGlzdCogb3V0cHV0KQogewogICAgIGlmIChtZXRob2Qu
YWNjZXNzKCkgIT0gUU1ldGFNZXRob2Q6OlByaXZhdGUpIHsKICAgICAgICAgY29uc3QgY2hhciog
bWV0aG9kVHlwZU5hbWUgPSAhIXN0cmxlbihtZXRob2QudHlwZU5hbWUoKSkgPyBtZXRob2QudHlw
ZU5hbWUoKSA6ICJ2b2lkIjsKLSAgICAgICAgKm91dHB1dCA8PCBRU3RyaW5nOjpmcm9tTGF0aW4x
KCIlMSUyIC0tPiAlMyIpLmFyZyhwcmVmaXgpLmFyZyhRU3RyaW5nOjpmcm9tTGF0aW4xKG1ldGhv
ZC5tZXRob2RTaWduYXR1cmUoKSkpLmFyZyhRU3RyaW5nOjpmcm9tTGF0aW4xKG1ldGhvZFR5cGVO
YW1lKSk7CisgICAgICAgICpvdXRwdXQgPDwgUVN0cmluZzo6ZnJvbUxhdGluMSgiJTEuJTIgLS0+
ICUzIikuYXJnKGNsYXNzTmFtZSkuYXJnKFFTdHJpbmc6OmZyb21MYXRpbjEobWV0aG9kLm1ldGhv
ZFNpZ25hdHVyZSgpKSkuYXJnKFFTdHJpbmc6OmZyb21MYXRpbjEobWV0aG9kVHlwZU5hbWUpKTsK
IAotICAgICAgICBjaGVja0tub3duVHlwZShtZXRob2RUeXBlTmFtZSk7CisgICAgICAgIGNoZWNr
S25vd25UeXBlKGNsYXNzTmFtZSwgbWV0aG9kVHlwZU5hbWUpOwogICAgICAgICBmb3JlYWNoIChR
Qnl0ZUFycmF5IHBhcmFtVHlwZSwgbWV0aG9kLnBhcmFtZXRlclR5cGVzKCkpCi0gICAgICAgICAg
ICBjaGVja0tub3duVHlwZShwYXJhbVR5cGUpOworICAgICAgICAgICAgY2hlY2tLbm93blR5cGUo
Y2xhc3NOYW1lLCBwYXJhbVR5cGUpOwogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgZ2F0aGVyQVBJ
KGNvbnN0IFFTdHJpbmcmIHByZWZpeCwgY29uc3QgUU1ldGFPYmplY3QqIG1ldGEsIFFTdHJpbmdM
aXN0KiBvdXRwdXQpCitzdGF0aWMgdm9pZCBnYXRoZXJBUEkoY29uc3QgUVN0cmluZyYgY2xhc3NO
YW1lLCBjb25zdCBRTWV0YU9iamVjdCogbWV0YSwgUVN0cmluZ0xpc3QqIG91dHB1dCkKIHsKICAg
ICAvLyAqT2Zmc2V0IHBvaW50cyB1cyBvbmx5IGF0IHRoZSBsZWFmIGNsYXNzIG1lbWJlcnMsIHdl
IGRvbid0IGhhdmUgaW5oZXJpdGFuY2UgaW4gb3VyIEFQSSB5ZXQgYW55d2F5LgogICAgIGZvciAo
aW50IGkgPSBtZXRhLT5lbnVtZXJhdG9yT2Zmc2V0KCk7IGkgPCBtZXRhLT5lbnVtZXJhdG9yQ291
bnQoKTsgKytpKQotICAgICAgICBnYXRoZXJBUEkocHJlZml4LCBtZXRhLT5lbnVtZXJhdG9yKGkp
LCBvdXRwdXQpOworICAgICAgICBnYXRoZXJBUEkoY2xhc3NOYW1lLCBtZXRhLT5lbnVtZXJhdG9y
KGkpLCBvdXRwdXQpOwogICAgIGZvciAoaW50IGkgPSBtZXRhLT5wcm9wZXJ0eU9mZnNldCgpOyBp
IDwgbWV0YS0+cHJvcGVydHlDb3VudCgpOyArK2kpCi0gICAgICAgIGdhdGhlckFQSShwcmVmaXgs
IG1ldGEtPnByb3BlcnR5KGkpLCBvdXRwdXQpOworICAgICAgICBnYXRoZXJBUEkoY2xhc3NOYW1l
LCBtZXRhLT5wcm9wZXJ0eShpKSwgb3V0cHV0KTsKICAgICBmb3IgKGludCBpID0gbWV0YS0+bWV0
aG9kT2Zmc2V0KCk7IGkgPCBtZXRhLT5tZXRob2RDb3VudCgpOyArK2kpCi0gICAgICAgIGdhdGhl
ckFQSShwcmVmaXgsIG1ldGEtPm1ldGhvZChpKSwgb3V0cHV0KTsKKyAgICAgICAgZ2F0aGVyQVBJ
KGNsYXNzTmFtZSwgbWV0YS0+bWV0aG9kKGkpLCBvdXRwdXQpOwogfQogCiB2b2lkIHRzdF9wdWJs
aWNhcGk6OnB1YmxpY0FQSSgpCiB7CiAgICAgUVN0cmluZ0xpc3QgYWN0dWFsQVBJOwogICAgIGZv
cmVhY2ggKGNvbnN0IFFNZXRhT2JqZWN0KiBtZXRhLCB0eXBlc1RvQ2hlY2spCi0gICAgICAgIGdh
dGhlckFQSShRU3RyaW5nOjpmcm9tTGF0aW4xKG1ldGEtPmNsYXNzTmFtZSgpKSArICIuIiwgbWV0
YSwgJmFjdHVhbEFQSSk7CisgICAgICAgIGdhdGhlckFQSShRU3RyaW5nOjpmcm9tTGF0aW4xKG1l
dGEtPmNsYXNzTmFtZSgpKSwgbWV0YSwgJmFjdHVhbEFQSSk7CiAKICAgICAvLyBVbmNvbW1lbnQg
dG8gcHJpbnQgdGhlIGFjdHVhbCBBUEkuCiAgICAgLy8gZm9yZWFjaChRU3RyaW5nIGFjdHVhbCwg
YWN0dWFsQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90
ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9maW5kU3RyaW5nLnFtbCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfZmluZFN0cmluZy5x
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZiMWRhOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMv
V2ViVmlldy90c3RfZmluZFN0cmluZy5xbWwKQEAgLTAsMCArMSwxNTIgQEAKK2ltcG9ydCBRdFF1
aWNrIDIuMAoraW1wb3J0IFF0VGVzdCAxLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAKK2ltcG9ydCAi
Li4vY29tbW9uIgorCitUZXN0V2ViVmlldyB7CisgICAgaWQ6IHdlYlZpZXcKKyAgICB3aWR0aDog
NDAwCisgICAgaGVpZ2h0OiAzMDAKKworICAgIHByb3BlcnR5IGludCBtYXRjaENvdW50OiAtMQor
ICAgIHByb3BlcnR5IGJvb2wgZmluZEZhaWxlZDogZmFsc2UKKyAgICBmdW5jdGlvbiBjbGVhcigp
IHsKKyAgICAgICAgc3RyaW5nRm91bmRTcHkuY2xlYXIoKQorICAgICAgICBzdHJpbmdGaW5kRmFp
bGVkU3B5LmNsZWFyKCkKKyAgICAgICAgZmluZEZhaWxlZCA9IGZhbHNlCisgICAgICAgIG1hdGNo
Q291bnQgPSAtMQorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiBzdHJpbmdG
b3VuZFNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2lnbmFsTmFtZTogInN0
cmluZ0ZvdW5kIgorICAgIH0KKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDogc3RyaW5nRmlu
ZEZhaWxlZFNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2lnbmFsTmFtZTog
InN0cmluZ0ZpbmRGYWlsZWQiCisgICAgfQorCisgICAgb25TdHJpbmdGb3VuZDogeworICAgICAg
ICB3ZWJWaWV3Lm1hdGNoQ291bnQgPSBtYXRjaENvdW50CisgICAgfQorICAgIG9uU3RyaW5nRmlu
ZEZhaWxlZDogeworICAgICAgICBmaW5kRmFpbGVkID0gdHJ1ZQorICAgIH0KKworICAgIFRlc3RD
YXNlIHsKKyAgICAgICAgbmFtZTogIldlYlZpZXdGaW5kU3RyaW5nIgorCisgICAgICAgIGZ1bmN0
aW9uIHRlc3RfZmluZFN0cmluZygpIHsKKyAgICAgICAgICAgIHZhciBmaW5kT3B0aW9ucyA9IFdl
YlZpZXcuRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0CisgICAgICAgICAgICB3ZWJWaWV3LmNsZWFy
KCkKKyAgICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90
ZXN0MS5odG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2Vl
ZGVkKCkpCisgICAgICAgICAgICB3ZWJWaWV3LmZpbmRTdHJpbmcoIkhlbGxvIiwgZmluZE9wdGlv
bnMpCisgICAgICAgICAgICBzdHJpbmdGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBh
cmUoc3RyaW5nRm91bmRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKG1hdGNoQ291
bnQsIDEpCisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5kU3RyaW5nQ2FzZUlu
c2Vuc2l0aXZlKCkgeworICAgICAgICAgICAgdmFyIGZpbmRPcHRpb25zID0gV2ViVmlldy5GaW5k
T3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZQorCisgICAgICAgICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAg
ICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0MS5o
dG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkp
CisgICAgICAgICAgICB3ZWJWaWV3LmZpbmRTdHJpbmcoImhlTExvIiwgZmluZE9wdGlvbnMsIDEw
MDApCisgICAgICAgICAgICBzdHJpbmdGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBh
cmUoc3RyaW5nRm91bmRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKG1hdGNoQ291
bnQsIDEpCisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5kU3RyaW5nTWFueU1h
dGNoZXMoKSB7CisgICAgICAgICAgICB2YXIgZmluZE9wdGlvbnMgPSBXZWJWaWV3LkZpbmRPcHRp
b25zU2hvd0hpZ2hsaWdodAorICAgICAgICAgICAgd2ViVmlldy5jbGVhcigpCisgICAgICAgICAg
ICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDQuaHRtbCIpCisg
ICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAg
ICAgICAgd2ViVmlldy5maW5kU3RyaW5nKCJibGEiLCBmaW5kT3B0aW9ucywgMTAwMCkKKyAgICAg
ICAgICAgIHN0cmluZ0ZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShzdHJpbmdG
b3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMTAwKQor
ICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIHRlc3RfZmluZFN0cmluZ0JhY2t3YXJkcygpIHsK
KyAgICAgICAgICAgIHZhciBmaW5kT3B0aW9ucyA9IFdlYlZpZXcuRmluZE9wdGlvbnNTaG93SGln
aGxpZ2h0CisgICAgICAgICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAgICAgICAgICAgIHdlYlZpZXcu
dXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0NC5odG1sIikKKyAgICAgICAgICAg
IHZlcmlmeSh3ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkpCisgICAgICAgICAgICB3ZWJW
aWV3LmZpbmRTdHJpbmcoImJsYTAiLCBmaW5kT3B0aW9ucywgMTAwMCkKKyAgICAgICAgICAgIHN0
cmluZ0ZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShzdHJpbmdGb3VuZFNweS5j
b3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMTApCisgICAgICAgICAg
ICBmb3IodmFyIGk9MDsgaSA8IDk7IGkrKykgeworICAgICAgICAgICAgICAgIHdlYlZpZXcuZmlu
ZFN0cmluZygiYmxhMCIsIGZpbmRPcHRpb25zLCAxMDAwKQorICAgICAgICAgICAgICAgIHN0cmlu
Z0ZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY29tcGFyZShzdHJp
bmdGb3VuZFNweS5jb3VudCwgMTApCisgICAgICAgICAgICB3ZWJWaWV3LmZpbmRTdHJpbmcoImJs
YTAiLCBmaW5kT3B0aW9ucywgMTAwMCkKKyAgICAgICAgICAgIHN0cmluZ0ZpbmRGYWlsZWRTcHku
d2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHN0cmluZ0ZpbmRGYWlsZWRTcHkuY291bnQsIDEp
CisgICAgICAgICAgICBjb21wYXJlKGZpbmRGYWlsZWQsIHRydWUpCisKKyAgICAgICAgICAgIHdl
YlZpZXcuY2xlYXIoKQorICAgICAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViVmlldy5GaW5kT3B0
aW9uc0JhY2t3YXJkcworICAgICAgICAgICAgd2ViVmlldy5maW5kU3RyaW5nKCJibGEwIiwgZmlu
ZE9wdGlvbnMsIDEwMDApCisgICAgICAgICAgICBzdHJpbmdGb3VuZFNweS53YWl0KCkKKyAgICAg
ICAgICAgIGNvbXBhcmUoc3RyaW5nRm91bmRTcHkuY291bnQsIDEpCisgICAgICAgIH0KKyAgICAg
ICAgZnVuY3Rpb24gdGVzdF9maW5kU3RyaW5nRmFpbE5vV3JhcCgpIHsKKyAgICAgICAgICAgIHZh
ciBmaW5kT3B0aW9ucyA9IFdlYlZpZXcuRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0CisgICAgICAg
ICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAgICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2
ZWRVcmwoIi4uL2NvbW1vbi90ZXN0NC5odG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3
LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkpCisgICAgICAgICAgICB3ZWJWaWV3LmZpbmRTdHJpbmco
ImJsYTAiLCBmaW5kT3B0aW9ucywgMTAwMCkKKyAgICAgICAgICAgIHN0cmluZ0ZvdW5kU3B5Lndh
aXQoKQorICAgICAgICAgICAgY29tcGFyZShzdHJpbmdGb3VuZFNweS5jb3VudCwgMSkKKyAgICAg
ICAgICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMTApCisgICAgICAgICAgICBmb3IodmFyIGk9MDsg
aSA8IDk7IGkrKykgeworICAgICAgICAgICAgICAgIHdlYlZpZXcuZmluZFN0cmluZygiYmxhMCIs
IGZpbmRPcHRpb25zLCAxMDAwKQorICAgICAgICAgICAgICAgIHN0cmluZ0ZvdW5kU3B5LndhaXQo
KQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY29tcGFyZShzdHJpbmdGb3VuZFNweS5jb3Vu
dCwgMTApCisgICAgICAgICAgICB3ZWJWaWV3LmZpbmRTdHJpbmcoImJsYTAiLCBmaW5kT3B0aW9u
cywgMTAwMCkKKyAgICAgICAgICAgIHN0cmluZ0ZpbmRGYWlsZWRTcHkud2FpdCgpCisgICAgICAg
ICAgICBjb21wYXJlKHN0cmluZ0ZpbmRGYWlsZWRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBj
b21wYXJlKGZpbmRGYWlsZWQsIHRydWUpCisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVz
dF9maW5kU3RyaW5nV3JhcCgpIHsKKyAgICAgICAgICAgIHZhciBmaW5kT3B0aW9ucyA9IFdlYlZp
ZXcuRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0CisgICAgICAgICAgICBmaW5kT3B0aW9ucyB8PSBX
ZWJWaWV3LkZpbmRPcHRpb25zV3JhcEFyb3VuZAorICAgICAgICAgICAgd2ViVmlldy5jbGVhcigp
CisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVz
dDQuaHRtbCIpCisgICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRl
ZCgpKQorICAgICAgICAgICAgd2ViVmlldy5maW5kU3RyaW5nKCJibGEwIiwgZmluZE9wdGlvbnMs
IDEwMDApCisgICAgICAgICAgICBzdHJpbmdGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNv
bXBhcmUoc3RyaW5nRm91bmRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKG1hdGNo
Q291bnQsIDEwKQorICAgICAgICAgICAgZm9yKHZhciBpPTA7IGkgPCAxOTsgaSsrKSB7CisgICAg
ICAgICAgICAgICAgd2ViVmlldy5maW5kU3RyaW5nKCJibGEwIiwgZmluZE9wdGlvbnMsIDEwMDAp
CisgICAgICAgICAgICAgICAgc3RyaW5nRm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBjb21wYXJlKHN0cmluZ0ZvdW5kU3B5LmNvdW50LCAyMCkKKyAgICAgICAgfQor
ICAgICAgICBmdW5jdGlvbiB0ZXN0X2ZpbmRTdHJpbmdGYWlsQ2FzZVNlbnNpdGl2ZSgpIHsKKyAg
ICAgICAgICAgIHZhciBmaW5kT3B0aW9ucyA9IDAKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIo
KQorICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rl
c3QxLmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVk
ZWQoKSkKKyAgICAgICAgICAgIHdlYlZpZXcuZmluZFN0cmluZygiaGVMTG8iLCBmaW5kT3B0aW9u
cywgMTAwMCkKKyAgICAgICAgICAgIHN0cmluZ0ZpbmRGYWlsZWRTcHkud2FpdCgpCisgICAgICAg
ICAgICBjb21wYXJlKHN0cmluZ0ZpbmRGYWlsZWRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBj
b21wYXJlKGZpbmRGYWlsZWQsIHRydWUpCisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVz
dF9maW5kU3RyaW5nTm90Rm91bmQoKSB7CisgICAgICAgICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAg
ICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0MS5o
dG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkp
CisgICAgICAgICAgICB3ZWJWaWV3LmZpbmRTdHJpbmcoInN0cmluZy10aGF0LWlzLW5vdC10aHJl
cmUiKQorICAgICAgICAgICAgc3RyaW5nRmluZEZhaWxlZFNweS53YWl0KCkKKyAgICAgICAgICAg
IGNvbXBhcmUoc3RyaW5nRmluZEZhaWxlZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBh
cmUoZmluZEZhaWxlZCwgdHJ1ZSkKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmVkMDA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwCkBAIC0wLDAg
KzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIgSGV3bGV0dC1QYWNrYXJkIERldmVs
b3BtZW50IENvbXBhbnksIEwuUC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJR
dFdlYlBhZ2VGaW5kQ2xpZW50LmgiCisKKyNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3BfcC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1F0V2Vi
UGFnZUZpbmRDbGllbnQ6OlF0V2ViUGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFFR
dWlja1dlYlZpZXcqIHdlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKK3sKKyAgICBX
S1BhZ2VGaW5kQ2xpZW50IGZpbmRDbGllbnQ7CisgICAgbWVtc2V0KCZmaW5kQ2xpZW50LCAwLCBz
aXplb2YoV0tQYWdlRmluZENsaWVudCkpOworICAgIGZpbmRDbGllbnQudmVyc2lvbiA9IGtXS1Bh
Z2VGaW5kQ2xpZW50Q3VycmVudFZlcnNpb247CisgICAgZmluZENsaWVudC5jbGllbnRJbmZvID0g
dGhpczsKKyAgICBmaW5kQ2xpZW50LmRpZEZpbmRTdHJpbmcgPSBkaWRGaW5kU3RyaW5nOworICAg
IGZpbmRDbGllbnQuZGlkRmFpbFRvRmluZFN0cmluZyA9IGRpZEZhaWxUb0ZpbmRTdHJpbmc7Cisg
ICAgZmluZENsaWVudC5kaWRDb3VudFN0cmluZ01hdGNoZXMgPSBkaWRDb3VudFN0cmluZ01hdGNo
ZXM7CisgICAgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQocGFnZVJlZiwgJmZpbmRDbGllbnQpOwor
fQorCit2b2lkIFF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZEZpbmRTdHJpbmcodW5zaWduZWQgbWF0
Y2hDb3VudCkKK3sKKyAgICBtX3dlYlZpZXctPmRfZnVuYygpLT5kaWRGaW5kU3RyaW5nKG1hdGNo
Q291bnQpOworfQorCit2b2lkIFF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZEZhaWxUb0ZpbmRTdHJp
bmcoKQoreworICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPmRpZEZhaWxUb0ZpbmRTdHJpbmcoKTsK
K30KKwordm9pZCBRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRDb3VudFN0cmluZ01hdGNoZXModW5z
aWduZWQgbWF0Y2hDb3VudCkKK3sKKyAgICBtX3dlYlZpZXctPmRfZnVuYygpLT5kaWRDb3VudFN0
cmluZ01hdGNoZXMobWF0Y2hDb3VudCk7Cit9CisKKworc3RhdGljIFF0V2ViUGFnZUZpbmRDbGll
bnQqIHRvUXRXZWJQYWdlRmluZENsaWVudChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAg
IEFTU0VSVChjbGllbnRJbmZvKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxRdFdlYlBh
Z2VGaW5kQ2xpZW50Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworfQorCit2b2lk
IFF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZEZpbmRTdHJpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLU3Ry
aW5nUmVmIHN0cmluZywgdW5zaWduZWQgbWF0Y2hDb3VudCwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICB0b1F0V2ViUGFnZUZpbmRDbGllbnQoY2xpZW50SW5mbyktPmRpZEZpbmRTdHJp
bmcobWF0Y2hDb3VudCk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlRmluZENsaWVudDo6ZGlkRmFpbFRv
RmluZFN0cmluZyhXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgc3RyaW5nLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIHRvUXRXZWJQYWdlRmluZENsaWVudChjbGllbnRJbmZvKS0+
ZGlkRmFpbFRvRmluZFN0cmluZygpOworfQorCit2b2lkIFF0V2ViUGFnZUZpbmRDbGllbnQ6OmRp
ZENvdW50U3RyaW5nTWF0Y2hlcyhXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgc3RyaW5nLCB1
bnNpZ25lZCBtYXRjaENvdW50LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHRvUXRX
ZWJQYWdlRmluZENsaWVudChjbGllbnRJbmZvKS0+ZGlkQ291bnRTdHJpbmdNYXRjaGVzKG1hdGNo
Q291bnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJraXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjFkOWMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTIgSGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBh
bnksIEwuUC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpZm5kZWYgUXRXZWJQYWdlRmluZENsaWVudF9oCisjZGVmaW5lIFF0V2Vi
UGFnZUZpbmRDbGllbnRfaAorCisjaW5jbHVkZSA8UXRHbG9iYWw+CisjaW5jbHVkZSA8V0tQYWdl
Lmg+CisjaW5jbHVkZSA8V2ViRnJhbWVQcm94eS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCitjbGFzcyBRUXVpY2tXZWJWaWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgUXRXZWJQYWdlRmluZENsaWVudCB7CitwdWJsaWM6CisgICAgUXRXZWJQYWdlRmluZENs
aWVudChXS1BhZ2VSZWYsIFFRdWlja1dlYlZpZXcqKTsKKworcHJpdmF0ZToKKworICAgIHZvaWQg
ZGlkRmluZFN0cmluZyh1bnNpZ25lZCBtYXRjaENvdW50KTsKKyAgICB2b2lkIGRpZEZhaWxUb0Zp
bmRTdHJpbmcoKTsKKyAgICB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyh1bnNpZ25lZCBtYXRj
aENvdW50KTsKKworICAgIC8vIFdLUGFnZUZpbmRDbGllbnQgY2FsbGJhY2tzLgorICAgIHN0YXRp
YyB2b2lkIGRpZEZpbmRTdHJpbmcoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiwgdW5zaWduZWQgbWF0
Y2hDb3VudCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkRmFp
bFRvRmluZFN0cmluZyhXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoV0tQYWdlUmVmLCBX
S1N0cmluZ1JlZiwgdW5zaWduZWQgbWF0Y2hDb3VudCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CisKKyAgICBRUXVpY2tXZWJWaWV3KiBtX3dlYlZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJraXQKKworI2VuZGlmIC8vIFF0V2ViUGFnZUZpbmRDbGllbnRfaAotLSAKMS43LjUuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163566</attachid>
            <date>2012-09-12 02:43:32 -0700</date>
            <delta_ts>2012-09-12 05:40:14 -0700</delta_ts>
            <desc>[Qt][WK2] Add API to find text from page</desc>
            <filename>0001-Qt-WK2-Add-API-to-find-text-from-page.patch</filename>
            <type>text/plain</type>
            <size>28859</size>
            <attacher name="Heikki Paajanen">hepaajan</attacher>
            
              <data encoding="base64">RnJvbSBlMGMwZjFlMDEwMTY1ODIzZWM0NDBlMjk0NTk0MTg2ZjZlNzQzYzk3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgUGFhamFuZW4gPGhlaWtraS5wYWFqYW5lbkBwYWxt
LmNvbT4KRGF0ZTogV2VkLCAxMiBTZXAgMjAxMiAxMDoyMjoxOSArMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF1bV0syXSBBZGQgQVBJIHRvIGZpbmQgdGV4dCBmcm9tIHBhZ2UKIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjQ4MQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgpFeHBvc2UgZmluZFN0cmluZyBhbmQgUGFnZUZpbmRDbGllbnQgcHJvdmlkZWQgZnVu
Y3Rpb25hbGl0eSB0byBRdFF1aWNrCmFwcGxpY2F0aW9ucy4KCiogVGFyZ2V0LnByaToKKiBVSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgooUVF1aWNrV2ViVmlld1ByaXZhdGU6Omlu
aXRpYWxpemUpOgooUVF1aWNrV2ViVmlldzo6ZmluZFN0cmluZyk6CihRUXVpY2tXZWJWaWV3Ojpo
aWRlRmluZFN0cmluZyk6CihRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmluZFN0cmluZyk6CihR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmFpbFRvRmluZFN0cmluZyk6CihRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6ZGlkQ291bnRTdHJpbmdNYXRjaGVzKToKKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnZpZXdfcC5oOgooV2ViS2l0KToKKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cF9wLmg6CihRUXVpY2tXZWJWaWV3UHJpdmF0ZSk6CiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9w
dWJsaWNhcGkvdHN0X3B1YmxpY2FwaS5jcHA6Cihpc0NoZWNrZWRFbnVtKToKKGNoZWNrS25vd25U
eXBlKToKKGdhdGhlckFQSSk6Cih0c3RfcHVibGljYXBpOjpwdWJsaWNBUEkpOgpBZGRlZCBjaGVj
ayBmb3IgZmluZCBBUEkuIEFkZGVkIHN1cHBvcnQgY2hlY2tpbmcgZW51bXMgZnJvbSBzYW1lIGNs
YXNzLgoKKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRT
dHJpbmcucW1sOiBBZGRlZC4KKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5jcHA6
IEFkZGVkLgooV2ViS2l0KToKKFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVudDo6UXRXZWJQYWdl
RmluZENsaWVudCk6CihXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZEZpbmRTdHJpbmcp
OgooV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRGYWlsVG9GaW5kU3RyaW5nKToKKFdl
YktpdDo6UXRXZWJQYWdlRmluZENsaWVudDo6ZGlkQ291bnRTdHJpbmdNYXRjaGVzKToKKFdlYktp
dDo6dG9RdFdlYlBhZ2VGaW5kQ2xpZW50KToKKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENs
aWVudC5oOiBBZGRlZC4KKFdlYktpdCk6CihRdFdlYlBhZ2VGaW5kQ2xpZW50KToKLS0tCiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDEgKysr
KysrCiBTb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgIDIgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNw
cCAgfCAgIDMzICsrKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnZpZXdfcC5oICB8ICAgMTkgKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnZpZXdfcF9wLmggICB8ICAgIDUgKwogLi4uL0FQSS9xdC90ZXN0cy9wdWJsaWNhcGkvdHN0
X3B1YmxpY2FwaS5jcHAgICAgICAgfCAgIDY4ICsrKysrKy0tLS0KIC4uLi9xdC90ZXN0cy9xbWx0
ZXN0cy9XZWJWaWV3L3RzdF9maW5kU3RyaW5nLnFtbCAgIHwgIDE1MiArKysrKysrKysrKysrKysr
KysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwICAg
fCAgIDgwICsrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VG
aW5kQ2xpZW50LmggIHwgICA1MyArKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDQyOCBpbnNlcnRp
b25zKCspLCAyNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRTdHJpbmcu
cW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZUZpbmRDbGllbnQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwY2Q5ZjFlLi45
OTExNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTItMDktMTIgIEhlaWtraSBQ
YWFqYW5lbiAgPGhlaWtraS5wYWFqYW5lbkBwYWxtLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0g
QWRkIEFQSSB0byBmaW5kIHRleHQgZnJvbSBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjQ4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBmaW5kU3RyaW5nIGFuZCBQYWdlRmluZENsaWVu
dCBwcm92aWRlZCBmdW5jdGlvbmFsaXR5IHRvIFF0UXVpY2sKKyAgICAgICAgYXBwbGljYXRpb25z
LgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxp
emUpOgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6ZmluZFN0cmluZyk6CisgICAgICAgIChRUXVp
Y2tXZWJWaWV3OjpoaWRlRmluZFN0cmluZyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6ZGlkRmluZFN0cmluZyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmFp
bFRvRmluZFN0cmluZyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ291bnRT
dHJpbmdNYXRjaGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnZpZXdfcF9wLmg6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9wdWJsaWNhcGkvdHN0X3B1YmxpY2FwaS5jcHA6Cisg
ICAgICAgIChpc0NoZWNrZWRFbnVtKToKKyAgICAgICAgKGNoZWNrS25vd25UeXBlKToKKyAgICAg
ICAgKGdhdGhlckFQSSk6CisgICAgICAgICh0c3RfcHVibGljYXBpOjpwdWJsaWNBUEkpOgorICAg
ICAgICBBZGRlZCBjaGVjayBmb3IgZmluZCBBUEkuIEFkZGVkIHN1cHBvcnQgY2hlY2tpbmcgZW51
bXMgZnJvbSBzYW1lIGNsYXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
bWx0ZXN0cy9XZWJWaWV3L3RzdF9maW5kU3RyaW5nLnFtbDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OlF0V2ViUGFnZUZpbmRD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRGaW5kU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVudDo6ZGlkRmFpbFRvRmlu
ZFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZENvdW50
U3RyaW5nTWF0Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OnRvUXRXZWJQYWdlRmluZENsaWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUXRXZWJQYWdlRmluZENsaWVudCk6CisKIDIwMTIt
MDktMTAgIEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+CiAKICAgICAgICAg
W1F0XVtXSzJdIFFXZWJLaXRUZXN0IHNob3VsZCByZXRyaWV2ZSB0aGUgdmlld3BvcnQgc3RhdGUg
ZnJvbSB0aGUgUGFnZVZpZXdwb3J0Q29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggOGQ3MDM2Ny4u
MGRkZTFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC03NzgsNiArNzc4LDcgQEAgY29udGFpbnMoREVGSU5F
UywgSEFWRV9RVFFVSUNLPTEpIHsKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVy
LmggXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaCBcCiAgICAgICAg
IFVJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaCBcCisgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VGaW5kQ2xpZW50LmggXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENs
aWVudC5oIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBvbGljeUNsaWVudC5oIFwK
ICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5oIFwKQEAgLTgwOCw2ICs4MDks
NyBAQCBjb250YWlucyhERUZJTkVTLCBIQVZFX1FUUVVJQ0s9MSkgewogICAgICAgICBVSVByb2Nl
c3MvcXQvUXREaWFsb2dSdW5uZXIuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0RG93bmxv
YWRNYW5hZ2VyLmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwIFwK
KyAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwIFwKICAgICAgICAg
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVBvbGljeUNsaWVudC5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlU0dOb2RlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCA0OTBiOWJhLi4yZjU0NjYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKQEAgLTMwLDkg
KzMwLDExIEBACiAjaW5jbHVkZSAiUXRXZWJFcnJvci5oIgogI2luY2x1ZGUgIlF0V2ViSWNvbkRh
dGFiYXNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmgiCisjaW5j
bHVkZSAiUXRXZWJQYWdlRmluZENsaWVudC5oIgogI2luY2x1ZGUgIlF0V2ViUGFnZUxvYWRDbGll
bnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJXZWJC
YWNrRm9yd2FyZExpc3QuaCIKKyNpbmNsdWRlICJXZWJGaW5kT3B0aW9ucy5oIgogI2lmIEVOQUJM
RShJTlNQRUNUT1JfU0VSVkVSKQogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCkBAIC0zMDYsNiArMzA4LDcgQEAgdm9pZCBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6aW5pdGlhbGl6ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQ
YWdlR3JvdXBSZWYgcGEKICAgICBRUXVpY2tXZWJQYWdlUHJpdmF0ZSogY29uc3QgcGFnZVZpZXdQ
cml2YXRlID0gcGFnZVZpZXcuZGF0YSgpLT5kOwogICAgIHBhZ2VWaWV3UHJpdmF0ZS0+aW5pdGlh
bGl6ZSh3ZWJQYWdlUHJveHkuZ2V0KCkpOwogCisgICAgcGFnZUZpbmRDbGllbnQucmVzZXQobmV3
IFF0V2ViUGFnZUZpbmRDbGllbnQodG9BUEkod2ViUGFnZVByb3h5LmdldCgpKSwgcV9wdHIpKTsK
ICAgICBwYWdlTG9hZENsaWVudC5yZXNldChuZXcgUXRXZWJQYWdlTG9hZENsaWVudCh0b0FQSSh3
ZWJQYWdlUHJveHkuZ2V0KCkpLCBxX3B0cikpOwogICAgIHBhZ2VQb2xpY3lDbGllbnQucmVzZXQo
bmV3IFF0V2ViUGFnZVBvbGljeUNsaWVudCh0b0FQSSh3ZWJQYWdlUHJveHkuZ2V0KCkpLCBxX3B0
cikpOwogICAgIHBhZ2VVSUNsaWVudC5yZXNldChuZXcgUXRXZWJQYWdlVUlDbGllbnQodG9BUEko
d2ViUGFnZVByb3h5LmdldCgpKSwgcV9wdHIpKTsKQEAgLTIwMzQsNiArMjAzNywxOCBAQCB2b2lk
IFFRdWlja1dlYlZpZXc6OmxvYWRIdG1sKGNvbnN0IFFTdHJpbmcmIGh0bWwsIGNvbnN0IFFVcmwm
IGJhc2VVcmwsIGNvbnN0IFFVcgogICAgICAgICBkLT53ZWJQYWdlUHJveHktPmxvYWRIVE1MU3Ry
aW5nKGh0bWwsIGJhc2VVcmwudG9TdHJpbmcoKSk7CiB9CiAKK3ZvaWQgUVF1aWNrV2ViVmlldzo6
ZmluZFN0cmluZyhjb25zdCBRU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVu
c2lnbmVkIG1heE1hdGNoQ291bnQpCit7CisgICAgUV9EKFFRdWlja1dlYlZpZXcpOworICAgIGQt
PndlYlBhZ2VQcm94eS0+ZmluZFN0cmluZyhzdHJpbmcsIHN0YXRpY19jYXN0PFdlYktpdDo6Rmlu
ZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKK30KKwordm9pZCBRUXVpY2tXZWJW
aWV3OjpoaWRlRmluZFN0cmluZygpCit7CisgICAgUV9EKFFRdWlja1dlYlZpZXcpOworICAgIGQt
PndlYlBhZ2VQcm94eS0+aGlkZUZpbmRVSSgpOworfQorCiBxcmVhbCBRUXVpY2tXZWJWaWV3Ojp6
b29tRmFjdG9yKCkgY29uc3QKIHsKICAgICBRX0QoY29uc3QgUVF1aWNrV2ViVmlldyk7CkBAIC0y
MDcwLDYgKzIwODUsMjQgQEAgdm9pZCBRUXVpY2tXZWJWaWV3OjpzZXRBbGxvd0FueUhUVFBTQ2Vy
dGlmaWNhdGVGb3JMb2NhbEhvc3QoYm9vbCBhbGxvdykKICAgICBkLT5tX2FsbG93QW55SFRUUFND
ZXJ0aWZpY2F0ZUZvckxvY2FsSG9zdCA9IGFsbG93OwogfQogCit2b2lkIFFRdWlja1dlYlZpZXdQ
cml2YXRlOjpkaWRGaW5kU3RyaW5nKHVuc2lnbmVkIG1hdGNoQ291bnQpCit7CisgICAgUV9RKFFR
dWlja1dlYlZpZXcpOworICAgIGVtaXQgcS0+c3RyaW5nRm91bmQobWF0Y2hDb3VudCk7Cit9CisK
K3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZhaWxUb0ZpbmRTdHJpbmcoKQoreworICAg
IFFfUShRUXVpY2tXZWJWaWV3KTsKKyAgICBlbWl0IHEtPnN0cmluZ0ZpbmRGYWlsZWQoKTsKK30K
Kwordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ291bnRTdHJpbmdNYXRjaGVzKHVuc2ln
bmVkIG1hdGNoQ291bnQpCit7CisgICAgUV9RKFFRdWlja1dlYlZpZXcpOworICAgIGVtaXQgcS0+
Y291bnRlZFN0cmluZ01hdGNoZXMobWF0Y2hDb3VudCk7Cit9CisKIC8qIQogICAgIFxxbWxzaWdu
YWwgV2ViVmlldzo6b25Mb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdCkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKaW5kZXggNjhlNWZj
YS4uODZlMTE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXdfcC5oCkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3Ry
dWN0IFF0UmVmQ291bnRlZE5ldHdvcmtSZXF1ZXN0RGF0YTsKIGNsYXNzIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRRdDsKIGNsYXNzIFF0V2ViUGFnZUxvYWRDbGllbnQ7CitjbGFzcyBRdFdl
YlBhZ2VGaW5kQ2xpZW50OwogY2xhc3MgUXRXZWJQYWdlUG9saWN5Q2xpZW50OwogY2xhc3MgUXRX
ZWJQYWdlVUlDbGllbnQ7CiB9CkBAIC04Nyw2ICs4OCw3IEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JU
IFFRdWlja1dlYlZpZXcgOiBwdWJsaWMgUVF1aWNrRmxpY2thYmxlIHsKICAgICBRX0VOVU1TKExv
YWRTdGF0dXMpCiAgICAgUV9FTlVNUyhFcnJvckRvbWFpbikKICAgICBRX0VOVU1TKE5hdmlnYXRp
b25UeXBlKQorICAgIFFfRU5VTVMoRmluZE9wdGlvbnMpCiAKIHB1YmxpYzoKICAgICBlbnVtIE5h
dmlnYXRpb25SZXF1ZXN0QWN0aW9uIHsKQEAgLTExNiw2ICsxMTgsMTcgQEAgcHVibGljOgogICAg
ICAgICBPdGhlck5hdmlnYXRpb24KICAgICB9OwogCisgICAgZW51bSBGaW5kT3B0aW9ucyB7Cisg
ICAgICAgIEZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlID0gMSA8PCAwLAorICAgICAgICBGaW5k
T3B0aW9uc0F0V29yZFN0YXJ0cyA9IDEgPDwgMSwKKyAgICAgICAgRmluZE9wdGlvbnNUcmVhdE1l
ZGlhbENhcGl0YWxBc1dvcmRTdGFydCA9IDEgPDwgMiwKKyAgICAgICAgRmluZE9wdGlvbnNCYWNr
d2FyZHMgPSAxIDw8IDMsCisgICAgICAgIEZpbmRPcHRpb25zV3JhcEFyb3VuZCA9IDEgPDwgNCwK
KyAgICAgICAgRmluZE9wdGlvbnNTaG93T3ZlcmxheSA9IDEgPDwgNSwKKyAgICAgICAgRmluZE9w
dGlvbnNTaG93RmluZEluZGljYXRvciA9IDEgPDwgNiwKKyAgICAgICAgRmluZE9wdGlvbnNTaG93
SGlnaGxpZ2h0ID0gMSA8PCA3CisgICAgfTsKKwogICAgIFFRdWlja1dlYlZpZXcoUVF1aWNrSXRl
bSogcGFyZW50ID0gMCk7CiAgICAgdmlydHVhbCB+UVF1aWNrV2ViVmlldygpOwogCkBAIC0xNTgs
NiArMTcxLDggQEAgcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCBnb0ZvcndhcmQoKTsKICAgICB2
b2lkIHN0b3AoKTsKICAgICB2b2lkIHJlbG9hZCgpOworICAgIHZvaWQgZmluZFN0cmluZyhjb25z
dCBRU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMgPSBGaW5kT3B0aW9uc0Nhc2VJ
bnNlbnNpdGl2ZSwgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCA9IDEwMDApOworICAgIHZvaWQgaGlk
ZUZpbmRTdHJpbmcoKTsKIAogUV9TSUdOQUxTOgogICAgIHZvaWQgdGl0bGVDaGFuZ2VkKCk7CkBA
IC0xNjgsNiArMTgzLDkgQEAgUV9TSUdOQUxTOgogICAgIHZvaWQgaWNvbkNoYW5nZWQoKTsKICAg
ICB2b2lkIGxpbmtIb3ZlcmVkKGNvbnN0IFFVcmwmIGhvdmVyZWRVcmwsIGNvbnN0IFFTdHJpbmcm
IGhvdmVyZWRUaXRsZSk7CiAgICAgdm9pZCBuYXZpZ2F0aW9uUmVxdWVzdGVkKFFXZWJOYXZpZ2F0
aW9uUmVxdWVzdCogcmVxdWVzdCk7CisgICAgdm9pZCBzdHJpbmdGb3VuZCh1bnNpZ25lZCBtYXRj
aENvdW50KTsKKyAgICB2b2lkIHN0cmluZ0ZpbmRGYWlsZWQoKTsKKyAgICB2b2lkIGNvdW50ZWRT
dHJpbmdNYXRjaGVzKHVuc2lnbmVkIG1hdGNoQ291bnQpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBib29sIGNoaWxkTW91c2VFdmVudEZpbHRlcihRUXVpY2tJdGVtKiwgUUV2ZW50Kik7CkBA
IC0yMTksNiArMjM3LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUVdlYktpdFRlc3Q7
CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0
OwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlF0V2ViUGFnZUxvYWRDbGllbnQ7CisgICAgZnJp
ZW5kIGNsYXNzIFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVudDsKICAgICBmcmllbmQgY2xhc3Mg
V2ViS2l0OjpRdFdlYlBhZ2VQb2xpY3lDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6
UXRXZWJQYWdlVUlDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFdUUjo6UGxhdGZvcm1XZWJWaWV3
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2
aWV3X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3
X3BfcC5oCmluZGV4IGQxZDNkOWUuLjc3MzA5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKQEAgLTgyLDYgKzgyLDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEZhaWwoY29uc3QgV2ViS2l0OjpRdFdl
YkVycm9yJiBlcnJvcik7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZU1vdXNlRXZlbnQoUU1vdXNl
RXZlbnQqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kU3RyaW5nKHVuc2lnbmVkIG1hdGNo
Q291bnQpOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKCk7CisgICAgdmly
dHVhbCB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyh1bnNpZ25lZCBtYXRjaENvdW50KTsKKwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29y
ZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKSB7IH0KIAogICAgIGludCBsb2FkUHJvZ3Jlc3Mo
KSBjb25zdCB7IHJldHVybiBtX2xvYWRQcm9ncmVzczsgfQpAQCAtMTY0LDYgKzE2OCw3IEBAIHBy
b3RlY3RlZDoKICAgICBPd25QdHI8UVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKIAogICAg
IFFTY29wZWRQb2ludGVyPFdlYktpdDo6UXRXZWJQYWdlTG9hZENsaWVudD4gcGFnZUxvYWRDbGll
bnQ7CisgICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50PiBwYWdl
RmluZENsaWVudDsKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJLaXQ6OlF0V2ViUGFnZVBvbGljeUNs
aWVudD4gcGFnZVBvbGljeUNsaWVudDsKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJLaXQ6OlF0V2Vi
UGFnZVVJQ2xpZW50PiBwYWdlVUlDbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcHVibGljYXBpL3RzdF9wdWJsaWNhcGkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9wdWJsaWNhcGkvdHN0X3B1YmxpY2Fw
aS5jcHAKaW5kZXggZDBlYTFiZS4uMTNhNmYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9wdWJsaWNhcGkvdHN0X3B1YmxpY2FwaS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9wdWJsaWNhcGkvdHN0X3B1Ymxp
Y2FwaS5jcHAKQEAgLTU3LDYgKzU3LDE0IEBAIHN0YXRpYyBRU3RyaW5nTGlzdCBleHBlY3RlZEFQ
SSA9IFFTdHJpbmdMaXN0KCkKICAgICA8PCAiUVF1aWNrV2ViVmlldy5SZWxvYWROYXZpZ2F0aW9u
IC0tPiBOYXZpZ2F0aW9uVHlwZSIKICAgICA8PCAiUVF1aWNrV2ViVmlldy5Gb3JtUmVzdWJtaXR0
ZWROYXZpZ2F0aW9uIC0tPiBOYXZpZ2F0aW9uVHlwZSIKICAgICA8PCAiUVF1aWNrV2ViVmlldy5P
dGhlck5hdmlnYXRpb24gLS0+IE5hdmlnYXRpb25UeXBlIgorICAgIDw8ICJRUXVpY2tXZWJWaWV3
LkZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlIC0tPiBGaW5kT3B0aW9ucyIKKyAgICA8PCAiUVF1
aWNrV2ViVmlldy5GaW5kT3B0aW9uc0F0V29yZFN0YXJ0cyAtLT4gRmluZE9wdGlvbnMiCisgICAg
PDwgIlFRdWlja1dlYlZpZXcuRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFy
dCAtLT4gRmluZE9wdGlvbnMiCisgICAgPDwgIlFRdWlja1dlYlZpZXcuRmluZE9wdGlvbnNCYWNr
d2FyZHMgLS0+IEZpbmRPcHRpb25zIgorICAgIDw8ICJRUXVpY2tXZWJWaWV3LkZpbmRPcHRpb25z
V3JhcEFyb3VuZCAtLT4gRmluZE9wdGlvbnMiCisgICAgPDwgIlFRdWlja1dlYlZpZXcuRmluZE9w
dGlvbnNTaG93T3ZlcmxheSAtLT4gRmluZE9wdGlvbnMiCisgICAgPDwgIlFRdWlja1dlYlZpZXcu
RmluZE9wdGlvbnNTaG93RmluZEluZGljYXRvciAtLT4gRmluZE9wdGlvbnMiCisgICAgPDwgIlFR
dWlja1dlYlZpZXcuRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0IC0tPiBGaW5kT3B0aW9ucyIKICAg
ICA8PCAiUVF1aWNrV2ViVmlldy50aXRsZSAtLT4gUVN0cmluZyIKICAgICA8PCAiUVF1aWNrV2Vi
Vmlldy51cmwgLS0+IFFVcmwiCiAgICAgPDwgIlFRdWlja1dlYlZpZXcuaWNvbiAtLT4gUVVybCIK
QEAgLTc5LDYgKzg3LDEzIEBAIHN0YXRpYyBRU3RyaW5nTGlzdCBleHBlY3RlZEFQSSA9IFFTdHJp
bmdMaXN0KCkKICAgICA8PCAiUVF1aWNrV2ViVmlldy5nb0ZvcndhcmQoKSAtLT4gdm9pZCIKICAg
ICA8PCAiUVF1aWNrV2ViVmlldy5zdG9wKCkgLS0+IHZvaWQiCiAgICAgPDwgIlFRdWlja1dlYlZp
ZXcucmVsb2FkKCkgLS0+IHZvaWQiCisgICAgPDwgIlFRdWlja1dlYlZpZXcuZmluZFN0cmluZyhR
U3RyaW5nLEZpbmRPcHRpb25zLHVpbnQpIC0tPiB2b2lkIgorICAgIDw8ICJRUXVpY2tXZWJWaWV3
LmZpbmRTdHJpbmcoUVN0cmluZyxGaW5kT3B0aW9ucykgLS0+IHZvaWQiCisgICAgPDwgIlFRdWlj
a1dlYlZpZXcuZmluZFN0cmluZyhRU3RyaW5nKSAtLT4gdm9pZCIKKyAgICA8PCAiUVF1aWNrV2Vi
Vmlldy5oaWRlRmluZFN0cmluZygpIC0tPiB2b2lkIgorICAgIDw8ICJRUXVpY2tXZWJWaWV3LnN0
cmluZ0ZvdW5kKHVpbnQpIC0tPiB2b2lkIgorICAgIDw8ICJRUXVpY2tXZWJWaWV3LnN0cmluZ0Zp
bmRGYWlsZWQoKSAtLT4gdm9pZCIKKyAgICA8PCAiUVF1aWNrV2ViVmlldy5jb3VudGVkU3RyaW5n
TWF0Y2hlcyh1aW50KSAtLT4gdm9pZCIKICAgICA8PCAiUVdlYkxvYWRSZXF1ZXN0LnVybCAtLT4g
UVVybCIKICAgICA8PCAiUVdlYkxvYWRSZXF1ZXN0LnN0YXR1cyAtLT4gUVF1aWNrV2ViVmlldzo6
TG9hZFN0YXR1cyIKICAgICA8PCAiUVdlYkxvYWRSZXF1ZXN0LmVycm9yU3RyaW5nIC0tPiBRU3Ry
aW5nIgpAQCAtOTIsMTggKzEwNywyMSBAQCBzdGF0aWMgUVN0cmluZ0xpc3QgZXhwZWN0ZWRBUEkg
PSBRU3RyaW5nTGlzdCgpCiAgICAgPDwgIlFXZWJOYXZpZ2F0aW9uUmVxdWVzdC5hY3Rpb25DaGFu
Z2VkKCkgLS0+IHZvaWQiCiAgICAgOwogCi1zdGF0aWMgYm9vbCBpc0NoZWNrZWRFbnVtKGNvbnN0
IFFCeXRlQXJyYXkmIHR5cGVOYW1lKQorc3RhdGljIGJvb2wgaXNDaGVja2VkRW51bShjb25zdCBR
Qnl0ZUFycmF5JiBjbGFzc05hbWUsIGNvbnN0IFFCeXRlQXJyYXkmIHR5cGVOYW1lKQogeworICAg
IFFCeXRlQXJyYXkgZW51bUNsYXNzKGNsYXNzTmFtZSk7CisgICAgUUJ5dGVBcnJheSBlbnVtTmFt
ZSh0eXBlTmFtZSk7CiAgICAgUUxpc3Q8UUJ5dGVBcnJheT4gdG9rZW5zID0gdHlwZU5hbWUuc3Bs
aXQoJzonKTsKICAgICBpZiAodG9rZW5zLnNpemUoKSA9PSAzKSB7Ci0gICAgICAgIFFCeXRlQXJy
YXkmIGVudW1DbGFzcyA9IHRva2Vuc1swXTsKLSAgICAgICAgUUJ5dGVBcnJheSYgZW51bU5hbWUg
PSB0b2tlbnNbMl07Ci0gICAgICAgIGZvcmVhY2ggKGNvbnN0IFFNZXRhT2JqZWN0KiBtbywgdHlw
ZXNUb0NoZWNrKSB7Ci0gICAgICAgICAgICBpZiAobW8tPmNsYXNzTmFtZSgpICE9IGVudW1DbGFz
cykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSBt
by0+ZW51bWVyYXRvck9mZnNldCgpOyBpIDwgbW8tPmVudW1lcmF0b3JDb3VudCgpOyArK2kpCi0g
ICAgICAgICAgICAgICAgaWYgKG1vLT5lbnVtZXJhdG9yKGkpLm5hbWUoKSA9PSBlbnVtTmFtZSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGVudW1DbGFzcyA9IHRv
a2Vuc1swXTsKKyAgICAgICAgZW51bU5hbWUgPSB0b2tlbnNbMl07CisgICAgfQorICAgIGZvcmVh
Y2ggKGNvbnN0IFFNZXRhT2JqZWN0KiBtbywgdHlwZXNUb0NoZWNrKSB7CisgICAgICAgIGlmICht
by0+Y2xhc3NOYW1lKCkgIT0gZW51bUNsYXNzKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGZvciAoaW50IGkgPSBtby0+ZW51bWVyYXRvck9mZnNldCgpOyBpIDwgbW8tPmVudW1lcmF0
b3JDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtby0+ZW51bWVyYXRvcihpKS5uYW1l
KCkgPT0gZW51bU5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE5LDU1ICsxMzcsNTUgQEAgc3RhdGljIGJv
b2wgaXNDaGVja2VkQ2xhc3MoY29uc3QgUUJ5dGVBcnJheSYgdHlwZU5hbWUpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja0tub3duVHlwZShjb25zdCBRQnl0ZUFycmF5
JiB0eXBlTmFtZSkKK3N0YXRpYyB2b2lkIGNoZWNrS25vd25UeXBlKGNvbnN0IFFTdHJpbmcmIGNs
YXNzTmFtZSwgY29uc3QgUUJ5dGVBcnJheSYgdHlwZU5hbWUpCiB7CiAgICAgaWYgKCh0eXBlTmFt
ZSAhPSAidm9pZCIgJiYgIVFNZXRhVHlwZTo6dHlwZSh0eXBlTmFtZSkpIHx8IFFNZXRhVHlwZTo6
dHlwZSh0eXBlTmFtZSkgPj0gUU1ldGFUeXBlOjpVc2VyKSB7Ci0gICAgICAgIGJvb2wga25vd25F
bnVtID0gaXNDaGVja2VkRW51bSh0eXBlTmFtZSk7CisgICAgICAgIGJvb2wga25vd25FbnVtID0g
aXNDaGVja2VkRW51bShjbGFzc05hbWUudG9MYXRpbjEoKSwgdHlwZU5hbWUpOwogICAgICAgICBi
b29sIGtub3duQ2xhc3MgPSBpc0NoZWNrZWRDbGFzcyh0eXBlTmFtZSk7CiAgICAgICAgIFFWRVJJ
RlkyKGtub3duRW51bSB8fCBrbm93bkNsYXNzLCBxUHJpbnRhYmxlKFFTdHJpbmcoIlRoZSBBUEkg
dXNlcyBhbiB1bmtub3duIHR5cGUgWyUxXSwgeW91IG1pZ2h0IGhhdmUgdG8gYWRkIGl0IHRvIHRo
ZSB0eXBlc1RvQ2hlY2sgbGlzdC4iKS5hcmcodHlwZU5hbWUuY29uc3REYXRhKCkpKSk7CiAgICAg
fQogfQogCi1zdGF0aWMgdm9pZCBnYXRoZXJBUEkoY29uc3QgUVN0cmluZyYgcHJlZml4LCBjb25z
dCBRTWV0YUVudW0mIG1ldGFFbnVtLCBRU3RyaW5nTGlzdCogb3V0cHV0KQorc3RhdGljIHZvaWQg
Z2F0aGVyQVBJKGNvbnN0IFFTdHJpbmcmIGNsYXNzTmFtZSwgY29uc3QgUU1ldGFFbnVtJiBtZXRh
RW51bSwgUVN0cmluZ0xpc3QqIG91dHB1dCkKIHsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1l
dGFFbnVtLmtleUNvdW50KCk7ICsraSkKLSAgICAgICAgKm91dHB1dCA8PCBRU3RyaW5nOjpmcm9t
TGF0aW4xKCIlMSUyIC0tPiAlMyIpLmFyZyhwcmVmaXgpLmFyZyhtZXRhRW51bS5rZXkoaSkpLmFy
ZyhtZXRhRW51bS5uYW1lKCkpOworICAgICAgICAqb3V0cHV0IDw8IFFTdHJpbmc6OmZyb21MYXRp
bjEoIiUxLiUyIC0tPiAlMyIpLmFyZyhjbGFzc05hbWUpLmFyZyhtZXRhRW51bS5rZXkoaSkpLmFy
ZyhtZXRhRW51bS5uYW1lKCkpOwogfQogCi1zdGF0aWMgdm9pZCBnYXRoZXJBUEkoY29uc3QgUVN0
cmluZyYgcHJlZml4LCBjb25zdCBRTWV0YVByb3BlcnR5JiBwcm9wZXJ0eSwgUVN0cmluZ0xpc3Qq
IG91dHB1dCkKK3N0YXRpYyB2b2lkIGdhdGhlckFQSShjb25zdCBRU3RyaW5nJiBjbGFzc05hbWUs
IGNvbnN0IFFNZXRhUHJvcGVydHkmIHByb3BlcnR5LCBRU3RyaW5nTGlzdCogb3V0cHV0KQogewot
ICAgICpvdXRwdXQgPDwgUVN0cmluZzo6ZnJvbUxhdGluMSgiJTElMiAtLT4gJTMiKS5hcmcocHJl
Zml4KS5hcmcocHJvcGVydHkubmFtZSgpKS5hcmcocHJvcGVydHkudHlwZU5hbWUoKSk7Ci0gICAg
Y2hlY2tLbm93blR5cGUocHJvcGVydHkudHlwZU5hbWUoKSk7CisgICAgKm91dHB1dCA8PCBRU3Ry
aW5nOjpmcm9tTGF0aW4xKCIlMS4lMiAtLT4gJTMiKS5hcmcoY2xhc3NOYW1lKS5hcmcocHJvcGVy
dHkubmFtZSgpKS5hcmcocHJvcGVydHkudHlwZU5hbWUoKSk7CisgICAgY2hlY2tLbm93blR5cGUo
Y2xhc3NOYW1lLCBwcm9wZXJ0eS50eXBlTmFtZSgpKTsKIH0KIAotc3RhdGljIHZvaWQgZ2F0aGVy
QVBJKGNvbnN0IFFTdHJpbmcmIHByZWZpeCwgY29uc3QgUU1ldGFNZXRob2QmIG1ldGhvZCwgUVN0
cmluZ0xpc3QqIG91dHB1dCkKK3N0YXRpYyB2b2lkIGdhdGhlckFQSShjb25zdCBRU3RyaW5nJiBj
bGFzc05hbWUsIGNvbnN0IFFNZXRhTWV0aG9kJiBtZXRob2QsIFFTdHJpbmdMaXN0KiBvdXRwdXQp
CiB7CiAgICAgaWYgKG1ldGhvZC5hY2Nlc3MoKSAhPSBRTWV0YU1ldGhvZDo6UHJpdmF0ZSkgewog
ICAgICAgICBjb25zdCBjaGFyKiBtZXRob2RUeXBlTmFtZSA9ICEhc3RybGVuKG1ldGhvZC50eXBl
TmFtZSgpKSA/IG1ldGhvZC50eXBlTmFtZSgpIDogInZvaWQiOwotICAgICAgICAqb3V0cHV0IDw8
IFFTdHJpbmc6OmZyb21MYXRpbjEoIiUxJTIgLS0+ICUzIikuYXJnKHByZWZpeCkuYXJnKFFTdHJp
bmc6OmZyb21MYXRpbjEobWV0aG9kLm1ldGhvZFNpZ25hdHVyZSgpKSkuYXJnKFFTdHJpbmc6OmZy
b21MYXRpbjEobWV0aG9kVHlwZU5hbWUpKTsKKyAgICAgICAgKm91dHB1dCA8PCBRU3RyaW5nOjpm
cm9tTGF0aW4xKCIlMS4lMiAtLT4gJTMiKS5hcmcoY2xhc3NOYW1lKS5hcmcoUVN0cmluZzo6ZnJv
bUxhdGluMShtZXRob2QubWV0aG9kU2lnbmF0dXJlKCkpKS5hcmcoUVN0cmluZzo6ZnJvbUxhdGlu
MShtZXRob2RUeXBlTmFtZSkpOwogCi0gICAgICAgIGNoZWNrS25vd25UeXBlKG1ldGhvZFR5cGVO
YW1lKTsKKyAgICAgICAgY2hlY2tLbm93blR5cGUoY2xhc3NOYW1lLCBtZXRob2RUeXBlTmFtZSk7
CiAgICAgICAgIGZvcmVhY2ggKFFCeXRlQXJyYXkgcGFyYW1UeXBlLCBtZXRob2QucGFyYW1ldGVy
VHlwZXMoKSkKLSAgICAgICAgICAgIGNoZWNrS25vd25UeXBlKHBhcmFtVHlwZSk7CisgICAgICAg
ICAgICBjaGVja0tub3duVHlwZShjbGFzc05hbWUsIHBhcmFtVHlwZSk7CiAgICAgfQogfQogCi1z
dGF0aWMgdm9pZCBnYXRoZXJBUEkoY29uc3QgUVN0cmluZyYgcHJlZml4LCBjb25zdCBRTWV0YU9i
amVjdCogbWV0YSwgUVN0cmluZ0xpc3QqIG91dHB1dCkKK3N0YXRpYyB2b2lkIGdhdGhlckFQSShj
b25zdCBRU3RyaW5nJiBjbGFzc05hbWUsIGNvbnN0IFFNZXRhT2JqZWN0KiBtZXRhLCBRU3RyaW5n
TGlzdCogb3V0cHV0KQogewogICAgIC8vICpPZmZzZXQgcG9pbnRzIHVzIG9ubHkgYXQgdGhlIGxl
YWYgY2xhc3MgbWVtYmVycywgd2UgZG9uJ3QgaGF2ZSBpbmhlcml0YW5jZSBpbiBvdXIgQVBJIHll
dCBhbnl3YXkuCiAgICAgZm9yIChpbnQgaSA9IG1ldGEtPmVudW1lcmF0b3JPZmZzZXQoKTsgaSA8
IG1ldGEtPmVudW1lcmF0b3JDb3VudCgpOyArK2kpCi0gICAgICAgIGdhdGhlckFQSShwcmVmaXgs
IG1ldGEtPmVudW1lcmF0b3IoaSksIG91dHB1dCk7CisgICAgICAgIGdhdGhlckFQSShjbGFzc05h
bWUsIG1ldGEtPmVudW1lcmF0b3IoaSksIG91dHB1dCk7CiAgICAgZm9yIChpbnQgaSA9IG1ldGEt
PnByb3BlcnR5T2Zmc2V0KCk7IGkgPCBtZXRhLT5wcm9wZXJ0eUNvdW50KCk7ICsraSkKLSAgICAg
ICAgZ2F0aGVyQVBJKHByZWZpeCwgbWV0YS0+cHJvcGVydHkoaSksIG91dHB1dCk7CisgICAgICAg
IGdhdGhlckFQSShjbGFzc05hbWUsIG1ldGEtPnByb3BlcnR5KGkpLCBvdXRwdXQpOwogICAgIGZv
ciAoaW50IGkgPSBtZXRhLT5tZXRob2RPZmZzZXQoKTsgaSA8IG1ldGEtPm1ldGhvZENvdW50KCk7
ICsraSkKLSAgICAgICAgZ2F0aGVyQVBJKHByZWZpeCwgbWV0YS0+bWV0aG9kKGkpLCBvdXRwdXQp
OworICAgICAgICBnYXRoZXJBUEkoY2xhc3NOYW1lLCBtZXRhLT5tZXRob2QoaSksIG91dHB1dCk7
CiB9CiAKIHZvaWQgdHN0X3B1YmxpY2FwaTo6cHVibGljQVBJKCkKIHsKICAgICBRU3RyaW5nTGlz
dCBhY3R1YWxBUEk7CiAgICAgZm9yZWFjaCAoY29uc3QgUU1ldGFPYmplY3QqIG1ldGEsIHR5cGVz
VG9DaGVjaykKLSAgICAgICAgZ2F0aGVyQVBJKFFTdHJpbmc6OmZyb21MYXRpbjEobWV0YS0+Y2xh
c3NOYW1lKCkpICsgIi4iLCBtZXRhLCAmYWN0dWFsQVBJKTsKKyAgICAgICAgZ2F0aGVyQVBJKFFT
dHJpbmc6OmZyb21MYXRpbjEobWV0YS0+Y2xhc3NOYW1lKCkpLCBtZXRhLCAmYWN0dWFsQVBJKTsK
IAogICAgIC8vIFVuY29tbWVudCB0byBwcmludCB0aGUgYWN0dWFsIEFQSS4KICAgICAvLyBmb3Jl
YWNoKFFTdHJpbmcgYWN0dWFsLCBhY3R1YWxBUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRTdHJpbmcu
cW1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJW
aWV3L3RzdF9maW5kU3RyaW5nLnFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iZmIxZGE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9maW5kU3RyaW5nLnFtbApAQCAtMCwwICsx
LDE1MiBAQAoraW1wb3J0IFF0UXVpY2sgMi4wCitpbXBvcnQgUXRUZXN0IDEuMAoraW1wb3J0IFF0
V2ViS2l0IDMuMAoraW1wb3J0ICIuLi9jb21tb24iCisKK1Rlc3RXZWJWaWV3IHsKKyAgICBpZDog
d2ViVmlldworICAgIHdpZHRoOiA0MDAKKyAgICBoZWlnaHQ6IDMwMAorCisgICAgcHJvcGVydHkg
aW50IG1hdGNoQ291bnQ6IC0xCisgICAgcHJvcGVydHkgYm9vbCBmaW5kRmFpbGVkOiBmYWxzZQor
ICAgIGZ1bmN0aW9uIGNsZWFyKCkgeworICAgICAgICBzdHJpbmdGb3VuZFNweS5jbGVhcigpCisg
ICAgICAgIHN0cmluZ0ZpbmRGYWlsZWRTcHkuY2xlYXIoKQorICAgICAgICBmaW5kRmFpbGVkID0g
ZmFsc2UKKyAgICAgICAgbWF0Y2hDb3VudCA9IC0xCisgICAgfQorCisgICAgU2lnbmFsU3B5IHsK
KyAgICAgICAgaWQ6IHN0cmluZ0ZvdW5kU3B5CisgICAgICAgIHRhcmdldDogd2ViVmlldworICAg
ICAgICBzaWduYWxOYW1lOiAic3RyaW5nRm91bmQiCisgICAgfQorICAgIFNpZ25hbFNweSB7Cisg
ICAgICAgIGlkOiBzdHJpbmdGaW5kRmFpbGVkU3B5CisgICAgICAgIHRhcmdldDogd2ViVmlldwor
ICAgICAgICBzaWduYWxOYW1lOiAic3RyaW5nRmluZEZhaWxlZCIKKyAgICB9CisKKyAgICBvblN0
cmluZ0ZvdW5kOiB7CisgICAgICAgIHdlYlZpZXcubWF0Y2hDb3VudCA9IG1hdGNoQ291bnQKKyAg
ICB9CisgICAgb25TdHJpbmdGaW5kRmFpbGVkOiB7CisgICAgICAgIGZpbmRGYWlsZWQgPSB0cnVl
CisgICAgfQorCisgICAgVGVzdENhc2UgeworICAgICAgICBuYW1lOiAiV2ViVmlld0ZpbmRTdHJp
bmciCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5kU3RyaW5nKCkgeworICAgICAgICAgICAg
dmFyIGZpbmRPcHRpb25zID0gV2ViVmlldy5GaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQKKyAgICAg
ICAgICAgIHdlYlZpZXcuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNv
bHZlZFVybCgiLi4vY29tbW9uL3Rlc3QxLmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZp
ZXcud2FpdEZvckxvYWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAgIHdlYlZpZXcuZmluZFN0cmlu
ZygiSGVsbG8iLCBmaW5kT3B0aW9ucykKKyAgICAgICAgICAgIHN0cmluZ0ZvdW5kU3B5LndhaXQo
KQorICAgICAgICAgICAgY29tcGFyZShzdHJpbmdGb3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAg
ICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMSkKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiB0
ZXN0X2ZpbmRTdHJpbmdDYXNlSW5zZW5zaXRpdmUoKSB7CisgICAgICAgICAgICB2YXIgZmluZE9w
dGlvbnMgPSBXZWJWaWV3LkZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlCisKKyAgICAgICAgICAg
IHdlYlZpZXcuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVy
bCgiLi4vY29tbW9uL3Rlc3QxLmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2Fp
dEZvckxvYWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAgIHdlYlZpZXcuZmluZFN0cmluZygiaGVM
TG8iLCBmaW5kT3B0aW9ucywgMTAwMCkKKyAgICAgICAgICAgIHN0cmluZ0ZvdW5kU3B5LndhaXQo
KQorICAgICAgICAgICAgY29tcGFyZShzdHJpbmdGb3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAg
ICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMSkKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiB0
ZXN0X2ZpbmRTdHJpbmdNYW55TWF0Y2hlcygpIHsKKyAgICAgICAgICAgIHZhciBmaW5kT3B0aW9u
cyA9IFdlYlZpZXcuRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0CisgICAgICAgICAgICB3ZWJWaWV3
LmNsZWFyKCkKKyAgICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2Nv
bW1vbi90ZXN0NC5odG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3LndhaXRGb3JMb2Fk
U3VjY2VlZGVkKCkpCisgICAgICAgICAgICB3ZWJWaWV3LmZpbmRTdHJpbmcoImJsYSIsIGZpbmRP
cHRpb25zLCAxMDAwKQorICAgICAgICAgICAgc3RyaW5nRm91bmRTcHkud2FpdCgpCisgICAgICAg
ICAgICBjb21wYXJlKHN0cmluZ0ZvdW5kU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFy
ZShtYXRjaENvdW50LCAxMDApCisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5k
U3RyaW5nQmFja3dhcmRzKCkgeworICAgICAgICAgICAgdmFyIGZpbmRPcHRpb25zID0gV2ViVmll
dy5GaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIoKQor
ICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3Q0
Lmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQo
KSkKKyAgICAgICAgICAgIHdlYlZpZXcuZmluZFN0cmluZygiYmxhMCIsIGZpbmRPcHRpb25zLCAx
MDAwKQorICAgICAgICAgICAgc3RyaW5nRm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21w
YXJlKHN0cmluZ0ZvdW5kU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShtYXRjaENv
dW50LCAxMCkKKyAgICAgICAgICAgIGZvcih2YXIgaT0wOyBpIDwgOTsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgd2ViVmlldy5maW5kU3RyaW5nKCJibGEwIiwgZmluZE9wdGlvbnMsIDEwMDApCisg
ICAgICAgICAgICAgICAgc3RyaW5nRm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjb21wYXJlKHN0cmluZ0ZvdW5kU3B5LmNvdW50LCAxMCkKKyAgICAgICAgICAgIHdl
YlZpZXcuZmluZFN0cmluZygiYmxhMCIsIGZpbmRPcHRpb25zLCAxMDAwKQorICAgICAgICAgICAg
c3RyaW5nRmluZEZhaWxlZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3RyaW5nRmlu
ZEZhaWxlZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUoZmluZEZhaWxlZCwgdHJ1
ZSkKKworICAgICAgICAgICAgd2ViVmlldy5jbGVhcigpCisgICAgICAgICAgICBmaW5kT3B0aW9u
cyB8PSBXZWJWaWV3LkZpbmRPcHRpb25zQmFja3dhcmRzCisgICAgICAgICAgICB3ZWJWaWV3LmZp
bmRTdHJpbmcoImJsYTAiLCBmaW5kT3B0aW9ucywgMTAwMCkKKyAgICAgICAgICAgIHN0cmluZ0Zv
dW5kU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShzdHJpbmdGb3VuZFNweS5jb3VudCwg
MSkKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiB0ZXN0X2ZpbmRTdHJpbmdGYWlsTm9XcmFw
KCkgeworICAgICAgICAgICAgdmFyIGZpbmRPcHRpb25zID0gV2ViVmlldy5GaW5kT3B0aW9uc1No
b3dIaWdobGlnaHQKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIoKQorICAgICAgICAgICAgd2Vi
Vmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3Q0Lmh0bWwiKQorICAgICAg
ICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAg
IHdlYlZpZXcuZmluZFN0cmluZygiYmxhMCIsIGZpbmRPcHRpb25zLCAxMDAwKQorICAgICAgICAg
ICAgc3RyaW5nRm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHN0cmluZ0ZvdW5k
U3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShtYXRjaENvdW50LCAxMCkKKyAgICAg
ICAgICAgIGZvcih2YXIgaT0wOyBpIDwgOTsgaSsrKSB7CisgICAgICAgICAgICAgICAgd2ViVmll
dy5maW5kU3RyaW5nKCJibGEwIiwgZmluZE9wdGlvbnMsIDEwMDApCisgICAgICAgICAgICAgICAg
c3RyaW5nRm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21wYXJl
KHN0cmluZ0ZvdW5kU3B5LmNvdW50LCAxMCkKKyAgICAgICAgICAgIHdlYlZpZXcuZmluZFN0cmlu
ZygiYmxhMCIsIGZpbmRPcHRpb25zLCAxMDAwKQorICAgICAgICAgICAgc3RyaW5nRmluZEZhaWxl
ZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3RyaW5nRmluZEZhaWxlZFNweS5jb3Vu
dCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUoZmluZEZhaWxlZCwgdHJ1ZSkKKyAgICAgICAgfQor
ICAgICAgICBmdW5jdGlvbiB0ZXN0X2ZpbmRTdHJpbmdXcmFwKCkgeworICAgICAgICAgICAgdmFy
IGZpbmRPcHRpb25zID0gV2ViVmlldy5GaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQKKyAgICAgICAg
ICAgIGZpbmRPcHRpb25zIHw9IFdlYlZpZXcuRmluZE9wdGlvbnNXcmFwQXJvdW5kCisgICAgICAg
ICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAgICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2
ZWRVcmwoIi4uL2NvbW1vbi90ZXN0NC5odG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3
LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkpCisgICAgICAgICAgICB3ZWJWaWV3LmZpbmRTdHJpbmco
ImJsYTAiLCBmaW5kT3B0aW9ucywgMTAwMCkKKyAgICAgICAgICAgIHN0cmluZ0ZvdW5kU3B5Lndh
aXQoKQorICAgICAgICAgICAgY29tcGFyZShzdHJpbmdGb3VuZFNweS5jb3VudCwgMSkKKyAgICAg
ICAgICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMTApCisgICAgICAgICAgICBmb3IodmFyIGk9MDsg
aSA8IDE5OyBpKyspIHsKKyAgICAgICAgICAgICAgICB3ZWJWaWV3LmZpbmRTdHJpbmcoImJsYTAi
LCBmaW5kT3B0aW9ucywgMTAwMCkKKyAgICAgICAgICAgICAgICBzdHJpbmdGb3VuZFNweS53YWl0
KCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbXBhcmUoc3RyaW5nRm91bmRTcHkuY291
bnQsIDIwKQorICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIHRlc3RfZmluZFN0cmluZ0ZhaWxD
YXNlU2Vuc2l0aXZlKCkgeworICAgICAgICAgICAgdmFyIGZpbmRPcHRpb25zID0gMAorICAgICAg
ICAgICAgd2ViVmlldy5jbGVhcigpCisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29s
dmVkVXJsKCIuLi9jb21tb24vdGVzdDEuaHRtbCIpCisgICAgICAgICAgICB2ZXJpZnkod2ViVmll
dy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAgICAgICAgd2ViVmlldy5maW5kU3RyaW5n
KCJoZUxMbyIsIGZpbmRPcHRpb25zLCAxMDAwKQorICAgICAgICAgICAgc3RyaW5nRmluZEZhaWxl
ZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3RyaW5nRmluZEZhaWxlZFNweS5jb3Vu
dCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUoZmluZEZhaWxlZCwgdHJ1ZSkKKyAgICAgICAgfQor
ICAgICAgICBmdW5jdGlvbiB0ZXN0X2ZpbmRTdHJpbmdOb3RGb3VuZCgpIHsKKyAgICAgICAgICAg
IHdlYlZpZXcuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVy
bCgiLi4vY29tbW9uL3Rlc3QxLmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2Fp
dEZvckxvYWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAgIHdlYlZpZXcuZmluZFN0cmluZygic3Ry
aW5nLXRoYXQtaXMtbm90LXRocmVyZSIpCisgICAgICAgICAgICBzdHJpbmdGaW5kRmFpbGVkU3B5
LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShzdHJpbmdGaW5kRmFpbGVkU3B5LmNvdW50LCAx
KQorICAgICAgICAgICAgY29tcGFyZShmaW5kRmFpbGVkLCB0cnVlKQorICAgICAgICB9CisgICAg
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZp
bmRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRD
bGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZWQwMDgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmlu
ZENsaWVudC5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiBI
ZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlF0V2ViUGFnZUZpbmRDbGllbnQuaCIKKworI2luY2x1ZGUgInFx
dWlja3dlYnZpZXdfcF9wLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworUXRXZWJQYWdlRmluZENsaWVudDo6UXRXZWJQYWdlRmluZENsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgUVF1aWNrV2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2ViVmll
dyh3ZWJWaWV3KQoreworICAgIFdLUGFnZUZpbmRDbGllbnQgZmluZENsaWVudDsKKyAgICBtZW1z
ZXQoJmZpbmRDbGllbnQsIDAsIHNpemVvZihXS1BhZ2VGaW5kQ2xpZW50KSk7CisgICAgZmluZENs
aWVudC52ZXJzaW9uID0ga1dLUGFnZUZpbmRDbGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICBmaW5k
Q2xpZW50LmNsaWVudEluZm8gPSB0aGlzOworICAgIGZpbmRDbGllbnQuZGlkRmluZFN0cmluZyA9
IGRpZEZpbmRTdHJpbmc7CisgICAgZmluZENsaWVudC5kaWRGYWlsVG9GaW5kU3RyaW5nID0gZGlk
RmFpbFRvRmluZFN0cmluZzsKKyAgICBmaW5kQ2xpZW50LmRpZENvdW50U3RyaW5nTWF0Y2hlcyA9
IGRpZENvdW50U3RyaW5nTWF0Y2hlczsKKyAgICBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChwYWdl
UmVmLCAmZmluZENsaWVudCk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlRmluZENsaWVudDo6ZGlkRmlu
ZFN0cmluZyh1bnNpZ25lZCBtYXRjaENvdW50KQoreworICAgIG1fd2ViVmlldy0+ZF9mdW5jKCkt
PmRpZEZpbmRTdHJpbmcobWF0Y2hDb3VudCk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlRmluZENsaWVu
dDo6ZGlkRmFpbFRvRmluZFN0cmluZygpCit7CisgICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+ZGlk
RmFpbFRvRmluZFN0cmluZygpOworfQorCit2b2lkIFF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZENv
dW50U3RyaW5nTWF0Y2hlcyh1bnNpZ25lZCBtYXRjaENvdW50KQoreworICAgIG1fd2ViVmlldy0+
ZF9mdW5jKCktPmRpZENvdW50U3RyaW5nTWF0Y2hlcyhtYXRjaENvdW50KTsKK30KKworCitzdGF0
aWMgUXRXZWJQYWdlRmluZENsaWVudCogdG9RdFdlYlBhZ2VGaW5kQ2xpZW50KGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCit7CisgICAgQVNTRVJUKGNsaWVudEluZm8pOworICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFF0V2ViUGFnZUZpbmRDbGllbnQqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlRmluZENsaWVudDo6ZGlkRmluZFN0cmluZyhX
S1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgc3RyaW5nLCB1bnNpZ25lZCBtYXRjaENvdW50LCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHRvUXRXZWJQYWdlRmluZENsaWVudChjbGll
bnRJbmZvKS0+ZGlkRmluZFN0cmluZyhtYXRjaENvdW50KTsKK30KKwordm9pZCBRdFdlYlBhZ2VG
aW5kQ2xpZW50OjpkaWRGYWlsVG9GaW5kU3RyaW5nKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1Jl
ZiBzdHJpbmcsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9RdFdlYlBhZ2VGaW5k
Q2xpZW50KGNsaWVudEluZm8pLT5kaWRGYWlsVG9GaW5kU3RyaW5nKCk7Cit9CisKK3ZvaWQgUXRX
ZWJQYWdlRmluZENsaWVudDo6ZGlkQ291bnRTdHJpbmdNYXRjaGVzKFdLUGFnZVJlZiBwYWdlLCBX
S1N0cmluZ1JlZiBzdHJpbmcsIHVuc2lnbmVkIG1hdGNoQ291bnQsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCit7CisgICAgdG9RdFdlYlBhZ2VGaW5kQ2xpZW50KGNsaWVudEluZm8pLT5kaWRDb3Vu
dFN0cmluZ01hdGNoZXMobWF0Y2hDb3VudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYmtpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ5YzM3YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmgK
QEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiBIZXdsZXR0LVBhY2th
cmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBRdFdlYlBhZ2VGaW5kQ2xp
ZW50X2gKKyNkZWZpbmUgUXRXZWJQYWdlRmluZENsaWVudF9oCisKKyNpbmNsdWRlIDxRdEdsb2Jh
bD4KKyNpbmNsdWRlIDxXS1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJGcmFtZVByb3h5Lmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK2NsYXNzIFFRdWlja1dlYlZpZXc7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBRdFdlYlBhZ2VGaW5kQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBRdFdlYlBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiwgUVF1aWNrV2ViVmlldyopOworCitw
cml2YXRlOgorCisgICAgdm9pZCBkaWRGaW5kU3RyaW5nKHVuc2lnbmVkIG1hdGNoQ291bnQpOwor
ICAgIHZvaWQgZGlkRmFpbFRvRmluZFN0cmluZygpOworICAgIHZvaWQgZGlkQ291bnRTdHJpbmdN
YXRjaGVzKHVuc2lnbmVkIG1hdGNoQ291bnQpOworCisgICAgLy8gV0tQYWdlRmluZENsaWVudCBj
YWxsYmFja3MuCisgICAgc3RhdGljIHZvaWQgZGlkRmluZFN0cmluZyhXS1BhZ2VSZWYsIFdLU3Ry
aW5nUmVmLCB1bnNpZ25lZCBtYXRjaENvdW50LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZENvdW50U3RyaW5n
TWF0Y2hlcyhXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCB1bnNpZ25lZCBtYXRjaENvdW50LCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKKworICAgIFFRdWlja1dlYlZpZXcqIG1fd2ViVmlldzsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYmtpdAorCisjZW5kaWYgLy8gUXRXZWJQYWdlRmluZENsaWVu
dF9oCi0tIAoxLjcuNS40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163605</attachid>
            <date>2012-09-12 05:40:14 -0700</date>
            <delta_ts>2012-09-13 23:22:08 -0700</delta_ts>
            <desc>[Qt][WK2] Add experimental API to find text from page</desc>
            <filename>0001-Qt-WK2-Add-experimental-API-to-find-text-from-page.patch</filename>
            <type>text/plain</type>
            <size>22096</size>
            <attacher name="Heikki Paajanen">hepaajan</attacher>
            
              <data encoding="base64">RnJvbSA1NWRhZWI0NTg5MjdhMjViZmJkMTBlOTNhNDVlNzdlMjQ3NGJkYTAzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgUGFhamFuZW4gPGhlaWtraS5wYWFqYW5lbkBwYWxt
LmNvbT4KRGF0ZTogV2VkLCAxMiBTZXAgMjAxMiAxNTozNDoxNSArMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF1bV0syXSBBZGQgZXhwZXJpbWVudGFsIEFQSSB0byBmaW5kIHRleHQgZnJvbSBwYWdl
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0ODEKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKRXhwb3NlIGZpbmRTdHJpbmcgYW5kIFBhZ2VGaW5kQ2xpZW50
IHByb3ZpZGVkIGZ1bmN0aW9uYWxpdHkgdG8gUXRRdWljawphcHBsaWNhdGlvbnMuCgoqIFRhcmdl
dC5wcmk6CiogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKFFRdWlja1dlYlZp
ZXdQcml2YXRlOjppbml0aWFsaXplKToKKFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OmZpbmRT
dHJpbmcpOgooUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6aGlkZUZpbmRTdHJpbmcpOgooUVF1
aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmRTdHJpbmcpOgooUVF1aWNrV2ViVmlld1ByaXZhdGU6
OmRpZEZhaWxUb0ZpbmRTdHJpbmcpOgooUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENvdW50U3Ry
aW5nTWF0Y2hlcyk6CiogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaDoKKFdlYktp
dCk6CiogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oOgooUVF1aWNrV2ViVmll
d1ByaXZhdGUpOgoqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3Rf
ZmluZFN0cmluZy5xbWw6IEFkZGVkLgoqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50
LmNwcDogQWRkZWQuCihXZWJLaXQpOgooV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpRdFdl
YlBhZ2VGaW5kQ2xpZW50KToKKFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVudDo6ZGlkRmluZFN0
cmluZyk6CihXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZEZhaWxUb0ZpbmRTdHJpbmcp
OgooV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRDb3VudFN0cmluZ01hdGNoZXMpOgoo
V2ViS2l0Ojp0b1F0V2ViUGFnZUZpbmRDbGllbnQpOgoqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VG
aW5kQ2xpZW50Lmg6IEFkZGVkLgooV2ViS2l0KToKKFF0V2ViUGFnZUZpbmRDbGllbnQpOgotLS0K
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAz
NCArKysrKwogU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
dy5jcHAgIHwgICAzMyArKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJ2aWV3X3AuaCAgfCAgIDE5ICsrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3X3BfcC5oICAgfCAgICA1ICsKIC4uLi9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJW
aWV3L3RzdF9maW5kU3RyaW5nLnFtbCAgIHwgIDE1MyArKysrKysrKysrKysrKysrKysrKwogLi4u
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwICAgfCAgIDgwICsr
KysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50
LmggIHwgICA1MyArKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDM3OSBpbnNlcnRpb25zKCspLCAw
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfZmluZFN0cmluZy5xbWwKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENs
aWVudC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRmluZENsaWVudC5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDBjZDlmMWUuLjMwNjUxMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0wOS0xMiAgSGVpa2tpIFBhYWphbmVuICA8
aGVpa2tpLnBhYWphbmVuQHBhbG0uY29tPgorCisgICAgICAgIFtRdF1bV0syXSBBZGQgZXhwZXJp
bWVudGFsIEFQSSB0byBmaW5kIHRleHQgZnJvbSBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjQ4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBmaW5kU3RyaW5nIGFuZCBQYWdlRmluZENs
aWVudCBwcm92aWRlZCBmdW5jdGlvbmFsaXR5IHRvIFF0UXVpY2sKKyAgICAgICAgYXBwbGljYXRp
b25zLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRp
YWxpemUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6ZmluZFN0cmluZyk6
CisgICAgICAgIChRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpoaWRlRmluZFN0cmluZyk6Cisg
ICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmluZFN0cmluZyk6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmFpbFRvRmluZFN0cmluZyk6CisgICAgICAgIChRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ291bnRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmg6CisgICAgICAgIChRUXVp
Y2tXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0
ZXN0cy9XZWJWaWV3L3RzdF9maW5kU3RyaW5nLnFtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OlF0V2ViUGFnZUZpbmRDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5n
KToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVudDo6ZGlkRmFpbFRvRmluZFN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZENvdW50U3Ry
aW5nTWF0Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OnRvUXRXZWJQYWdlRmluZENsaWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoUXRXZWJQYWdlRmluZENsaWVudCk6CisKIDIwMTItMDkt
MTAgIEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0
XVtXSzJdIFFXZWJLaXRUZXN0IHNob3VsZCByZXRyaWV2ZSB0aGUgdmlld3BvcnQgc3RhdGUgZnJv
bSB0aGUgUGFnZVZpZXdwb3J0Q29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggOGQ3MDM2Ny4uMGRk
ZTFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9UYXJnZXQucHJpCkBAIC03NzgsNiArNzc4LDcgQEAgY29udGFpbnMoREVGSU5FUywg
SEFWRV9RVFFVSUNLPTEpIHsKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmgg
XAogICAgICAgICBVSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaCBcCiAgICAgICAgIFVJ
UHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaCBcCisgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VGaW5kQ2xpZW50LmggXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVu
dC5oIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBvbGljeUNsaWVudC5oIFwKICAg
ICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5oIFwKQEAgLTgwOCw2ICs4MDksNyBA
QCBjb250YWlucyhERUZJTkVTLCBIQVZFX1FUUVVJQ0s9MSkgewogICAgICAgICBVSVByb2Nlc3Mv
cXQvUXREaWFsb2dSdW5uZXIuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRN
YW5hZ2VyLmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwIFwKKyAg
ICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwIFwKICAgICAgICAgVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZVBvbGljeUNsaWVudC5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlU0dOb2RlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3LmNwcAppbmRleCA0OTBiOWJhLi40ZTk2NDc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKQEAgLTMwLDkgKzMw
LDExIEBACiAjaW5jbHVkZSAiUXRXZWJFcnJvci5oIgogI2luY2x1ZGUgIlF0V2ViSWNvbkRhdGFi
YXNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmgiCisjaW5jbHVk
ZSAiUXRXZWJQYWdlRmluZENsaWVudC5oIgogI2luY2x1ZGUgIlF0V2ViUGFnZUxvYWRDbGllbnQu
aCIKICNpbmNsdWRlICJRdFdlYlBhZ2VQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJXZWJCYWNr
Rm9yd2FyZExpc3QuaCIKKyNpbmNsdWRlICJXZWJGaW5kT3B0aW9ucy5oIgogI2lmIEVOQUJMRShJ
TlNQRUNUT1JfU0VSVkVSKQogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCkBAIC0zMDYsNiArMzA4LDcgQEAgdm9pZCBRUXVpY2tX
ZWJWaWV3UHJpdmF0ZTo6aW5pdGlhbGl6ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdl
R3JvdXBSZWYgcGEKICAgICBRUXVpY2tXZWJQYWdlUHJpdmF0ZSogY29uc3QgcGFnZVZpZXdQcml2
YXRlID0gcGFnZVZpZXcuZGF0YSgpLT5kOwogICAgIHBhZ2VWaWV3UHJpdmF0ZS0+aW5pdGlhbGl6
ZSh3ZWJQYWdlUHJveHkuZ2V0KCkpOwogCisgICAgcGFnZUZpbmRDbGllbnQucmVzZXQobmV3IFF0
V2ViUGFnZUZpbmRDbGllbnQodG9BUEkod2ViUGFnZVByb3h5LmdldCgpKSwgcV9wdHIpKTsKICAg
ICBwYWdlTG9hZENsaWVudC5yZXNldChuZXcgUXRXZWJQYWdlTG9hZENsaWVudCh0b0FQSSh3ZWJQ
YWdlUHJveHkuZ2V0KCkpLCBxX3B0cikpOwogICAgIHBhZ2VQb2xpY3lDbGllbnQucmVzZXQobmV3
IFF0V2ViUGFnZVBvbGljeUNsaWVudCh0b0FQSSh3ZWJQYWdlUHJveHkuZ2V0KCkpLCBxX3B0cikp
OwogICAgIHBhZ2VVSUNsaWVudC5yZXNldChuZXcgUXRXZWJQYWdlVUlDbGllbnQodG9BUEkod2Vi
UGFnZVByb3h5LmdldCgpKSwgcV9wdHIpKTsKQEAgLTEzMTgsNiArMTMyMSwxOCBAQCB2b2lkIFFR
dWlja1dlYlZpZXdFeHBlcmltZW50YWw6OmV2YWx1YXRlSmF2YVNjcmlwdChjb25zdCBRU3RyaW5n
JiBzY3JpcHQsIGNvbnN0CiAgICAgZF9wdHItPndlYlBhZ2VQcm94eS5nZXQoKS0+cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgU2NyaXB0VmFsdWVDYWxsYmFjazo6Y3JlYXRlKGNsb3N1
cmUsIGphdmFTY3JpcHRDYWxsYmFjaykpOwogfQogCit2b2lkIFFRdWlja1dlYlZpZXdFeHBlcmlt
ZW50YWw6OmZpbmRTdHJpbmcoY29uc3QgUVN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQoreworICAgIFFfRChRUXVpY2tXZWJWaWV3KTsK
KyAgICBkLT53ZWJQYWdlUHJveHktPmZpbmRTdHJpbmcoc3RyaW5nLCBzdGF0aWNfY2FzdDxXZWJL
aXQ6OkZpbmRPcHRpb25zPihvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCk7Cit9CisKK3ZvaWQgUVF1
aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6aGlkZUZpbmRTdHJpbmcoKQoreworICAgIFFfRChRUXVp
Y2tXZWJWaWV3KTsKKyAgICBkLT53ZWJQYWdlUHJveHktPmhpZGVGaW5kVUkoKTsKK30KKwogUUxp
c3Q8UVVybD4gUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6dXNlclNjcmlwdHMoKSBjb25zdAog
ewogICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKQEAgLTIwNzAsNiArMjA4NSwyNCBAQCB2
b2lkIFFRdWlja1dlYlZpZXc6OnNldEFsbG93QW55SFRUUFNDZXJ0aWZpY2F0ZUZvckxvY2FsSG9z
dChib29sIGFsbG93KQogICAgIGQtPm1fYWxsb3dBbnlIVFRQU0NlcnRpZmljYXRlRm9yTG9jYWxI
b3N0ID0gYWxsb3c7CiB9CiAKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmRTdHJp
bmcodW5zaWduZWQgbWF0Y2hDb3VudCkKK3sKKyAgICBRX1EoUVF1aWNrV2ViVmlldyk7CisgICAg
ZW1pdCBxLT5leHBlcmltZW50YWwoKS0+c3RyaW5nRm91bmQobWF0Y2hDb3VudCk7Cit9CisKK3Zv
aWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZhaWxUb0ZpbmRTdHJpbmcoKQoreworICAgIFFf
UShRUXVpY2tXZWJWaWV3KTsKKyAgICBlbWl0IHEtPmV4cGVyaW1lbnRhbCgpLT5zdHJpbmdGaW5k
RmFpbGVkKCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENvdW50U3RyaW5n
TWF0Y2hlcyh1bnNpZ25lZCBtYXRjaENvdW50KQoreworICAgIFFfUShRUXVpY2tXZWJWaWV3KTsK
KyAgICBlbWl0IHEtPmV4cGVyaW1lbnRhbCgpLT5jb3VudGVkU3RyaW5nTWF0Y2hlcyhtYXRjaENv
dW50KTsKK30KKwogLyohCiAgICAgXHFtbHNpZ25hbCBXZWJWaWV3OjpvbkxvYWRpbmdDaGFuZ2Vk
KGxvYWRSZXF1ZXN0KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3X3AuaAppbmRleCA2OGU1ZmNhLi44NjRhZTAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKQEAgLTUxLDYgKzUx
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdHJ1Y3QgUXRSZWZDb3VudGVkTmV0d29ya1JlcXVl
c3REYXRhOwogY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OwogY2xhc3MgUXRX
ZWJQYWdlTG9hZENsaWVudDsKK2NsYXNzIFF0V2ViUGFnZUZpbmRDbGllbnQ7CiBjbGFzcyBRdFdl
YlBhZ2VQb2xpY3lDbGllbnQ7CiBjbGFzcyBRdFdlYlBhZ2VVSUNsaWVudDsKIH0KQEAgLTIxOSw2
ICsyMjAsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBRV2ViS2l0VGVzdDsKICAgICBm
cmllbmQgY2xhc3MgV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ7CiAgICAg
ZnJpZW5kIGNsYXNzIFdlYktpdDo6UXRXZWJQYWdlTG9hZENsaWVudDsKKyAgICBmcmllbmQgY2xh
c3MgV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6
OlF0V2ViUGFnZVBvbGljeUNsaWVudDsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdFdlYlBh
Z2VVSUNsaWVudDsKICAgICBmcmllbmQgY2xhc3MgV1RSOjpQbGF0Zm9ybVdlYlZpZXc7CkBAIC0y
NzcsMTIgKzI3OSwyNCBAQCBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRUXVpY2tXZWJWaWV3RXhwZXJp
bWVudGFsIDogcHVibGljIFFPYmplY3QgewogICAgIFFfUFJPUEVSVFkoUUxpc3Q8UVVybD4gdXNl
clNjcmlwdHMgUkVBRCB1c2VyU2NyaXB0cyBXUklURSBzZXRVc2VyU2NyaXB0cyBOT1RJRlkgdXNl
clNjcmlwdHNDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoUVVybCByZW1vdGVJbnNwZWN0b3JVcmwg
UkVBRCByZW1vdGVJbnNwZWN0b3JVcmwgTk9USUZZIHJlbW90ZUluc3BlY3RvclVybENoYW5nZWQg
RklOQUwpCiAgICAgUV9FTlVNUyhOYXZpZ2F0aW9uUmVxdWVzdEFjdGlvbkV4cGVyaW1lbnRhbCkK
KyAgICBRX0VOVU1TKEZpbmRPcHRpb25zKQogCiBwdWJsaWM6CiAgICAgZW51bSBOYXZpZ2F0aW9u
UmVxdWVzdEFjdGlvbkV4cGVyaW1lbnRhbCB7CiAgICAgICAgIERvd25sb2FkUmVxdWVzdCA9IFFR
dWlja1dlYlZpZXc6Oklnbm9yZVJlcXVlc3QgLSAxCiAgICAgfTsKIAorICAgIGVudW0gRmluZE9w
dGlvbnMgeworICAgICAgICBGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSA9IDEgPDwgMCwKKyAg
ICAgICAgRmluZE9wdGlvbnNBdFdvcmRTdGFydHMgPSAxIDw8IDEsCisgICAgICAgIEZpbmRPcHRp
b25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQgPSAxIDw8IDIsCisgICAgICAgIEZpbmRP
cHRpb25zQmFja3dhcmRzID0gMSA8PCAzLAorICAgICAgICBGaW5kT3B0aW9uc1dyYXBBcm91bmQg
PSAxIDw8IDQsCisgICAgICAgIEZpbmRPcHRpb25zU2hvd092ZXJsYXkgPSAxIDw8IDUsCisgICAg
ICAgIEZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IgPSAxIDw8IDYsCisgICAgICAgIEZpbmRP
cHRpb25zU2hvd0hpZ2hsaWdodCA9IDEgPDwgNworICAgIH07CisKICAgICBRUXVpY2tXZWJWaWV3
RXhwZXJpbWVudGFsKFFRdWlja1dlYlZpZXcqIHdlYlZpZXcpOwogICAgIHZpcnR1YWwgflFRdWlj
a1dlYlZpZXdFeHBlcmltZW50YWwoKTsKIApAQCAtMzUyLDYgKzM2Niw4IEBAIHB1YmxpYyBRX1NM
T1RTOgogICAgIHZvaWQgZ29Gb3J3YXJkVG8oaW50IGluZGV4KTsKICAgICB2b2lkIHBvc3RNZXNz
YWdlKGNvbnN0IFFTdHJpbmcmKTsKICAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdChjb25zdCBR
U3RyaW5nJiBzY3JpcHQsIGNvbnN0IFFKU1ZhbHVlJiB2YWx1ZSA9IFFKU1ZhbHVlKCkpOworICAg
IHZvaWQgZmluZFN0cmluZyhjb25zdCBRU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlv
bnMgPSBGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSwgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCA9
IDEwMDApOworICAgIHZvaWQgaGlkZUZpbmRTdHJpbmcoKTsKIAogUV9TSUdOQUxTOgogICAgIHZv
aWQgYWxlcnREaWFsb2dDaGFuZ2VkKCk7CkBAIC0zNzYsNiArMzkyLDkgQEAgUV9TSUdOQUxTOgog
ICAgIHZvaWQgdXNlclNjcmlwdHNDaGFuZ2VkKCk7CiAgICAgdm9pZCBwcmVmZXJyZWRNaW5pbXVt
Q29udGVudHNXaWR0aENoYW5nZWQoKTsKICAgICB2b2lkIHJlbW90ZUluc3BlY3RvclVybENoYW5n
ZWQoKTsKKyAgICB2b2lkIHN0cmluZ0ZvdW5kKHVuc2lnbmVkIG1hdGNoQ291bnQpOworICAgIHZv
aWQgc3RyaW5nRmluZEZhaWxlZCgpOworICAgIHZvaWQgY291bnRlZFN0cmluZ01hdGNoZXModW5z
aWduZWQgbWF0Y2hDb3VudCk7CiAKIHByaXZhdGU6CiAgICAgUVF1aWNrV2ViVmlldyogcV9wdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZp
ZXdfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cF9wLmgKaW5kZXggZDFkM2Q5ZS4uNzczMDk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaApAQCAtODIsNiArODIsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkRmFpbChjb25zdCBXZWJLaXQ6OlF0V2Vi
RXJyb3ImIGVycm9yKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VFdmVudChRTW91c2VF
dmVudCopOwogCisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRTdHJpbmcodW5zaWduZWQgbWF0Y2hD
b3VudCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxUb0ZpbmRTdHJpbmcoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ291bnRTdHJpbmdNYXRjaGVzKHVuc2lnbmVkIG1hdGNoQ291bnQpOworCiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3Jl
OjpWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpIHsgfQogCiAgICAgaW50IGxvYWRQcm9ncmVzcygp
IGNvbnN0IHsgcmV0dXJuIG1fbG9hZFByb2dyZXNzOyB9CkBAIC0xNjQsNiArMTY4LDcgQEAgcHJv
dGVjdGVkOgogICAgIE93blB0cjxRV2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzOwogCiAgICAg
UVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFdlYlBhZ2VMb2FkQ2xpZW50PiBwYWdlTG9hZENsaWVu
dDsKKyAgICBRU2NvcGVkUG9pbnRlcjxXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ+IHBhZ2VG
aW5kQ2xpZW50OwogICAgIFFTY29wZWRQb2ludGVyPFdlYktpdDo6UXRXZWJQYWdlUG9saWN5Q2xp
ZW50PiBwYWdlUG9saWN5Q2xpZW50OwogICAgIFFTY29wZWRQb2ludGVyPFdlYktpdDo6UXRXZWJQ
YWdlVUlDbGllbnQ+IHBhZ2VVSUNsaWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9maW5kU3RyaW5nLnFt
bCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmll
dy90c3RfZmluZFN0cmluZy5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OWZiOTkxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfZmluZFN0cmluZy5xbWwKQEAgLTAsMCArMSwx
NTMgQEAKK2ltcG9ydCBRdFF1aWNrIDIuMAoraW1wb3J0IFF0VGVzdCAxLjAKK2ltcG9ydCBRdFdl
YktpdCAzLjAKK2ltcG9ydCBRdFdlYktpdC5leHBlcmltZW50YWwgMS4wCitpbXBvcnQgIi4uL2Nv
bW1vbiIKKworVGVzdFdlYlZpZXcgeworICAgIGlkOiB3ZWJWaWV3CisgICAgd2lkdGg6IDQwMAor
ICAgIGhlaWdodDogMzAwCisKKyAgICBwcm9wZXJ0eSBpbnQgbWF0Y2hDb3VudDogLTEKKyAgICBw
cm9wZXJ0eSBib29sIGZpbmRGYWlsZWQ6IGZhbHNlCisgICAgZnVuY3Rpb24gY2xlYXIoKSB7Cisg
ICAgICAgIHN0cmluZ0ZvdW5kU3B5LmNsZWFyKCkKKyAgICAgICAgc3RyaW5nRmluZEZhaWxlZFNw
eS5jbGVhcigpCisgICAgICAgIGZpbmRGYWlsZWQgPSBmYWxzZQorICAgICAgICBtYXRjaENvdW50
ID0gLTEKKyAgICB9CisKKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDogc3RyaW5nRm91bmRT
cHkKKyAgICAgICAgdGFyZ2V0OiB3ZWJWaWV3LmV4cGVyaW1lbnRhbAorICAgICAgICBzaWduYWxO
YW1lOiAic3RyaW5nRm91bmQiCisgICAgfQorICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiBz
dHJpbmdGaW5kRmFpbGVkU3B5CisgICAgICAgIHRhcmdldDogd2ViVmlldy5leHBlcmltZW50YWwK
KyAgICAgICAgc2lnbmFsTmFtZTogInN0cmluZ0ZpbmRGYWlsZWQiCisgICAgfQorCisgICAgZXhw
ZXJpbWVudGFsLm9uU3RyaW5nRm91bmQ6IHsKKyAgICAgICAgd2ViVmlldy5tYXRjaENvdW50ID0g
bWF0Y2hDb3VudAorICAgIH0KKyAgICBleHBlcmltZW50YWwub25TdHJpbmdGaW5kRmFpbGVkOiB7
CisgICAgICAgIGZpbmRGYWlsZWQgPSB0cnVlCisgICAgfQorCisgICAgVGVzdENhc2UgeworICAg
ICAgICBuYW1lOiAiV2ViVmlld0ZpbmRTdHJpbmciCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9m
aW5kU3RyaW5nKCkgeworICAgICAgICAgICAgdmFyIGZpbmRPcHRpb25zID0gV2ViVmlld0V4cGVy
aW1lbnRhbC5GaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQKKyAgICAgICAgICAgIHdlYlZpZXcuY2xl
YXIoKQorICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9u
L3Rlc3QxLmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNj
ZWVkZWQoKSkKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRTdHJpbmcoIkhl
bGxvIiwgZmluZE9wdGlvbnMpCisgICAgICAgICAgICBzdHJpbmdGb3VuZFNweS53YWl0KCkKKyAg
ICAgICAgICAgIGNvbXBhcmUoc3RyaW5nRm91bmRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBj
b21wYXJlKG1hdGNoQ291bnQsIDEpCisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdF9m
aW5kU3RyaW5nQ2FzZUluc2Vuc2l0aXZlKCkgeworICAgICAgICAgICAgdmFyIGZpbmRPcHRpb25z
ID0gV2ViVmlld0V4cGVyaW1lbnRhbC5GaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZQorCisgICAg
ICAgICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAgICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVz
b2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0MS5odG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJW
aWV3LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkpCisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1l
bnRhbC5maW5kU3RyaW5nKCJoZUxMbyIsIGZpbmRPcHRpb25zLCAxMDAwKQorICAgICAgICAgICAg
c3RyaW5nRm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHN0cmluZ0ZvdW5kU3B5
LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShtYXRjaENvdW50LCAxKQorICAgICAgICB9
CisgICAgICAgIGZ1bmN0aW9uIHRlc3RfZmluZFN0cmluZ01hbnlNYXRjaGVzKCkgeworICAgICAg
ICAgICAgdmFyIGZpbmRPcHRpb25zID0gV2ViVmlld0V4cGVyaW1lbnRhbC5GaW5kT3B0aW9uc1No
b3dIaWdobGlnaHQKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIoKQorICAgICAgICAgICAgd2Vi
Vmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3Q0Lmh0bWwiKQorICAgICAg
ICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAg
IHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRTdHJpbmcoImJsYSIsIGZpbmRPcHRpb25zLCAxMDAw
KQorICAgICAgICAgICAgc3RyaW5nRm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJl
KHN0cmluZ0ZvdW5kU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShtYXRjaENvdW50
LCAxMDApCisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5kU3RyaW5nQmFja3dh
cmRzKCkgeworICAgICAgICAgICAgdmFyIGZpbmRPcHRpb25zID0gV2ViVmlld0V4cGVyaW1lbnRh
bC5GaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIoKQor
ICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3Q0
Lmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQo
KSkKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRTdHJpbmcoImJsYTAiLCBm
aW5kT3B0aW9ucywgMTAwMCkKKyAgICAgICAgICAgIHN0cmluZ0ZvdW5kU3B5LndhaXQoKQorICAg
ICAgICAgICAgY29tcGFyZShzdHJpbmdGb3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNv
bXBhcmUobWF0Y2hDb3VudCwgMTApCisgICAgICAgICAgICBmb3IodmFyIGk9MDsgaSA8IDk7IGkr
KykgeworICAgICAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRTdHJpbmcoImJs
YTAiLCBmaW5kT3B0aW9ucywgMTAwMCkKKyAgICAgICAgICAgICAgICBzdHJpbmdGb3VuZFNweS53
YWl0KCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbXBhcmUoc3RyaW5nRm91bmRTcHku
Y291bnQsIDEwKQorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZmluZFN0cmluZygi
YmxhMCIsIGZpbmRPcHRpb25zLCAxMDAwKQorICAgICAgICAgICAgc3RyaW5nRmluZEZhaWxlZFNw
eS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3RyaW5nRmluZEZhaWxlZFNweS5jb3VudCwg
MSkKKyAgICAgICAgICAgIGNvbXBhcmUoZmluZEZhaWxlZCwgdHJ1ZSkKKworICAgICAgICAgICAg
d2ViVmlldy5jbGVhcigpCisgICAgICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJWaWV3RXhwZXJp
bWVudGFsLkZpbmRPcHRpb25zQmFja3dhcmRzCisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1l
bnRhbC5maW5kU3RyaW5nKCJibGEwIiwgZmluZE9wdGlvbnMsIDEwMDApCisgICAgICAgICAgICBz
dHJpbmdGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUoc3RyaW5nRm91bmRTcHku
Y291bnQsIDEpCisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5kU3RyaW5nRmFp
bE5vV3JhcCgpIHsKKyAgICAgICAgICAgIHZhciBmaW5kT3B0aW9ucyA9IFdlYlZpZXdFeHBlcmlt
ZW50YWwuRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0CisgICAgICAgICAgICB3ZWJWaWV3LmNsZWFy
KCkKKyAgICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90
ZXN0NC5odG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2Vl
ZGVkKCkpCisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5maW5kU3RyaW5nKCJibGEw
IiwgZmluZE9wdGlvbnMsIDEwMDApCisgICAgICAgICAgICBzdHJpbmdGb3VuZFNweS53YWl0KCkK
KyAgICAgICAgICAgIGNvbXBhcmUoc3RyaW5nRm91bmRTcHkuY291bnQsIDEpCisgICAgICAgICAg
ICBjb21wYXJlKG1hdGNoQ291bnQsIDEwKQorICAgICAgICAgICAgZm9yKHZhciBpPTA7IGkgPCA5
OyBpKyspIHsKKyAgICAgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5maW5kU3RyaW5n
KCJibGEwIiwgZmluZE9wdGlvbnMsIDEwMDApCisgICAgICAgICAgICAgICAgc3RyaW5nRm91bmRT
cHkud2FpdCgpCisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21wYXJlKHN0cmluZ0ZvdW5k
U3B5LmNvdW50LCAxMCkKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRTdHJp
bmcoImJsYTAiLCBmaW5kT3B0aW9ucywgMTAwMCkKKyAgICAgICAgICAgIHN0cmluZ0ZpbmRGYWls
ZWRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHN0cmluZ0ZpbmRGYWlsZWRTcHkuY291
bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKGZpbmRGYWlsZWQsIHRydWUpCisgICAgICAgIH0K
KyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5kU3RyaW5nV3JhcCgpIHsKKyAgICAgICAgICAgIHZh
ciBmaW5kT3B0aW9ucyA9IFdlYlZpZXdFeHBlcmltZW50YWwuRmluZE9wdGlvbnNTaG93SGlnaGxp
Z2h0CisgICAgICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRP
cHRpb25zV3JhcEFyb3VuZAorICAgICAgICAgICAgd2ViVmlldy5jbGVhcigpCisgICAgICAgICAg
ICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDQuaHRtbCIpCisg
ICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAg
ICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZmluZFN0cmluZygiYmxhMCIsIGZpbmRPcHRpb25z
LCAxMDAwKQorICAgICAgICAgICAgc3RyaW5nRm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBj
b21wYXJlKHN0cmluZ0ZvdW5kU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShtYXRj
aENvdW50LCAxMCkKKyAgICAgICAgICAgIGZvcih2YXIgaT0wOyBpIDwgMTk7IGkrKykgeworICAg
ICAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRTdHJpbmcoImJsYTAiLCBmaW5k
T3B0aW9ucywgMTAwMCkKKyAgICAgICAgICAgICAgICBzdHJpbmdGb3VuZFNweS53YWl0KCkKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbXBhcmUoc3RyaW5nRm91bmRTcHkuY291bnQsIDIw
KQorICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIHRlc3RfZmluZFN0cmluZ0ZhaWxDYXNlU2Vu
c2l0aXZlKCkgeworICAgICAgICAgICAgdmFyIGZpbmRPcHRpb25zID0gMAorICAgICAgICAgICAg
d2ViVmlldy5jbGVhcigpCisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJs
KCIuLi9jb21tb24vdGVzdDEuaHRtbCIpCisgICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0
Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZmlu
ZFN0cmluZygiaGVMTG8iLCBmaW5kT3B0aW9ucywgMTAwMCkKKyAgICAgICAgICAgIHN0cmluZ0Zp
bmRGYWlsZWRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHN0cmluZ0ZpbmRGYWlsZWRT
cHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKGZpbmRGYWlsZWQsIHRydWUpCisgICAg
ICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5kU3RyaW5nTm90Rm91bmQoKSB7CisgICAg
ICAgICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAgICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVz
b2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0MS5odG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJW
aWV3LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkpCisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1l
bnRhbC5maW5kU3RyaW5nKCJzdHJpbmctdGhhdC1pcy1ub3QtdGhyZXJlIikKKyAgICAgICAgICAg
IHN0cmluZ0ZpbmRGYWlsZWRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHN0cmluZ0Zp
bmRGYWlsZWRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKGZpbmRGYWlsZWQsIHRy
dWUpCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMGJlZDAwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcApAQCAtMCwwICsxLDgwIEBACisvKgorICog
Q29weXJpZ2h0IChjKSAyMDEyIEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55LCBM
LlAuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXRXZWJQYWdlRmluZENsaWVu
dC5oIgorCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIKKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitRdFdlYlBhZ2VGaW5kQ2xpZW50OjpR
dFdlYlBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBRUXVpY2tXZWJWaWV3KiB3ZWJW
aWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCit7CisgICAgV0tQYWdlRmluZENsaWVudCBm
aW5kQ2xpZW50OworICAgIG1lbXNldCgmZmluZENsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZUZpbmRD
bGllbnQpKTsKKyAgICBmaW5kQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlRmluZENsaWVudEN1cnJl
bnRWZXJzaW9uOworICAgIGZpbmRDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgZmluZENs
aWVudC5kaWRGaW5kU3RyaW5nID0gZGlkRmluZFN0cmluZzsKKyAgICBmaW5kQ2xpZW50LmRpZEZh
aWxUb0ZpbmRTdHJpbmcgPSBkaWRGYWlsVG9GaW5kU3RyaW5nOworICAgIGZpbmRDbGllbnQuZGlk
Q291bnRTdHJpbmdNYXRjaGVzID0gZGlkQ291bnRTdHJpbmdNYXRjaGVzOworICAgIFdLUGFnZVNl
dFBhZ2VGaW5kQ2xpZW50KHBhZ2VSZWYsICZmaW5kQ2xpZW50KTsKK30KKwordm9pZCBRdFdlYlBh
Z2VGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKHVuc2lnbmVkIG1hdGNoQ291bnQpCit7CisgICAg
bV93ZWJWaWV3LT5kX2Z1bmMoKS0+ZGlkRmluZFN0cmluZyhtYXRjaENvdW50KTsKK30KKwordm9p
ZCBRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRGYWlsVG9GaW5kU3RyaW5nKCkKK3sKKyAgICBtX3dl
YlZpZXctPmRfZnVuYygpLT5kaWRGYWlsVG9GaW5kU3RyaW5nKCk7Cit9CisKK3ZvaWQgUXRXZWJQ
YWdlRmluZENsaWVudDo6ZGlkQ291bnRTdHJpbmdNYXRjaGVzKHVuc2lnbmVkIG1hdGNoQ291bnQp
Cit7CisgICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+ZGlkQ291bnRTdHJpbmdNYXRjaGVzKG1hdGNo
Q291bnQpOworfQorCisKK3N0YXRpYyBRdFdlYlBhZ2VGaW5kQ2xpZW50KiB0b1F0V2ViUGFnZUZp
bmRDbGllbnQoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBBU1NFUlQoY2xpZW50SW5m
byk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UXRXZWJQYWdlRmluZENsaWVudCo+KGNv
bnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKK30KKwordm9pZCBRdFdlYlBhZ2VGaW5kQ2xp
ZW50OjpkaWRGaW5kU3RyaW5nKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBzdHJpbmcsIHVu
c2lnbmVkIG1hdGNoQ291bnQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9RdFdl
YlBhZ2VGaW5kQ2xpZW50KGNsaWVudEluZm8pLT5kaWRGaW5kU3RyaW5nKG1hdGNoQ291bnQpOwor
fQorCit2b2lkIFF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZEZhaWxUb0ZpbmRTdHJpbmcoV0tQYWdl
UmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN0cmluZywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sK
KyAgICB0b1F0V2ViUGFnZUZpbmRDbGllbnQoY2xpZW50SW5mbyktPmRpZEZhaWxUb0ZpbmRTdHJp
bmcoKTsKK30KKwordm9pZCBRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRDb3VudFN0cmluZ01hdGNo
ZXMoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN0cmluZywgdW5zaWduZWQgbWF0Y2hDb3Vu
dCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB0b1F0V2ViUGFnZUZpbmRDbGllbnQo
Y2xpZW50SW5mbyktPmRpZENvdW50U3RyaW5nTWF0Y2hlcyhtYXRjaENvdW50KTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2Via2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlRmluZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZUZpbmRDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x
ZDljMzdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZUZpbmRDbGllbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChj
KSAyMDEyIEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55LCBMLlAuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJv
Z3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZu
ZGVmIFF0V2ViUGFnZUZpbmRDbGllbnRfaAorI2RlZmluZSBRdFdlYlBhZ2VGaW5kQ2xpZW50X2gK
KworI2luY2x1ZGUgPFF0R2xvYmFsPgorI2luY2x1ZGUgPFdLUGFnZS5oPgorI2luY2x1ZGUgPFdl
YkZyYW1lUHJveHkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY2xhc3Mg
UVF1aWNrV2ViVmlldzsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFF0V2ViUGFnZUZp
bmRDbGllbnQgeworcHVibGljOgorICAgIFF0V2ViUGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmLCBR
UXVpY2tXZWJWaWV3Kik7CisKK3ByaXZhdGU6CisKKyAgICB2b2lkIGRpZEZpbmRTdHJpbmcodW5z
aWduZWQgbWF0Y2hDb3VudCk7CisgICAgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKCk7CisgICAg
dm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXModW5zaWduZWQgbWF0Y2hDb3VudCk7CisKKyAgICAv
LyBXS1BhZ2VGaW5kQ2xpZW50IGNhbGxiYWNrcy4KKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5kU3Ry
aW5nKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIHVuc2lnbmVkIG1hdGNoQ291bnQsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxUb0ZpbmRTdHJpbmcoV0tQ
YWdlUmVmLCBXS1N0cmluZ1JlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGlj
IHZvaWQgZGlkQ291bnRTdHJpbmdNYXRjaGVzKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIHVuc2ln
bmVkIG1hdGNoQ291bnQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCisgICAgUVF1aWNrV2Vi
VmlldyogbV93ZWJWaWV3OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Via2l0CisKKyNlbmRpZiAv
LyBRdFdlYlBhZ2VGaW5kQ2xpZW50X2gKLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164054</attachid>
            <date>2012-09-13 23:22:08 -0700</date>
            <delta_ts>2012-09-17 00:04:45 -0700</delta_ts>
            <desc>[Qt][WK2] Add experimental API to find text from page</desc>
            <filename>0001-Qt-WK2-Add-experimental-API-to-find-text-from-page.patch</filename>
            <type>text/plain</type>
            <size>30879</size>
            <attacher name="Heikki Paajanen">hepaajan</attacher>
            
              <data encoding="base64">RnJvbSBjMzUwYjJjYjc4ZDJlNTZlMjFlOGExNTlhYjk5NzZmMzhhYWNmNDMzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgUGFhamFuZW4gPGhlaWtraS5wYWFqYW5lbkBwYWxt
LmNvbT4KRGF0ZTogV2VkLCAxMiBTZXAgMjAxMiAxNTozNDoxNSArMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF1bV0syXSBBZGQgZXhwZXJpbWVudGFsIEFQSSB0byBmaW5kIHRleHQgZnJvbSBwYWdl
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0ODEKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKU291cmNlL1dlYktpdDI6CgpFeHBvc2UgZmluZFN0cmluZyBh
bmQgUGFnZUZpbmRDbGllbnQgcHJvdmlkZWQgZnVuY3Rpb25hbGl0eSB0byBRdFF1aWNrCmFwcGxp
Y2F0aW9ucy4KCiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcu
Y3BwOgooUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUpOgooUVF1aWNrV2ViVmlld0V4
cGVyaW1lbnRhbDo6ZmluZFRleHQpOgooUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmRTdHJp
bmcpOgoqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6CihXZWJLaXQpOgoqIFVJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaDoKKFFRdWlja1dlYlZpZXdQcml2YXRl
KToKKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRUZXh0
LnFtbDogQWRkZWQuCiogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwOiBBZGRl
ZC4KKFdlYktpdCk6CihXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OlF0V2ViUGFnZUZpbmRD
bGllbnQpOgooV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKToKKFdl
YktpdDo6dG9RdFdlYlBhZ2VGaW5kQ2xpZW50KToKKFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVu
dDo6ZGlkRmFpbFRvRmluZFN0cmluZyk6CiogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGll
bnQuaDogQWRkZWQuCihXZWJLaXQpOgooUXRXZWJQYWdlRmluZENsaWVudCk6CgpUb29sczoKCkFk
ZCBmaW5kIGJhciB0aGF0IHNsaWRlcyBiZXR3ZWVuIG5hdmlnYXRpb24gYmFyIGFuZApXZWJWaWV3
IHRvIE1pbmlCcm93c2VyLgoKKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5xcmM6CiogTWlu
aUJyb3dzZXIvcXQvaWNvbnMvZmluZC5wbmc6IEFkZGVkLgoqIE1pbmlCcm93c2VyL3F0L3FtbC9C
cm93c2VyV2luZG93LnFtbDoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMzAgKysrKwogU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgIHwgICAzMSArKysrCiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oICB8ICAgMTMgKysKIC4uLi9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaCAgIHwgICAgMyArCiAuLi4vQVBJ
L3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRUZXh0LnFtbCB8ICAxNDUgKysrKysr
KysrKysrKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQu
Y3BwICAgfCAgIDYzICsrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VGaW5kQ2xpZW50LmggIHwgICA1MCArKysrKysKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKwogVG9vbHMvTWluaUJyb3dzZXIvcXQv
TWluaUJyb3dzZXIucXJjICAgICAgICAgICAgICAgfCAgICAxICsKIFRvb2xzL01pbmlCcm93c2Vy
L3F0L2ljb25zL2ZpbmQucG5nICAgICAgICAgICAgICAgIHwgIEJpbiAwIC0+IDkzMCBieXRlcwog
VG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sICAgICAgICAgfCAgMTc3
ICsrKysrKysrKysrKysrKysrKystCiAxMiBmaWxlcyBjaGFuZ2VkLCA1MjcgaW5zZXJ0aW9ucygr
KSwgMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRUZXh0LnFtbAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5k
Q2xpZW50LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJv
d3Nlci9xdC9pY29ucy9maW5kLnBuZwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwY2Q5ZjFlLi44OGI1ODIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTItMDktMTMgIEhlaWtraSBQYWFqYW5lbiAg
PGhlaWtraS5wYWFqYW5lbkBwYWxtLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gQWRkIGV4cGVy
aW1lbnRhbCBBUEkgdG8gZmluZCB0ZXh0IGZyb20gcGFnZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgZmluZFN0cmluZyBhbmQgUGFnZUZpbmRD
bGllbnQgcHJvdmlkZWQgZnVuY3Rpb25hbGl0eSB0byBRdFF1aWNrCisgICAgICAgIGFwcGxpY2F0
aW9ucy4KKworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0
aWFsaXplKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OmZpbmRUZXh0KToK
KyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRGaW5kU3RyaW5nKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmg6CisgICAgICAg
IChRUXVpY2tXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9maW5kVGV4dC5xbWw6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpRdFdlYlBhZ2VGaW5k
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVudDo6ZGlkRmluZFN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OnRvUXRXZWJQYWdlRmluZENsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZEZhaWxUb0ZpbmRTdHJpbmcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFF0V2ViUGFnZUZpbmRDbGllbnQpOgorCiAyMDEyLTA5LTEw
ICBBbmRyYXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF1b
V0syXSBRV2ViS2l0VGVzdCBzaG91bGQgcmV0cmlldmUgdGhlIHZpZXdwb3J0IHN0YXRlIGZyb20g
dGhlIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDhkNzAzNjcuLjBkZGUx
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaQpAQCAtNzc4LDYgKzc3OCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEhB
VkVfUVRRVUlDSz0xKSB7CiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oIFwK
ICAgICAgICAgVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmggXAogICAgICAgICBVSVBy
b2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmggXAorICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdl
RmluZENsaWVudC5oIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQu
aCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQb2xpY3lDbGllbnQuaCBcCiAgICAg
ICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VTR05vZGUuaCBcCkBAIC04MDgsNiArODA5LDcgQEAg
Y29udGFpbnMoREVGSU5FUywgSEFWRV9RVFFVSUNLPTEpIHsKICAgICAgICAgVUlQcm9jZXNzL3F0
L1F0RGlhbG9nUnVubmVyLmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFu
YWdlci5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcCBcCisgICAg
ICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcCBcCiAgICAgICAgIFVJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQb2xpY3lDbGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVNHTm9kZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlldy5jcHAKaW5kZXggNDkwYjliYS4uM2JiMWQ1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoYykgMjAxMiBIZXdsZXR0LVBhY2thcmQg
RGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMCw5ICsz
MSwxMSBAQAogI2luY2x1ZGUgIlF0V2ViRXJyb3IuaCIKICNpbmNsdWRlICJRdFdlYkljb25EYXRh
YmFzZUNsaWVudC5oIgogI2luY2x1ZGUgIlF0V2ViUGFnZUV2ZW50SGFuZGxlci5oIgorI2luY2x1
ZGUgIlF0V2ViUGFnZUZpbmRDbGllbnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VMb2FkQ2xpZW50
LmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQmFj
a0ZvcndhcmRMaXN0LmgiCisjaW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX1NFUlZFUikKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1
ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgpAQCAtNjUsNiArNjgsNyBAQAogI2luY2x1ZGUgPFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzA2LDYgKzMxMCw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld1By
aXZhdGU6OmluaXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVm
IHBhCiAgICAgUVF1aWNrV2ViUGFnZVByaXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBh
Z2VWaWV3LmRhdGEoKS0+ZDsKICAgICBwYWdlVmlld1ByaXZhdGUtPmluaXRpYWxpemUod2ViUGFn
ZVByb3h5LmdldCgpKTsKIAorICAgIHBhZ2VGaW5kQ2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VG
aW5kQ2xpZW50KHRvQVBJKHdlYlBhZ2VQcm94eS5nZXQoKSksIHFfcHRyKSk7CiAgICAgcGFnZUxv
YWRDbGllbnQucmVzZXQobmV3IFF0V2ViUGFnZUxvYWRDbGllbnQodG9BUEkod2ViUGFnZVByb3h5
LmdldCgpKSwgcV9wdHIpKTsKICAgICBwYWdlUG9saWN5Q2xpZW50LnJlc2V0KG5ldyBRdFdlYlBh
Z2VQb2xpY3lDbGllbnQodG9BUEkod2ViUGFnZVByb3h5LmdldCgpKSwgcV9wdHIpKTsKICAgICBw
YWdlVUlDbGllbnQucmVzZXQobmV3IFF0V2ViUGFnZVVJQ2xpZW50KHRvQVBJKHdlYlBhZ2VQcm94
eS5nZXQoKSksIHFfcHRyKSk7CkBAIC0xMzE4LDYgKzEzMjMsMjYgQEAgdm9pZCBRUXVpY2tXZWJW
aWV3RXhwZXJpbWVudGFsOjpldmFsdWF0ZUphdmFTY3JpcHQoY29uc3QgUVN0cmluZyYgc2NyaXB0
LCBjb25zdAogICAgIGRfcHRyLT53ZWJQYWdlUHJveHkuZ2V0KCktPnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZShzY3JpcHQsIFNjcmlwdFZhbHVlQ2FsbGJhY2s6OmNyZWF0ZShjbG9zdXJlLCBqYXZh
U2NyaXB0Q2FsbGJhY2spKTsKIH0KIAordm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpm
aW5kVGV4dChjb25zdCBRU3RyaW5nJiBzdHJpbmcsIEZpbmRGbGFncyBvcHRpb25zKQoreworICAg
IFFfRChRUXVpY2tXZWJWaWV3KTsKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkgeworICAgICAg
ICBkLT53ZWJQYWdlUHJveHktPmhpZGVGaW5kVUkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBXZWJLaXQ6OkZpbmRPcHRpb25zIHdrT3B0aW9ucyA9IFdlYktpdDo6RmluZE9wdGlvbnND
YXNlSW5zZW5zaXRpdmU7CisgICAgaWYgKG9wdGlvbnMgJiBGaW5kQ2FzZVNlbnNpdGl2ZWx5KQor
ICAgICAgICB3a09wdGlvbnMgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPih3a09w
dGlvbnMgJiB+V2ViS2l0OjpGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSk7CisgICAgaWYgKG9w
dGlvbnMgJiBGaW5kQmFja3dhcmQpCisgICAgICAgIHdrT3B0aW9ucyA9IHN0YXRpY19jYXN0PFdl
YktpdDo6RmluZE9wdGlvbnM+KHdrT3B0aW9ucyB8IEZpbmRPcHRpb25zQmFja3dhcmRzKTsKKyAg
ICBpZiAob3B0aW9ucyAmIEZpbmRXcmFwc0Fyb3VuZERvY3VtZW50KQorICAgICAgICB3a09wdGlv
bnMgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPih3a09wdGlvbnMgfCBGaW5kT3B0
aW9uc1dyYXBBcm91bmQpOworICAgIGlmIChvcHRpb25zICYgRmluZEhpZ2hsaWdodEFsbE9jY3Vy
cmVuY2VzKQorICAgICAgICB3a09wdGlvbnMgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRp
b25zPih3a09wdGlvbnMgfCBGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQpOworCisgICAgZC0+d2Vi
UGFnZVByb3h5LT5maW5kU3RyaW5nKHN0cmluZywgd2tPcHRpb25zLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCktMSk7Cit9CisKIFFMaXN0PFFVcmw+IFFRdWlja1dlYlZpZXdF
eHBlcmltZW50YWw6OnVzZXJTY3JpcHRzKCkgY29uc3QKIHsKICAgICBRX0QoY29uc3QgUVF1aWNr
V2ViVmlldyk7CkBAIC0yMDcwLDYgKzIwOTUsMTIgQEAgdm9pZCBRUXVpY2tXZWJWaWV3OjpzZXRB
bGxvd0FueUhUVFBTQ2VydGlmaWNhdGVGb3JMb2NhbEhvc3QoYm9vbCBhbGxvdykKICAgICBkLT5t
X2FsbG93QW55SFRUUFNDZXJ0aWZpY2F0ZUZvckxvY2FsSG9zdCA9IGFsbG93OwogfQogCit2b2lk
IFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRGaW5kU3RyaW5nKHVuc2lnbmVkIG1hdGNoQ291bnQp
Cit7CisgICAgUV9RKFFRdWlja1dlYlZpZXcpOworICAgIGVtaXQgcS0+ZXhwZXJpbWVudGFsKCkt
PnRleHRGb3VuZChtYXRjaENvdW50KTsKK30KKwogLyohCiAgICAgXHFtbHNpZ25hbCBXZWJWaWV3
OjpvbkxvYWRpbmdDaGFuZ2VkKGxvYWRSZXF1ZXN0KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAppbmRleCA2OGU1ZmNhLi5iODY3Njc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZp
ZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChjKSAy
MDEyIEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55LCBMLlAuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTUxLDYgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdHJ1Y3QgUXRS
ZWZDb3VudGVkTmV0d29ya1JlcXVlc3REYXRhOwogY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudFF0OwogY2xhc3MgUXRXZWJQYWdlTG9hZENsaWVudDsKK2NsYXNzIFF0V2ViUGFnZUZp
bmRDbGllbnQ7CiBjbGFzcyBRdFdlYlBhZ2VQb2xpY3lDbGllbnQ7CiBjbGFzcyBRdFdlYlBhZ2VV
SUNsaWVudDsKIH0KQEAgLTIxOSw2ICsyMjEsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBRV2ViS2l0VGVzdDsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpQYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UXRXZWJQYWdlTG9hZENs
aWVudDsKKyAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OwogICAg
IGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlF0V2ViUGFnZVBvbGljeUNsaWVudDsKICAgICBmcmllbmQg
Y2xhc3MgV2ViS2l0OjpRdFdlYlBhZ2VVSUNsaWVudDsKICAgICBmcmllbmQgY2xhc3MgV1RSOjpQ
bGF0Zm9ybVdlYlZpZXc7CkBAIC0yNzcsMTIgKzI4MCwyMCBAQCBjbGFzcyBRV0VCS0lUX0VYUE9S
VCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsIDogcHVibGljIFFPYmplY3QgewogICAgIFFfUFJP
UEVSVFkoUUxpc3Q8UVVybD4gdXNlclNjcmlwdHMgUkVBRCB1c2VyU2NyaXB0cyBXUklURSBzZXRV
c2VyU2NyaXB0cyBOT1RJRlkgdXNlclNjcmlwdHNDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoUVVy
bCByZW1vdGVJbnNwZWN0b3JVcmwgUkVBRCByZW1vdGVJbnNwZWN0b3JVcmwgTk9USUZZIHJlbW90
ZUluc3BlY3RvclVybENoYW5nZWQgRklOQUwpCiAgICAgUV9FTlVNUyhOYXZpZ2F0aW9uUmVxdWVz
dEFjdGlvbkV4cGVyaW1lbnRhbCkKKyAgICBRX0VOVU1TKEZpbmRGbGFncykKIAogcHVibGljOgog
ICAgIGVudW0gTmF2aWdhdGlvblJlcXVlc3RBY3Rpb25FeHBlcmltZW50YWwgewogICAgICAgICBE
b3dubG9hZFJlcXVlc3QgPSBRUXVpY2tXZWJWaWV3OjpJZ25vcmVSZXF1ZXN0IC0gMQogICAgIH07
CiAKKyAgICBlbnVtIEZpbmRGbGFncyB7CisgICAgICAgIEZpbmRDYXNlU2Vuc2l0aXZlbHkgPSAx
IDw8IDAsCisgICAgICAgIEZpbmRCYWNrd2FyZCA9IDEgPDwgMSwKKyAgICAgICAgRmluZFdyYXBz
QXJvdW5kRG9jdW1lbnQgPSAxIDw8IDIsCisgICAgICAgIEZpbmRIaWdobGlnaHRBbGxPY2N1cnJl
bmNlcyA9IDEgPDwgMworICAgIH07CisKICAgICBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsKFFR
dWlja1dlYlZpZXcqIHdlYlZpZXcpOwogICAgIHZpcnR1YWwgflFRdWlja1dlYlZpZXdFeHBlcmlt
ZW50YWwoKTsKIApAQCAtMzUyLDYgKzM2Myw3IEBAIHB1YmxpYyBRX1NMT1RTOgogICAgIHZvaWQg
Z29Gb3J3YXJkVG8oaW50IGluZGV4KTsKICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFFTdHJp
bmcmKTsKICAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHQs
IGNvbnN0IFFKU1ZhbHVlJiB2YWx1ZSA9IFFKU1ZhbHVlKCkpOworICAgIHZvaWQgZmluZFRleHQo
Y29uc3QgUVN0cmluZyYgc3RyaW5nLCBGaW5kRmxhZ3Mgb3B0aW9ucyA9IHN0YXRpY19jYXN0PEZp
bmRGbGFncz4oMCkpOwogCiBRX1NJR05BTFM6CiAgICAgdm9pZCBhbGVydERpYWxvZ0NoYW5nZWQo
KTsKQEAgLTM3Niw2ICszODgsNyBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCB1c2VyU2NyaXB0c0No
YW5nZWQoKTsKICAgICB2b2lkIHByZWZlcnJlZE1pbmltdW1Db250ZW50c1dpZHRoQ2hhbmdlZCgp
OwogICAgIHZvaWQgcmVtb3RlSW5zcGVjdG9yVXJsQ2hhbmdlZCgpOworICAgIHZvaWQgdGV4dEZv
dW5kKHVuc2lnbmVkIG1hdGNoQ291bnQpOwogCiBwcml2YXRlOgogICAgIFFRdWlja1dlYlZpZXcq
IHFfcHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJ2aWV3X3BfcC5oCmluZGV4IGQxZDNkOWUuLmVjNGI3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKQEAgLTgyLDYgKzgy
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkRmFpbChjb25zdCBXZWJLaXQ6
OlF0V2ViRXJyb3ImIGVycm9yKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VFdmVudChR
TW91c2VFdmVudCopOwogCisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRTdHJpbmcodW5zaWduZWQg
bWF0Y2hDb3VudCk7CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0
aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikgeyB9CiAKICAgICBp
bnQgbG9hZFByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkUHJvZ3Jlc3M7IH0KQEAgLTE2
NCw2ICsxNjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3duUHRyPFFXZWJQcmVmZXJlbmNlcz4gcHJl
ZmVyZW5jZXM7CiAKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJLaXQ6OlF0V2ViUGFnZUxvYWRDbGll
bnQ+IHBhZ2VMb2FkQ2xpZW50OworICAgIFFTY29wZWRQb2ludGVyPFdlYktpdDo6UXRXZWJQYWdl
RmluZENsaWVudD4gcGFnZUZpbmRDbGllbnQ7CiAgICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpR
dFdlYlBhZ2VQb2xpY3lDbGllbnQ+IHBhZ2VQb2xpY3lDbGllbnQ7CiAgICAgUVNjb3BlZFBvaW50
ZXI8V2ViS2l0OjpRdFdlYlBhZ2VVSUNsaWVudD4gcGFnZVVJQ2xpZW50OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcv
dHN0X2ZpbmRUZXh0LnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvV2ViVmlldy90c3RfZmluZFRleHQucW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmYxZWExNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRUZXh0LnFtbApA
QCAtMCwwICsxLDE0NSBAQAoraW1wb3J0IFF0UXVpY2sgMi4wCitpbXBvcnQgUXRUZXN0IDEuMAor
aW1wb3J0IFF0V2ViS2l0IDMuMAoraW1wb3J0IFF0V2ViS2l0LmV4cGVyaW1lbnRhbCAxLjAKK2lt
cG9ydCAiLi4vY29tbW9uIgorCitUZXN0V2ViVmlldyB7CisgICAgaWQ6IHdlYlZpZXcKKyAgICB3
aWR0aDogNDAwCisgICAgaGVpZ2h0OiAzMDAKKworICAgIHByb3BlcnR5IGludCBtYXRjaENvdW50
OiAtMQorICAgIHByb3BlcnR5IGJvb2wgZmluZEZhaWxlZDogZmFsc2UKKyAgICBmdW5jdGlvbiBj
bGVhcigpIHsKKyAgICAgICAgdGV4dEZvdW5kU3B5LmNsZWFyKCkKKyAgICAgICAgZmluZEZhaWxl
ZCA9IGZhbHNlCisgICAgICAgIG1hdGNoQ291bnQgPSAtMQorICAgIH0KKworICAgIFNpZ25hbFNw
eSB7CisgICAgICAgIGlkOiB0ZXh0Rm91bmRTcHkKKyAgICAgICAgdGFyZ2V0OiB3ZWJWaWV3LmV4
cGVyaW1lbnRhbAorICAgICAgICBzaWduYWxOYW1lOiAidGV4dEZvdW5kIgorICAgIH0KKworICAg
IGV4cGVyaW1lbnRhbC5vblRleHRGb3VuZDogeworICAgICAgICB3ZWJWaWV3Lm1hdGNoQ291bnQg
PSBtYXRjaENvdW50CisgICAgICAgIGZpbmRGYWlsZWQgPSBtYXRjaENvdW50ID09IDAKKyAgICB9
CisgICAgVGVzdENhc2UgeworICAgICAgICBuYW1lOiAiV2ViVmlld0ZpbmRUZXh0IgorCisgICAg
ICAgIGZ1bmN0aW9uIHRlc3RfZmluZFRleHQoKSB7CisgICAgICAgICAgICB2YXIgZmluZEZsYWdz
ID0gV2ViVmlld0V4cGVyaW1lbnRhbC5GaW5kSGlnaGxpZ2h0QWxsT2NjdXJyZW5jZXMgfAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVmlld0V4cGVyaW1lbnRhbC5GaW5kQ2FzZVNl
bnNpdGl2ZWx5CisgICAgICAgICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAgICAgICAgICAgIHdlYlZp
ZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0MS5odG1sIikKKyAgICAgICAg
ICAgIHZlcmlmeSh3ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkpCisgICAgICAgICAgICB3
ZWJWaWV3LmV4cGVyaW1lbnRhbC5maW5kVGV4dCgiSGVsbG8iLCBmaW5kRmxhZ3MpCisgICAgICAg
ICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHRleHRGb3VuZFNw
eS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMSkKKyAgICAgICAg
fQorICAgICAgICBmdW5jdGlvbiB0ZXN0X2ZpbmRUZXh0Q2FzZUluc2Vuc2l0aXZlKCkgeworICAg
ICAgICAgICAgdmFyIGZpbmRGbGFncyA9IDAKKworICAgICAgICAgICAgd2ViVmlldy5jbGVhcigp
CisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVz
dDEuaHRtbCIpCisgICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRl
ZCgpKQorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZmluZFRleHQoImhlTExvIiwg
ZmluZEZsYWdzKQorICAgICAgICAgICAgdGV4dEZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAg
Y29tcGFyZSh0ZXh0Rm91bmRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKG1hdGNo
Q291bnQsIDEpCisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5kVGV4dE1hbnlN
YXRjaGVzKCkgeworICAgICAgICAgICAgdmFyIGZpbmRGbGFncyA9IFdlYlZpZXdFeHBlcmltZW50
YWwuRmluZEhpZ2hsaWdodEFsbE9jY3VycmVuY2VzCisgICAgICAgICAgICB3ZWJWaWV3LmNsZWFy
KCkKKyAgICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90
ZXN0NC5odG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2Vl
ZGVkKCkpCisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5maW5kVGV4dCgiYmxhIiwg
ZmluZEZsYWdzKQorICAgICAgICAgICAgdGV4dEZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAg
Y29tcGFyZSh0ZXh0Rm91bmRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKG1hdGNo
Q291bnQsIDEwMCkKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiB0ZXN0X2ZpbmRUZXh0QmFj
a3dhcmQoKSB7CisgICAgICAgICAgICB2YXIgZmluZEZsYWdzID0gV2ViVmlld0V4cGVyaW1lbnRh
bC5GaW5kSGlnaGxpZ2h0QWxsT2NjdXJyZW5jZXMKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIo
KQorICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rl
c3Q0Lmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVk
ZWQoKSkKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEwIiwg
ZmluZEZsYWdzKQorICAgICAgICAgICAgdGV4dEZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAg
Y29tcGFyZSh0ZXh0Rm91bmRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKG1hdGNo
Q291bnQsIDEwKQorICAgICAgICAgICAgZm9yKHZhciBpPTA7IGkgPCA5OyBpKyspIHsKKyAgICAg
ICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5maW5kVGV4dCgiYmxhMCIsIGZpbmRGbGFn
cykKKyAgICAgICAgICAgICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBjb21wYXJlKHRleHRGb3VuZFNweS5jb3VudCwgMTApCisgICAgICAgICAgICB3
ZWJWaWV3LmV4cGVyaW1lbnRhbC5maW5kVGV4dCgiYmxhMCIsIGZpbmRGbGFncykKKyAgICAgICAg
ICAgIHRleHRGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUodGV4dEZvdW5kU3B5
LmNvdW50LCAxMSkKKyAgICAgICAgICAgIGNvbXBhcmUoZmluZEZhaWxlZCwgdHJ1ZSkKKworICAg
ICAgICAgICAgd2ViVmlldy5jbGVhcigpCisgICAgICAgICAgICBmaW5kRmxhZ3MgfD0gV2ViVmll
d0V4cGVyaW1lbnRhbC5GaW5kQmFja3dhcmQKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVu
dGFsLmZpbmRUZXh0KCJibGEwIiwgZmluZEZsYWdzKQorICAgICAgICAgICAgdGV4dEZvdW5kU3B5
LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh0ZXh0Rm91bmRTcHkuY291bnQsIDEpCisgICAg
ICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5kVGV4dEZhaWxOb1dyYXAoKSB7CisgICAg
ICAgICAgICB2YXIgZmluZEZsYWdzID0gV2ViVmlld0V4cGVyaW1lbnRhbC5GaW5kSGlnaGxpZ2h0
QWxsT2NjdXJyZW5jZXMKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIoKQorICAgICAgICAgICAg
d2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3Q0Lmh0bWwiKQorICAg
ICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQoKSkKKyAgICAgICAg
ICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEwIiwgZmluZEZsYWdzKQorICAg
ICAgICAgICAgdGV4dEZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh0ZXh0Rm91
bmRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKG1hdGNoQ291bnQsIDEwKQorICAg
ICAgICAgICAgZm9yKHZhciBpPTA7IGkgPCA5OyBpKyspIHsKKyAgICAgICAgICAgICAgICB3ZWJW
aWV3LmV4cGVyaW1lbnRhbC5maW5kVGV4dCgiYmxhMCIsIGZpbmRGbGFncykKKyAgICAgICAgICAg
ICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21w
YXJlKHRleHRGb3VuZFNweS5jb3VudCwgMTApCisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1l
bnRhbC5maW5kVGV4dCgiYmxhMCIsIGZpbmRGbGFncykKKyAgICAgICAgICAgIHRleHRGb3VuZFNw
eS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUodGV4dEZvdW5kU3B5LmNvdW50LCAxMSkKKyAg
ICAgICAgICAgIGNvbXBhcmUoZmluZEZhaWxlZCwgdHJ1ZSkKKyAgICAgICAgfQorICAgICAgICBm
dW5jdGlvbiB0ZXN0X2ZpbmRUZXh0V3JhcCgpIHsKKyAgICAgICAgICAgIHZhciBmaW5kRmxhZ3Mg
PSBXZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRIaWdobGlnaHRBbGxPY2N1cnJlbmNlcworICAgICAg
ICAgICAgZmluZEZsYWdzIHw9IFdlYlZpZXdFeHBlcmltZW50YWwuRmluZFdyYXBzQXJvdW5kRG9j
dW1lbnQKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy51
cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3Q0Lmh0bWwiKQorICAgICAgICAgICAg
dmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAgIHdlYlZp
ZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEwIiwgZmluZEZsYWdzKQorICAgICAgICAgICAg
dGV4dEZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh0ZXh0Rm91bmRTcHkuY291
bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKG1hdGNoQ291bnQsIDEwKQorICAgICAgICAgICAg
Zm9yKHZhciBpPTA7IGkgPCAxOTsgaSsrKSB7CisgICAgICAgICAgICAgICAgd2ViVmlldy5leHBl
cmltZW50YWwuZmluZFRleHQoImJsYTAiLCBmaW5kRmxhZ3MpCisgICAgICAgICAgICAgICAgdGV4
dEZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY29tcGFyZSh0ZXh0
Rm91bmRTcHkuY291bnQsIDIwKQorICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIHRlc3RfZmlu
ZFRleHRGYWlsQ2FzZVNlbnNpdGl2ZSgpIHsKKyAgICAgICAgICAgIHZhciBmaW5kRmxhZ3MgPSBX
ZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRDYXNlU2Vuc2l0aXZlbHkKKyAgICAgICAgICAgIHdlYlZp
ZXcuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4v
Y29tbW9uL3Rlc3QxLmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxv
YWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0
KCJoZUxMbyIsIGZpbmRGbGFncykKKyAgICAgICAgICAgIHRleHRGb3VuZFNweS53YWl0KCkKKyAg
ICAgICAgICAgIGNvbXBhcmUodGV4dEZvdW5kU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29t
cGFyZShmaW5kRmFpbGVkLCB0cnVlKQorICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIHRlc3Rf
ZmluZFRleHROb3RGb3VuZCgpIHsKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIoKQorICAgICAg
ICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3QxLmh0bWwi
KQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQoKSkKKyAg
ICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJzdHJpbmctdGhhdC1pcy1u
b3QtdGhyZXJlIikKKyAgICAgICAgICAgIHRleHRGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAg
IGNvbXBhcmUodGV4dEZvdW5kU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShmaW5k
RmFpbGVkLCB0cnVlKQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjg1ZTFlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5jcHAKQEAgLTAsMCArMSw2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQg
Q29tcGFueSwgTC5QLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF0V2ViUGFn
ZUZpbmRDbGllbnQuaCIKKworI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcF9wLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUXRXZWJQYWdlRmlu
ZENsaWVudDo6UXRXZWJQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgUVF1aWNrV2Vi
Vmlldyogd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQoreworICAgIFdLUGFnZUZp
bmRDbGllbnQgZmluZENsaWVudDsKKyAgICBtZW1zZXQoJmZpbmRDbGllbnQsIDAsIHNpemVvZihX
S1BhZ2VGaW5kQ2xpZW50KSk7CisgICAgZmluZENsaWVudC52ZXJzaW9uID0ga1dLUGFnZUZpbmRD
bGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICBmaW5kQ2xpZW50LmNsaWVudEluZm8gPSB0aGlzOwor
ICAgIGZpbmRDbGllbnQuZGlkRmluZFN0cmluZyA9IGRpZEZpbmRTdHJpbmc7CisgICAgZmluZENs
aWVudC5kaWRGYWlsVG9GaW5kU3RyaW5nID0gZGlkRmFpbFRvRmluZFN0cmluZzsKKyAgICBXS1Bh
Z2VTZXRQYWdlRmluZENsaWVudChwYWdlUmVmLCAmZmluZENsaWVudCk7Cit9CisKK3ZvaWQgUXRX
ZWJQYWdlRmluZENsaWVudDo6ZGlkRmluZFN0cmluZyh1bnNpZ25lZCBtYXRjaENvdW50KQorewor
ICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPmRpZEZpbmRTdHJpbmcobWF0Y2hDb3VudCk7Cit9CisK
K3N0YXRpYyBRdFdlYlBhZ2VGaW5kQ2xpZW50KiB0b1F0V2ViUGFnZUZpbmRDbGllbnQoY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBBU1NFUlQoY2xpZW50SW5mbyk7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8UXRXZWJQYWdlRmluZENsaWVudCo+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGNsaWVudEluZm8pKTsKK30KKwordm9pZCBRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRGaW5kU3Ry
aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBzdHJpbmcsIHVuc2lnbmVkIG1hdGNoQ291
bnQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9RdFdlYlBhZ2VGaW5kQ2xpZW50
KGNsaWVudEluZm8pLT5kaWRGaW5kU3RyaW5nKG1hdGNoQ291bnQpOworfQorCit2b2lkIFF0V2Vi
UGFnZUZpbmRDbGllbnQ6OmRpZEZhaWxUb0ZpbmRTdHJpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLU3Ry
aW5nUmVmIHN0cmluZywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB0b1F0V2ViUGFn
ZUZpbmRDbGllbnQoY2xpZW50SW5mbyktPmRpZEZpbmRTdHJpbmcoMCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYmtpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZUZpbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VGaW5kQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY2NWU4
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VGaW5kQ2xpZW50LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
MiBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBR
dFdlYlBhZ2VGaW5kQ2xpZW50X2gKKyNkZWZpbmUgUXRXZWJQYWdlRmluZENsaWVudF9oCisKKyNp
bmNsdWRlIDxRdEdsb2JhbD4KKyNpbmNsdWRlIDxXS1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJGcmFt
ZVByb3h5Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK2NsYXNzIFFRdWlj
a1dlYlZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBRdFdlYlBhZ2VGaW5kQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBRdFdlYlBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiwgUVF1aWNr
V2ViVmlldyopOworCitwcml2YXRlOgorCisgICAgdm9pZCBkaWRGaW5kU3RyaW5nKHVuc2lnbmVk
IG1hdGNoQ291bnQpOworCisgICAgLy8gV0tQYWdlRmluZENsaWVudCBjYWxsYmFja3MuCisgICAg
c3RhdGljIHZvaWQgZGlkRmluZFN0cmluZyhXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCB1bnNpZ25l
ZCBtYXRjaENvdW50LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRGYWlsVG9GaW5kU3RyaW5nKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOworCisgICAgUVF1aWNrV2ViVmlldyogbV93ZWJWaWV3OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2Via2l0CisKKyNlbmRpZiAvLyBRdFdlYlBhZ2VGaW5kQ2xpZW50X2gKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYTVkNWE1Li43
MDRlZmExIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMTMgIEhlaWtraSBQYWFqYW5lbiAgPGhlaWtraS5w
YWFqYW5lbkBwYWxtLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gQWRkIHNpbXBsZSBVSSB0byBm
aW5kIHRleHQgZnJvbSBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjQ4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZpbmQgYmFyIHRoYXQgc2xpZGVzIGJldHdlZW4gbmF2aWdhdGlvbiBiYXIgYW5k
IFdlYlZpZXcuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5xcmM6Cisg
ICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMvZmluZC5wbmc6IEFkZGVkLgorICAgICAgICAq
IE1pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbDoKKwogMjAxMi0wOS0xMCAgU2lt
b24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgRml4IGJ1
aWxkIG9mIFdUUiB3aXRoIFF0IG9uIFdpbmRvd3MKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL3F0L01pbmlCcm93c2VyLnFyYyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2Vy
LnFyYwppbmRleCBlMjFlZWYzLi4zZmE2MjA4IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9NaW5pQnJvd3Nlci5xcmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dz
ZXIucXJjCkBAIC00LDYgKzQsNyBAQAogICAgICAgICA8ZmlsZT5pY29ucy9jaGVja2JveF91bmNo
ZWNrZWQucG5nPC9maWxlPgogICAgICAgICA8ZmlsZT5pY29ucy9jb250ZW50c193aWR0aC5wbmc8
L2ZpbGU+CiAgICAgICAgIDxmaWxlPmljb25zL2Zhdmljb24ucG5nPC9maWxlPgorICAgICAgICA8
ZmlsZT5pY29ucy9maW5kLnBuZzwvZmlsZT4KICAgICAgICAgPGZpbGU+aWNvbnMvZm9sZGVyLnBu
ZzwvZmlsZT4KICAgICAgICAgPGZpbGU+aWNvbnMvaW5mby5wbmc8L2ZpbGU+CiAgICAgICAgIDxm
aWxlPmljb25zL25leHQucG5nPC9maWxlPgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvaWNvbnMvZmluZC5wbmcgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9maW5kLnBuZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iNzZhZmEzOThiOTJkMGQ3ZWMyN2E2NDQ5MmFkNTZkMzc4YWFjZjc0CkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCA5MzAKemNtVjtUMTZ9LXlQKTxoOzNLfExrMDAwZTFOSkxUcTAw
MCZNMDAweVMxT05hNEJYdEc0MDAwOH5YK3VMJFg9N3NtCnowQz9Kc2xnbj0jUlRSZDVWfj9rbTYw
eU93I2o0TzFpIzk/QEc8flF8Z2xLRVd1OVk/ellubGAlTGFIWD9Za1NEZQp6Y3pTMT9LR1gmM2g4
LT00Sj5uciZgfmVsfWY/WmNBbTh5Yn1EJU1tOFJIPipOUkxzSlVuVSs4fnQ4PjVlbyRxfTIKelR3
VGIwPlZ+MXAyLXBsXz9ObSNtdkFRTzl7WH5YV25WYFVnPnFUTClVUzklbSElKj4kYz03YFZ6YGRF
Qj47RC1PCnpPJk5KJD47fTVjJGxDPHRHR3h6dHBebX00MyhRQEwheChiQWZ4Sz80dTBkYDtrWiV1
aThfMkhAQC1tUnUlZ3pHaQp6OG8qMGwkOEFFYzE1QkB7QE9DTzZjbU48QG00VmQwQyFBX1kpT0VN
ekUxOXpVZzdXezJQMVBJQ2Rse0d2PEJ8ZyQKejBSQ3Z7KDx7SWY3PV4yeTwjJk5TVjNob0xhZTBW
MGc3dy12MUhTUldNKSN+VTxiMihmPHE5d2ojX2VlOVR4RzwkCnorRjdVI0lsc0tgb35aKWBGI1pi
VGBjTm1jRkhwNm1mcXYkTWo0SjB3Yyp7UyVJSyozX3N4Si1uR2F1PW12alYmaAp6blF2V1BzU2Yh
TVdVdztxJjFSWnpgN0FJQyoodkhzRyViNy0wKjVMazFYVXlmNTdHRXxiZzg1MWojK0lVajtqfngK
ekFyVXk3cip5Tj5uQFV1IT5rR2NPZWRFekgtUUNvYkhqKTUybz5FUG5CUjBtJjhOeCoyJmI4Yjc1
ez4panRAckx0Cnotbm04KmdgJG1RNk55aU5CdVhpeUpoWHpGZysjJkl6VlMkWVNiSXxBYGdEVFlL
aWE/OV93Q1FedWsyc3tXaz5Eagp6YzJyRXdtanBZeW1uYz9JVn4wRGxkPXgkXzFvJkorcUtSLSgx
WUFMK2NRTldWVW8jSnhpe19qO2sxJFZ+cl8yKigKeipfPD1xRz96dlV0NzRVe0JFb3ZabnpzJkZY
UkttITZZSFE9dyZ0eWFSXl4hJkBLU2U4em8xTzlXTklUYnRSc29vCnpLO3lIOEw9aG4mbVh+OUln
PkhDN2B8VkNGNCVfeHxRNEIqUiNiViZpUDc3QmxxNVhDemopYXp4KUxYSlNPSmo5Uwp6NDhHJUky
TG13blkkc1UhSG9XeWFXYlk9fVNgV1U3VkRIZmNuPH5JN3BUVnRUVVFjZmd8Rj5hJDReaXZMO2xY
TEwKejFpN0Y0e2xeRGoqQys3dzw5YDNvRloldGJVcWJjKWU1ZHtmc1VyJjN4KVorRzAwMDAyVm9P
SXYwUk0tTiUpYkJ0CnowMTBxTlMjdG1ZM2xqaFUzbGprVm53JUhfMDAwTWNObGlydSt6QVp7NCp7
dGgrbH5NTDA0cXNFS355TnVWXz83bwp6Km83SSQyYUc3WnxNPUF+a3p6Nm41JXd7VlclM3xWSlF7
Ul5QJS1UUTBHdDI8S0x1YS0je2Q4VDA3KnFvTTZOPCQKRWcyV0BNKlo9P2sKCmxpdGVyYWwgMApI
Y21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2Vy
V2luZG93LnFtbCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbApp
bmRleCBjNzMzMDhlLi5jZWRmYWU5IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9x
bWwvQnJvd3NlcldpbmRvdy5xbWwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dz
ZXJXaW5kb3cucW1sCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdo
dCAoQykgMjAxMCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICogQ29weXJpZ2h0IChjKSAyMDEyIEhl
d2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55LCBMLlAuCiAgKgogICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCkBAIC0yMTMsNiArMjE0LDI3IEBAIFJlY3RhbmdsZSB7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgaWQ6IGZp
bmRCdXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6IHBhcmVudC5oZWlnaHQKKyAgICAgICAg
ICAgICAgICB3aWR0aDogaGVpZ2h0CisgICAgICAgICAgICAgICAgY29sb3I6ICIjZWZlZmVmIgor
ICAgICAgICAgICAgICAgIHJhZGl1czogNgorCisgICAgICAgICAgICAgICAgSW1hZ2UgeworICAg
ICAgICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQKKyAgICAgICAgICAgICAg
ICAgICAgb3BhY2l0eTogMC42CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogIi4uL2ljb25z
L2ZpbmQucG5nIgorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIE1vdXNlQXJl
YSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAg
ICAgICAgICAgIG9uQ2xpY2tlZDogeworICAgICAgICAgICAgICAgICAgICAgICAgZmluZEJhci50
b2dnbGUoKQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBSZWN0YW5nbGUgewogICAgICAgICAgICAgICAgIGlkOiB0
b3VjaEV2ZW50c0J1dHRvbgogICAgICAgICAgICAgICAgIGhlaWdodDogcGFyZW50LmhlaWdodAog
ICAgICAgICAgICAgICAgIHdpZHRoOiBoZWlnaHQKQEAgLTMzMCwxMiArMzUyLDE2NSBAQCBSZWN0
YW5nbGUgewogICAgICAgICB9CiAgICAgfQogCisgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgaWQ6
IGZpbmRCYXIKKyAgICAgICAgYW5jaG9ycyB7CisgICAgICAgICAgICB0b3A6IG5hdmlnYXRpb25C
YXIuYm90dG9tCisgICAgICAgICAgICBsZWZ0OiBwYXJlbnQubGVmdAorICAgICAgICAgICAgcmln
aHQ6IHBhcmVudC5yaWdodAorICAgICAgICB9CisgICAgICAgIGhlaWdodDogMAorICAgICAgICBj
b2xvcjogIiNlZmVmZWYiCisKKyAgICAgICAgQmVoYXZpb3Igb24gaGVpZ2h0IHtOdW1iZXJBbmlt
YXRpb24ge2R1cmF0aW9uOiA1MDB9fQorCisgICAgICAgIGZ1bmN0aW9uIHRvZ2dsZSgpIHsKKyAg
ICAgICAgICAgIGlmIChoZWlnaHQgPT0gMCkgeworICAgICAgICAgICAgICAgIGhlaWdodCA9IG5h
dmlnYXRpb25CYXIuaGVpZ2h0CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGhlaWdodCA9IDAKKyAgICAgICAgICAgICAgICBmaW5kKCIiLDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZmluZChzdHIsIG9wdGlvbnMpIHsKKyAgICAg
ICAgICAgIHZhciBmaW5kT3B0aW9ucyA9IG9wdGlvbnMgfCBXZWJWaWV3RXhwZXJpbWVudGFsLkZp
bmRIaWdobGlnaHRBbGxPY2N1cnJlbmNlcworICAgICAgICAgICAgZmluZE9wdGlvbnMgfD0gV2Vi
Vmlld0V4cGVyaW1lbnRhbC5GaW5kV3JhcHNBcm91bmREb2N1bWVudAorICAgICAgICAgICAgd2Vi
Vmlldy5leHBlcmltZW50YWwuZmluZFRleHQoc3RyLCBmaW5kT3B0aW9ucykKKyAgICAgICAgfQor
CisgICAgICAgIENvbm5lY3Rpb25zIHsKKyAgICAgICAgICAgIHRhcmdldDogd2ViVmlldy5leHBl
cmltZW50YWwKKyAgICAgICAgICAgIG9uVGV4dEZvdW5kOiB7CisgICAgICAgICAgICAgICAgZmFp
bGVkT3ZlcmxheS52aXNpYmxlID0gbWF0Y2hDb3VudCA9PSAwCisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgTW91c2VBcmVhIHsKKyAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFy
ZW50CisgICAgICAgIH0KKyAgICAgICAgSXRlbSB7CisgICAgICAgICAgICBhbmNob3JzLmZpbGw6
IHBhcmVudAorICAgICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICBpZDogaW5w
dXRBcmVhCisgICAgICAgICAgICAgICAgaGVpZ2h0OiAyNgorICAgICAgICAgICAgICAgIGFuY2hv
cnMgeworICAgICAgICAgICAgICAgICAgICBsZWZ0OiBwYXJlbnQubGVmdAorICAgICAgICAgICAg
ICAgICAgICByaWdodDogcHJldkJ1dHRvbi5sZWZ0CisgICAgICAgICAgICAgICAgICAgIG1hcmdp
bnM6IDYKKyAgICAgICAgICAgICAgICAgICAgdmVydGljYWxDZW50ZXI6IHBhcmVudC52ZXJ0aWNh
bENlbnRlcgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb2xvcjogIndoaXRl
IgorICAgICAgICAgICAgICAgIGJvcmRlci53aWR0aDogMQorICAgICAgICAgICAgICAgIGJvcmRl
ci5jb2xvcjogIiNiZmJmYmYiCisgICAgICAgICAgICAgICAgcmFkaXVzOiAzCisgICAgICAgICAg
ICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGZhaWxlZE92ZXJsYXkK
KyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAg
ICAgICAgY29sb3I6ICJyZWQiCisgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNQorICAg
ICAgICAgICAgICAgICAgICByYWRpdXM6IDYKKyAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTog
ZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgVGV4dElucHV0IHsKKyAg
ICAgICAgICAgICAgICAgICAgaWQ6IGZpbmRUZXh0SW5wdXQKKyAgICAgICAgICAgICAgICAgICAg
Y2xpcDogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxlY3RCeU1vdXNlOiB0cnVlCisgICAg
ICAgICAgICAgICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6IFRleHRJbnB1dC5BbGlnbkxlZnQK
KyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAg
ICAgICAgYW5jaG9ycy5tYXJnaW5zOiAzCisgICAgICAgICAgICAgICAgICAgIGZvbnQgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcG9pbnRTaXplOiAxMQorICAgICAgICAgICAgICAgICAgICAg
ICAgZmFtaWx5OiAiU2FucyIKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgdGV4dDogIiIKKyAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHk6ICFmaW5kQmFy
LnZpc2libGUKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZG9GaW5kKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFmaW5kQmFyLnZpc2libGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZmluZFRleHRJbnB1dC50ZXh0ID09ICIiKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmFpbGVkT3ZlcmxheS52aXNpYmxlID0gZmFsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRCYXIuZmlu
ZChmaW5kVGV4dElucHV0LnRleHQpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgb25UZXh0Q2hhbmdlZDogeworICAgICAgICAgICAgICAgICAgICAgICAgZG9GaW5k
KCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBLZXlzLm9uUmV0
dXJuUHJlc3NlZDp7CisgICAgICAgICAgICAgICAgICAgICAgICBkb0ZpbmQoKQorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICBpZDogcHJldkJ1dHRvbgorICAgICAgICAg
ICAgICAgIGhlaWdodDogaW5wdXRBcmVhLmhlaWdodAorICAgICAgICAgICAgICAgIHdpZHRoOiBo
ZWlnaHQKKyAgICAgICAgICAgICAgICBhbmNob3JzLnJpZ2h0OiBuZXh0QnV0dG9uLmxlZnQKKyAg
ICAgICAgICAgICAgICBhbmNob3JzLnZlcnRpY2FsQ2VudGVyOiBwYXJlbnQudmVydGljYWxDZW50
ZXIKKyAgICAgICAgICAgICAgICBjb2xvcjogIiNlZmVmZWYiCisgICAgICAgICAgICAgICAgcmFk
aXVzOiA2CisKKyAgICAgICAgICAgICAgICBJbWFnZSB7CisgICAgICAgICAgICAgICAgICAgIGFu
Y2hvcnMuY2VudGVySW46IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICIuLi9p
Y29ucy9wcmV2aW91cy5wbmciCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
UmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAg
ICAgICAgICAgICAgICAgICAgY29sb3I6IHBhcmVudC5jb2xvcgorICAgICAgICAgICAgICAgICAg
ICByYWRpdXM6IHBhcmVudC5yYWRpdXMKKyAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMC44
CisgICAgICAgICAgICAgICAgICAgIHZpc2libGU6ICFwYXJlbnQuZW5hYmxlZAorICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIE1vdXNlQXJlYSB7CisgICAgICAgICAgICAgICAg
ICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIG9uUHJlc3NlZDog
eyBpZiAocGFyZW50LmVuYWJsZWQpIHBhcmVudC5jb2xvciA9ICIjY2ZjZmNmIiB9CisgICAgICAg
ICAgICAgICAgICAgIG9uUmVsZWFzZWQ6IHsgcGFyZW50LmNvbG9yID0gIiNlZmVmZWYiIH0KKyAg
ICAgICAgICAgICAgICAgICAgb25DbGlja2VkOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBm
aW5kQmFyLmZpbmQoZmluZFRleHRJbnB1dC50ZXh0LCBXZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRC
YWNrd2FyZCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgaWQ6IG5l
eHRCdXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6IGlucHV0QXJlYS5oZWlnaHQKKyAgICAg
ICAgICAgICAgICB3aWR0aDogaGVpZ2h0CisgICAgICAgICAgICAgICAgYW5jaG9ycy5yaWdodDog
cGFyZW50LnJpZ2h0CisgICAgICAgICAgICAgICAgYW5jaG9ycy52ZXJ0aWNhbENlbnRlcjogcGFy
ZW50LnZlcnRpY2FsQ2VudGVyCisgICAgICAgICAgICAgICAgY29sb3I6ICIjZWZlZmVmIgorICAg
ICAgICAgICAgICAgIHJhZGl1czogNgorCisgICAgICAgICAgICAgICAgSW1hZ2UgeworICAgICAg
ICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAg
ICAgc291cmNlOiAiLi4vaWNvbnMvbmV4dC5wbmciCisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxs
OiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgY29sb3I6IHBhcmVudC5jb2xvcgorICAgICAg
ICAgICAgICAgICAgICByYWRpdXM6IHBhcmVudC5yYWRpdXMKKyAgICAgICAgICAgICAgICAgICAg
b3BhY2l0eTogMC44CisgICAgICAgICAgICAgICAgICAgIHZpc2libGU6ICFwYXJlbnQuZW5hYmxl
ZAorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIE1vdXNlQXJlYSB7CisgICAg
ICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAgICAg
IG9uUHJlc3NlZDogeyBpZiAocGFyZW50LmVuYWJsZWQpIHBhcmVudC5jb2xvciA9ICIjY2ZjZmNm
IiB9CisgICAgICAgICAgICAgICAgICAgIG9uUmVsZWFzZWQ6IHsgcGFyZW50LmNvbG9yID0gIiNl
ZmVmZWYiIH0KKyAgICAgICAgICAgICAgICAgICAgb25DbGlja2VkOiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmaW5kQmFyLmZpbmQoZmluZFRleHRJbnB1dC50ZXh0LCAwKQorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQogICAgIFdlYlZpZXcgewogICAgICAgICBpZDogd2ViVmlldwogICAgICAgICBjbGlw
OiBmYWxzZQogCiAgICAgICAgIGFuY2hvcnMgewotICAgICAgICAgICAgdG9wOiBuYXZpZ2F0aW9u
QmFyLmJvdHRvbQorICAgICAgICAgICAgdG9wOiBmaW5kQmFyLmJvdHRvbQogICAgICAgICAgICAg
bGVmdDogcGFyZW50LmxlZnQKICAgICAgICAgICAgIHJpZ2h0OiBwYXJlbnQucmlnaHQKICAgICAg
ICAgICAgIGJvdHRvbTogcGFyZW50LmJvdHRvbQotLSAKMS43LjUuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164346</attachid>
            <date>2012-09-17 00:04:45 -0700</date>
            <delta_ts>2012-11-20 06:17:28 -0800</delta_ts>
            <desc>[Qt][WK2] Add experimental API to find text from page</desc>
            <filename>0001-Qt-WK2-Add-experimental-API-to-find-text-from-page.patch</filename>
            <type>text/plain</type>
            <size>31156</size>
            <attacher name="Heikki Paajanen">hepaajan</attacher>
            
              <data encoding="base64">RnJvbSAzNzIzYjFkZTkzOTYwMTNlNGNjZjhiMmRmNzE0NjNjODI0N2JhYTM3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgUGFhamFuZW4gPGhlaWtraS5wYWFqYW5lbkBwYWxt
LmNvbT4KRGF0ZTogV2VkLCAxMiBTZXAgMjAxMiAxNTozNDoxNSArMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF1bV0syXSBBZGQgZXhwZXJpbWVudGFsIEFQSSB0byBmaW5kIHRleHQgZnJvbSBwYWdl
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0ODEKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKU291cmNlL1dlYktpdDI6CgpFeHBvc2UgZmluZFN0cmluZyBh
bmQgUGFnZUZpbmRDbGllbnQgcHJvdmlkZWQgZnVuY3Rpb25hbGl0eSB0byBRdFF1aWNrCmFwcGxp
Y2F0aW9ucy4KCiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcu
Y3BwOgooUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUpOgooUVF1aWNrV2ViVmlld0V4
cGVyaW1lbnRhbDo6ZmluZFRleHQpOgooUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmRTdHJp
bmcpOgoqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6CihXZWJLaXQpOgoqIFVJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaDoKKFFRdWlja1dlYlZpZXdQcml2YXRl
KToKKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRUZXh0
LnFtbDogQWRkZWQuCiogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwOiBBZGRl
ZC4KKFdlYktpdCk6CihXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OlF0V2ViUGFnZUZpbmRD
bGllbnQpOgooV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKToKKFdl
YktpdDo6dG9RdFdlYlBhZ2VGaW5kQ2xpZW50KToKKFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVu
dDo6ZGlkRmFpbFRvRmluZFN0cmluZyk6CiogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGll
bnQuaDogQWRkZWQuCihXZWJLaXQpOgooUXRXZWJQYWdlRmluZENsaWVudCk6CgpUb29sczoKCkFk
ZCBmaW5kIGJhciB0aGF0IHNsaWRlcyBiZXR3ZWVuIG5hdmlnYXRpb24gYmFyIGFuZApXZWJWaWV3
IHRvIE1pbmlCcm93c2VyLgoKKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5xcmM6CiogTWlu
aUJyb3dzZXIvcXQvaWNvbnMvZmluZC5wbmc6IEFkZGVkLgoqIE1pbmlCcm93c2VyL3F0L3FtbC9C
cm93c2VyV2luZG93LnFtbDoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMzAgKysrKwogU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgIHwgICAzMSArKysrCiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oICB8ICAgMTYgKysKIC4uLi9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaCAgIHwgICAgMyArCiAuLi4vQVBJ
L3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRUZXh0LnFtbCB8ICAxNDUgKysrKysr
KysrKysrKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQu
Y3BwICAgfCAgIDYzICsrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VGaW5kQ2xpZW50LmggIHwgICA0OCArKysrKysKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKwogVG9vbHMvTWluaUJyb3dzZXIvcXQv
TWluaUJyb3dzZXIucXJjICAgICAgICAgICAgICAgfCAgICAxICsKIFRvb2xzL01pbmlCcm93c2Vy
L3F0L2ljb25zL2ZpbmQucG5nICAgICAgICAgICAgICAgIHwgIEJpbiAwIC0+IDkzMCBieXRlcwog
VG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sICAgICAgICAgfCAgMTc5
ICsrKysrKysrKysrKysrKysrKystCiAxMiBmaWxlcyBjaGFuZ2VkLCA1MzAgaW5zZXJ0aW9ucygr
KSwgMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRUZXh0LnFtbAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5k
Q2xpZW50LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJv
d3Nlci9xdC9pY29ucy9maW5kLnBuZwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwY2Q5ZjFlLi44OGI1ODIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTItMDktMTMgIEhlaWtraSBQYWFqYW5lbiAg
PGhlaWtraS5wYWFqYW5lbkBwYWxtLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gQWRkIGV4cGVy
aW1lbnRhbCBBUEkgdG8gZmluZCB0ZXh0IGZyb20gcGFnZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgZmluZFN0cmluZyBhbmQgUGFnZUZpbmRD
bGllbnQgcHJvdmlkZWQgZnVuY3Rpb25hbGl0eSB0byBRdFF1aWNrCisgICAgICAgIGFwcGxpY2F0
aW9ucy4KKworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0
aWFsaXplKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OmZpbmRUZXh0KToK
KyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRGaW5kU3RyaW5nKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmg6CisgICAgICAg
IChRUXVpY2tXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9maW5kVGV4dC5xbWw6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpRdFdlYlBhZ2VGaW5k
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVudDo6ZGlkRmluZFN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OnRvUXRXZWJQYWdlRmluZENsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZEZhaWxUb0ZpbmRTdHJpbmcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFF0V2ViUGFnZUZpbmRDbGllbnQpOgorCiAyMDEyLTA5LTEw
ICBBbmRyYXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF1b
V0syXSBRV2ViS2l0VGVzdCBzaG91bGQgcmV0cmlldmUgdGhlIHZpZXdwb3J0IHN0YXRlIGZyb20g
dGhlIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDhkNzAzNjcuLjBkZGUx
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaQpAQCAtNzc4LDYgKzc3OCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEhB
VkVfUVRRVUlDSz0xKSB7CiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oIFwK
ICAgICAgICAgVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmggXAogICAgICAgICBVSVBy
b2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmggXAorICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdl
RmluZENsaWVudC5oIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQu
aCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQb2xpY3lDbGllbnQuaCBcCiAgICAg
ICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VTR05vZGUuaCBcCkBAIC04MDgsNiArODA5LDcgQEAg
Y29udGFpbnMoREVGSU5FUywgSEFWRV9RVFFVSUNLPTEpIHsKICAgICAgICAgVUlQcm9jZXNzL3F0
L1F0RGlhbG9nUnVubmVyLmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFu
YWdlci5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcCBcCisgICAg
ICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcCBcCiAgICAgICAgIFVJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQb2xpY3lDbGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVNHTm9kZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlldy5jcHAKaW5kZXggNDkwYjliYS4uOTE0ZjJkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoYykgMjAxMiBIZXdsZXR0LVBhY2thcmQg
RGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMCw5ICsz
MSwxMSBAQAogI2luY2x1ZGUgIlF0V2ViRXJyb3IuaCIKICNpbmNsdWRlICJRdFdlYkljb25EYXRh
YmFzZUNsaWVudC5oIgogI2luY2x1ZGUgIlF0V2ViUGFnZUV2ZW50SGFuZGxlci5oIgorI2luY2x1
ZGUgIlF0V2ViUGFnZUZpbmRDbGllbnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VMb2FkQ2xpZW50
LmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQmFj
a0ZvcndhcmRMaXN0LmgiCisjaW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX1NFUlZFUikKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1
ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgpAQCAtNjUsNiArNjgsNyBAQAogI2luY2x1ZGUgPFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzA2LDYgKzMxMCw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld1By
aXZhdGU6OmluaXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVm
IHBhCiAgICAgUVF1aWNrV2ViUGFnZVByaXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBh
Z2VWaWV3LmRhdGEoKS0+ZDsKICAgICBwYWdlVmlld1ByaXZhdGUtPmluaXRpYWxpemUod2ViUGFn
ZVByb3h5LmdldCgpKTsKIAorICAgIHBhZ2VGaW5kQ2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VG
aW5kQ2xpZW50KHRvQVBJKHdlYlBhZ2VQcm94eS5nZXQoKSksIHFfcHRyKSk7CiAgICAgcGFnZUxv
YWRDbGllbnQucmVzZXQobmV3IFF0V2ViUGFnZUxvYWRDbGllbnQodG9BUEkod2ViUGFnZVByb3h5
LmdldCgpKSwgcV9wdHIpKTsKICAgICBwYWdlUG9saWN5Q2xpZW50LnJlc2V0KG5ldyBRdFdlYlBh
Z2VQb2xpY3lDbGllbnQodG9BUEkod2ViUGFnZVByb3h5LmdldCgpKSwgcV9wdHIpKTsKICAgICBw
YWdlVUlDbGllbnQucmVzZXQobmV3IFF0V2ViUGFnZVVJQ2xpZW50KHRvQVBJKHdlYlBhZ2VQcm94
eS5nZXQoKSksIHFfcHRyKSk7CkBAIC0xMzE4LDYgKzEzMjMsMjYgQEAgdm9pZCBRUXVpY2tXZWJW
aWV3RXhwZXJpbWVudGFsOjpldmFsdWF0ZUphdmFTY3JpcHQoY29uc3QgUVN0cmluZyYgc2NyaXB0
LCBjb25zdAogICAgIGRfcHRyLT53ZWJQYWdlUHJveHkuZ2V0KCktPnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZShzY3JpcHQsIFNjcmlwdFZhbHVlQ2FsbGJhY2s6OmNyZWF0ZShjbG9zdXJlLCBqYXZh
U2NyaXB0Q2FsbGJhY2spKTsKIH0KIAordm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpm
aW5kVGV4dChjb25zdCBRU3RyaW5nJiBzdHJpbmcsIEZpbmRGbGFncyBvcHRpb25zKQoreworICAg
IFFfRChRUXVpY2tXZWJWaWV3KTsKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkgeworICAgICAg
ICBkLT53ZWJQYWdlUHJveHktPmhpZGVGaW5kVUkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBXZWJLaXQ6OkZpbmRPcHRpb25zIHdrT3B0aW9ucyA9IFdlYktpdDo6RmluZE9wdGlvbnND
YXNlSW5zZW5zaXRpdmU7CisgICAgaWYgKG9wdGlvbnMgJiBGaW5kQ2FzZVNlbnNpdGl2ZWx5KQor
ICAgICAgICB3a09wdGlvbnMgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPih3a09w
dGlvbnMgJiB+V2ViS2l0OjpGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSk7CisgICAgaWYgKG9w
dGlvbnMgJiBGaW5kQmFja3dhcmQpCisgICAgICAgIHdrT3B0aW9ucyA9IHN0YXRpY19jYXN0PFdl
YktpdDo6RmluZE9wdGlvbnM+KHdrT3B0aW9ucyB8IEZpbmRPcHRpb25zQmFja3dhcmRzKTsKKyAg
ICBpZiAob3B0aW9ucyAmIEZpbmRXcmFwc0Fyb3VuZERvY3VtZW50KQorICAgICAgICB3a09wdGlv
bnMgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPih3a09wdGlvbnMgfCBGaW5kT3B0
aW9uc1dyYXBBcm91bmQpOworICAgIGlmIChvcHRpb25zICYgRmluZEhpZ2hsaWdodEFsbE9jY3Vy
cmVuY2VzKQorICAgICAgICB3a09wdGlvbnMgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRp
b25zPih3a09wdGlvbnMgfCBGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQpOworCisgICAgZC0+d2Vi
UGFnZVByb3h5LT5maW5kU3RyaW5nKHN0cmluZywgd2tPcHRpb25zLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkgLSAxKTsKK30KKwogUUxpc3Q8UVVybD4gUVF1aWNrV2ViVmll
d0V4cGVyaW1lbnRhbDo6dXNlclNjcmlwdHMoKSBjb25zdAogewogICAgIFFfRChjb25zdCBRUXVp
Y2tXZWJWaWV3KTsKQEAgLTIwNzAsNiArMjA5NSwxMiBAQCB2b2lkIFFRdWlja1dlYlZpZXc6OnNl
dEFsbG93QW55SFRUUFNDZXJ0aWZpY2F0ZUZvckxvY2FsSG9zdChib29sIGFsbG93KQogICAgIGQt
Pm1fYWxsb3dBbnlIVFRQU0NlcnRpZmljYXRlRm9yTG9jYWxIb3N0ID0gYWxsb3c7CiB9CiAKK3Zv
aWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmRTdHJpbmcodW5zaWduZWQgbWF0Y2hDb3Vu
dCkKK3sKKyAgICBRX1EoUVF1aWNrV2ViVmlldyk7CisgICAgZW1pdCBxLT5leHBlcmltZW50YWwo
KS0+dGV4dEZvdW5kKG1hdGNoQ291bnQpOworfQorCiAvKiEKICAgICBccW1sc2lnbmFsIFdlYlZp
ZXc6Om9uTG9hZGluZ0NoYW5nZWQobG9hZFJlcXVlc3QpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCmluZGV4IDY4ZTVmY2EuLjU3N2Vk
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
dmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2
aWV3X3AuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTIgSGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnksIEwuUC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtNTEsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBR
dFJlZkNvdW50ZWROZXR3b3JrUmVxdWVzdERhdGE7CiBjbGFzcyBQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50UXQ7CiBjbGFzcyBRdFdlYlBhZ2VMb2FkQ2xpZW50OworY2xhc3MgUXRXZWJQYWdl
RmluZENsaWVudDsKIGNsYXNzIFF0V2ViUGFnZVBvbGljeUNsaWVudDsKIGNsYXNzIFF0V2ViUGFn
ZVVJQ2xpZW50OwogfQpAQCAtMjE5LDYgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIFFXZWJLaXRUZXN0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRRdDsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdFdlYlBhZ2VMb2Fk
Q2xpZW50OworICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ7CiAg
ICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UXRXZWJQYWdlUG9saWN5Q2xpZW50OwogICAgIGZyaWVu
ZCBjbGFzcyBXZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBXVFI6
OlBsYXRmb3JtV2ViVmlldzsKQEAgLTI3NywxMiArMjgwLDIxIEBAIGNsYXNzIFFXRUJLSVRfRVhQ
T1JUIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWwgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9Q
Uk9QRVJUWShRTGlzdDxRVXJsPiB1c2VyU2NyaXB0cyBSRUFEIHVzZXJTY3JpcHRzIFdSSVRFIHNl
dFVzZXJTY3JpcHRzIE5PVElGWSB1c2VyU2NyaXB0c0NoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShR
VXJsIHJlbW90ZUluc3BlY3RvclVybCBSRUFEIHJlbW90ZUluc3BlY3RvclVybCBOT1RJRlkgcmVt
b3RlSW5zcGVjdG9yVXJsQ2hhbmdlZCBGSU5BTCkKICAgICBRX0VOVU1TKE5hdmlnYXRpb25SZXF1
ZXN0QWN0aW9uRXhwZXJpbWVudGFsKQorICAgIFFfRkxBR1MoRmluZEZsYWdzKQogCiBwdWJsaWM6
CiAgICAgZW51bSBOYXZpZ2F0aW9uUmVxdWVzdEFjdGlvbkV4cGVyaW1lbnRhbCB7CiAgICAgICAg
IERvd25sb2FkUmVxdWVzdCA9IFFRdWlja1dlYlZpZXc6Oklnbm9yZVJlcXVlc3QgLSAxCiAgICAg
fTsKIAorICAgIGVudW0gRmluZEZsYWcgeworICAgICAgICBGaW5kQ2FzZVNlbnNpdGl2ZWx5ID0g
MSA8PCAwLAorICAgICAgICBGaW5kQmFja3dhcmQgPSAxIDw8IDEsCisgICAgICAgIEZpbmRXcmFw
c0Fyb3VuZERvY3VtZW50ID0gMSA8PCAyLAorICAgICAgICBGaW5kSGlnaGxpZ2h0QWxsT2NjdXJy
ZW5jZXMgPSAxIDw8IDMKKyAgICB9OworICAgIFFfREVDTEFSRV9GTEFHUyhGaW5kRmxhZ3MsIEZp
bmRGbGFnKQorCiAgICAgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbChRUXVpY2tXZWJWaWV3KiB3
ZWJWaWV3KTsKICAgICB2aXJ0dWFsIH5RUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsKCk7CiAKQEAg
LTM1Miw2ICszNjQsNyBAQCBwdWJsaWMgUV9TTE9UUzoKICAgICB2b2lkIGdvRm9yd2FyZFRvKGlu
dCBpbmRleCk7CiAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBRU3RyaW5nJik7CiAgICAgdm9p
ZCBldmFsdWF0ZUphdmFTY3JpcHQoY29uc3QgUVN0cmluZyYgc2NyaXB0LCBjb25zdCBRSlNWYWx1
ZSYgdmFsdWUgPSBRSlNWYWx1ZSgpKTsKKyAgICB2b2lkIGZpbmRUZXh0KGNvbnN0IFFTdHJpbmcm
IHN0cmluZywgRmluZEZsYWdzIG9wdGlvbnMgPSAwKTsKIAogUV9TSUdOQUxTOgogICAgIHZvaWQg
YWxlcnREaWFsb2dDaGFuZ2VkKCk7CkBAIC0zNzYsNiArMzg5LDcgQEAgUV9TSUdOQUxTOgogICAg
IHZvaWQgdXNlclNjcmlwdHNDaGFuZ2VkKCk7CiAgICAgdm9pZCBwcmVmZXJyZWRNaW5pbXVtQ29u
dGVudHNXaWR0aENoYW5nZWQoKTsKICAgICB2b2lkIHJlbW90ZUluc3BlY3RvclVybENoYW5nZWQo
KTsKKyAgICB2b2lkIHRleHRGb3VuZCh1bnNpZ25lZCBtYXRjaENvdW50KTsKIAogcHJpdmF0ZToK
ICAgICBRUXVpY2tXZWJWaWV3KiBxX3B0cjsKQEAgLTM4OSw0ICs0MDMsNiBAQCBwcml2YXRlOgog
ICAgIFFfREVDTEFSRV9QVUJMSUMoUVF1aWNrV2ViVmlldykKIH07CiAKK1FfREVDTEFSRV9PUEVS
QVRPUlNfRk9SX0ZMQUdTKFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OkZpbmRGbGFncykKKwog
I2VuZGlmIC8vIHFxdWlja3dlYnZpZXdfcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKaW5kZXggZDFkM2Q5ZS4uZWM0Yjc0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3
X3BfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wX3AuaApAQCAtODIsNiArODIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRE
aWRGYWlsKGNvbnN0IFdlYktpdDo6UXRXZWJFcnJvciYgZXJyb3IpOwogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVNb3VzZUV2ZW50KFFNb3VzZUV2ZW50Kik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluZFN0cmluZyh1bnNpZ25lZCBtYXRjaENvdW50KTsKKwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVz
JiBhdHRyKSB7IH0KIAogICAgIGludCBsb2FkUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX2xv
YWRQcm9ncmVzczsgfQpAQCAtMTY0LDYgKzE2Niw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8
UVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKIAogICAgIFFTY29wZWRQb2ludGVyPFdlYktp
dDo6UXRXZWJQYWdlTG9hZENsaWVudD4gcGFnZUxvYWRDbGllbnQ7CisgICAgUVNjb3BlZFBvaW50
ZXI8V2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50PiBwYWdlRmluZENsaWVudDsKICAgICBRU2Nv
cGVkUG9pbnRlcjxXZWJLaXQ6OlF0V2ViUGFnZVBvbGljeUNsaWVudD4gcGFnZVBvbGljeUNsaWVu
dDsKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50PiBwYWdlVUlD
bGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcW1sdGVzdHMvV2ViVmlldy90c3RfZmluZFRleHQucW1sIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9maW5kVGV4dC5xbWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFlYTE1YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmll
dy90c3RfZmluZFRleHQucW1sCkBAIC0wLDAgKzEsMTQ1IEBACitpbXBvcnQgUXRRdWljayAyLjAK
K2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQgMy4wCitpbXBvcnQgUXRXZWJLaXQu
ZXhwZXJpbWVudGFsIDEuMAoraW1wb3J0ICIuLi9jb21tb24iCisKK1Rlc3RXZWJWaWV3IHsKKyAg
ICBpZDogd2ViVmlldworICAgIHdpZHRoOiA0MDAKKyAgICBoZWlnaHQ6IDMwMAorCisgICAgcHJv
cGVydHkgaW50IG1hdGNoQ291bnQ6IC0xCisgICAgcHJvcGVydHkgYm9vbCBmaW5kRmFpbGVkOiBm
YWxzZQorICAgIGZ1bmN0aW9uIGNsZWFyKCkgeworICAgICAgICB0ZXh0Rm91bmRTcHkuY2xlYXIo
KQorICAgICAgICBmaW5kRmFpbGVkID0gZmFsc2UKKyAgICAgICAgbWF0Y2hDb3VudCA9IC0xCisg
ICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IHRleHRGb3VuZFNweQorICAgICAg
ICB0YXJnZXQ6IHdlYlZpZXcuZXhwZXJpbWVudGFsCisgICAgICAgIHNpZ25hbE5hbWU6ICJ0ZXh0
Rm91bmQiCisgICAgfQorCisgICAgZXhwZXJpbWVudGFsLm9uVGV4dEZvdW5kOiB7CisgICAgICAg
IHdlYlZpZXcubWF0Y2hDb3VudCA9IG1hdGNoQ291bnQKKyAgICAgICAgZmluZEZhaWxlZCA9IG1h
dGNoQ291bnQgPT0gMAorICAgIH0KKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJXZWJW
aWV3RmluZFRleHQiCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5kVGV4dCgpIHsKKyAgICAg
ICAgICAgIHZhciBmaW5kRmxhZ3MgPSBXZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRIaWdobGlnaHRB
bGxPY2N1cnJlbmNlcyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJWaWV3RXhw
ZXJpbWVudGFsLkZpbmRDYXNlU2Vuc2l0aXZlbHkKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIo
KQorICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rl
c3QxLmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVk
ZWQoKSkKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJIZWxsbyIs
IGZpbmRGbGFncykKKyAgICAgICAgICAgIHRleHRGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAg
IGNvbXBhcmUodGV4dEZvdW5kU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShtYXRj
aENvdW50LCAxKQorICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIHRlc3RfZmluZFRleHRDYXNl
SW5zZW5zaXRpdmUoKSB7CisgICAgICAgICAgICB2YXIgZmluZEZsYWdzID0gMAorCisgICAgICAg
ICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAgICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2
ZWRVcmwoIi4uL2NvbW1vbi90ZXN0MS5odG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3
LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkpCisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRh
bC5maW5kVGV4dCgiaGVMTG8iLCBmaW5kRmxhZ3MpCisgICAgICAgICAgICB0ZXh0Rm91bmRTcHku
d2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHRleHRGb3VuZFNweS5jb3VudCwgMSkKKyAgICAg
ICAgICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMSkKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlv
biB0ZXN0X2ZpbmRUZXh0TWFueU1hdGNoZXMoKSB7CisgICAgICAgICAgICB2YXIgZmluZEZsYWdz
ID0gV2ViVmlld0V4cGVyaW1lbnRhbC5GaW5kSGlnaGxpZ2h0QWxsT2NjdXJyZW5jZXMKKyAgICAg
ICAgICAgIHdlYlZpZXcuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNv
bHZlZFVybCgiLi4vY29tbW9uL3Rlc3Q0Lmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZp
ZXcud2FpdEZvckxvYWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVu
dGFsLmZpbmRUZXh0KCJibGEiLCBmaW5kRmxhZ3MpCisgICAgICAgICAgICB0ZXh0Rm91bmRTcHku
d2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHRleHRGb3VuZFNweS5jb3VudCwgMSkKKyAgICAg
ICAgICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMTAwKQorICAgICAgICB9CisgICAgICAgIGZ1bmN0
aW9uIHRlc3RfZmluZFRleHRCYWNrd2FyZCgpIHsKKyAgICAgICAgICAgIHZhciBmaW5kRmxhZ3Mg
PSBXZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRIaWdobGlnaHRBbGxPY2N1cnJlbmNlcworICAgICAg
ICAgICAgd2ViVmlldy5jbGVhcigpCisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29s
dmVkVXJsKCIuLi9jb21tb24vdGVzdDQuaHRtbCIpCisgICAgICAgICAgICB2ZXJpZnkod2ViVmll
dy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50
YWwuZmluZFRleHQoImJsYTAiLCBmaW5kRmxhZ3MpCisgICAgICAgICAgICB0ZXh0Rm91bmRTcHku
d2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHRleHRGb3VuZFNweS5jb3VudCwgMSkKKyAgICAg
ICAgICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMTApCisgICAgICAgICAgICBmb3IodmFyIGk9MDsg
aSA8IDk7IGkrKykgeworICAgICAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRU
ZXh0KCJibGEwIiwgZmluZEZsYWdzKQorICAgICAgICAgICAgICAgIHRleHRGb3VuZFNweS53YWl0
KCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbXBhcmUodGV4dEZvdW5kU3B5LmNvdW50
LCAxMCkKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEwIiwg
ZmluZEZsYWdzKQorICAgICAgICAgICAgdGV4dEZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAg
Y29tcGFyZSh0ZXh0Rm91bmRTcHkuY291bnQsIDExKQorICAgICAgICAgICAgY29tcGFyZShmaW5k
RmFpbGVkLCB0cnVlKQorCisgICAgICAgICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAgICAgICAgICAg
IGZpbmRGbGFncyB8PSBXZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRCYWNrd2FyZAorICAgICAgICAg
ICAgd2ViVmlldy5leHBlcmltZW50YWwuZmluZFRleHQoImJsYTAiLCBmaW5kRmxhZ3MpCisgICAg
ICAgICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHRleHRGb3Vu
ZFNweS5jb3VudCwgMSkKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiB0ZXN0X2ZpbmRUZXh0
RmFpbE5vV3JhcCgpIHsKKyAgICAgICAgICAgIHZhciBmaW5kRmxhZ3MgPSBXZWJWaWV3RXhwZXJp
bWVudGFsLkZpbmRIaWdobGlnaHRBbGxPY2N1cnJlbmNlcworICAgICAgICAgICAgd2ViVmlldy5j
bGVhcigpCisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21t
b24vdGVzdDQuaHRtbCIpCisgICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1
Y2NlZWRlZCgpKQorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZmluZFRleHQoImJs
YTAiLCBmaW5kRmxhZ3MpCisgICAgICAgICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAg
ICAgICBjb21wYXJlKHRleHRGb3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUo
bWF0Y2hDb3VudCwgMTApCisgICAgICAgICAgICBmb3IodmFyIGk9MDsgaSA8IDk7IGkrKykgewor
ICAgICAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEwIiwgZmlu
ZEZsYWdzKQorICAgICAgICAgICAgICAgIHRleHRGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGNvbXBhcmUodGV4dEZvdW5kU3B5LmNvdW50LCAxMCkKKyAgICAgICAg
ICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEwIiwgZmluZEZsYWdzKQorICAg
ICAgICAgICAgdGV4dEZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh0ZXh0Rm91
bmRTcHkuY291bnQsIDExKQorICAgICAgICAgICAgY29tcGFyZShmaW5kRmFpbGVkLCB0cnVlKQor
ICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIHRlc3RfZmluZFRleHRXcmFwKCkgeworICAgICAg
ICAgICAgdmFyIGZpbmRGbGFncyA9IFdlYlZpZXdFeHBlcmltZW50YWwuRmluZEhpZ2hsaWdodEFs
bE9jY3VycmVuY2VzCisgICAgICAgICAgICBmaW5kRmxhZ3MgfD0gV2ViVmlld0V4cGVyaW1lbnRh
bC5GaW5kV3JhcHNBcm91bmREb2N1bWVudAorICAgICAgICAgICAgd2ViVmlldy5jbGVhcigpCisg
ICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDQu
aHRtbCIpCisgICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgp
KQorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZmluZFRleHQoImJsYTAiLCBmaW5k
RmxhZ3MpCisgICAgICAgICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21w
YXJlKHRleHRGb3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3Vu
dCwgMTApCisgICAgICAgICAgICBmb3IodmFyIGk9MDsgaSA8IDE5OyBpKyspIHsKKyAgICAgICAg
ICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5maW5kVGV4dCgiYmxhMCIsIGZpbmRGbGFncykK
KyAgICAgICAgICAgICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjb21wYXJlKHRleHRGb3VuZFNweS5jb3VudCwgMjApCisgICAgICAgIH0KKyAgICAg
ICAgZnVuY3Rpb24gdGVzdF9maW5kVGV4dEZhaWxDYXNlU2Vuc2l0aXZlKCkgeworICAgICAgICAg
ICAgdmFyIGZpbmRGbGFncyA9IFdlYlZpZXdFeHBlcmltZW50YWwuRmluZENhc2VTZW5zaXRpdmVs
eQorICAgICAgICAgICAgd2ViVmlldy5jbGVhcigpCisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9
IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDEuaHRtbCIpCisgICAgICAgICAgICB2ZXJp
Znkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAgICAgICAgd2ViVmlldy5l
eHBlcmltZW50YWwuZmluZFRleHQoImhlTExvIiwgZmluZEZsYWdzKQorICAgICAgICAgICAgdGV4
dEZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh0ZXh0Rm91bmRTcHkuY291bnQs
IDEpCisgICAgICAgICAgICBjb21wYXJlKGZpbmRGYWlsZWQsIHRydWUpCisgICAgICAgIH0KKyAg
ICAgICAgZnVuY3Rpb24gdGVzdF9maW5kVGV4dE5vdEZvdW5kKCkgeworICAgICAgICAgICAgd2Vi
Vmlldy5jbGVhcigpCisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIu
Li9jb21tb24vdGVzdDEuaHRtbCIpCisgICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9y
TG9hZFN1Y2NlZWRlZCgpKQorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZmluZFRl
eHQoInN0cmluZy10aGF0LWlzLW5vdC10aHJlcmUiKQorICAgICAgICAgICAgdGV4dEZvdW5kU3B5
LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh0ZXh0Rm91bmRTcHkuY291bnQsIDEpCisgICAg
ICAgICAgICBjb21wYXJlKGZpbmRGYWlsZWQsIHRydWUpCisgICAgICAgIH0KKyAgICB9Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVlMWU2OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50
LmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyIEhld2xldHQt
UGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55LCBMLlAuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUXRXZWJQYWdlRmluZENsaWVudC5oIgorCisjaW5jbHVkZSAicXF1aWNrd2Vi
dmlld19wX3AuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitRdFdlYlBhZ2VGaW5kQ2xpZW50OjpRdFdlYlBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBRUXVpY2tXZWJWaWV3KiB3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZp
ZXcpCit7CisgICAgV0tQYWdlRmluZENsaWVudCBmaW5kQ2xpZW50OworICAgIG1lbXNldCgmZmlu
ZENsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZUZpbmRDbGllbnQpKTsKKyAgICBmaW5kQ2xpZW50LnZl
cnNpb24gPSBrV0tQYWdlRmluZENsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIGZpbmRDbGllbnQu
Y2xpZW50SW5mbyA9IHRoaXM7CisgICAgZmluZENsaWVudC5kaWRGaW5kU3RyaW5nID0gZGlkRmlu
ZFN0cmluZzsKKyAgICBmaW5kQ2xpZW50LmRpZEZhaWxUb0ZpbmRTdHJpbmcgPSBkaWRGYWlsVG9G
aW5kU3RyaW5nOworICAgIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KHBhZ2VSZWYsICZmaW5kQ2xp
ZW50KTsKK30KKwordm9pZCBRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKHVuc2ln
bmVkIG1hdGNoQ291bnQpCit7CisgICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+ZGlkRmluZFN0cmlu
ZyhtYXRjaENvdW50KTsKK30KKworc3RhdGljIFF0V2ViUGFnZUZpbmRDbGllbnQqIHRvUXRXZWJQ
YWdlRmluZENsaWVudChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEFTU0VSVChjbGll
bnRJbmZvKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxRdFdlYlBhZ2VGaW5kQ2xpZW50
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworfQorCit2b2lkIFF0V2ViUGFnZUZp
bmRDbGllbnQ6OmRpZEZpbmRTdHJpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN0cmlu
ZywgdW5zaWduZWQgbWF0Y2hDb3VudCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB0
b1F0V2ViUGFnZUZpbmRDbGllbnQoY2xpZW50SW5mbyktPmRpZEZpbmRTdHJpbmcobWF0Y2hDb3Vu
dCk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlRmluZENsaWVudDo6ZGlkRmFpbFRvRmluZFN0cmluZyhX
S1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgc3RyaW5nLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIHRvUXRXZWJQYWdlRmluZENsaWVudChjbGllbnRJbmZvKS0+ZGlkRmluZFN0cmlu
ZygwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Via2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41NWMwMjcyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuaApAQCAtMCwwICsxLDQ4IEBACisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDEyIEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55
LCBMLlAuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICoKKyAqLworCisjaWZuZGVmIFF0V2ViUGFnZUZpbmRDbGllbnRfaAorI2RlZmluZSBRdFdlYlBh
Z2VGaW5kQ2xpZW50X2gKKworI2luY2x1ZGUgPFdLUGFnZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCitjbGFzcyBRUXVpY2tXZWJWaWV3OworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUXRXZWJQYWdlRmluZENsaWVudCB7CitwdWJsaWM6CisgICAgUXRXZWJQYWdl
RmluZENsaWVudChXS1BhZ2VSZWYsIFFRdWlja1dlYlZpZXcqKTsKKworcHJpdmF0ZToKKworICAg
IHZvaWQgZGlkRmluZFN0cmluZyh1bnNpZ25lZCBtYXRjaENvdW50KTsKKworICAgIC8vIFdLUGFn
ZUZpbmRDbGllbnQgY2FsbGJhY2tzLgorICAgIHN0YXRpYyB2b2lkIGRpZEZpbmRTdHJpbmcoV0tQ
YWdlUmVmLCBXS1N0cmluZ1JlZiwgdW5zaWduZWQgbWF0Y2hDb3VudCwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkRmFpbFRvRmluZFN0cmluZyhXS1BhZ2VSZWYs
IFdLU3RyaW5nUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworICAgIFFRdWlja1dlYlZp
ZXcqIG1fd2ViVmlldzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYmtpdAorCisjZW5kaWYgLy8g
UXRXZWJQYWdlRmluZENsaWVudF9oCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZmE1ZDVhNS4uNzA0ZWZhMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA5LTEz
ICBIZWlra2kgUGFhamFuZW4gIDxoZWlra2kucGFhamFuZW5AcGFsbS5jb20+CisKKyAgICAgICAg
W1F0XVtXSzJdIEFkZCBzaW1wbGUgVUkgdG8gZmluZCB0ZXh0IGZyb20gcGFnZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaW5kIGJhciB0aGF0IHNsaWRl
cyBiZXR3ZWVuIG5hdmlnYXRpb24gYmFyIGFuZCBXZWJWaWV3LgorCisgICAgICAgICogTWluaUJy
b3dzZXIvcXQvTWluaUJyb3dzZXIucXJjOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L2ljb25z
L2ZpbmQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3Nlcldp
bmRvdy5xbWw6CisKIDIwMTItMDktMTAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5A
bm9raWEuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCBvZiBXVFIgd2l0aCBRdCBvbiBXaW5kb3dz
CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5xcmMgYi9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5xcmMKaW5kZXggZTIxZWVmMy4uM2ZhNjIwOCAx
MDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucXJjCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnFyYwpAQCAtNCw2ICs0LDcgQEAKICAgICAg
ICAgPGZpbGU+aWNvbnMvY2hlY2tib3hfdW5jaGVja2VkLnBuZzwvZmlsZT4KICAgICAgICAgPGZp
bGU+aWNvbnMvY29udGVudHNfd2lkdGgucG5nPC9maWxlPgogICAgICAgICA8ZmlsZT5pY29ucy9m
YXZpY29uLnBuZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNvbnMvZmluZC5wbmc8L2ZpbGU+CiAg
ICAgICAgIDxmaWxlPmljb25zL2ZvbGRlci5wbmc8L2ZpbGU+CiAgICAgICAgIDxmaWxlPmljb25z
L2luZm8ucG5nPC9maWxlPgogICAgICAgICA8ZmlsZT5pY29ucy9uZXh0LnBuZzwvZmlsZT4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL2ZpbmQucG5nIGIvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvaWNvbnMvZmluZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc2YWZhMzk4YjkyZDBkN2Vj
MjdhNjQ0OTJhZDU2ZDM3OGFhY2Y3NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgOTMwCnpjbVY7
VDE2fS15UCk8aDszS3xMazAwMGUxTkpMVHEwMDAmTTAwMHlTMU9OYTRCWHRHNDAwMDh+WCt1TCRY
PTdzbQp6MEM/SnNsZ249I1JUUmQ1Vn4/a202MHlPdyNqNE8xaSM5P0BHPH5RfGdsS0VXdTlZP3pZ
bmxgJUxhSFg/WWtTRGUKemN6UzE/S0dYJjNoOC09NEo+bnImYH5lbH1mP1pjQW04eWJ9RCVNbThS
SD4qTlJMc0pVblUrOH50OD41ZW8kcX0yCnpUd1RiMD5WfjFwMi1wbF8/Tm0jbXZBUU85e1h+WFdu
VmBVZz5xVEwpVVM5JW0hJSo+JGM9N2BWemBkRUI+O0QtTwp6TyZOSiQ+O301YyRsQzx0R0d4enRw
Xm19NDMoUUBMIXgoYkFmeEs/NHUwZGA7a1oldWk4XzJIQEAtbVJ1JWd6R2kKejhvKjBsJDhBRWMx
NUJAe0BPQ082Y21OPEBtNFZkMEMhQV9ZKU9FTXpFMTl6VWc3V3syUDFQSUNkbHtHdjxCfGckCnow
UkN2eyg8e0lmNz1eMnk8IyZOU1YzaG9MYWUwVjBnN3ctdjFIU1JXTSkjflU8YjIoZjxxOXdqI19l
ZTlUeEc8JAp6K0Y3VSNJbHNLYG9+WilgRiNaYlRgY05tY0ZIcDZtZnF2JE1qNEowd2Mqe1MlSUsq
M19zeEotbkdhdT1tdmpWJmgKem5RdldQc1NmIU1XVXc7cSYxUlp6YDdBSUMqKHZIc0clYjctMCo1
TGsxWFV5ZjU3R0V8Ymc4NTFqIytJVWo7an54CnpBclV5N3IqeU4+bkBVdSE+a0djT2VkRXpILVFD
b2JIaik1Mm8+RVBuQlIwbSY4TngqMiZiOGI3NXs+KWp0QHJMdAp6LW5tOCpnYCRtUTZOeWlOQnVY
aXlKaFh6RmcrIyZJelZTJFlTYkl8QWBnRFRZS2lhPzlfd0NRXnVrMnN7V2s+RGoKemMyckV3bWpw
WXltbmM/SVZ+MERsZD14JF8xbyZKK3FLUi0oMVlBTCtjUU5XVlVvI0p4aXtfajtrMSRWfnJfMioo
CnoqXzw9cUc/enZVdDc0VXtCRW92Wm56cyZGWFJLbSE2WUhRPXcmdHlhUl5eISZAS1NlOHpvMU85
V05JVGJ0UnNvbwp6Szt5SDhMPWhuJm1YfjlJZz5IQzdgfFZDRjQlX3h8UTRCKlIjYlYmaVA3N0Js
cTVYQ3pqKWF6eClMWEpTT0pqOVMKejQ4RyVJMkxtd25ZJHNVIUhvV3lhV2JZPX1TYFdVN1ZESGZj
bjx+STdwVFZ0VFVRY2ZnfEY+YSQ0Xml2TDtsWExMCnoxaTdGNHtsXkRqKkMrN3c8OWAzb0ZaJXRi
VXFiYyllNWR7ZnNVciYzeClaK0cwMDAwMlZvT0l2MFJNLU4lKWJCdAp6MDEwcU5TI3RtWTNsamhV
M2xqa1ZudyVIXzAwME1jTmxpcnUrekFaezQqe3RoK2x+TUwwNHFzRUt+eU51Vl8/N28KeipvN0kk
MmFHN1p8TT1Bfmt6ejZuNSV3e1ZXJTN8VkpRe1JeUCUtVFEwR3QyPEtMdWEtI3tkOFQwNypxb002
TjwkCkVnMldATSpaPT9rCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwgYi9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKaW5kZXggYzczMzA4ZS4uYjU2YTQwNSAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbApAQCAtMSw2ICsxLDcgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVn
ZWQKKyAqIENvcHlyaWdodCAoYykgMjAxMiBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29t
cGFueSwgTC5QLgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNTYsNiArNTcs
MTYxIEBAIFJlY3RhbmdsZSB7CiAgICAgfQogCiAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgaWQ6
IGZpbmRCYXIKKyAgICAgICAgejogd2ViVmlldy56ICsgMQorICAgICAgICB5OiBuYXZpZ2F0aW9u
QmFyLnkKKyAgICAgICAgYW5jaG9ycyB7CisgICAgICAgICAgICBsZWZ0OiBwYXJlbnQubGVmdAor
ICAgICAgICAgICAgcmlnaHQ6IHBhcmVudC5yaWdodAorICAgICAgICB9CisgICAgICAgIGhlaWdo
dDogbmF2aWdhdGlvbkJhci5oZWlnaHQKKyAgICAgICAgY29sb3I6ICIjZWZlZmVmIgorICAgICAg
ICB2aXNpYmxlOiB5ID4gbmF2aWdhdGlvbkJhci55CisKKyAgICAgICAgQmVoYXZpb3Igb24geSB7
TnVtYmVyQW5pbWF0aW9uIHtkdXJhdGlvbjogNTAwfX0KKworICAgICAgICBmdW5jdGlvbiB0b2dn
bGUoKSB7CisgICAgICAgICAgICBpZiAoeSA9PSBuYXZpZ2F0aW9uQmFyLnkpIHsKKyAgICAgICAg
ICAgICAgICB5ICs9IGhlaWdodAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICB5ID0gbmF2aWdhdGlvbkJhci55CisgICAgICAgICAgICAgICAgZmluZCgiIiwwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGZpbmQoc3RyLCBvcHRpb25z
KSB7CisgICAgICAgICAgICB2YXIgZmluZE9wdGlvbnMgPSBvcHRpb25zIHwgV2ViVmlld0V4cGVy
aW1lbnRhbC5GaW5kSGlnaGxpZ2h0QWxsT2NjdXJyZW5jZXMKKyAgICAgICAgICAgIGZpbmRPcHRp
b25zIHw9IFdlYlZpZXdFeHBlcmltZW50YWwuRmluZFdyYXBzQXJvdW5kRG9jdW1lbnQKKyAgICAg
ICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KHN0ciwgZmluZE9wdGlvbnMpCisg
ICAgICAgIH0KKworICAgICAgICBDb25uZWN0aW9ucyB7CisgICAgICAgICAgICB0YXJnZXQ6IHdl
YlZpZXcuZXhwZXJpbWVudGFsCisgICAgICAgICAgICBvblRleHRGb3VuZDogeworICAgICAgICAg
ICAgICAgIGZhaWxlZE92ZXJsYXkudmlzaWJsZSA9IG1hdGNoQ291bnQgPT0gMAorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIE1vdXNlQXJlYSB7CisgICAgICAgICAgICBhbmNob3Jz
LmZpbGw6IHBhcmVudAorICAgICAgICB9CisgICAgICAgIEl0ZW0geworICAgICAgICAgICAgYW5j
aG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAg
ICAgaWQ6IGlucHV0QXJlYQorICAgICAgICAgICAgICAgIGhlaWdodDogMjYKKyAgICAgICAgICAg
ICAgICBhbmNob3JzIHsKKyAgICAgICAgICAgICAgICAgICAgbGVmdDogcGFyZW50LmxlZnQKKyAg
ICAgICAgICAgICAgICAgICAgcmlnaHQ6IHByZXZCdXR0b24ubGVmdAorICAgICAgICAgICAgICAg
ICAgICBtYXJnaW5zOiA2CisgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsQ2VudGVyOiBwYXJl
bnQudmVydGljYWxDZW50ZXIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29s
b3I6ICJ3aGl0ZSIKKyAgICAgICAgICAgICAgICBib3JkZXIud2lkdGg6IDEKKyAgICAgICAgICAg
ICAgICBib3JkZXIuY29sb3I6ICIjYmZiZmJmIgorICAgICAgICAgICAgICAgIHJhZGl1czogMwor
ICAgICAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgICAgIGlkOiBmYWls
ZWRPdmVybGF5CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAg
ICAgICAgICAgICAgICAgIGNvbG9yOiAicmVkIgorICAgICAgICAgICAgICAgICAgICBvcGFjaXR5
OiAwLjUKKyAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiA2CisgICAgICAgICAgICAgICAgICAg
IHZpc2libGU6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFRleHRJ
bnB1dCB7CisgICAgICAgICAgICAgICAgICAgIGlkOiBmaW5kVGV4dElucHV0CisgICAgICAgICAg
ICAgICAgICAgIGNsaXA6IHRydWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0QnlNb3VzZTog
dHJ1ZQorICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiBUZXh0SW5wdXQu
QWxpZ25MZWZ0CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAg
ICAgICAgICAgICAgICAgIGFuY2hvcnMubWFyZ2luczogMworICAgICAgICAgICAgICAgICAgICBm
b250IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50U2l6ZTogMTEKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZhbWlseTogIlNhbnMiCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgdGV4dDogIiIKKyAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHk6ICFm
aW5kQmFyLnZpc2libGUKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZG9GaW5kKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaW5kQmFyLnZpc2libGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluZFRleHRJbnB1dC50ZXh0ID09ICIiKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkT3ZlcmxheS52aXNpYmxlID0gZmFsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRC
YXIuZmluZChmaW5kVGV4dElucHV0LnRleHQpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgb25UZXh0Q2hhbmdlZDogeworICAgICAgICAgICAgICAgICAgICAgICAg
ZG9GaW5kKCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBLZXlz
Lm9uUmV0dXJuUHJlc3NlZDp7CisgICAgICAgICAgICAgICAgICAgICAgICBkb0ZpbmQoKQorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICBpZDogcHJldkJ1dHRvbgorICAg
ICAgICAgICAgICAgIGhlaWdodDogaW5wdXRBcmVhLmhlaWdodAorICAgICAgICAgICAgICAgIHdp
ZHRoOiBoZWlnaHQKKyAgICAgICAgICAgICAgICBhbmNob3JzLnJpZ2h0OiBuZXh0QnV0dG9uLmxl
ZnQKKyAgICAgICAgICAgICAgICBhbmNob3JzLnZlcnRpY2FsQ2VudGVyOiBwYXJlbnQudmVydGlj
YWxDZW50ZXIKKyAgICAgICAgICAgICAgICBjb2xvcjogIiNlZmVmZWYiCisgICAgICAgICAgICAg
ICAgcmFkaXVzOiA2CisKKyAgICAgICAgICAgICAgICBJbWFnZSB7CisgICAgICAgICAgICAgICAg
ICAgIGFuY2hvcnMuY2VudGVySW46IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBzb3VyY2U6
ICIuLi9pY29ucy9wcmV2aW91cy5wbmciCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJl
bnQKKyAgICAgICAgICAgICAgICAgICAgY29sb3I6IHBhcmVudC5jb2xvcgorICAgICAgICAgICAg
ICAgICAgICByYWRpdXM6IHBhcmVudC5yYWRpdXMKKyAgICAgICAgICAgICAgICAgICAgb3BhY2l0
eTogMC44CisgICAgICAgICAgICAgICAgICAgIHZpc2libGU6ICFwYXJlbnQuZW5hYmxlZAorICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIE1vdXNlQXJlYSB7CisgICAgICAgICAg
ICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIG9uUHJl
c3NlZDogeyBpZiAocGFyZW50LmVuYWJsZWQpIHBhcmVudC5jb2xvciA9ICIjY2ZjZmNmIiB9Cisg
ICAgICAgICAgICAgICAgICAgIG9uUmVsZWFzZWQ6IHsgcGFyZW50LmNvbG9yID0gIiNlZmVmZWYi
IH0KKyAgICAgICAgICAgICAgICAgICAgb25DbGlja2VkOiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBmaW5kQmFyLmZpbmQoZmluZFRleHRJbnB1dC50ZXh0LCBXZWJWaWV3RXhwZXJpbWVudGFs
LkZpbmRCYWNrd2FyZCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAg
aWQ6IG5leHRCdXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6IGlucHV0QXJlYS5oZWlnaHQK
KyAgICAgICAgICAgICAgICB3aWR0aDogaGVpZ2h0CisgICAgICAgICAgICAgICAgYW5jaG9ycy5y
aWdodDogcGFyZW50LnJpZ2h0CisgICAgICAgICAgICAgICAgYW5jaG9ycy52ZXJ0aWNhbENlbnRl
cjogcGFyZW50LnZlcnRpY2FsQ2VudGVyCisgICAgICAgICAgICAgICAgY29sb3I6ICIjZWZlZmVm
IgorICAgICAgICAgICAgICAgIHJhZGl1czogNgorCisgICAgICAgICAgICAgICAgSW1hZ2Ugewor
ICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQKKyAgICAgICAgICAg
ICAgICAgICAgc291cmNlOiAiLi4vaWNvbnMvbmV4dC5wbmciCisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9y
cy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgY29sb3I6IHBhcmVudC5jb2xvcgor
ICAgICAgICAgICAgICAgICAgICByYWRpdXM6IHBhcmVudC5yYWRpdXMKKyAgICAgICAgICAgICAg
ICAgICAgb3BhY2l0eTogMC44CisgICAgICAgICAgICAgICAgICAgIHZpc2libGU6ICFwYXJlbnQu
ZW5hYmxlZAorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIE1vdXNlQXJlYSB7
CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAg
ICAgICAgIG9uUHJlc3NlZDogeyBpZiAocGFyZW50LmVuYWJsZWQpIHBhcmVudC5jb2xvciA9ICIj
Y2ZjZmNmIiB9CisgICAgICAgICAgICAgICAgICAgIG9uUmVsZWFzZWQ6IHsgcGFyZW50LmNvbG9y
ID0gIiNlZmVmZWYiIH0KKyAgICAgICAgICAgICAgICAgICAgb25DbGlja2VkOiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmaW5kQmFyLmZpbmQoZmluZFRleHRJbnB1dC50ZXh0LCAwKQorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIFJlY3RhbmdsZSB7CiAgICAgICAgIGlkOiBuYXZpZ2F0aW9uQmFy
CiAgICAgICAgIGNvbG9yOiAiI2VmZWZlZiIKICAgICAgICAgaGVpZ2h0OiAzOApAQCAtMjEzLDYg
KzM2OSwyNyBAQCBSZWN0YW5nbGUgewogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBSZWN0
YW5nbGUgeworICAgICAgICAgICAgICAgIGlkOiBmaW5kQnV0dG9uCisgICAgICAgICAgICAgICAg
aGVpZ2h0OiBwYXJlbnQuaGVpZ2h0CisgICAgICAgICAgICAgICAgd2lkdGg6IGhlaWdodAorICAg
ICAgICAgICAgICAgIGNvbG9yOiAiI2VmZWZlZiIKKyAgICAgICAgICAgICAgICByYWRpdXM6IDYK
KworICAgICAgICAgICAgICAgIEltYWdlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5j
ZW50ZXJJbjogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNgorICAgICAg
ICAgICAgICAgICAgICBzb3VyY2U6ICIuLi9pY29ucy9maW5kLnBuZyIKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBNb3VzZUFyZWEgeworICAgICAgICAgICAgICAgICAgICBh
bmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBvbkNsaWNrZWQ6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbmRCYXIudG9nZ2xlKCkKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUmVj
dGFuZ2xlIHsKICAgICAgICAgICAgICAgICBpZDogdG91Y2hFdmVudHNCdXR0b24KICAgICAgICAg
ICAgICAgICBoZWlnaHQ6IHBhcmVudC5oZWlnaHQKICAgICAgICAgICAgICAgICB3aWR0aDogaGVp
Z2h0CkBAIC0zMzUsNyArNTEyLDcgQEAgUmVjdGFuZ2xlIHsKICAgICAgICAgY2xpcDogZmFsc2UK
IAogICAgICAgICBhbmNob3JzIHsKLSAgICAgICAgICAgIHRvcDogbmF2aWdhdGlvbkJhci5ib3R0
b20KKyAgICAgICAgICAgIHRvcDogZmluZEJhci5ib3R0b20KICAgICAgICAgICAgIGxlZnQ6IHBh
cmVudC5sZWZ0CiAgICAgICAgICAgICByaWdodDogcGFyZW50LnJpZ2h0CiAgICAgICAgICAgICBi
b3R0b206IHBhcmVudC5ib3R0b20KLS0gCjEuNy41LjQKCg==
</data>
<flag name="review"
          id="176082"
          type_id="1"
          status="-"
          setter="jturcotte"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175200</attachid>
            <date>2012-11-20 06:17:28 -0800</date>
            <delta_ts>2012-12-12 09:43:10 -0800</delta_ts>
            <desc>[Qt][WK2] Add experimental API to find text from page</desc>
            <filename>0001-Qt-WK2-Add-experimental-API-to-find-text-from-page.patch</filename>
            <type>text/plain</type>
            <size>33641</size>
            <attacher name="Heikki Paajanen">hepaajan</attacher>
            
              <data encoding="base64">RnJvbSBlNGExNTJjZDVhOTY0YmY2MGY0ZTVhMTNlYmEzYzYwZThhMWZmNGVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgUGFhamFuZW4gPGhlaWtraS5wYWFqYW5lbkBwYWxt
LmNvbT4KRGF0ZTogV2VkLCAxMiBTZXAgMjAxMiAxNTozNDoxNSArMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF1bV0syXSBBZGQgZXhwZXJpbWVudGFsIEFQSSB0byBmaW5kIHRleHQgZnJvbSBwYWdl
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0ODEKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKU291cmNlL1dlYktpdDI6CgpFeHBvc2UgZmluZFN0cmluZyBh
bmQgUGFnZUZpbmRDbGllbnQgcHJvdmlkZWQgZnVuY3Rpb25hbGl0eSB0byBRdFF1aWNrCmFwcGxp
Y2F0aW9ucy4KCiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcu
Y3BwOgooUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUpOgooUVF1aWNrV2ViVmlld0V4
cGVyaW1lbnRhbDo6ZmluZFRleHQpOgooUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmRTdHJp
bmcpOgoqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6CihXZWJLaXQpOgoqIFVJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaDoKKFFRdWlja1dlYlZpZXdQcml2YXRl
KToKKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRUZXh0
LnFtbDogQWRkZWQuCiogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwOiBBZGRl
ZC4KKFdlYktpdCk6CihXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OlF0V2ViUGFnZUZpbmRD
bGllbnQpOgooV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKToKKFdl
YktpdDo6dG9RdFdlYlBhZ2VGaW5kQ2xpZW50KToKKFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVu
dDo6ZGlkRmFpbFRvRmluZFN0cmluZyk6CiogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGll
bnQuaDogQWRkZWQuCihXZWJLaXQpOgooUXRXZWJQYWdlRmluZENsaWVudCk6CgpUb29sczoKCkFk
ZCBmaW5kIGJhciB0aGF0IHNsaWRlcyBiZXR3ZWVuIG5hdmlnYXRpb24gYmFyIGFuZApXZWJWaWV3
IHRvIE1pbmlCcm93c2VyLgoKKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcDoKKEJy
b3dzZXJXaW5kb3c6OnRvZ2dsZUZpbmQpOgoqIE1pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cu
aDoKKEJyb3dzZXJXaW5kb3cpOgoqIE1pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnFyYzoKKiBN
aW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcDoKKE1pbmlCcm93c2VyQXBw
bGljYXRpb246Om5vdGlmeSk6CiogTWluaUJyb3dzZXIvcXQvaWNvbnMvZmluZC5wbmc6IEFkZGVk
LgoqIE1pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbDoKLS0tCiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzAgKysrKwogU291
cmNlL1dlYktpdDIvVGFyZ2V0LnByaSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsK
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgIHwgICAz
MSArKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5o
ICB8ICAgMTYgKysKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19w
X3AuaCAgIHwgICAgMyArCiAuLi4vQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2Zp
bmRUZXh0LnFtbCB8ICAxNDUgKysrKysrKysrKysrKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwICAgfCAgIDYzICsrKysrKysKIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmggIHwgICA0OCArKysrKysKIFRv
b2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOSAr
KysKIFRvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwICAgICAgICAgICAgIHwg
ICAgNCArCiBUb29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmggICAgICAgICAgICAg
ICB8ICAgIDEgKwogVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucXJjICAgICAgICAg
ICAgICAgfCAgICAxICsKIFRvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRp
b24uY3BwICAgIHwgICAgNCArCiBUb29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9maW5kLnBuZyAg
ICAgICAgICAgICAgICB8ICBCaW4gMCAtPiA5MzAgYnl0ZXMKIFRvb2xzL01pbmlCcm93c2VyL3F0
L3FtbC9Ccm93c2VyV2luZG93LnFtbCAgICAgICAgIHwgIDE4MCArKysrKysrKysrKysrKysrKysr
LQogMTUgZmlsZXMgY2hhbmdlZCwgNTQ2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Ft
bHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRUZXh0LnFtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50
LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9maW5kLnBu
ZwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCBiNmI1NmM4Li40NWYyNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzMgQEAKKzIwMTItMTEtMjAgIEhlaWtraSBQYWFqYW5lbiAgPGhlaWtraS5wYWFqYW5lbkBwYWxt
LmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gQWRkIGV4cGVyaW1lbnRhbCBBUEkgdG8gZmluZCB0
ZXh0IGZyb20gcGFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTY0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBFeHBvc2UgZmluZFN0cmluZyBhbmQgUGFnZUZpbmRDbGllbnQgcHJvdmlkZWQgZnVuY3Rp
b25hbGl0eSB0byBRdFF1aWNrCisgICAgICAgIGFwcGxpY2F0aW9ucy4KKworICAgICAgICAqIFRh
cmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKFFR
dWlja1dlYlZpZXdFeHBlcmltZW50YWw6OmZpbmRUZXh0KToKKyAgICAgICAgKFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpkaWRGaW5kU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXdfcC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmg6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3Rz
dF9maW5kVGV4dC5xbWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VG
aW5kQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpRdFdlYlBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6UXRXZWJQYWdlRmluZENsaWVudDo6ZGlkRmluZFN0cmluZyk6CisgICAgICAgIChXZWJL
aXQ6OnRvUXRXZWJQYWdlRmluZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZUZp
bmRDbGllbnQ6OmRpZEZhaWxUb0ZpbmRTdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VGaW5kQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFF0V2ViUGFnZUZpbmRDbGllbnQpOgorCiAyMDEyLTExLTE5ICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBUZXN0IC93ZWJraXQyL1dl
YktpdFdlYlZpZXcvY3JlYXRlLXJlYWR5LWNsb3NlIGlzIGZhaWxpbmcgYWZ0ZXIgcjEzNDU4Ngpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkKaW5kZXggMDk4YjViOS4uYmU4ZGU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC04MTEsNiAr
ODExLDcgQEAgaGF2ZT8oUVRRVUlDSykgewogICAgICAgICBVSVByb2Nlc3MvcXQvUXREaWFsb2dS
dW5uZXIuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5oIFwKICAg
ICAgICAgVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5oIFwKKyAgICAgICAgVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZUZpbmRDbGllbnQuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VM
b2FkQ2xpZW50LmggXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUG9saWN5Q2xpZW50
LmggXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlU0dOb2RlLmggXApAQCAtODM5LDYg
Kzg0MCw3IEBAIGhhdmU/KFFUUVVJQ0spIHsKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0RGlhbG9n
UnVubmVyLmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAg
XAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcCBcCisgICAgICAgIFVJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VMb2FkQ2xpZW50LmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQ
b2xpY3lDbGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
dy5jcHAKaW5kZXggMjFlZDViZS4uMzYwMzZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAqIENvcHlyaWdodCAoYykgMjAxMiBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1l
bnQgQ29tcGFueSwgTC5QLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMCw5ICszMSwxMSBAQAog
I2luY2x1ZGUgIlF0V2ViRXJyb3IuaCIKICNpbmNsdWRlICJRdFdlYkljb25EYXRhYmFzZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlF0V2ViUGFnZUV2ZW50SGFuZGxlci5oIgorI2luY2x1ZGUgIlF0V2Vi
UGFnZUZpbmRDbGllbnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VMb2FkQ2xpZW50LmgiCiAjaW5j
bHVkZSAiUXRXZWJQYWdlUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRM
aXN0LmgiCisjaW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKICNpZiBFTkFCTEUoSU5TUEVDVE9S
X1NFUlZFUikKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1ZGUgIldlYklu
c3BlY3RvclNlcnZlci5oIgpAQCAtNjUsNiArNjgsNyBAQAogI2luY2x1ZGUgPFdLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtMzA3LDYgKzMxMSw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Omlu
aXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhCiAgICAg
UVF1aWNrV2ViUGFnZVByaXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBhZ2VWaWV3LmRh
dGEoKS0+ZDsKICAgICBwYWdlVmlld1ByaXZhdGUtPmluaXRpYWxpemUod2ViUGFnZVByb3h5Lmdl
dCgpKTsKIAorICAgIHBhZ2VGaW5kQ2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VGaW5kQ2xpZW50
KHRvQVBJKHdlYlBhZ2VQcm94eS5nZXQoKSksIHFfcHRyKSk7CiAgICAgcGFnZUxvYWRDbGllbnQu
cmVzZXQobmV3IFF0V2ViUGFnZUxvYWRDbGllbnQodG9BUEkod2ViUGFnZVByb3h5LmdldCgpKSwg
cV9wdHIpKTsKICAgICBwYWdlUG9saWN5Q2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VQb2xpY3lD
bGllbnQodG9BUEkod2ViUGFnZVByb3h5LmdldCgpKSwgcV9wdHIpKTsKICAgICBwYWdlVUlDbGll
bnQucmVzZXQobmV3IFF0V2ViUGFnZVVJQ2xpZW50KHRvQVBJKHdlYlBhZ2VQcm94eS5nZXQoKSks
IHFfcHRyKSk7CkBAIC0xMzA4LDYgKzEzMTMsMjYgQEAgdm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJp
bWVudGFsOjpldmFsdWF0ZUphdmFTY3JpcHQoY29uc3QgUVN0cmluZyYgc2NyaXB0LCBjb25zdAog
ICAgIGRfcHRyLT53ZWJQYWdlUHJveHkuZ2V0KCktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShz
Y3JpcHQsIFNjcmlwdFZhbHVlQ2FsbGJhY2s6OmNyZWF0ZShjbG9zdXJlLCBqYXZhU2NyaXB0Q2Fs
bGJhY2spKTsKIH0KIAordm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpmaW5kVGV4dChj
b25zdCBRU3RyaW5nJiBzdHJpbmcsIEZpbmRGbGFncyBvcHRpb25zKQoreworICAgIFFfRChRUXVp
Y2tXZWJWaWV3KTsKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkgeworICAgICAgICBkLT53ZWJQ
YWdlUHJveHktPmhpZGVGaW5kVUkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBXZWJL
aXQ6OkZpbmRPcHRpb25zIHdrT3B0aW9ucyA9IFdlYktpdDo6RmluZE9wdGlvbnNDYXNlSW5zZW5z
aXRpdmU7CisgICAgaWYgKG9wdGlvbnMgJiBGaW5kQ2FzZVNlbnNpdGl2ZWx5KQorICAgICAgICB3
a09wdGlvbnMgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPih3a09wdGlvbnMgJiB+
V2ViS2l0OjpGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSk7CisgICAgaWYgKG9wdGlvbnMgJiBG
aW5kQmFja3dhcmQpCisgICAgICAgIHdrT3B0aW9ucyA9IHN0YXRpY19jYXN0PFdlYktpdDo6Rmlu
ZE9wdGlvbnM+KHdrT3B0aW9ucyB8IEZpbmRPcHRpb25zQmFja3dhcmRzKTsKKyAgICBpZiAob3B0
aW9ucyAmIEZpbmRXcmFwc0Fyb3VuZERvY3VtZW50KQorICAgICAgICB3a09wdGlvbnMgPSBzdGF0
aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPih3a09wdGlvbnMgfCBGaW5kT3B0aW9uc1dyYXBB
cm91bmQpOworICAgIGlmIChvcHRpb25zICYgRmluZEhpZ2hsaWdodEFsbE9jY3VycmVuY2VzKQor
ICAgICAgICB3a09wdGlvbnMgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPih3a09w
dGlvbnMgfCBGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQpOworCisgICAgZC0+d2ViUGFnZVByb3h5
LT5maW5kU3RyaW5nKHN0cmluZywgd2tPcHRpb25zLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkgLSAxKTsKK30KKwogUUxpc3Q8UVVybD4gUVF1aWNrV2ViVmlld0V4cGVyaW1l
bnRhbDo6dXNlclNjcmlwdHMoKSBjb25zdAogewogICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3
KTsKQEAgLTIwNjQsNiArMjA4OSwxMiBAQCB2b2lkIFFRdWlja1dlYlZpZXc6OnNldEFsbG93QW55
SFRUUFNDZXJ0aWZpY2F0ZUZvckxvY2FsSG9zdChib29sIGFsbG93KQogICAgIGQtPm1fYWxsb3dB
bnlIVFRQU0NlcnRpZmljYXRlRm9yTG9jYWxIb3N0ID0gYWxsb3c7CiB9CiAKK3ZvaWQgUVF1aWNr
V2ViVmlld1ByaXZhdGU6OmRpZEZpbmRTdHJpbmcodW5zaWduZWQgbWF0Y2hDb3VudCkKK3sKKyAg
ICBRX1EoUVF1aWNrV2ViVmlldyk7CisgICAgZW1pdCBxLT5leHBlcmltZW50YWwoKS0+dGV4dEZv
dW5kKG1hdGNoQ291bnQpOworfQorCiAvKiEKICAgICBccW1sc2lnbmFsIFdlYlZpZXc6Om9uTG9h
ZGluZ0NoYW5nZWQobG9hZFJlcXVlc3QpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCmluZGV4IGRmZTdhZDguLjk5ZWFjNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIgSGV3
bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnksIEwuUC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtNTEsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBRdFJlZkNvdW50
ZWROZXR3b3JrUmVxdWVzdERhdGE7CiBjbGFzcyBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
UXQ7CiBjbGFzcyBRdFdlYlBhZ2VMb2FkQ2xpZW50OworY2xhc3MgUXRXZWJQYWdlRmluZENsaWVu
dDsKIGNsYXNzIFF0V2ViUGFnZVBvbGljeUNsaWVudDsKIGNsYXNzIFF0V2ViUGFnZVVJQ2xpZW50
OwogfQpAQCAtMjIwLDYgKzIyMiw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJL
aXRUZXN0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRRdDsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdFdlYlBhZ2VMb2FkQ2xpZW50Owor
ICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ7CiAgICAgZnJpZW5k
IGNsYXNzIFdlYktpdDo6UXRXZWJQYWdlUG9saWN5Q2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBX
ZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBXVFI6OlBsYXRmb3Jt
V2ViVmlldzsKQEAgLTI3OCwxMiArMjgxLDIxIEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFRdWlj
a1dlYlZpZXdFeHBlcmltZW50YWwgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9QUk9QRVJUWShR
TGlzdDxRVXJsPiB1c2VyU2NyaXB0cyBSRUFEIHVzZXJTY3JpcHRzIFdSSVRFIHNldFVzZXJTY3Jp
cHRzIE5PVElGWSB1c2VyU2NyaXB0c0NoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRVXJsIHJlbW90
ZUluc3BlY3RvclVybCBSRUFEIHJlbW90ZUluc3BlY3RvclVybCBOT1RJRlkgcmVtb3RlSW5zcGVj
dG9yVXJsQ2hhbmdlZCBGSU5BTCkKICAgICBRX0VOVU1TKE5hdmlnYXRpb25SZXF1ZXN0QWN0aW9u
RXhwZXJpbWVudGFsKQorICAgIFFfRkxBR1MoRmluZEZsYWdzKQogCiBwdWJsaWM6CiAgICAgZW51
bSBOYXZpZ2F0aW9uUmVxdWVzdEFjdGlvbkV4cGVyaW1lbnRhbCB7CiAgICAgICAgIERvd25sb2Fk
UmVxdWVzdCA9IFFRdWlja1dlYlZpZXc6Oklnbm9yZVJlcXVlc3QgLSAxCiAgICAgfTsKIAorICAg
IGVudW0gRmluZEZsYWcgeworICAgICAgICBGaW5kQ2FzZVNlbnNpdGl2ZWx5ID0gMSA8PCAwLAor
ICAgICAgICBGaW5kQmFja3dhcmQgPSAxIDw8IDEsCisgICAgICAgIEZpbmRXcmFwc0Fyb3VuZERv
Y3VtZW50ID0gMSA8PCAyLAorICAgICAgICBGaW5kSGlnaGxpZ2h0QWxsT2NjdXJyZW5jZXMgPSAx
IDw8IDMKKyAgICB9OworICAgIFFfREVDTEFSRV9GTEFHUyhGaW5kRmxhZ3MsIEZpbmRGbGFnKQor
CiAgICAgdmlydHVhbCB+UVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCgpOwogCiAgICAgUVFtbENv
bXBvbmVudCogYWxlcnREaWFsb2coKSBjb25zdDsKQEAgLTM1Miw2ICszNjQsNyBAQCBwdWJsaWMg
UV9TTE9UUzoKICAgICB2b2lkIGdvRm9yd2FyZFRvKGludCBpbmRleCk7CiAgICAgdm9pZCBwb3N0
TWVzc2FnZShjb25zdCBRU3RyaW5nJik7CiAgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHQoY29u
c3QgUVN0cmluZyYgc2NyaXB0LCBjb25zdCBRSlNWYWx1ZSYgdmFsdWUgPSBRSlNWYWx1ZSgpKTsK
KyAgICB2b2lkIGZpbmRUZXh0KGNvbnN0IFFTdHJpbmcmIHN0cmluZywgRmluZEZsYWdzIG9wdGlv
bnMgPSAwKTsKIAogUV9TSUdOQUxTOgogICAgIHZvaWQgbG9hZFZpc3VhbGx5Q29tbWl0dGVkKCk7
CkBAIC0zNzcsNiArMzkwLDcgQEAgUV9TSUdOQUxTOgogICAgIHZvaWQgdXNlclNjcmlwdHNDaGFu
Z2VkKCk7CiAgICAgdm9pZCBwcmVmZXJyZWRNaW5pbXVtQ29udGVudHNXaWR0aENoYW5nZWQoKTsK
ICAgICB2b2lkIHJlbW90ZUluc3BlY3RvclVybENoYW5nZWQoKTsKKyAgICB2b2lkIHRleHRGb3Vu
ZChpbnQgbWF0Y2hDb3VudCk7CiAKIHByaXZhdGU6CiAgICAgUVF1aWNrV2ViVmlld0V4cGVyaW1l
bnRhbChRUXVpY2tXZWJWaWV3KiB3ZWJWaWV3LCBRUXVpY2tXZWJWaWV3UHJpdmF0ZSogd2ViVmll
d1ByaXZhdGUpOwpAQCAtMzkxLDQgKzQwNSw2IEBAIHByaXZhdGU6CiAgICAgUV9ERUNMQVJFX1BV
QkxJQyhRUXVpY2tXZWJWaWV3KQogfTsKIAorUV9ERUNMQVJFX09QRVJBVE9SU19GT1JfRkxBR1Mo
UVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6RmluZEZsYWdzKQorCiAjZW5kaWYgLy8gcXF1aWNr
d2Vidmlld19wX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlld19wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlld19wX3AuaAppbmRleCBhZGVkYjZhLi44NTFkOWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCkBAIC04NCw2
ICs4NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEZhaWwoY29uc3QgV2Vi
S2l0OjpRdFdlYkVycm9yJiBlcnJvcik7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZU1vdXNlRXZl
bnQoUU1vdXNlRXZlbnQqKTsKIAorICAgIHZvaWQgZGlkRmluZFN0cmluZyh1bnNpZ25lZCBtYXRj
aENvdW50KTsKKwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMo
Y29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKSB7IH0KIAogICAgIGludCBs
b2FkUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX2xvYWRQcm9ncmVzczsgfQpAQCAtMTY2LDYg
KzE2OCw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8UVdlYlByZWZlcmVuY2VzPiBwcmVmZXJl
bmNlczsKIAogICAgIFFTY29wZWRQb2ludGVyPFdlYktpdDo6UXRXZWJQYWdlTG9hZENsaWVudD4g
cGFnZUxvYWRDbGllbnQ7CisgICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFdlYlBhZ2VGaW5k
Q2xpZW50PiBwYWdlRmluZENsaWVudDsKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJLaXQ6OlF0V2Vi
UGFnZVBvbGljeUNsaWVudD4gcGFnZVBvbGljeUNsaWVudDsKICAgICBRU2NvcGVkUG9pbnRlcjxX
ZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50PiBwYWdlVUlDbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3Rf
ZmluZFRleHQucW1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0
ZXN0cy9XZWJWaWV3L3RzdF9maW5kVGV4dC5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjFlYTE1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfZmluZFRleHQucW1sCkBAIC0w
LDAgKzEsMTQ1IEBACitpbXBvcnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBv
cnQgUXRXZWJLaXQgMy4wCitpbXBvcnQgUXRXZWJLaXQuZXhwZXJpbWVudGFsIDEuMAoraW1wb3J0
ICIuLi9jb21tb24iCisKK1Rlc3RXZWJWaWV3IHsKKyAgICBpZDogd2ViVmlldworICAgIHdpZHRo
OiA0MDAKKyAgICBoZWlnaHQ6IDMwMAorCisgICAgcHJvcGVydHkgaW50IG1hdGNoQ291bnQ6IC0x
CisgICAgcHJvcGVydHkgYm9vbCBmaW5kRmFpbGVkOiBmYWxzZQorICAgIGZ1bmN0aW9uIGNsZWFy
KCkgeworICAgICAgICB0ZXh0Rm91bmRTcHkuY2xlYXIoKQorICAgICAgICBmaW5kRmFpbGVkID0g
ZmFsc2UKKyAgICAgICAgbWF0Y2hDb3VudCA9IC0xCisgICAgfQorCisgICAgU2lnbmFsU3B5IHsK
KyAgICAgICAgaWQ6IHRleHRGb3VuZFNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcuZXhwZXJp
bWVudGFsCisgICAgICAgIHNpZ25hbE5hbWU6ICJ0ZXh0Rm91bmQiCisgICAgfQorCisgICAgZXhw
ZXJpbWVudGFsLm9uVGV4dEZvdW5kOiB7CisgICAgICAgIHdlYlZpZXcubWF0Y2hDb3VudCA9IG1h
dGNoQ291bnQKKyAgICAgICAgZmluZEZhaWxlZCA9IG1hdGNoQ291bnQgPT0gMAorICAgIH0KKyAg
ICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJXZWJWaWV3RmluZFRleHQiCisKKyAgICAgICAg
ZnVuY3Rpb24gdGVzdF9maW5kVGV4dCgpIHsKKyAgICAgICAgICAgIHZhciBmaW5kRmxhZ3MgPSBX
ZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRIaWdobGlnaHRBbGxPY2N1cnJlbmNlcyB8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRDYXNlU2Vuc2l0
aXZlbHkKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy51
cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3QxLmh0bWwiKQorICAgICAgICAgICAg
dmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAgIHdlYlZp
ZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJIZWxsbyIsIGZpbmRGbGFncykKKyAgICAgICAgICAg
IHRleHRGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUodGV4dEZvdW5kU3B5LmNv
dW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShtYXRjaENvdW50LCAxKQorICAgICAgICB9Cisg
ICAgICAgIGZ1bmN0aW9uIHRlc3RfZmluZFRleHRDYXNlSW5zZW5zaXRpdmUoKSB7CisgICAgICAg
ICAgICB2YXIgZmluZEZsYWdzID0gMAorCisgICAgICAgICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAg
ICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0MS5o
dG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkp
CisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5maW5kVGV4dCgiaGVMTG8iLCBmaW5k
RmxhZ3MpCisgICAgICAgICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21w
YXJlKHRleHRGb3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3Vu
dCwgMSkKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiB0ZXN0X2ZpbmRUZXh0TWFueU1hdGNo
ZXMoKSB7CisgICAgICAgICAgICB2YXIgZmluZEZsYWdzID0gV2ViVmlld0V4cGVyaW1lbnRhbC5G
aW5kSGlnaGxpZ2h0QWxsT2NjdXJyZW5jZXMKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIoKQor
ICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3Q0
Lmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQo
KSkKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEiLCBmaW5k
RmxhZ3MpCisgICAgICAgICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21w
YXJlKHRleHRGb3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3Vu
dCwgMTAwKQorICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIHRlc3RfZmluZFRleHRCYWNrd2Fy
ZCgpIHsKKyAgICAgICAgICAgIHZhciBmaW5kRmxhZ3MgPSBXZWJWaWV3RXhwZXJpbWVudGFsLkZp
bmRIaWdobGlnaHRBbGxPY2N1cnJlbmNlcworICAgICAgICAgICAgd2ViVmlldy5jbGVhcigpCisg
ICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDQu
aHRtbCIpCisgICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgp
KQorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZmluZFRleHQoImJsYTAiLCBmaW5k
RmxhZ3MpCisgICAgICAgICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21w
YXJlKHRleHRGb3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3Vu
dCwgMTApCisgICAgICAgICAgICBmb3IodmFyIGk9MDsgaSA8IDk7IGkrKykgeworICAgICAgICAg
ICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEwIiwgZmluZEZsYWdzKQor
ICAgICAgICAgICAgICAgIHRleHRGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNvbXBhcmUodGV4dEZvdW5kU3B5LmNvdW50LCAxMCkKKyAgICAgICAgICAgIHdlYlZp
ZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEwIiwgZmluZEZsYWdzKQorICAgICAgICAgICAg
dGV4dEZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh0ZXh0Rm91bmRTcHkuY291
bnQsIDExKQorICAgICAgICAgICAgY29tcGFyZShmaW5kRmFpbGVkLCB0cnVlKQorCisgICAgICAg
ICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAgICAgICAgICAgIGZpbmRGbGFncyB8PSBXZWJWaWV3RXhw
ZXJpbWVudGFsLkZpbmRCYWNrd2FyZAorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwu
ZmluZFRleHQoImJsYTAiLCBmaW5kRmxhZ3MpCisgICAgICAgICAgICB0ZXh0Rm91bmRTcHkud2Fp
dCgpCisgICAgICAgICAgICBjb21wYXJlKHRleHRGb3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAg
fQorICAgICAgICBmdW5jdGlvbiB0ZXN0X2ZpbmRUZXh0RmFpbE5vV3JhcCgpIHsKKyAgICAgICAg
ICAgIHZhciBmaW5kRmxhZ3MgPSBXZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRIaWdobGlnaHRBbGxP
Y2N1cnJlbmNlcworICAgICAgICAgICAgd2ViVmlldy5jbGVhcigpCisgICAgICAgICAgICB3ZWJW
aWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDQuaHRtbCIpCisgICAgICAg
ICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAgICAgICAg
d2ViVmlldy5leHBlcmltZW50YWwuZmluZFRleHQoImJsYTAiLCBmaW5kRmxhZ3MpCisgICAgICAg
ICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHRleHRGb3VuZFNw
eS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMTApCisgICAgICAg
ICAgICBmb3IodmFyIGk9MDsgaSA8IDk7IGkrKykgeworICAgICAgICAgICAgICAgIHdlYlZpZXcu
ZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEwIiwgZmluZEZsYWdzKQorICAgICAgICAgICAgICAg
IHRleHRGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbXBhcmUo
dGV4dEZvdW5kU3B5LmNvdW50LCAxMCkKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFs
LmZpbmRUZXh0KCJibGEwIiwgZmluZEZsYWdzKQorICAgICAgICAgICAgdGV4dEZvdW5kU3B5Lndh
aXQoKQorICAgICAgICAgICAgY29tcGFyZSh0ZXh0Rm91bmRTcHkuY291bnQsIDExKQorICAgICAg
ICAgICAgY29tcGFyZShmaW5kRmFpbGVkLCB0cnVlKQorICAgICAgICB9CisgICAgICAgIGZ1bmN0
aW9uIHRlc3RfZmluZFRleHRXcmFwKCkgeworICAgICAgICAgICAgdmFyIGZpbmRGbGFncyA9IFdl
YlZpZXdFeHBlcmltZW50YWwuRmluZEhpZ2hsaWdodEFsbE9jY3VycmVuY2VzCisgICAgICAgICAg
ICBmaW5kRmxhZ3MgfD0gV2ViVmlld0V4cGVyaW1lbnRhbC5GaW5kV3JhcHNBcm91bmREb2N1bWVu
dAorICAgICAgICAgICAgd2ViVmlldy5jbGVhcigpCisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9
IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDQuaHRtbCIpCisgICAgICAgICAgICB2ZXJp
Znkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAgICAgICAgd2ViVmlldy5l
eHBlcmltZW50YWwuZmluZFRleHQoImJsYTAiLCBmaW5kRmxhZ3MpCisgICAgICAgICAgICB0ZXh0
Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHRleHRGb3VuZFNweS5jb3VudCwg
MSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMTApCisgICAgICAgICAgICBmb3Io
dmFyIGk9MDsgaSA8IDE5OyBpKyspIHsKKyAgICAgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1l
bnRhbC5maW5kVGV4dCgiYmxhMCIsIGZpbmRGbGFncykKKyAgICAgICAgICAgICAgICB0ZXh0Rm91
bmRTcHkud2FpdCgpCisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21wYXJlKHRleHRGb3Vu
ZFNweS5jb3VudCwgMjApCisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5kVGV4
dEZhaWxDYXNlU2Vuc2l0aXZlKCkgeworICAgICAgICAgICAgdmFyIGZpbmRGbGFncyA9IFdlYlZp
ZXdFeHBlcmltZW50YWwuRmluZENhc2VTZW5zaXRpdmVseQorICAgICAgICAgICAgd2ViVmlldy5j
bGVhcigpCisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21t
b24vdGVzdDEuaHRtbCIpCisgICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1
Y2NlZWRlZCgpKQorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZmluZFRleHQoImhl
TExvIiwgZmluZEZsYWdzKQorICAgICAgICAgICAgdGV4dEZvdW5kU3B5LndhaXQoKQorICAgICAg
ICAgICAgY29tcGFyZSh0ZXh0Rm91bmRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJl
KGZpbmRGYWlsZWQsIHRydWUpCisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5k
VGV4dE5vdEZvdW5kKCkgeworICAgICAgICAgICAgd2ViVmlldy5jbGVhcigpCisgICAgICAgICAg
ICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDEuaHRtbCIpCisg
ICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAg
ICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZmluZFRleHQoInN0cmluZy10aGF0LWlzLW5vdC10
aHJlcmUiKQorICAgICAgICAgICAgdGV4dEZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZSh0ZXh0Rm91bmRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKGZpbmRGYWls
ZWQsIHRydWUpCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODVlMWU2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcApAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDEyIEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21w
YW55LCBMLlAuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXRXZWJQYWdlRmlu
ZENsaWVudC5oIgorCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitRdFdlYlBhZ2VGaW5kQ2xp
ZW50OjpRdFdlYlBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBRUXVpY2tXZWJWaWV3
KiB3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCit7CisgICAgV0tQYWdlRmluZENs
aWVudCBmaW5kQ2xpZW50OworICAgIG1lbXNldCgmZmluZENsaWVudCwgMCwgc2l6ZW9mKFdLUGFn
ZUZpbmRDbGllbnQpKTsKKyAgICBmaW5kQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlRmluZENsaWVu
dEN1cnJlbnRWZXJzaW9uOworICAgIGZpbmRDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAg
ZmluZENsaWVudC5kaWRGaW5kU3RyaW5nID0gZGlkRmluZFN0cmluZzsKKyAgICBmaW5kQ2xpZW50
LmRpZEZhaWxUb0ZpbmRTdHJpbmcgPSBkaWRGYWlsVG9GaW5kU3RyaW5nOworICAgIFdLUGFnZVNl
dFBhZ2VGaW5kQ2xpZW50KHBhZ2VSZWYsICZmaW5kQ2xpZW50KTsKK30KKwordm9pZCBRdFdlYlBh
Z2VGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKHVuc2lnbmVkIG1hdGNoQ291bnQpCit7CisgICAg
bV93ZWJWaWV3LT5kX2Z1bmMoKS0+ZGlkRmluZFN0cmluZyhtYXRjaENvdW50KTsKK30KKworc3Rh
dGljIFF0V2ViUGFnZUZpbmRDbGllbnQqIHRvUXRXZWJQYWdlRmluZENsaWVudChjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIEFTU0VSVChjbGllbnRJbmZvKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxRdFdlYlBhZ2VGaW5kQ2xpZW50Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpOworfQorCit2b2lkIFF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZEZpbmRTdHJpbmco
V0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN0cmluZywgdW5zaWduZWQgbWF0Y2hDb3VudCwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB0b1F0V2ViUGFnZUZpbmRDbGllbnQoY2xp
ZW50SW5mbyktPmRpZEZpbmRTdHJpbmcobWF0Y2hDb3VudCk7Cit9CisKK3ZvaWQgUXRXZWJQYWdl
RmluZENsaWVudDo6ZGlkRmFpbFRvRmluZFN0cmluZyhXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYgc3RyaW5nLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHRvUXRXZWJQYWdlRmlu
ZENsaWVudChjbGllbnRJbmZvKS0+ZGlkRmluZFN0cmluZygwKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2Via2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlRmluZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZp
bmRDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWMwMjcyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZp
bmRDbGllbnQuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyIEhl
d2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55LCBMLlAuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0V2Vi
UGFnZUZpbmRDbGllbnRfaAorI2RlZmluZSBRdFdlYlBhZ2VGaW5kQ2xpZW50X2gKKworI2luY2x1
ZGUgPFdLUGFnZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitjbGFzcyBR
UXVpY2tXZWJWaWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUXRXZWJQYWdlRmlu
ZENsaWVudCB7CitwdWJsaWM6CisgICAgUXRXZWJQYWdlRmluZENsaWVudChXS1BhZ2VSZWYsIFFR
dWlja1dlYlZpZXcqKTsKKworcHJpdmF0ZToKKworICAgIHZvaWQgZGlkRmluZFN0cmluZyh1bnNp
Z25lZCBtYXRjaENvdW50KTsKKworICAgIC8vIFdLUGFnZUZpbmRDbGllbnQgY2FsbGJhY2tzLgor
ICAgIHN0YXRpYyB2b2lkIGRpZEZpbmRTdHJpbmcoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiwgdW5z
aWduZWQgbWF0Y2hDb3VudCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZv
aWQgZGlkRmFpbFRvRmluZFN0cmluZyhXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKKworICAgIFFRdWlja1dlYlZpZXcqIG1fd2ViVmlldzsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYmtpdAorCisjZW5kaWYgLy8gUXRXZWJQYWdlRmluZENsaWVudF9oCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjVjNDA5
Zi4uMTE3Y2I3OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTExLTIwICBIZWlra2kgUGFhamFuZW4gIDxoZWlr
a2kucGFhamFuZW5AcGFsbS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIEFkZCBzaW1wbGUgVUkg
dG8gZmluZCB0ZXh0IGZyb20gcGFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTY0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGaW5kIGJhciB0aGF0IHNsaWRlcyBiZXR3ZWVuIG5hdmlnYXRpb24gYmFy
IGFuZCBXZWJWaWV3LgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5j
cHA6CisgICAgICAgIChCcm93c2VyV2luZG93Ojp0b2dnbGVGaW5kKToKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9xdC9Ccm93c2VyV2luZG93Lmg6CisgICAgICAgIChCcm93c2VyV2luZG93KToKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5xcmM6CisgICAgICAgICogTWluaUJy
b3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHA6CisgICAgICAgIChNaW5pQnJvd3Nl
ckFwcGxpY2F0aW9uOjpub3RpZnkpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L2ljb25zL2Zp
bmQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRv
dy5xbWw6CisKIDIwMTItMTEtMTkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJlbW92ZSBJRExTdHJ1Y3R1cmUucG0KZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJv
d3NlcldpbmRvdy5jcHAKaW5kZXggNzA3NTBjNi4uMmNlNWRkYiAxMDA2NDQKLS0tIGEvVG9vbHMv
TWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvQnJvd3NlcldpbmRvdy5jcHAKQEAgLTEwMyw2ICsxMDMsMTAgQEAgdm9pZCBCcm93c2VyV2lu
ZG93Ojpmb2N1c0FkZHJlc3NCYXIoKQogewogICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2Qo
cm9vdE9iamVjdCgpLCAiZm9jdXNBZGRyZXNzQmFyIiwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOwog
fQordm9pZCBCcm93c2VyV2luZG93Ojp0b2dnbGVGaW5kKCkKK3sKKyAgICBRTWV0YU9iamVjdDo6
aW52b2tlTWV0aG9kKHJvb3RPYmplY3QoKSwgInRvZ2dsZUZpbmQiLCBRdDo6RGlyZWN0Q29ubmVj
dGlvbik7Cit9CiAKIEJyb3dzZXJXaW5kb3cqIEJyb3dzZXJXaW5kb3c6Om5ld1dpbmRvdyhjb25z
dCBRU3RyaW5nJiB1cmwpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93
c2VyV2luZG93LmggYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgKaW5kZXgg
MGYzMGUyYy4uZTc2MTc2NCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3Nl
cldpbmRvdy5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaApAQCAt
NDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkKGNvbnN0IFFTdHJpbmcmIHVybCk7
CiAgICAgdm9pZCByZWxvYWQoKTsKICAgICB2b2lkIGZvY3VzQWRkcmVzc0JhcigpOworICAgIHZv
aWQgdG9nZ2xlRmluZCgpOwogICAgIFFRdWlja1dlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsKICAg
ICBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsKiB3ZWJWaWV3RXhwZXJpbWVudGFsKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnFyYyBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnFyYwppbmRleCBlMjFlZWYzLi4zZmE2MjA4
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5xcmMKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucXJjCkBAIC00LDYgKzQsNyBAQAogICAg
ICAgICA8ZmlsZT5pY29ucy9jaGVja2JveF91bmNoZWNrZWQucG5nPC9maWxlPgogICAgICAgICA8
ZmlsZT5pY29ucy9jb250ZW50c193aWR0aC5wbmc8L2ZpbGU+CiAgICAgICAgIDxmaWxlPmljb25z
L2Zhdmljb24ucG5nPC9maWxlPgorICAgICAgICA8ZmlsZT5pY29ucy9maW5kLnBuZzwvZmlsZT4K
ICAgICAgICAgPGZpbGU+aWNvbnMvZm9sZGVyLnBuZzwvZmlsZT4KICAgICAgICAgPGZpbGU+aWNv
bnMvaW5mby5wbmc8L2ZpbGU+CiAgICAgICAgIDxmaWxlPmljb25zL25leHQucG5nPC9maWxlPgpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5j
cHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcAppbmRl
eCBkNTRjZDY2Li5hY2NlZmU2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5p
QnJvd3NlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJv
d3NlckFwcGxpY2F0aW9uLmNwcApAQCAtMTIzLDYgKzEyMywxMCBAQCBib29sIE1pbmlCcm93c2Vy
QXBwbGljYXRpb246Om5vdGlmeShRT2JqZWN0KiB0YXJnZXQsIFFFdmVudCogZXZlbnQpCiAgICAg
ICAgICAgICBicm93c2VyV2luZG93LT5mb2N1c0FkZHJlc3NCYXIoKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CisgICAgICAgIGlmICgoa2V5RXZlbnQtPmtleSgpID09IFF0
OjpLZXlfRiAmJiBrZXlFdmVudC0+bW9kaWZpZXJzKCkgPT0gUXQ6OkNvbnRyb2xNb2RpZmllcikg
fHwga2V5RXZlbnQtPmtleSgpID09IFF0OjpLZXlfRjMpIHsKKyAgICAgICAgICAgIGJyb3dzZXJX
aW5kb3ctPnRvZ2dsZUZpbmQoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CiAgICAgfQogCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpLZXlSZWxlYXNlICYm
IHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGV2ZW50KS0+a2V5KCkgPT0gUXQ6OktleV9Db250cm9s
KSB7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9maW5kLnBuZyBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0L2ljb25zL2ZpbmQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3NmFmYTM5OGI5
MmQwZDdlYzI3YTY0NDkyYWQ1NmQzNzhhYWNmNzQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDkz
MAp6Y21WO1QxNn0teVApPGg7M0t8TGswMDBlMU5KTFRxMDAwJk0wMDB5UzFPTmE0Qlh0RzQwMDA4
flgrdUwkWD03c20KejBDP0pzbGduPSNSVFJkNVZ+P2ttNjB5T3cjajRPMWkjOT9ARzx+UXxnbEtF
V3U5WT96WW5sYCVMYUhYP1lrU0RlCnpjelMxP0tHWCYzaDgtPTRKPm5yJmB+ZWx9Zj9aY0FtOHli
fUQlTW04Ukg+Kk5STHNKVW5VKzh+dDg+NWVvJHF9Mgp6VHdUYjA+Vn4xcDItcGxfP05tI212QVFP
OXtYflhXblZgVWc+cVRMKVVTOSVtISUqPiRjPTdgVnpgZEVCPjtELU8Kek8mTkokPjt9NWMkbEM8
dEdHeHp0cF5tfTQzKFFATCF4KGJBZnhLPzR1MGRgO2taJXVpOF8ySEBALW1SdSVnekdpCno4byow
bCQ4QUVjMTVCQHtAT0NPNmNtTjxAbTRWZDBDIUFfWSlPRU16RTE5elVnN1d7MlAxUElDZGx7R3Y8
QnxnJAp6MFJDdnsoPHtJZjc9XjJ5PCMmTlNWM2hvTGFlMFYwZzd3LXYxSFNSV00pI35VPGIyKGY8
cTl3aiNfZWU5VHhHPCQKeitGN1UjSWxzS2BvflopYEYjWmJUYGNObWNGSHA2bWZxdiRNajRKMHdj
KntTJUlLKjNfc3hKLW5HYXU9bXZqViZoCnpuUXZXUHNTZiFNV1V3O3EmMVJaemA3QUlDKih2SHNH
JWI3LTAqNUxrMVhVeWY1N0dFfGJnODUxaiMrSVVqO2p+eAp6QXJVeTdyKnlOPm5AVXUhPmtHY09l
ZEV6SC1RQ29iSGopNTJvPkVQbkJSMG0mOE54KjImYjhiNzV7PilqdEByTHQKei1ubTgqZ2AkbVE2
TnlpTkJ1WGl5SmhYekZnKyMmSXpWUyRZU2JJfEFgZ0RUWUtpYT85X3dDUV51azJze1drPkRqCnpj
MnJFd21qcFl5bW5jP0lWfjBEbGQ9eCRfMW8mSitxS1ItKDFZQUwrY1FOV1ZVbyNKeGl7X2o7azEk
Vn5yXzIqKAp6Kl88PXFHP3p2VXQ3NFV7QkVvdlpuenMmRlhSS20hNllIUT13JnR5YVJeXiEmQEtT
ZTh6bzFPOVdOSVRidFJzb28Keks7eUg4TD1obiZtWH45SWc+SEM3YHxWQ0Y0JV94fFE0QipSI2JW
JmlQNzdCbHE1WEN6ailhengpTFhKU09KajlTCno0OEclSTJMbXduWSRzVSFIb1d5YVdiWT19U2BX
VTdWREhmY248fkk3cFRWdFRVUWNmZ3xGPmEkNF5pdkw7bFhMTAp6MWk3RjR7bF5EaipDKzd3PDlg
M29GWiV0YlVxYmMpZTVke2ZzVXImM3gpWitHMDAwMDJWb09JdjBSTS1OJSliQnQKejAxMHFOUyN0
bVkzbGpoVTNsamtWbnclSF8wMDBNY05saXJ1K3pBWns0Knt0aCtsfk1MMDRxc0VLfnlOdVZfPzdv
CnoqbzdJJDJhRzdafE09QX5reno2bjUld3tWVyUzfFZKUXtSXlAlLVRRMEd0MjxLTHVhLSN7ZDhU
MDcqcW9NNk48JApFZzJXQE0qWj0/awoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sIGIvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sCmluZGV4IGM3MzMwOGUuLmJjNTk1ODcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbAor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKQEAgLTEsNiAr
MSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDEwIFVuaXZlcnNpdHkg
b2YgU3plZ2VkCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIgSGV3bGV0dC1QYWNrYXJkIERldmVsb3Bt
ZW50IENvbXBhbnksIEwuUC4KICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTU0
LDcgKzU1LDE2MyBAQCBSZWN0YW5nbGUgewogICAgICAgICBhZGRyZXNzTGluZS5mb3JjZUFjdGl2
ZUZvY3VzKCkKICAgICAgICAgYWRkcmVzc0xpbmUuc2VsZWN0QWxsKCkKICAgICB9CisgICAgZnVu
Y3Rpb24gdG9nZ2xlRmluZCgpIHsKKyAgICAgICAgZmluZEJhci50b2dnbGUoKQorICAgIH0KKyAg
ICBSZWN0YW5nbGUgeworICAgICAgICBpZDogZmluZEJhcgorICAgICAgICB6OiB3ZWJWaWV3Lnog
KyAxCisgICAgICAgIHk6IG5hdmlnYXRpb25CYXIueQorICAgICAgICBhbmNob3JzIHsKKyAgICAg
ICAgICAgIGxlZnQ6IHBhcmVudC5sZWZ0CisgICAgICAgICAgICByaWdodDogcGFyZW50LnJpZ2h0
CisgICAgICAgIH0KKyAgICAgICAgaGVpZ2h0OiBuYXZpZ2F0aW9uQmFyLmhlaWdodAorICAgICAg
ICBjb2xvcjogIiNlZmVmZWYiCisgICAgICAgIHZpc2libGU6IHkgPiBuYXZpZ2F0aW9uQmFyLnkK
KworICAgICAgICBCZWhhdmlvciBvbiB5IHtOdW1iZXJBbmltYXRpb24ge2R1cmF0aW9uOiAyNTB9
fQorCisgICAgICAgIGZ1bmN0aW9uIHRvZ2dsZSgpIHsKKyAgICAgICAgICAgIGlmICh5ID09IG5h
dmlnYXRpb25CYXIueSkgeworICAgICAgICAgICAgICAgIGZpbmRUZXh0SW5wdXQuZm9yY2VBY3Rp
dmVGb2N1cygpCisgICAgICAgICAgICAgICAgeSArPSBoZWlnaHQKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgd2ViVmlldy5mb3JjZUFjdGl2ZUZvY3VzKCkKKyAgICAgICAg
ICAgICAgICB5ID0gbmF2aWdhdGlvbkJhci55CisgICAgICAgICAgICAgICAgZmluZCgiIiwwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCisgICAgICAgIGZ1bmN0aW9uIGZpbmQoc3RyLCBv
cHRpb25zKSB7CisgICAgICAgICAgICB2YXIgZmluZE9wdGlvbnMgPSBvcHRpb25zIHwgV2ViVmll
d0V4cGVyaW1lbnRhbC5GaW5kSGlnaGxpZ2h0QWxsT2NjdXJyZW5jZXMKKyAgICAgICAgICAgIGZp
bmRPcHRpb25zIHw9IFdlYlZpZXdFeHBlcmltZW50YWwuRmluZFdyYXBzQXJvdW5kRG9jdW1lbnQK
KyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KHN0ciwgZmluZE9wdGlv
bnMpCisgICAgICAgIH0KKworICAgICAgICBDb25uZWN0aW9ucyB7CisgICAgICAgICAgICB0YXJn
ZXQ6IHdlYlZpZXcuZXhwZXJpbWVudGFsCisgICAgICAgICAgICBvblRleHRGb3VuZDogeworICAg
ICAgICAgICAgICAgIGZhaWxlZE92ZXJsYXkudmlzaWJsZSA9IG1hdGNoQ291bnQgPT0gMAorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIEl0ZW0geworICAgICAgICAgICAgYW5jaG9y
cy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAg
aWQ6IGlucHV0QXJlYQorICAgICAgICAgICAgICAgIGhlaWdodDogMjYKKyAgICAgICAgICAgICAg
ICBhbmNob3JzIHsKKyAgICAgICAgICAgICAgICAgICAgbGVmdDogcGFyZW50LmxlZnQKKyAgICAg
ICAgICAgICAgICAgICAgcmlnaHQ6IHByZXZCdXR0b24ubGVmdAorICAgICAgICAgICAgICAgICAg
ICBtYXJnaW5zOiA2CisgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsQ2VudGVyOiBwYXJlbnQu
dmVydGljYWxDZW50ZXIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29sb3I6
ICJ3aGl0ZSIKKyAgICAgICAgICAgICAgICBib3JkZXIud2lkdGg6IDEKKyAgICAgICAgICAgICAg
ICBib3JkZXIuY29sb3I6ICIjYmZiZmJmIgorICAgICAgICAgICAgICAgIHJhZGl1czogMworICAg
ICAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgICAgIGlkOiBmYWlsZWRP
dmVybGF5CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAg
ICAgICAgICAgICAgIGNvbG9yOiAicmVkIgorICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAw
LjUKKyAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiA2CisgICAgICAgICAgICAgICAgICAgIHZp
c2libGU6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFRleHRJbnB1
dCB7CisgICAgICAgICAgICAgICAgICAgIGlkOiBmaW5kVGV4dElucHV0CisgICAgICAgICAgICAg
ICAgICAgIGNsaXA6IHRydWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0QnlNb3VzZTogdHJ1
ZQorICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiBUZXh0SW5wdXQuQWxp
Z25MZWZ0CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAg
ICAgICAgICAgICAgIGFuY2hvcnMubWFyZ2luczogMworICAgICAgICAgICAgICAgICAgICBmb250
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50U2l6ZTogMTEKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZhbWlseTogIlNhbnMiCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgdGV4dDogIiIKKyAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHk6ICFmaW5k
QmFyLnZpc2libGUKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZG9GaW5kKCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaW5kQmFyLnZpc2libGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZmluZFRleHRJbnB1dC50ZXh0ID09ICIiKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkT3ZlcmxheS52aXNpYmxlID0gZmFsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRCYXIu
ZmluZChmaW5kVGV4dElucHV0LnRleHQpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgb25UZXh0Q2hhbmdlZDogeworICAgICAgICAgICAgICAgICAgICAgICAgZG9G
aW5kKCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBLZXlzLm9u
UmV0dXJuUHJlc3NlZDp7CisgICAgICAgICAgICAgICAgICAgICAgICBkb0ZpbmQoKQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICBpZDogcHJldkJ1dHRvbgorICAgICAg
ICAgICAgICAgIGhlaWdodDogaW5wdXRBcmVhLmhlaWdodAorICAgICAgICAgICAgICAgIHdpZHRo
OiBoZWlnaHQKKyAgICAgICAgICAgICAgICBhbmNob3JzLnJpZ2h0OiBuZXh0QnV0dG9uLmxlZnQK
KyAgICAgICAgICAgICAgICBhbmNob3JzLnZlcnRpY2FsQ2VudGVyOiBwYXJlbnQudmVydGljYWxD
ZW50ZXIKKyAgICAgICAgICAgICAgICBjb2xvcjogIiNlZmVmZWYiCisgICAgICAgICAgICAgICAg
cmFkaXVzOiA2CisKKyAgICAgICAgICAgICAgICBJbWFnZSB7CisgICAgICAgICAgICAgICAgICAg
IGFuY2hvcnMuY2VudGVySW46IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICIu
Li9pY29ucy9wcmV2aW91cy5wbmciCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQK
KyAgICAgICAgICAgICAgICAgICAgY29sb3I6IHBhcmVudC5jb2xvcgorICAgICAgICAgICAgICAg
ICAgICByYWRpdXM6IHBhcmVudC5yYWRpdXMKKyAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTog
MC44CisgICAgICAgICAgICAgICAgICAgIHZpc2libGU6ICFwYXJlbnQuZW5hYmxlZAorICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIE1vdXNlQXJlYSB7CisgICAgICAgICAgICAg
ICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIG9uUHJlc3Nl
ZDogeyBpZiAocGFyZW50LmVuYWJsZWQpIHBhcmVudC5jb2xvciA9ICIjY2ZjZmNmIiB9CisgICAg
ICAgICAgICAgICAgICAgIG9uUmVsZWFzZWQ6IHsgcGFyZW50LmNvbG9yID0gIiNlZmVmZWYiIH0K
KyAgICAgICAgICAgICAgICAgICAgb25DbGlja2VkOiB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBmaW5kQmFyLmZpbmQoZmluZFRleHRJbnB1dC50ZXh0LCBXZWJWaWV3RXhwZXJpbWVudGFsLkZp
bmRCYWNrd2FyZCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgaWQ6
IG5leHRCdXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6IGlucHV0QXJlYS5oZWlnaHQKKyAg
ICAgICAgICAgICAgICB3aWR0aDogaGVpZ2h0CisgICAgICAgICAgICAgICAgYW5jaG9ycy5yaWdo
dDogcGFyZW50LnJpZ2h0CisgICAgICAgICAgICAgICAgYW5jaG9ycy52ZXJ0aWNhbENlbnRlcjog
cGFyZW50LnZlcnRpY2FsQ2VudGVyCisgICAgICAgICAgICAgICAgY29sb3I6ICIjZWZlZmVmIgor
ICAgICAgICAgICAgICAgIHJhZGl1czogNgorCisgICAgICAgICAgICAgICAgSW1hZ2UgeworICAg
ICAgICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQKKyAgICAgICAgICAgICAg
ICAgICAgc291cmNlOiAiLi4vaWNvbnMvbmV4dC5wbmciCisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5m
aWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgY29sb3I6IHBhcmVudC5jb2xvcgorICAg
ICAgICAgICAgICAgICAgICByYWRpdXM6IHBhcmVudC5yYWRpdXMKKyAgICAgICAgICAgICAgICAg
ICAgb3BhY2l0eTogMC44CisgICAgICAgICAgICAgICAgICAgIHZpc2libGU6ICFwYXJlbnQuZW5h
YmxlZAorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIE1vdXNlQXJlYSB7Cisg
ICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAg
ICAgIG9uUHJlc3NlZDogeyBpZiAocGFyZW50LmVuYWJsZWQpIHBhcmVudC5jb2xvciA9ICIjY2Zj
ZmNmIiB9CisgICAgICAgICAgICAgICAgICAgIG9uUmVsZWFzZWQ6IHsgcGFyZW50LmNvbG9yID0g
IiNlZmVmZWYiIH0KKyAgICAgICAgICAgICAgICAgICAgb25DbGlja2VkOiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmaW5kQmFyLmZpbmQoZmluZFRleHRJbnB1dC50ZXh0LCAwKQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQogICAgIFJlY3RhbmdsZSB7CiAgICAgICAgIGlkOiBuYXZpZ2F0aW9uQmFyCiAg
ICAgICAgIGNvbG9yOiAiI2VmZWZlZiIKQEAgLTIxMyw2ICszNzAsMjcgQEAgUmVjdGFuZ2xlIHsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAg
ICBpZDogZmluZEJ1dHRvbgorICAgICAgICAgICAgICAgIGhlaWdodDogcGFyZW50LmhlaWdodAor
ICAgICAgICAgICAgICAgIHdpZHRoOiBoZWlnaHQKKyAgICAgICAgICAgICAgICBjb2xvcjogIiNl
ZmVmZWYiCisgICAgICAgICAgICAgICAgcmFkaXVzOiA2CisKKyAgICAgICAgICAgICAgICBJbWFn
ZSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuY2VudGVySW46IHBhcmVudAorICAgICAg
ICAgICAgICAgICAgICBvcGFjaXR5OiAwLjYKKyAgICAgICAgICAgICAgICAgICAgc291cmNlOiAi
Li4vaWNvbnMvZmluZC5wbmciCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
TW91c2VBcmVhIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAg
ICAgICAgICAgICAgICAgICAgb25DbGlja2VkOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBm
aW5kQmFyLnRvZ2dsZSgpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CiAgICAgICAgICAgICAg
ICAgaWQ6IHRvdWNoRXZlbnRzQnV0dG9uCiAgICAgICAgICAgICAgICAgaGVpZ2h0OiBwYXJlbnQu
aGVpZ2h0CiAgICAgICAgICAgICAgICAgd2lkdGg6IGhlaWdodApAQCAtMzM1LDcgKzUxMyw3IEBA
IFJlY3RhbmdsZSB7CiAgICAgICAgIGNsaXA6IGZhbHNlCiAKICAgICAgICAgYW5jaG9ycyB7Ci0g
ICAgICAgICAgICB0b3A6IG5hdmlnYXRpb25CYXIuYm90dG9tCisgICAgICAgICAgICB0b3A6IGZp
bmRCYXIuYm90dG9tCiAgICAgICAgICAgICBsZWZ0OiBwYXJlbnQubGVmdAogICAgICAgICAgICAg
cmlnaHQ6IHBhcmVudC5yaWdodAogICAgICAgICAgICAgYm90dG9tOiBwYXJlbnQuYm90dG9tCi0t
IAoxLjcuOS41Cgo=
</data>
<flag name="review"
          id="190574"
          type_id="1"
          status="+"
          setter="jturcotte"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179068</attachid>
            <date>2012-12-12 09:43:10 -0800</date>
            <delta_ts>2013-01-02 07:06:53 -0800</delta_ts>
            <desc>[Qt][WK2] Add experimental API to find text from page</desc>
            <filename>0001-Qt-WK2-Add-experimental-API-to-find-text-from-page.patch</filename>
            <type>text/plain</type>
            <size>33705</size>
            <attacher name="Heikki Paajanen">hepaajan</attacher>
            
              <data encoding="base64">RnJvbSA5ZGJmYTMxNzhmNGUzMzRlN2VlZjc2Zjg1OTQ3NzNlYWEyNWIzOTNiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgUGFhamFuZW4gPGhlaWtraS5wYWFqYW5lbkBwYWxt
LmNvbT4KRGF0ZTogV2VkLCAxMiBTZXAgMjAxMiAxNTozNDoxNSArMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF1bV0syXSBBZGQgZXhwZXJpbWVudGFsIEFQSSB0byBmaW5kIHRleHQgZnJvbSBwYWdl
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0ODEKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKU291cmNlL1dlYktpdDI6CgpFeHBvc2UgZmluZFN0cmluZyBh
bmQgUGFnZUZpbmRDbGllbnQgcHJvdmlkZWQgZnVuY3Rpb25hbGl0eSB0byBRdFF1aWNrCmFwcGxp
Y2F0aW9ucy4KCiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcu
Y3BwOgooUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUpOgooUVF1aWNrV2ViVmlld0V4
cGVyaW1lbnRhbDo6ZmluZFRleHQpOgooUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmRTdHJp
bmcpOgoqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6CihXZWJLaXQpOgoqIFVJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaDoKKFFRdWlja1dlYlZpZXdQcml2YXRl
KToKKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRUZXh0
LnFtbDogQWRkZWQuCiogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwOiBBZGRl
ZC4KKFdlYktpdCk6CihXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ6OlF0V2ViUGFnZUZpbmRD
bGllbnQpOgooV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKToKKFdl
YktpdDo6dG9RdFdlYlBhZ2VGaW5kQ2xpZW50KToKKFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVu
dDo6ZGlkRmFpbFRvRmluZFN0cmluZyk6CiogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGll
bnQuaDogQWRkZWQuCihXZWJLaXQpOgooUXRXZWJQYWdlRmluZENsaWVudCk6CgpUb29sczoKCkFk
ZCBmaW5kIGJhciB0aGF0IHNsaWRlcyBiZXR3ZWVuIG5hdmlnYXRpb24gYmFyIGFuZApXZWJWaWV3
IHRvIE1pbmlCcm93c2VyLgoKKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcDoKKEJy
b3dzZXJXaW5kb3c6OnRvZ2dsZUZpbmQpOgoqIE1pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cu
aDoKKEJyb3dzZXJXaW5kb3cpOgoqIE1pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnFyYzoKKiBN
aW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcDoKKE1pbmlCcm93c2VyQXBw
bGljYXRpb246Om5vdGlmeSk6CiogTWluaUJyb3dzZXIvcXQvaWNvbnMvZmluZC5wbmc6IEFkZGVk
LgoqIE1pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbDoKLS0tCiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzAgKysrKwogU291
cmNlL1dlYktpdDIvVGFyZ2V0LnByaSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsK
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgIHwgICAz
MSArKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5o
ICB8ICAgMTYgKysKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19w
X3AuaCAgIHwgICAgMyArCiAuLi4vQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2Zp
bmRUZXh0LnFtbCB8ICAxNDUgKysrKysrKysrKysrKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwICAgfCAgIDYzICsrKysrKysKIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmggIHwgICA0OCArKysrKysKIFRv
b2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOSAr
KysKIFRvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwICAgICAgICAgICAgIHwg
ICAgNSArCiBUb29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmggICAgICAgICAgICAg
ICB8ICAgIDEgKwogVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucXJjICAgICAgICAg
ICAgICAgfCAgICAxICsKIFRvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRp
b24uY3BwICAgIHwgICAgNCArCiBUb29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9maW5kLnBuZyAg
ICAgICAgICAgICAgICB8ICBCaW4gMCAtPiA5MzAgYnl0ZXMKIFRvb2xzL01pbmlCcm93c2VyL3F0
L3FtbC9Ccm93c2VyV2luZG93LnFtbCAgICAgICAgIHwgIDE4MCArKysrKysrKysrKysrKysrKysr
LQogMTUgZmlsZXMgY2hhbmdlZCwgNTQ3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Ft
bHRlc3RzL1dlYlZpZXcvdHN0X2ZpbmRUZXh0LnFtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50
LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9maW5kLnBu
ZwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCBiNmI1NmM4Li40NWYyNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzMgQEAKKzIwMTItMTEtMjAgIEhlaWtraSBQYWFqYW5lbiAgPGhlaWtraS5wYWFqYW5lbkBwYWxt
LmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gQWRkIGV4cGVyaW1lbnRhbCBBUEkgdG8gZmluZCB0
ZXh0IGZyb20gcGFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTY0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBFeHBvc2UgZmluZFN0cmluZyBhbmQgUGFnZUZpbmRDbGllbnQgcHJvdmlkZWQgZnVuY3Rp
b25hbGl0eSB0byBRdFF1aWNrCisgICAgICAgIGFwcGxpY2F0aW9ucy4KKworICAgICAgICAqIFRh
cmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKFFR
dWlja1dlYlZpZXdFeHBlcmltZW50YWw6OmZpbmRUZXh0KToKKyAgICAgICAgKFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpkaWRGaW5kU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXdfcC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmg6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3Rz
dF9maW5kVGV4dC5xbWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VG
aW5kQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OjpRdFdlYlBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6UXRXZWJQYWdlRmluZENsaWVudDo6ZGlkRmluZFN0cmluZyk6CisgICAgICAgIChXZWJL
aXQ6OnRvUXRXZWJQYWdlRmluZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZUZp
bmRDbGllbnQ6OmRpZEZhaWxUb0ZpbmRTdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VGaW5kQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFF0V2ViUGFnZUZpbmRDbGllbnQpOgorCiAyMDEyLTExLTE5ICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBUZXN0IC93ZWJraXQyL1dl
YktpdFdlYlZpZXcvY3JlYXRlLXJlYWR5LWNsb3NlIGlzIGZhaWxpbmcgYWZ0ZXIgcjEzNDU4Ngpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkKaW5kZXggMDk4YjViOS4uYmU4ZGU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC04MTEsNiAr
ODExLDcgQEAgaGF2ZT8oUVRRVUlDSykgewogICAgICAgICBVSVByb2Nlc3MvcXQvUXREaWFsb2dS
dW5uZXIuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5oIFwKICAg
ICAgICAgVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5oIFwKKyAgICAgICAgVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZUZpbmRDbGllbnQuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VM
b2FkQ2xpZW50LmggXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUG9saWN5Q2xpZW50
LmggXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlU0dOb2RlLmggXApAQCAtODM5LDYg
Kzg0MCw3IEBAIGhhdmU/KFFUUVVJQ0spIHsKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0RGlhbG9n
UnVubmVyLmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAg
XAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcCBcCisgICAgICAgIFVJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VMb2FkQ2xpZW50LmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQ
b2xpY3lDbGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
dy5jcHAKaW5kZXggMjFlZDViZS4uMzYwMzZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAqIENvcHlyaWdodCAoYykgMjAxMiBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1l
bnQgQ29tcGFueSwgTC5QLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMCw5ICszMSwxMSBAQAog
I2luY2x1ZGUgIlF0V2ViRXJyb3IuaCIKICNpbmNsdWRlICJRdFdlYkljb25EYXRhYmFzZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlF0V2ViUGFnZUV2ZW50SGFuZGxlci5oIgorI2luY2x1ZGUgIlF0V2Vi
UGFnZUZpbmRDbGllbnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VMb2FkQ2xpZW50LmgiCiAjaW5j
bHVkZSAiUXRXZWJQYWdlUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRM
aXN0LmgiCisjaW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKICNpZiBFTkFCTEUoSU5TUEVDVE9S
X1NFUlZFUikKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1ZGUgIldlYklu
c3BlY3RvclNlcnZlci5oIgpAQCAtNjUsNiArNjgsNyBAQAogI2luY2x1ZGUgPFdLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtMzA3LDYgKzMxMSw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Omlu
aXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhCiAgICAg
UVF1aWNrV2ViUGFnZVByaXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBhZ2VWaWV3LmRh
dGEoKS0+ZDsKICAgICBwYWdlVmlld1ByaXZhdGUtPmluaXRpYWxpemUod2ViUGFnZVByb3h5Lmdl
dCgpKTsKIAorICAgIHBhZ2VGaW5kQ2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VGaW5kQ2xpZW50
KHRvQVBJKHdlYlBhZ2VQcm94eS5nZXQoKSksIHFfcHRyKSk7CiAgICAgcGFnZUxvYWRDbGllbnQu
cmVzZXQobmV3IFF0V2ViUGFnZUxvYWRDbGllbnQodG9BUEkod2ViUGFnZVByb3h5LmdldCgpKSwg
cV9wdHIpKTsKICAgICBwYWdlUG9saWN5Q2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VQb2xpY3lD
bGllbnQodG9BUEkod2ViUGFnZVByb3h5LmdldCgpKSwgcV9wdHIpKTsKICAgICBwYWdlVUlDbGll
bnQucmVzZXQobmV3IFF0V2ViUGFnZVVJQ2xpZW50KHRvQVBJKHdlYlBhZ2VQcm94eS5nZXQoKSks
IHFfcHRyKSk7CkBAIC0xMzA4LDYgKzEzMTMsMjYgQEAgdm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJp
bWVudGFsOjpldmFsdWF0ZUphdmFTY3JpcHQoY29uc3QgUVN0cmluZyYgc2NyaXB0LCBjb25zdAog
ICAgIGRfcHRyLT53ZWJQYWdlUHJveHkuZ2V0KCktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShz
Y3JpcHQsIFNjcmlwdFZhbHVlQ2FsbGJhY2s6OmNyZWF0ZShjbG9zdXJlLCBqYXZhU2NyaXB0Q2Fs
bGJhY2spKTsKIH0KIAordm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpmaW5kVGV4dChj
b25zdCBRU3RyaW5nJiBzdHJpbmcsIEZpbmRGbGFncyBvcHRpb25zKQoreworICAgIFFfRChRUXVp
Y2tXZWJWaWV3KTsKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkgeworICAgICAgICBkLT53ZWJQ
YWdlUHJveHktPmhpZGVGaW5kVUkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBXZWJL
aXQ6OkZpbmRPcHRpb25zIHdrT3B0aW9ucyA9IFdlYktpdDo6RmluZE9wdGlvbnNDYXNlSW5zZW5z
aXRpdmU7CisgICAgaWYgKG9wdGlvbnMgJiBGaW5kQ2FzZVNlbnNpdGl2ZWx5KQorICAgICAgICB3
a09wdGlvbnMgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPih3a09wdGlvbnMgJiB+
V2ViS2l0OjpGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSk7CisgICAgaWYgKG9wdGlvbnMgJiBG
aW5kQmFja3dhcmQpCisgICAgICAgIHdrT3B0aW9ucyA9IHN0YXRpY19jYXN0PFdlYktpdDo6Rmlu
ZE9wdGlvbnM+KHdrT3B0aW9ucyB8IEZpbmRPcHRpb25zQmFja3dhcmRzKTsKKyAgICBpZiAob3B0
aW9ucyAmIEZpbmRXcmFwc0Fyb3VuZERvY3VtZW50KQorICAgICAgICB3a09wdGlvbnMgPSBzdGF0
aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPih3a09wdGlvbnMgfCBGaW5kT3B0aW9uc1dyYXBB
cm91bmQpOworICAgIGlmIChvcHRpb25zICYgRmluZEhpZ2hsaWdodEFsbE9jY3VycmVuY2VzKQor
ICAgICAgICB3a09wdGlvbnMgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPih3a09w
dGlvbnMgfCBGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQpOworCisgICAgZC0+d2ViUGFnZVByb3h5
LT5maW5kU3RyaW5nKHN0cmluZywgd2tPcHRpb25zLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkgLSAxKTsKK30KKwogUUxpc3Q8UVVybD4gUVF1aWNrV2ViVmlld0V4cGVyaW1l
bnRhbDo6dXNlclNjcmlwdHMoKSBjb25zdAogewogICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3
KTsKQEAgLTIwNjQsNiArMjA4OSwxMiBAQCB2b2lkIFFRdWlja1dlYlZpZXc6OnNldEFsbG93QW55
SFRUUFNDZXJ0aWZpY2F0ZUZvckxvY2FsSG9zdChib29sIGFsbG93KQogICAgIGQtPm1fYWxsb3dB
bnlIVFRQU0NlcnRpZmljYXRlRm9yTG9jYWxIb3N0ID0gYWxsb3c7CiB9CiAKK3ZvaWQgUVF1aWNr
V2ViVmlld1ByaXZhdGU6OmRpZEZpbmRTdHJpbmcodW5zaWduZWQgbWF0Y2hDb3VudCkKK3sKKyAg
ICBRX1EoUVF1aWNrV2ViVmlldyk7CisgICAgZW1pdCBxLT5leHBlcmltZW50YWwoKS0+dGV4dEZv
dW5kKG1hdGNoQ291bnQpOworfQorCiAvKiEKICAgICBccW1sc2lnbmFsIFdlYlZpZXc6Om9uTG9h
ZGluZ0NoYW5nZWQobG9hZFJlcXVlc3QpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCmluZGV4IGRmZTdhZDguLjk5ZWFjNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIgSGV3
bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnksIEwuUC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtNTEsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBRdFJlZkNvdW50
ZWROZXR3b3JrUmVxdWVzdERhdGE7CiBjbGFzcyBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
UXQ7CiBjbGFzcyBRdFdlYlBhZ2VMb2FkQ2xpZW50OworY2xhc3MgUXRXZWJQYWdlRmluZENsaWVu
dDsKIGNsYXNzIFF0V2ViUGFnZVBvbGljeUNsaWVudDsKIGNsYXNzIFF0V2ViUGFnZVVJQ2xpZW50
OwogfQpAQCAtMjIwLDYgKzIyMiw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJL
aXRUZXN0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRRdDsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdFdlYlBhZ2VMb2FkQ2xpZW50Owor
ICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ7CiAgICAgZnJpZW5k
IGNsYXNzIFdlYktpdDo6UXRXZWJQYWdlUG9saWN5Q2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBX
ZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBXVFI6OlBsYXRmb3Jt
V2ViVmlldzsKQEAgLTI3OCwxMiArMjgxLDIxIEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFRdWlj
a1dlYlZpZXdFeHBlcmltZW50YWwgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9QUk9QRVJUWShR
TGlzdDxRVXJsPiB1c2VyU2NyaXB0cyBSRUFEIHVzZXJTY3JpcHRzIFdSSVRFIHNldFVzZXJTY3Jp
cHRzIE5PVElGWSB1c2VyU2NyaXB0c0NoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRVXJsIHJlbW90
ZUluc3BlY3RvclVybCBSRUFEIHJlbW90ZUluc3BlY3RvclVybCBOT1RJRlkgcmVtb3RlSW5zcGVj
dG9yVXJsQ2hhbmdlZCBGSU5BTCkKICAgICBRX0VOVU1TKE5hdmlnYXRpb25SZXF1ZXN0QWN0aW9u
RXhwZXJpbWVudGFsKQorICAgIFFfRkxBR1MoRmluZEZsYWdzKQogCiBwdWJsaWM6CiAgICAgZW51
bSBOYXZpZ2F0aW9uUmVxdWVzdEFjdGlvbkV4cGVyaW1lbnRhbCB7CiAgICAgICAgIERvd25sb2Fk
UmVxdWVzdCA9IFFRdWlja1dlYlZpZXc6Oklnbm9yZVJlcXVlc3QgLSAxCiAgICAgfTsKIAorICAg
IGVudW0gRmluZEZsYWcgeworICAgICAgICBGaW5kQ2FzZVNlbnNpdGl2ZWx5ID0gMSA8PCAwLAor
ICAgICAgICBGaW5kQmFja3dhcmQgPSAxIDw8IDEsCisgICAgICAgIEZpbmRXcmFwc0Fyb3VuZERv
Y3VtZW50ID0gMSA8PCAyLAorICAgICAgICBGaW5kSGlnaGxpZ2h0QWxsT2NjdXJyZW5jZXMgPSAx
IDw8IDMKKyAgICB9OworICAgIFFfREVDTEFSRV9GTEFHUyhGaW5kRmxhZ3MsIEZpbmRGbGFnKQor
CiAgICAgdmlydHVhbCB+UVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCgpOwogCiAgICAgUVFtbENv
bXBvbmVudCogYWxlcnREaWFsb2coKSBjb25zdDsKQEAgLTM1Miw2ICszNjQsNyBAQCBwdWJsaWMg
UV9TTE9UUzoKICAgICB2b2lkIGdvRm9yd2FyZFRvKGludCBpbmRleCk7CiAgICAgdm9pZCBwb3N0
TWVzc2FnZShjb25zdCBRU3RyaW5nJik7CiAgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHQoY29u
c3QgUVN0cmluZyYgc2NyaXB0LCBjb25zdCBRSlNWYWx1ZSYgdmFsdWUgPSBRSlNWYWx1ZSgpKTsK
KyAgICB2b2lkIGZpbmRUZXh0KGNvbnN0IFFTdHJpbmcmIHN0cmluZywgRmluZEZsYWdzIG9wdGlv
bnMgPSAwKTsKIAogUV9TSUdOQUxTOgogICAgIHZvaWQgbG9hZFZpc3VhbGx5Q29tbWl0dGVkKCk7
CkBAIC0zNzcsNiArMzkwLDcgQEAgUV9TSUdOQUxTOgogICAgIHZvaWQgdXNlclNjcmlwdHNDaGFu
Z2VkKCk7CiAgICAgdm9pZCBwcmVmZXJyZWRNaW5pbXVtQ29udGVudHNXaWR0aENoYW5nZWQoKTsK
ICAgICB2b2lkIHJlbW90ZUluc3BlY3RvclVybENoYW5nZWQoKTsKKyAgICB2b2lkIHRleHRGb3Vu
ZChpbnQgbWF0Y2hDb3VudCk7CiAKIHByaXZhdGU6CiAgICAgUVF1aWNrV2ViVmlld0V4cGVyaW1l
bnRhbChRUXVpY2tXZWJWaWV3KiB3ZWJWaWV3LCBRUXVpY2tXZWJWaWV3UHJpdmF0ZSogd2ViVmll
d1ByaXZhdGUpOwpAQCAtMzkxLDQgKzQwNSw2IEBAIHByaXZhdGU6CiAgICAgUV9ERUNMQVJFX1BV
QkxJQyhRUXVpY2tXZWJWaWV3KQogfTsKIAorUV9ERUNMQVJFX09QRVJBVE9SU19GT1JfRkxBR1Mo
UVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6RmluZEZsYWdzKQorCiAjZW5kaWYgLy8gcXF1aWNr
d2Vidmlld19wX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlld19wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlld19wX3AuaAppbmRleCBhZGVkYjZhLi44NTFkOWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCkBAIC04NCw2
ICs4NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEZhaWwoY29uc3QgV2Vi
S2l0OjpRdFdlYkVycm9yJiBlcnJvcik7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZU1vdXNlRXZl
bnQoUU1vdXNlRXZlbnQqKTsKIAorICAgIHZvaWQgZGlkRmluZFN0cmluZyh1bnNpZ25lZCBtYXRj
aENvdW50KTsKKwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMo
Y29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKSB7IH0KIAogICAgIGludCBs
b2FkUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX2xvYWRQcm9ncmVzczsgfQpAQCAtMTY2LDYg
KzE2OCw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8UVdlYlByZWZlcmVuY2VzPiBwcmVmZXJl
bmNlczsKIAogICAgIFFTY29wZWRQb2ludGVyPFdlYktpdDo6UXRXZWJQYWdlTG9hZENsaWVudD4g
cGFnZUxvYWRDbGllbnQ7CisgICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFdlYlBhZ2VGaW5k
Q2xpZW50PiBwYWdlRmluZENsaWVudDsKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJLaXQ6OlF0V2Vi
UGFnZVBvbGljeUNsaWVudD4gcGFnZVBvbGljeUNsaWVudDsKICAgICBRU2NvcGVkUG9pbnRlcjxX
ZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50PiBwYWdlVUlDbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3Rf
ZmluZFRleHQucW1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0
ZXN0cy9XZWJWaWV3L3RzdF9maW5kVGV4dC5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjFlYTE1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfZmluZFRleHQucW1sCkBAIC0w
LDAgKzEsMTQ1IEBACitpbXBvcnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBv
cnQgUXRXZWJLaXQgMy4wCitpbXBvcnQgUXRXZWJLaXQuZXhwZXJpbWVudGFsIDEuMAoraW1wb3J0
ICIuLi9jb21tb24iCisKK1Rlc3RXZWJWaWV3IHsKKyAgICBpZDogd2ViVmlldworICAgIHdpZHRo
OiA0MDAKKyAgICBoZWlnaHQ6IDMwMAorCisgICAgcHJvcGVydHkgaW50IG1hdGNoQ291bnQ6IC0x
CisgICAgcHJvcGVydHkgYm9vbCBmaW5kRmFpbGVkOiBmYWxzZQorICAgIGZ1bmN0aW9uIGNsZWFy
KCkgeworICAgICAgICB0ZXh0Rm91bmRTcHkuY2xlYXIoKQorICAgICAgICBmaW5kRmFpbGVkID0g
ZmFsc2UKKyAgICAgICAgbWF0Y2hDb3VudCA9IC0xCisgICAgfQorCisgICAgU2lnbmFsU3B5IHsK
KyAgICAgICAgaWQ6IHRleHRGb3VuZFNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcuZXhwZXJp
bWVudGFsCisgICAgICAgIHNpZ25hbE5hbWU6ICJ0ZXh0Rm91bmQiCisgICAgfQorCisgICAgZXhw
ZXJpbWVudGFsLm9uVGV4dEZvdW5kOiB7CisgICAgICAgIHdlYlZpZXcubWF0Y2hDb3VudCA9IG1h
dGNoQ291bnQKKyAgICAgICAgZmluZEZhaWxlZCA9IG1hdGNoQ291bnQgPT0gMAorICAgIH0KKyAg
ICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJXZWJWaWV3RmluZFRleHQiCisKKyAgICAgICAg
ZnVuY3Rpb24gdGVzdF9maW5kVGV4dCgpIHsKKyAgICAgICAgICAgIHZhciBmaW5kRmxhZ3MgPSBX
ZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRIaWdobGlnaHRBbGxPY2N1cnJlbmNlcyB8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRDYXNlU2Vuc2l0
aXZlbHkKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy51
cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3QxLmh0bWwiKQorICAgICAgICAgICAg
dmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAgIHdlYlZp
ZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJIZWxsbyIsIGZpbmRGbGFncykKKyAgICAgICAgICAg
IHRleHRGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUodGV4dEZvdW5kU3B5LmNv
dW50LCAxKQorICAgICAgICAgICAgY29tcGFyZShtYXRjaENvdW50LCAxKQorICAgICAgICB9Cisg
ICAgICAgIGZ1bmN0aW9uIHRlc3RfZmluZFRleHRDYXNlSW5zZW5zaXRpdmUoKSB7CisgICAgICAg
ICAgICB2YXIgZmluZEZsYWdzID0gMAorCisgICAgICAgICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAg
ICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0MS5o
dG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkp
CisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5maW5kVGV4dCgiaGVMTG8iLCBmaW5k
RmxhZ3MpCisgICAgICAgICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21w
YXJlKHRleHRGb3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3Vu
dCwgMSkKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiB0ZXN0X2ZpbmRUZXh0TWFueU1hdGNo
ZXMoKSB7CisgICAgICAgICAgICB2YXIgZmluZEZsYWdzID0gV2ViVmlld0V4cGVyaW1lbnRhbC5G
aW5kSGlnaGxpZ2h0QWxsT2NjdXJyZW5jZXMKKyAgICAgICAgICAgIHdlYlZpZXcuY2xlYXIoKQor
ICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3Q0
Lmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQo
KSkKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEiLCBmaW5k
RmxhZ3MpCisgICAgICAgICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21w
YXJlKHRleHRGb3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3Vu
dCwgMTAwKQorICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIHRlc3RfZmluZFRleHRCYWNrd2Fy
ZCgpIHsKKyAgICAgICAgICAgIHZhciBmaW5kRmxhZ3MgPSBXZWJWaWV3RXhwZXJpbWVudGFsLkZp
bmRIaWdobGlnaHRBbGxPY2N1cnJlbmNlcworICAgICAgICAgICAgd2ViVmlldy5jbGVhcigpCisg
ICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDQu
aHRtbCIpCisgICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgp
KQorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZmluZFRleHQoImJsYTAiLCBmaW5k
RmxhZ3MpCisgICAgICAgICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21w
YXJlKHRleHRGb3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3Vu
dCwgMTApCisgICAgICAgICAgICBmb3IodmFyIGk9MDsgaSA8IDk7IGkrKykgeworICAgICAgICAg
ICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEwIiwgZmluZEZsYWdzKQor
ICAgICAgICAgICAgICAgIHRleHRGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNvbXBhcmUodGV4dEZvdW5kU3B5LmNvdW50LCAxMCkKKyAgICAgICAgICAgIHdlYlZp
ZXcuZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEwIiwgZmluZEZsYWdzKQorICAgICAgICAgICAg
dGV4dEZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh0ZXh0Rm91bmRTcHkuY291
bnQsIDExKQorICAgICAgICAgICAgY29tcGFyZShmaW5kRmFpbGVkLCB0cnVlKQorCisgICAgICAg
ICAgICB3ZWJWaWV3LmNsZWFyKCkKKyAgICAgICAgICAgIGZpbmRGbGFncyB8PSBXZWJWaWV3RXhw
ZXJpbWVudGFsLkZpbmRCYWNrd2FyZAorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwu
ZmluZFRleHQoImJsYTAiLCBmaW5kRmxhZ3MpCisgICAgICAgICAgICB0ZXh0Rm91bmRTcHkud2Fp
dCgpCisgICAgICAgICAgICBjb21wYXJlKHRleHRGb3VuZFNweS5jb3VudCwgMSkKKyAgICAgICAg
fQorICAgICAgICBmdW5jdGlvbiB0ZXN0X2ZpbmRUZXh0RmFpbE5vV3JhcCgpIHsKKyAgICAgICAg
ICAgIHZhciBmaW5kRmxhZ3MgPSBXZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRIaWdobGlnaHRBbGxP
Y2N1cnJlbmNlcworICAgICAgICAgICAgd2ViVmlldy5jbGVhcigpCisgICAgICAgICAgICB3ZWJW
aWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDQuaHRtbCIpCisgICAgICAg
ICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAgICAgICAg
d2ViVmlldy5leHBlcmltZW50YWwuZmluZFRleHQoImJsYTAiLCBmaW5kRmxhZ3MpCisgICAgICAg
ICAgICB0ZXh0Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHRleHRGb3VuZFNw
eS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMTApCisgICAgICAg
ICAgICBmb3IodmFyIGk9MDsgaSA8IDk7IGkrKykgeworICAgICAgICAgICAgICAgIHdlYlZpZXcu
ZXhwZXJpbWVudGFsLmZpbmRUZXh0KCJibGEwIiwgZmluZEZsYWdzKQorICAgICAgICAgICAgICAg
IHRleHRGb3VuZFNweS53YWl0KCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbXBhcmUo
dGV4dEZvdW5kU3B5LmNvdW50LCAxMCkKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFs
LmZpbmRUZXh0KCJibGEwIiwgZmluZEZsYWdzKQorICAgICAgICAgICAgdGV4dEZvdW5kU3B5Lndh
aXQoKQorICAgICAgICAgICAgY29tcGFyZSh0ZXh0Rm91bmRTcHkuY291bnQsIDExKQorICAgICAg
ICAgICAgY29tcGFyZShmaW5kRmFpbGVkLCB0cnVlKQorICAgICAgICB9CisgICAgICAgIGZ1bmN0
aW9uIHRlc3RfZmluZFRleHRXcmFwKCkgeworICAgICAgICAgICAgdmFyIGZpbmRGbGFncyA9IFdl
YlZpZXdFeHBlcmltZW50YWwuRmluZEhpZ2hsaWdodEFsbE9jY3VycmVuY2VzCisgICAgICAgICAg
ICBmaW5kRmxhZ3MgfD0gV2ViVmlld0V4cGVyaW1lbnRhbC5GaW5kV3JhcHNBcm91bmREb2N1bWVu
dAorICAgICAgICAgICAgd2ViVmlldy5jbGVhcigpCisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9
IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDQuaHRtbCIpCisgICAgICAgICAgICB2ZXJp
Znkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAgICAgICAgd2ViVmlldy5l
eHBlcmltZW50YWwuZmluZFRleHQoImJsYTAiLCBmaW5kRmxhZ3MpCisgICAgICAgICAgICB0ZXh0
Rm91bmRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHRleHRGb3VuZFNweS5jb3VudCwg
MSkKKyAgICAgICAgICAgIGNvbXBhcmUobWF0Y2hDb3VudCwgMTApCisgICAgICAgICAgICBmb3Io
dmFyIGk9MDsgaSA8IDE5OyBpKyspIHsKKyAgICAgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1l
bnRhbC5maW5kVGV4dCgiYmxhMCIsIGZpbmRGbGFncykKKyAgICAgICAgICAgICAgICB0ZXh0Rm91
bmRTcHkud2FpdCgpCisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21wYXJlKHRleHRGb3Vu
ZFNweS5jb3VudCwgMjApCisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5kVGV4
dEZhaWxDYXNlU2Vuc2l0aXZlKCkgeworICAgICAgICAgICAgdmFyIGZpbmRGbGFncyA9IFdlYlZp
ZXdFeHBlcmltZW50YWwuRmluZENhc2VTZW5zaXRpdmVseQorICAgICAgICAgICAgd2ViVmlldy5j
bGVhcigpCisgICAgICAgICAgICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21t
b24vdGVzdDEuaHRtbCIpCisgICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1
Y2NlZWRlZCgpKQorICAgICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZmluZFRleHQoImhl
TExvIiwgZmluZEZsYWdzKQorICAgICAgICAgICAgdGV4dEZvdW5kU3B5LndhaXQoKQorICAgICAg
ICAgICAgY29tcGFyZSh0ZXh0Rm91bmRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJl
KGZpbmRGYWlsZWQsIHRydWUpCisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdF9maW5k
VGV4dE5vdEZvdW5kKCkgeworICAgICAgICAgICAgd2ViVmlldy5jbGVhcigpCisgICAgICAgICAg
ICB3ZWJWaWV3LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vdGVzdDEuaHRtbCIpCisg
ICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAg
ICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuZmluZFRleHQoInN0cmluZy10aGF0LWlzLW5vdC10
aHJlcmUiKQorICAgICAgICAgICAgdGV4dEZvdW5kU3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZSh0ZXh0Rm91bmRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKGZpbmRGYWls
ZWQsIHRydWUpCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlRmluZENsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODVlMWU2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xpZW50LmNwcApAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDEyIEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21w
YW55LCBMLlAuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXRXZWJQYWdlRmlu
ZENsaWVudC5oIgorCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitRdFdlYlBhZ2VGaW5kQ2xp
ZW50OjpRdFdlYlBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBRUXVpY2tXZWJWaWV3
KiB3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCit7CisgICAgV0tQYWdlRmluZENs
aWVudCBmaW5kQ2xpZW50OworICAgIG1lbXNldCgmZmluZENsaWVudCwgMCwgc2l6ZW9mKFdLUGFn
ZUZpbmRDbGllbnQpKTsKKyAgICBmaW5kQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlRmluZENsaWVu
dEN1cnJlbnRWZXJzaW9uOworICAgIGZpbmRDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAg
ZmluZENsaWVudC5kaWRGaW5kU3RyaW5nID0gZGlkRmluZFN0cmluZzsKKyAgICBmaW5kQ2xpZW50
LmRpZEZhaWxUb0ZpbmRTdHJpbmcgPSBkaWRGYWlsVG9GaW5kU3RyaW5nOworICAgIFdLUGFnZVNl
dFBhZ2VGaW5kQ2xpZW50KHBhZ2VSZWYsICZmaW5kQ2xpZW50KTsKK30KKwordm9pZCBRdFdlYlBh
Z2VGaW5kQ2xpZW50OjpkaWRGaW5kU3RyaW5nKHVuc2lnbmVkIG1hdGNoQ291bnQpCit7CisgICAg
bV93ZWJWaWV3LT5kX2Z1bmMoKS0+ZGlkRmluZFN0cmluZyhtYXRjaENvdW50KTsKK30KKworc3Rh
dGljIFF0V2ViUGFnZUZpbmRDbGllbnQqIHRvUXRXZWJQYWdlRmluZENsaWVudChjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIEFTU0VSVChjbGllbnRJbmZvKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxRdFdlYlBhZ2VGaW5kQ2xpZW50Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpOworfQorCit2b2lkIFF0V2ViUGFnZUZpbmRDbGllbnQ6OmRpZEZpbmRTdHJpbmco
V0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN0cmluZywgdW5zaWduZWQgbWF0Y2hDb3VudCwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB0b1F0V2ViUGFnZUZpbmRDbGllbnQoY2xp
ZW50SW5mbyktPmRpZEZpbmRTdHJpbmcobWF0Y2hDb3VudCk7Cit9CisKK3ZvaWQgUXRXZWJQYWdl
RmluZENsaWVudDo6ZGlkRmFpbFRvRmluZFN0cmluZyhXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYgc3RyaW5nLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHRvUXRXZWJQYWdlRmlu
ZENsaWVudChjbGllbnRJbmZvKS0+ZGlkRmluZFN0cmluZygwKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2Via2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlRmluZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZp
bmRDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWMwMjcyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUZp
bmRDbGllbnQuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyIEhl
d2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55LCBMLlAuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0V2Vi
UGFnZUZpbmRDbGllbnRfaAorI2RlZmluZSBRdFdlYlBhZ2VGaW5kQ2xpZW50X2gKKworI2luY2x1
ZGUgPFdLUGFnZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitjbGFzcyBR
UXVpY2tXZWJWaWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUXRXZWJQYWdlRmlu
ZENsaWVudCB7CitwdWJsaWM6CisgICAgUXRXZWJQYWdlRmluZENsaWVudChXS1BhZ2VSZWYsIFFR
dWlja1dlYlZpZXcqKTsKKworcHJpdmF0ZToKKworICAgIHZvaWQgZGlkRmluZFN0cmluZyh1bnNp
Z25lZCBtYXRjaENvdW50KTsKKworICAgIC8vIFdLUGFnZUZpbmRDbGllbnQgY2FsbGJhY2tzLgor
ICAgIHN0YXRpYyB2b2lkIGRpZEZpbmRTdHJpbmcoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiwgdW5z
aWduZWQgbWF0Y2hDb3VudCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZv
aWQgZGlkRmFpbFRvRmluZFN0cmluZyhXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKKworICAgIFFRdWlja1dlYlZpZXcqIG1fd2ViVmlldzsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYmtpdAorCisjZW5kaWYgLy8gUXRXZWJQYWdlRmluZENsaWVudF9oCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjVjNDA5
Zi4uMTE3Y2I3OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTExLTIwICBIZWlra2kgUGFhamFuZW4gIDxoZWlr
a2kucGFhamFuZW5AcGFsbS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIEFkZCBzaW1wbGUgVUkg
dG8gZmluZCB0ZXh0IGZyb20gcGFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTY0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGaW5kIGJhciB0aGF0IHNsaWRlcyBiZXR3ZWVuIG5hdmlnYXRpb24gYmFy
IGFuZCBXZWJWaWV3LgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5j
cHA6CisgICAgICAgIChCcm93c2VyV2luZG93Ojp0b2dnbGVGaW5kKToKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9xdC9Ccm93c2VyV2luZG93Lmg6CisgICAgICAgIChCcm93c2VyV2luZG93KToKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5xcmM6CisgICAgICAgICogTWluaUJy
b3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHA6CisgICAgICAgIChNaW5pQnJvd3Nl
ckFwcGxpY2F0aW9uOjpub3RpZnkpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L2ljb25zL2Zp
bmQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRv
dy5xbWw6CisKIDIwMTItMTEtMTkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJlbW92ZSBJRExTdHJ1Y3R1cmUucG0KZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJv
d3NlcldpbmRvdy5jcHAKaW5kZXggNzA3NTBjNi4uMWJkNWI5ZSAxMDA2NDQKLS0tIGEvVG9vbHMv
TWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvQnJvd3NlcldpbmRvdy5jcHAKQEAgLTEwNCw2ICsxMDQsMTEgQEAgdm9pZCBCcm93c2VyV2lu
ZG93Ojpmb2N1c0FkZHJlc3NCYXIoKQogICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2Qocm9v
dE9iamVjdCgpLCAiZm9jdXNBZGRyZXNzQmFyIiwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOwogfQog
Cit2b2lkIEJyb3dzZXJXaW5kb3c6OnRvZ2dsZUZpbmQoKQoreworICAgIFFNZXRhT2JqZWN0Ojpp
bnZva2VNZXRob2Qocm9vdE9iamVjdCgpLCAidG9nZ2xlRmluZCIsIFF0OjpEaXJlY3RDb25uZWN0
aW9uKTsKK30KKwogQnJvd3NlcldpbmRvdyogQnJvd3NlcldpbmRvdzo6bmV3V2luZG93KGNvbnN0
IFFTdHJpbmcmIHVybCkKIHsKICAgICBCcm93c2VyV2luZG93KiB3aW5kb3cgPSBuZXcgQnJvd3Nl
cldpbmRvdyhtX3dpbmRvd09wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvQnJvd3NlcldpbmRvdy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5o
CmluZGV4IDBmMzBlMmMuLmU3NjE3NjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0
L0Jyb3dzZXJXaW5kb3cuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93
LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZChjb25zdCBRU3RyaW5n
JiB1cmwpOwogICAgIHZvaWQgcmVsb2FkKCk7CiAgICAgdm9pZCBmb2N1c0FkZHJlc3NCYXIoKTsK
KyAgICB2b2lkIHRvZ2dsZUZpbmQoKTsKICAgICBRUXVpY2tXZWJWaWV3KiB3ZWJWaWV3KCkgY29u
c3Q7CiAgICAgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCogd2ViVmlld0V4cGVyaW1lbnRhbCgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5x
cmMgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5xcmMKaW5kZXggZTIxZWVmMy4u
M2ZhNjIwOCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucXJj
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnFyYwpAQCAtNCw2ICs0LDcg
QEAKICAgICAgICAgPGZpbGU+aWNvbnMvY2hlY2tib3hfdW5jaGVja2VkLnBuZzwvZmlsZT4KICAg
ICAgICAgPGZpbGU+aWNvbnMvY29udGVudHNfd2lkdGgucG5nPC9maWxlPgogICAgICAgICA8Zmls
ZT5pY29ucy9mYXZpY29uLnBuZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNvbnMvZmluZC5wbmc8
L2ZpbGU+CiAgICAgICAgIDxmaWxlPmljb25zL2ZvbGRlci5wbmc8L2ZpbGU+CiAgICAgICAgIDxm
aWxlPmljb25zL2luZm8ucG5nPC9maWxlPgogICAgICAgICA8ZmlsZT5pY29ucy9uZXh0LnBuZzwv
ZmlsZT4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGlj
YXRpb24uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5j
cHAKaW5kZXggZDU0Y2Q2Ni4uYWNjZWZlNiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQv
TWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKQEAgLTEyMyw2ICsxMjMsMTAgQEAgYm9vbCBNaW5p
QnJvd3NlckFwcGxpY2F0aW9uOjpub3RpZnkoUU9iamVjdCogdGFyZ2V0LCBRRXZlbnQqIGV2ZW50
KQogICAgICAgICAgICAgYnJvd3NlcldpbmRvdy0+Zm9jdXNBZGRyZXNzQmFyKCk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICBpZiAoKGtleUV2ZW50LT5rZXko
KSA9PSBRdDo6S2V5X0YgJiYga2V5RXZlbnQtPm1vZGlmaWVycygpID09IFF0OjpDb250cm9sTW9k
aWZpZXIpIHx8IGtleUV2ZW50LT5rZXkoKSA9PSBRdDo6S2V5X0YzKSB7CisgICAgICAgICAgICBi
cm93c2VyV2luZG93LT50b2dnbGVGaW5kKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQogICAgIH0KIAogICAgIGlmIChldmVudC0+dHlwZSgpID09IFFFdmVudDo6S2V5UmVs
ZWFzZSAmJiBzdGF0aWNfY2FzdDxRS2V5RXZlbnQqPihldmVudCktPmtleSgpID09IFF0OjpLZXlf
Q29udHJvbCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvZmluZC5w
bmcgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9maW5kLnBuZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzZh
ZmEzOThiOTJkMGQ3ZWMyN2E2NDQ5MmFkNTZkMzc4YWFjZjc0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCA5MzAKemNtVjtUMTZ9LXlQKTxoOzNLfExrMDAwZTFOSkxUcTAwMCZNMDAweVMxT05hNEJY
dEc0MDAwOH5YK3VMJFg9N3NtCnowQz9Kc2xnbj0jUlRSZDVWfj9rbTYweU93I2o0TzFpIzk/QEc8
flF8Z2xLRVd1OVk/ellubGAlTGFIWD9Za1NEZQp6Y3pTMT9LR1gmM2g4LT00Sj5uciZgfmVsfWY/
WmNBbTh5Yn1EJU1tOFJIPipOUkxzSlVuVSs4fnQ4PjVlbyRxfTIKelR3VGIwPlZ+MXAyLXBsXz9O
bSNtdkFRTzl7WH5YV25WYFVnPnFUTClVUzklbSElKj4kYz03YFZ6YGRFQj47RC1PCnpPJk5KJD47
fTVjJGxDPHRHR3h6dHBebX00MyhRQEwheChiQWZ4Sz80dTBkYDtrWiV1aThfMkhAQC1tUnUlZ3pH
aQp6OG8qMGwkOEFFYzE1QkB7QE9DTzZjbU48QG00VmQwQyFBX1kpT0VNekUxOXpVZzdXezJQMVBJ
Q2Rse0d2PEJ8ZyQKejBSQ3Z7KDx7SWY3PV4yeTwjJk5TVjNob0xhZTBWMGc3dy12MUhTUldNKSN+
VTxiMihmPHE5d2ojX2VlOVR4RzwkCnorRjdVI0lsc0tgb35aKWBGI1piVGBjTm1jRkhwNm1mcXYk
TWo0SjB3Yyp7UyVJSyozX3N4Si1uR2F1PW12alYmaAp6blF2V1BzU2YhTVdVdztxJjFSWnpgN0FJ
QyoodkhzRyViNy0wKjVMazFYVXlmNTdHRXxiZzg1MWojK0lVajtqfngKekFyVXk3cip5Tj5uQFV1
IT5rR2NPZWRFekgtUUNvYkhqKTUybz5FUG5CUjBtJjhOeCoyJmI4Yjc1ez4panRAckx0Cnotbm04
KmdgJG1RNk55aU5CdVhpeUpoWHpGZysjJkl6VlMkWVNiSXxBYGdEVFlLaWE/OV93Q1FedWsyc3tX
az5Eagp6YzJyRXdtanBZeW1uYz9JVn4wRGxkPXgkXzFvJkorcUtSLSgxWUFMK2NRTldWVW8jSnhp
e19qO2sxJFZ+cl8yKigKeipfPD1xRz96dlV0NzRVe0JFb3ZabnpzJkZYUkttITZZSFE9dyZ0eWFS
Xl4hJkBLU2U4em8xTzlXTklUYnRSc29vCnpLO3lIOEw9aG4mbVh+OUlnPkhDN2B8VkNGNCVfeHxR
NEIqUiNiViZpUDc3QmxxNVhDemopYXp4KUxYSlNPSmo5Uwp6NDhHJUkyTG13blkkc1UhSG9XeWFX
Ylk9fVNgV1U3VkRIZmNuPH5JN3BUVnRUVVFjZmd8Rj5hJDReaXZMO2xYTEwKejFpN0Y0e2xeRGoq
Qys3dzw5YDNvRloldGJVcWJjKWU1ZHtmc1VyJjN4KVorRzAwMDAyVm9PSXYwUk0tTiUpYkJ0Cnow
MTBxTlMjdG1ZM2xqaFUzbGprVm53JUhfMDAwTWNObGlydSt6QVp7NCp7dGgrbH5NTDA0cXNFS355
TnVWXz83bwp6Km83SSQyYUc3WnxNPUF+a3p6Nm41JXd7VlclM3xWSlF7Ul5QJS1UUTBHdDI8S0x1
YS0je2Q4VDA3KnFvTTZOPCQKRWcyV0BNKlo9P2sKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbCBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbAppbmRleCBjNzMzMDhlLi5i
YzU5NTg3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRv
dy5xbWwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sCkBA
IC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAoQykgMjAxMCBVbml2
ZXJzaXR5IG9mIFN6ZWdlZAorICogQ29weXJpZ2h0IChjKSAyMDEyIEhld2xldHQtUGFja2FyZCBE
ZXZlbG9wbWVudCBDb21wYW55LCBMLlAuCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CkBAIC01NCw3ICs1NSwxNjMgQEAgUmVjdGFuZ2xlIHsKICAgICAgICAgYWRkcmVzc0xpbmUuZm9y
Y2VBY3RpdmVGb2N1cygpCiAgICAgICAgIGFkZHJlc3NMaW5lLnNlbGVjdEFsbCgpCiAgICAgfQor
ICAgIGZ1bmN0aW9uIHRvZ2dsZUZpbmQoKSB7CisgICAgICAgIGZpbmRCYXIudG9nZ2xlKCkKKyAg
ICB9CisgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgaWQ6IGZpbmRCYXIKKyAgICAgICAgejogd2Vi
Vmlldy56ICsgMQorICAgICAgICB5OiBuYXZpZ2F0aW9uQmFyLnkKKyAgICAgICAgYW5jaG9ycyB7
CisgICAgICAgICAgICBsZWZ0OiBwYXJlbnQubGVmdAorICAgICAgICAgICAgcmlnaHQ6IHBhcmVu
dC5yaWdodAorICAgICAgICB9CisgICAgICAgIGhlaWdodDogbmF2aWdhdGlvbkJhci5oZWlnaHQK
KyAgICAgICAgY29sb3I6ICIjZWZlZmVmIgorICAgICAgICB2aXNpYmxlOiB5ID4gbmF2aWdhdGlv
bkJhci55CisKKyAgICAgICAgQmVoYXZpb3Igb24geSB7TnVtYmVyQW5pbWF0aW9uIHtkdXJhdGlv
bjogMjUwfX0KKworICAgICAgICBmdW5jdGlvbiB0b2dnbGUoKSB7CisgICAgICAgICAgICBpZiAo
eSA9PSBuYXZpZ2F0aW9uQmFyLnkpIHsKKyAgICAgICAgICAgICAgICBmaW5kVGV4dElucHV0LmZv
cmNlQWN0aXZlRm9jdXMoKQorICAgICAgICAgICAgICAgIHkgKz0gaGVpZ2h0CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdlYlZpZXcuZm9yY2VBY3RpdmVGb2N1cygpCisg
ICAgICAgICAgICAgICAgeSA9IG5hdmlnYXRpb25CYXIueQorICAgICAgICAgICAgICAgIGZpbmQo
IiIsMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAorICAgICAgICBmdW5jdGlvbiBmaW5k
KHN0ciwgb3B0aW9ucykgeworICAgICAgICAgICAgdmFyIGZpbmRPcHRpb25zID0gb3B0aW9ucyB8
IFdlYlZpZXdFeHBlcmltZW50YWwuRmluZEhpZ2hsaWdodEFsbE9jY3VycmVuY2VzCisgICAgICAg
ICAgICBmaW5kT3B0aW9ucyB8PSBXZWJWaWV3RXhwZXJpbWVudGFsLkZpbmRXcmFwc0Fyb3VuZERv
Y3VtZW50CisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5maW5kVGV4dChzdHIsIGZp
bmRPcHRpb25zKQorICAgICAgICB9CisKKyAgICAgICAgQ29ubmVjdGlvbnMgeworICAgICAgICAg
ICAgdGFyZ2V0OiB3ZWJWaWV3LmV4cGVyaW1lbnRhbAorICAgICAgICAgICAgb25UZXh0Rm91bmQ6
IHsKKyAgICAgICAgICAgICAgICBmYWlsZWRPdmVybGF5LnZpc2libGUgPSBtYXRjaENvdW50ID09
IDAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBJdGVtIHsKKyAgICAgICAgICAg
IGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAg
ICAgICAgIGlkOiBpbnB1dEFyZWEKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDI2CisgICAgICAg
ICAgICAgICAgYW5jaG9ycyB7CisgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHBhcmVudC5sZWZ0
CisgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBwcmV2QnV0dG9uLmxlZnQKKyAgICAgICAgICAg
ICAgICAgICAgbWFyZ2luczogNgorICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbENlbnRlcjog
cGFyZW50LnZlcnRpY2FsQ2VudGVyCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGNvbG9yOiAid2hpdGUiCisgICAgICAgICAgICAgICAgYm9yZGVyLndpZHRoOiAxCisgICAgICAg
ICAgICAgICAgYm9yZGVyLmNvbG9yOiAiI2JmYmZiZiIKKyAgICAgICAgICAgICAgICByYWRpdXM6
IDMKKyAgICAgICAgICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAgICAgICAgICAgICBpZDog
ZmFpbGVkT3ZlcmxheQorICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAor
ICAgICAgICAgICAgICAgICAgICBjb2xvcjogInJlZCIKKyAgICAgICAgICAgICAgICAgICAgb3Bh
Y2l0eTogMC41CisgICAgICAgICAgICAgICAgICAgIHJhZGl1czogNgorICAgICAgICAgICAgICAg
ICAgICB2aXNpYmxlOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBU
ZXh0SW5wdXQgeworICAgICAgICAgICAgICAgICAgICBpZDogZmluZFRleHRJbnB1dAorICAgICAg
ICAgICAgICAgICAgICBjbGlwOiB0cnVlCisgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJ5TW91
c2U6IHRydWUKKyAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogVGV4dElu
cHV0LkFsaWduTGVmdAorICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAor
ICAgICAgICAgICAgICAgICAgICBhbmNob3JzLm1hcmdpbnM6IDMKKyAgICAgICAgICAgICAgICAg
ICAgZm9udCB7CisgICAgICAgICAgICAgICAgICAgICAgICBwb2ludFNpemU6IDExCisgICAgICAg
ICAgICAgICAgICAgICAgICBmYW1pbHk6ICJTYW5zIgorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIHRleHQ6ICIiCisgICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5
OiAhZmluZEJhci52aXNpYmxlCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGRvRmluZCgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmluZEJhci52aXNpYmxlKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmRUZXh0SW5wdXQudGV4dCA9PSAiIikg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZE92ZXJsYXkudmlzaWJsZSA9IGZh
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBm
aW5kQmFyLmZpbmQoZmluZFRleHRJbnB1dC50ZXh0KQorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIG9uVGV4dENoYW5nZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRvRmluZCgpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
S2V5cy5vblJldHVyblByZXNzZWQ6eworICAgICAgICAgICAgICAgICAgICAgICAgZG9GaW5kKCkK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgaWQ6IHByZXZCdXR0b24K
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IGlucHV0QXJlYS5oZWlnaHQKKyAgICAgICAgICAgICAg
ICB3aWR0aDogaGVpZ2h0CisgICAgICAgICAgICAgICAgYW5jaG9ycy5yaWdodDogbmV4dEJ1dHRv
bi5sZWZ0CisgICAgICAgICAgICAgICAgYW5jaG9ycy52ZXJ0aWNhbENlbnRlcjogcGFyZW50LnZl
cnRpY2FsQ2VudGVyCisgICAgICAgICAgICAgICAgY29sb3I6ICIjZWZlZmVmIgorICAgICAgICAg
ICAgICAgIHJhZGl1czogNgorCisgICAgICAgICAgICAgICAgSW1hZ2UgeworICAgICAgICAgICAg
ICAgICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgc291
cmNlOiAiLi4vaWNvbnMvcHJldmlvdXMucG5nIgorICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDog
cGFyZW50CisgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBwYXJlbnQuY29sb3IKKyAgICAgICAg
ICAgICAgICAgICAgcmFkaXVzOiBwYXJlbnQucmFkaXVzCisgICAgICAgICAgICAgICAgICAgIG9w
YWNpdHk6IDAuOAorICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiAhcGFyZW50LmVuYWJsZWQK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBNb3VzZUFyZWEgeworICAgICAg
ICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBv
blByZXNzZWQ6IHsgaWYgKHBhcmVudC5lbmFibGVkKSBwYXJlbnQuY29sb3IgPSAiI2NmY2ZjZiIg
fQorICAgICAgICAgICAgICAgICAgICBvblJlbGVhc2VkOiB7IHBhcmVudC5jb2xvciA9ICIjZWZl
ZmVmIiB9CisgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2tlZDogeworICAgICAgICAgICAgICAg
ICAgICAgICAgZmluZEJhci5maW5kKGZpbmRUZXh0SW5wdXQudGV4dCwgV2ViVmlld0V4cGVyaW1l
bnRhbC5GaW5kQmFja3dhcmQpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAgICAg
ICAgIGlkOiBuZXh0QnV0dG9uCisgICAgICAgICAgICAgICAgaGVpZ2h0OiBpbnB1dEFyZWEuaGVp
Z2h0CisgICAgICAgICAgICAgICAgd2lkdGg6IGhlaWdodAorICAgICAgICAgICAgICAgIGFuY2hv
cnMucmlnaHQ6IHBhcmVudC5yaWdodAorICAgICAgICAgICAgICAgIGFuY2hvcnMudmVydGljYWxD
ZW50ZXI6IHBhcmVudC52ZXJ0aWNhbENlbnRlcgorICAgICAgICAgICAgICAgIGNvbG9yOiAiI2Vm
ZWZlZiIKKyAgICAgICAgICAgICAgICByYWRpdXM6IDYKKworICAgICAgICAgICAgICAgIEltYWdl
IHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5jZW50ZXJJbjogcGFyZW50CisgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZTogIi4uL2ljb25zL25leHQucG5nIgorICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgICAgIGFu
Y2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBwYXJlbnQuY29s
b3IKKyAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiBwYXJlbnQucmFkaXVzCisgICAgICAgICAg
ICAgICAgICAgIG9wYWNpdHk6IDAuOAorICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiAhcGFy
ZW50LmVuYWJsZWQKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBNb3VzZUFy
ZWEgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAg
ICAgICAgICAgICBvblByZXNzZWQ6IHsgaWYgKHBhcmVudC5lbmFibGVkKSBwYXJlbnQuY29sb3Ig
PSAiI2NmY2ZjZiIgfQorICAgICAgICAgICAgICAgICAgICBvblJlbGVhc2VkOiB7IHBhcmVudC5j
b2xvciA9ICIjZWZlZmVmIiB9CisgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2tlZDogeworICAg
ICAgICAgICAgICAgICAgICAgICAgZmluZEJhci5maW5kKGZpbmRUZXh0SW5wdXQudGV4dCwgMCkK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KICAgICBSZWN0YW5nbGUgewogICAgICAgICBpZDogbmF2aWdhdGlv
bkJhcgogICAgICAgICBjb2xvcjogIiNlZmVmZWYiCkBAIC0yMTMsNiArMzcwLDI3IEBAIFJlY3Rh
bmdsZSB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAg
ICAgICAgICAgaWQ6IGZpbmRCdXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6IHBhcmVudC5o
ZWlnaHQKKyAgICAgICAgICAgICAgICB3aWR0aDogaGVpZ2h0CisgICAgICAgICAgICAgICAgY29s
b3I6ICIjZWZlZmVmIgorICAgICAgICAgICAgICAgIHJhZGl1czogNgorCisgICAgICAgICAgICAg
ICAgSW1hZ2UgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQK
KyAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMC42CisgICAgICAgICAgICAgICAgICAgIHNv
dXJjZTogIi4uL2ljb25zL2ZpbmQucG5nIgorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIE1vdXNlQXJlYSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFy
ZW50CisgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2tlZDogeworICAgICAgICAgICAgICAgICAg
ICAgICAgZmluZEJhci50b2dnbGUoKQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZWN0YW5nbGUgewogICAgICAg
ICAgICAgICAgIGlkOiB0b3VjaEV2ZW50c0J1dHRvbgogICAgICAgICAgICAgICAgIGhlaWdodDog
cGFyZW50LmhlaWdodAogICAgICAgICAgICAgICAgIHdpZHRoOiBoZWlnaHQKQEAgLTMzNSw3ICs1
MTMsNyBAQCBSZWN0YW5nbGUgewogICAgICAgICBjbGlwOiBmYWxzZQogCiAgICAgICAgIGFuY2hv
cnMgewotICAgICAgICAgICAgdG9wOiBuYXZpZ2F0aW9uQmFyLmJvdHRvbQorICAgICAgICAgICAg
dG9wOiBmaW5kQmFyLmJvdHRvbQogICAgICAgICAgICAgbGVmdDogcGFyZW50LmxlZnQKICAgICAg
ICAgICAgIHJpZ2h0OiBwYXJlbnQucmlnaHQKICAgICAgICAgICAgIGJvdHRvbTogcGFyZW50LmJv
dHRvbQotLSAKMS43LjkuNQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>