<?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>57820</bug_id>
          
          <creation_ts>2011-04-05 01:41:48 -0700</creation_ts>
          <short_desc>[GTK] Export an API similar to WebKit1</short_desc>
          <delta_ts>2011-06-13 01:57:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>57944</dependson>
          <blocked>57835</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>379375</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-05 01:41:48 -0700</bug_when>
    <thetext>Currently the minibrowser is using the common C API, we should build an API, similar to WebKit1 API or the same if possible, on top of the common C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379377</commentid>
    <comment_count>1</comment_count>
      <attachid>88190</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-05 01:50:42 -0700</bug_when>
    <thetext>Created attachment 88190
Patch

Move gtk API from UIProcess/gtk to UIProcess/API/gtk. WebView and WebViewWidget have been merged into WebKitWebView, the public view widget that provides the same API than WebKit1. PageClient implementation has been moved to PageClientImpl. WKView and WKAPICastGtk have been removed since they are no longer needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379378</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-05 01:51:47 -0700</bug_when>
    <thetext>The patch applies on top of patch attached to bug #54230</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379579</commentid>
    <comment_count>3</comment_count>
      <attachid>88190</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-05 08:24:41 -0700</bug_when>
    <thetext>Comment on attachment 88190
Patch

We want to support both the WebKit2-style and WebKit1-style API. Thus, the WebKit1 API should sit fully on top of the WebKit2 API. The WebKit1-style widget needs it&apos;s own Clients, so I&apos;d like to keep it separate from the WebKit2-widget, which should be mostly private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380309</commentid>
    <comment_count>4</comment_count>
      <attachid>88406</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-06 06:27:21 -0700</bug_when>
    <thetext>Created attachment 88406
Patch to add WebKitWebView

This patch adds WebKitWebView on top of WebKitWebViewBase (see patch attached to bug #57944). It also enables GtkLauncher build for webkit2. There are some runtime warnings when running on webkit2, but they are harmless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386490</commentid>
    <comment_count>5</comment_count>
      <attachid>89759</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-15 02:42:21 -0700</bug_when>
    <thetext>Created attachment 89759
Updated patch

Patch updated to current git master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391727</commentid>
    <comment_count>6</comment_count>
      <attachid>90909</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-25 02:36:11 -0700</bug_when>
    <thetext>Created attachment 90909
Updated patch

New patch, the only difference with previous one is that this one includes a webkit.h file for compatibility with webkit1 gtk API. GtkLauncher still uses a macro, but only for missing features, so it will be removed soon and the code will be exactly the same for webkit1 and webkit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392960</commentid>
    <comment_count>7</comment_count>
      <attachid>90909</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-26 16:16:11 -0700</bug_when>
    <thetext>Comment on attachment 90909
Updated patch

Going to remove the review flag from this one, since the changes to the dependency will almost certainly mean this needs a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395226</commentid>
    <comment_count>8</comment_count>
      <attachid>91669</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-29 05:32:45 -0700</bug_when>
    <thetext>Created attachment 91669
New patch updated to current git master

Instead of using the same GtkLauncher, it builds GtkLauncher2 so that when bug #59695 is fixed there will be two different binaries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395228</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-29 05:35:34 -0700</bug_when>
    <thetext>Attachment 91669 did not pass style-queue:

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

Source/WebKit2/UIProcess/API/gtk/webkit/webkit.h:26:  #ifndef header guard has wrong style, please use: WTF_webkit_h  [build/header_guard] [5]
Source/WebKit2/UIProcess/API/gtk/webkit/webkit.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:72:  The parameter name &quot;webView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:75:  The parameter name &quot;webView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:78:  The parameter name &quot;webView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:40:  webkit_web_view_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:45:  webkit_web_view_class_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:55:  webkit_web_view_load_uri is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:64:  webkit_web_view_go_back is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:72:  webkit_web_view_go_forward is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 18 in 12 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>396578</commentid>
    <comment_count>10</comment_count>
      <attachid>91669</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-02 13:12:27 -0700</bug_when>
    <thetext>Comment on attachment 91669
New patch updated to current git master

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:16
&gt; +/*
&gt; + * Copyright (C) 2011 Igalia S.L.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + * 1. Redistributions of source code must retain the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer.
&gt; + * 2. Redistributions in binary form must reproduce the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer in the
&gt; + *    documentation and/or other materials provided with the distribution.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
&gt; + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
&gt; + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt; + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS

Instead of duplicating this header, would it be possible to reuse the one from Webkit1?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396983</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-02 23:52:49 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 91669 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91669&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:16
&gt; &gt; +/*
&gt; &gt; + * Copyright (C) 2011 Igalia S.L.
&gt; &gt; + *
&gt; &gt; + * Redistribution and use in source and binary forms, with or without
&gt; &gt; + * modification, are permitted provided that the following conditions
&gt; &gt; + * are met:
&gt; &gt; + * 1. Redistributions of source code must retain the above copyright
&gt; &gt; + *    notice, this list of conditions and the following disclaimer.
&gt; &gt; + * 2. Redistributions in binary form must reproduce the above copyright
&gt; &gt; + *    notice, this list of conditions and the following disclaimer in the
&gt; &gt; + *    documentation and/or other materials provided with the distribution.
&gt; &gt; + *
&gt; &gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
&gt; &gt; + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
&gt; &gt; + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt; &gt; + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
&gt; 
&gt; Instead of duplicating this header, would it be possible to reuse the one from Webkit1?

Yes, sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397032</commentid>
    <comment_count>12</comment_count>
      <attachid>92059</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-03 04:05:17 -0700</bug_when>
    <thetext>Created attachment 92059
Updated patch to current git master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397177</commentid>
    <comment_count>13</comment_count>
      <attachid>92059</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-03 10:45:43 -0700</bug_when>
    <thetext>Comment on attachment 92059
Updated patch to current git master

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:21
&gt; +#include &quot;WebKitWebView.h&quot;

Why not just put the WebKit1 header in the include path instead of completely duplicating the header?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397201</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-03 11:12:06 -0700</bug_when>
    <thetext>Attachment 92059 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/UIProcess/API/gtk/WebKitWebView.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:69:  The parameter name &quot;webView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:72:  The parameter name &quot;webView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:75:  The parameter name &quot;webView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/UIProcess/API/gtk/webkit/webkit.h:20:  #ifndef header guard has wrong style, please use: WTF_webkit_h  [build/header_guard] [5]
Source/WebKit2/UIProcess/API/gtk/webkit/webkit.h:25:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:34:  webkit_web_view_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:39:  webkit_web_view_class_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:49:  webkit_web_view_load_uri is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:58:  webkit_web_view_go_back is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:66:  webkit_web_view_go_forward is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 18 in 10 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>397715</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-03 23:38:35 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 92059 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92059&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:21
&gt; &gt; +#include &quot;WebKitWebView.h&quot;
&gt; 
&gt; Why not just put the WebKit1 header in the include path instead of completely duplicating the header?

Because headers might be different in the future. The existing API in webkit1 will be kept in webkit2 to ensure the compatibility, but we might want to add new methods to the API that don&apos;t make sense in webkit1. For example, when we add a wrapper for WKContext, we could add webkit_web_view_new_with_context() to the webkit2 API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402433</commentid>
    <comment_count>16</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-11 17:00:55 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 92059 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92059&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:21
&gt; &gt; &gt; +#include &quot;WebKitWebView.h&quot;
&gt; &gt; 
&gt; &gt; Why not just put the WebKit1 header in the include path instead of completely duplicating the header?
&gt; 
&gt; Because headers might be different in the future. The existing API in webkit1 will be kept in webkit2 to ensure the compatibility, but we might want to add new methods to the API that don&apos;t make sense in webkit1. For example, when we add a wrapper for WKContext, we could add webkit_web_view_new_with_context() to the webkit2 API.

For now, I think it would be better to explore sharing as much of the headers as possible. If we need to deviate from the WebKit1 header we could simply have a wrapper include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402707</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-11 23:53:01 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; (From update of attachment 92059 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92059&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:21
&gt; &gt; &gt; &gt; +#include &quot;WebKitWebView.h&quot;
&gt; &gt; &gt; 
&gt; &gt; &gt; Why not just put the WebKit1 header in the include path instead of completely duplicating the header?
&gt; &gt; 
&gt; &gt; Because headers might be different in the future. The existing API in webkit1 will be kept in webkit2 to ensure the compatibility, but we might want to add new methods to the API that don&apos;t make sense in webkit1. For example, when we add a wrapper for WKContext, we could add webkit_web_view_new_with_context() to the webkit2 API.
&gt; 
&gt; For now, I think it would be better to explore sharing as much of the headers as possible. If we need to deviate from the WebKit1 header we could simply have a wrapper include.

How can we share a header if they are not exactly the same? both apis are supposed to be parallel installable even if the apis are similar. If we add an #ifdef WEBKIT2 to all headers, clients will have to pass that macro somehow when building.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418576</commentid>
    <comment_count>18</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-06-10 01:30:22 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; 
&gt; For now, I think it would be better to explore sharing as much of the headers as possible. If we need to deviate from the WebKit1 header we could simply have a wrapper include.

I agree sharing as much code as possible makes sense, but I think having exactly the same header for both is not possible even to begin with (among others for the reasons Carlos has explained). So IMHO some form of shared header that both wk1 and wk2 include could be the way to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418627</commentid>
    <comment_count>19</comment_count>
      <attachid>96727</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-10 03:50:43 -0700</bug_when>
    <thetext>Created attachment 96727
Patch rebased to current git master

As suggested by xan, I&apos;ve moved the common declarations to a common header file that is part of webkit1, but included from webkit2 api.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418629</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-10 03:54:04 -0700</bug_when>
    <thetext>Attachment 96727 did not pass style-queue:

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

Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/gtk/webkit/webkit.h:20:  #ifndef header guard has wrong style, please use: WTF_webkit_h  [build/header_guard] [5]
Source/WebKit2/UIProcess/API/gtk/webkit/webkit.h:25:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:34:  webkit_web_view_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:39:  webkit_web_view_class_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:49:  webkit_web_view_load_uri is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:58:  webkit_web_view_go_back is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:66:  webkit_web_view_go_forward is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 15 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418708</commentid>
    <comment_count>21</comment_count>
      <attachid>96727</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-10 07:58:22 -0700</bug_when>
    <thetext>Comment on attachment 96727
Patch rebased to current git master

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:44
&gt; +GtkWidget* webkit_web_view_new(void)

I think we should avoid the void for empty parameter lists in C++ code, if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418709</commentid>
    <comment_count>22</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-10 07:58:38 -0700</bug_when>
    <thetext>Look good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419469</commentid>
    <comment_count>23</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-13 01:57:11 -0700</bug_when>
    <thetext>Committed r88631: &lt;http://trac.webkit.org/changeset/88631&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88190</attachid>
            <date>2011-04-05 01:50:42 -0700</date>
            <delta_ts>2011-04-06 06:27:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>webkit2-api.diff</filename>
            <type>text/plain</type>
            <size>109810</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhZDIzZDU4Li4xNGM0Y2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEw
IEBACisyMDExLTA0LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RL
XSBFeHBvcnQgYW4gQVBJIHNpbWlsYXIgdG8gV2ViS2l0MQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc4MjAKKworICAgICAgICBNb3ZlIGd0ayBBUEkg
ZnJvbSBVSVByb2Nlc3MvZ3RrIHRvIFVJUHJvY2Vzcy9BUEkvZ3RrLiBXZWJWaWV3IGFuZAorICAg
ICAgICBXZWJWaWV3V2lkZ2V0IGhhdmUgYmVlbiBtZXJnZWQgaW50byBXZWJLaXRXZWJWaWV3LCB0
aGUgcHVibGljIHZpZXcKKyAgICAgICAgd2lkZ2V0IHRoYXQgcHJvdmlkZXMgdGhlIHNhbWUgQVBJ
IHRoYW4gV2ViS2l0MS4gUGFnZUNsaWVudAorICAgICAgICBpbXBsZW1lbnRhdGlvbiBoYXMgYmVl
biBtb3ZlZCB0byBQYWdlQ2xpZW50SW1wbC4gV0tWaWV3IGFuZAorICAgICAgICBXS0FQSUNhc3RH
dGsgaGF2ZSBiZWVuIHJlbW92ZWQgc2luY2UgdGhleSBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLQVBJQ2FzdEd0ay5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp+UGFnZUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OmRpc3BsYXlWaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OnNjcm9sbFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
dmlld1NpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3V2luZG93
QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmlzVmlld0ZvY3VzZWQp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdyk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OnRha2VGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp0b29sVGlw
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRDdXJzb3IpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld3BvcnRBcmd1bWVudHMpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjbGVhckFsbEVkaXRDb21tYW5kcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjb252ZXJ0VG9EZXZpY2VTcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjb252ZXJ0VG9Vc2VyU3BhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6d2luZG93VG9TY3JlZW4pOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhLZXlFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWROb3RIYW5kbGVLZXlFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OnNldEZpbmRJbmRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6cGFnZURpZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlRGlkTGVhdmVBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmdldEVkaXRvckNv
bW1hbmRzRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlk
Q29tbWl0TG9hZEZvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcik6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRDdXN0b21SZXByZXNlbnRhdGlv
blpvb21GYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3Nl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VTY3JvbGxiYXJz
Rm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmZsYXNoQmFj
a2luZ1N0b3JlVXBkYXRlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViVmll
dy5oLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnVzZXJTcGFjZVNjYWxlRmFjdG9yKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDogQWRkZWQuCisgICAgICAgICh3
ZWJraXRXZWJWaWV3UmVhbGl6ZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29udGFpbmVyQWRk
KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3RXhwb3NlKToKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdEcmF3KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdTaXplQWxsb2NhdGUpOgor
ICAgICAgICAod2Via2l0V2ViVmlld0ZvY3VzSW5FdmVudCk6CisgICAgICAgICh3ZWJraXRXZWJW
aWV3Rm9jdXNPdXRFdmVudCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3S2V5UHJlc3NFdmVudCk6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3S2V5UmVsZWFzZUV2ZW50KToKKyAgICAgICAgKGdldEV2
ZW50VGltZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QnV0dG9uUHJlc3NFdmVudCk6CisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QnV0dG9uUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdTY3JvbGxFdmVudCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TW90aW9uTm90aWZ5RXZl
bnQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0FkZFBlbmRpbmdFZGl0b3JDb21tYW5kKToKKyAgICAgICAgKGJhY2tzcGFjZUNh
bGxiYWNrKToKKyAgICAgICAgKHNlbGVjdEFsbENhbGxiYWNrKToKKyAgICAgICAgKGN1dENsaXBi
b2FyZENhbGxiYWNrKToKKyAgICAgICAgKGNvcHlDbGlwYm9hcmRDYWxsYmFjayk6CisgICAgICAg
IChwYXN0ZUNsaXBib2FyZENhbGxiYWNrKToKKyAgICAgICAgKHRvZ2dsZU92ZXJ3cml0ZUNhbGxi
YWNrKToKKyAgICAgICAgKHBvcHVwTWVudUNhbGxiYWNrKToKKyAgICAgICAgKHNob3dIZWxwQ2Fs
bGJhY2spOgorICAgICAgICAoZGVsZXRlRnJvbUN1cnNvckNhbGxiYWNrKToKKyAgICAgICAgKG1v
dmVDdXJzb3JDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3RWRpdG9ySW5pdCk6Cisg
ICAgICAgICh3ZWJLaXRXZWJWaWV3R2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudCk6CisgICAg
ICAgICh3ZWJLaXRXZWJWaWV3R2V0UGFnZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSk6CisgICAgICAgICh3ZWJraXRf
d2ViX3ZpZXdfZ29fYmFjayk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2FyZCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3V2lkZ2V0LmguCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0ZGVmaW5lcy5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OnBhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6ZW5zdXJlQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OmRy
YXdVcGRhdGVDaHVua0ludG9CYWNraW5nU3RvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
V2ViVmlldy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJWaWV3V2lk
Z2V0LmNwcDogUmVtb3ZlZC4KKwogMjAxMS0wNC0wNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29u
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZh
NWIxNTcuLjkzNTUyZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wNC0wNSAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW0dUS10gRXhwb3J0IGFuIEFQSSBzaW1pbGFyIHRvIFdlYktpdDEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3ODIwCisK
KyAgICAgICAgVXNlIFdlYktpdFdlYlZpZXcgaW5zdGVhZCBvZiB0aGUgY29tbW9uIEMgQVBJIGlu
IE1pbmlCcm93c2VyLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAg
ICAgKGFjdGl2YXRlVXJpRW50cnlDYWxsYmFjayk6CisgICAgICAgIChnb0JhY2tDYWxsYmFjayk6
CisgICAgICAgIChnb0ZvcndhcmRDYWxsYmFjayk6CisgICAgICAgIChjcmVhdGVUb29sYmFyKToK
KyAgICAgICAgKGNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChtYWluKToKKwogMjAxMS0wNC0wMiAg
QmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQg
YnkgR2VvZmYgR2FyZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5h
bSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGM0OGYzODkuLjE3MWNiNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0zNCw4ICszNCw2IEBAIGxpYldlYktpdDJfbGFfSEVB
REVSUyA9IFwKIAkkKFdlYktpdDIpL1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuaCBcCiAJJChX
ZWJLaXQyKS9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5oIFwKIAkkKFdlYktpdDIpL1NoYXJl
ZC9BUEkvYy9XS1VzZXJDb250ZW50VVJMUGF0dGVybi5oIFwKLQkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvQy9ndGsvV0tBUElDYXN0R3RrLmggXAotCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9D
L2d0ay9XS1ZpZXcuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5oIFwK
IAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBcCiAJJChXZWJLaXQyKS9V
SVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIFwKQEAgLTY5LDcgKzY3
LDggQEAgbGliV2ViS2l0Ml9sYV9IRUFERVJTID0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJvdGVjdGlvblNwYWNlLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dL
UHJvdGVjdGlvblNwYWNlVHlwZXMuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlci5oIFwKLQkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvY3BwL1dL
UmV0YWluUHRyLmgKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmgg
XAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCiAKIG5vZGlz
dF9saWJXZWJLaXQyX2xhX1NPVVJDRVMgPSBcCiAJJCh3ZWJraXQyX2J1aWx0X3NvdXJjZXMpCkBA
IC0yOTAsOSArMjg5LDYgQEAgbGliV2ViS2l0Ml9sYV9TT1VSQ0VTID0gXAogCVNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJVUkxSZXNwb25zZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJXaGVl
bEV2ZW50LmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0FQSUNh
c3RHdGsuaCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3Bw
IFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggXApAQCAtMzU0LDYgKzM1MCwxMSBAQCBs
aWJXZWJLaXQyX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2NwcC9XS1JldGFpblB0ci5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdQcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lci5jcHAgXApAQCAtMzgwLDEyICszODEsOCBAQCBsaWJXZWJLaXQyX2xh
X1NPVVJDRVMgPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3Rr
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0
b3JHdGsuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXdXaWRnZXQu
Y3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXdXaWRnZXQuaCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcCBcCi0JU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJWaWV3LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL2d0ay9UaHJlYWRMYXVuY2hlckd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwIFwKQEAgLTcwMyw3ICs3MDAsNyBA
QCBsaWJXZWJLaXQyX2xhX0NQUEZMQUdTID0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2VzcyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSSBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DIFwKLQktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrIFwKKwktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9jcHAgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Rvd25sb2FkcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElD
YXN0LmgKaW5kZXggYTQ0MGM2Zi4uOThkNzZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaApAQCAtMjkyLDcgKzI5Miw0IEBAIGlubGluZSBXS0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kgdG9BUEkoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCiAjaW5j
bHVkZSAiV0tBUElDYXN0V2luLmgiCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoQlVJTERJTkdfR1RL
X18pCi0jaW5jbHVkZSAiV0tBUElDYXN0R3RrLmgiCi0jZW5kaWYKICNlbmRpZiAvLyBXS0FQSUNh
c3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0FQ
SUNhc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tBUElDYXN0
R3RrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5YzExMzMuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0FQSUNhc3RHdGsuaAorKysg
L2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy
MDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIFdLQVBJQ2FzdEd0a19oCi0jZGVmaW5lIFdLQVBJQ2FzdEd0a19oCi0KLSNp
Zm5kZWYgV0tBUElDYXN0X2gKLSNlcnJvciAiUGxlYXNlICNpbmNsdWRlIFwiV0tBUElDYXN0Lmhc
IiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLWNsYXNzIFdlYlZpZXc7Ci0KLVdLX0FERF9BUElfTUFQUElORyhXS1ZpZXdSZWYs
IFdlYlZpZXcpCi0KLX0KLQotI2VuZGlmIC8vIFdLQVBJQ2FzdEd0a19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGUzZDZjNjkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2d0ay9XS1ZpZXcuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldLVmlldy5oIgotCi0jaW5j
bHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwotCi1XS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCi17Ci0gICAgUmVmUHRyPFdlYlZpZXc+
IHZpZXcgPSBXZWJWaWV3OjpjcmVhdGUodG9JbXBsKGNvbnRleHRSZWYpLCB0b0ltcGwocGFnZUdy
b3VwUmVmKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHZpZXcucmVsZWFzZSgpLmxlYWtSZWYoKSk7Ci19
Ci0KLUd0a1dpZGdldCogV0tWaWV3R2V0V2luZG93KFdLVmlld1JlZiB2aWV3UmVmKQotewotICAg
IHJldHVybiB0b0ltcGwodmlld1JlZiktPndpbmRvdygpOwotfQotCi1XS1BhZ2VSZWYgV0tWaWV3
R2V0UGFnZShXS1ZpZXdSZWYgdmlld1JlZikKLXsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHZp
ZXdSZWYpLT5wYWdlKCkpOwotfQotCi1XS1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhVUkwoY29uc3Qg
Y2hhciogdXJsKQotewotICAgIHJldHVybiB0b0NvcGllZFVSTEFQSShTdHJpbmdJbXBsOjpjcmVh
dGUodXJsKS5sZWFrUmVmKCkpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2d0ay9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tWaWV3LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyZTU1YWIuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuaAorKysg
L2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy
MDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tWaWV3X2gK
LSNkZWZpbmUgV0tWaWV3X2gKLQotI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+Ci0jaW5jbHVk
ZSA8Z3RrL2d0ay5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlm
Ci0KLVdLX0VYUE9SVCBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApOwotCi1XS19FWFBPUlQgR3RrV2lkZ2V0KiBXS1Zp
ZXdHZXRXaW5kb3coV0tWaWV3UmVmIHZpZXcpOwotCi1XS19FWFBPUlQgV0tQYWdlUmVmIFdLVmll
d0dldFBhZ2UoV0tWaWV3UmVmIHZpZXcpOwotCi1XS19FWFBPUlQgV0tVUkxSZWYgV0tVUkxDcmVh
dGVXaXRoVVJMKGNvbnN0IGNoYXIqKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYK
LQotI2VuZGlmIC8qIFdLVmlld19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZDdjZTNhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMCwwICsxLDI1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQ
b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisK
KyNpbmNsdWRlICJDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5oIgorI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1
ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKEd0a1dpZGdldCogd2ViVmlldykKKyAgICA6
IG1fdmlldyh3ZWJWaWV3KQoreworfQorCitQYWdlQ2xpZW50SW1wbDo6flBhZ2VDbGllbnRJbXBs
KCkKK3sKK30KKworUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpCit7CisgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyhtX3ZpZXcpOworICAgIHJldHVybiBDaHVua2VkVXBkYXRlRHJhd2lu
Z0FyZWFQcm94eTo6Y3JlYXRlKHdlYlZpZXcsIHdlYktpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcp
KTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBh
Z2VDbGllbnRJbXBsOjpkaXNwbGF5VmlldygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2Nyb2xsVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworV2ViQ29yZTo6SW50U2l6ZSBQYWdlQ2xpZW50SW1w
bDo6dmlld1NpemUoKQoreworICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbjsKKyAgICBndGtf
d2lkZ2V0X2dldF9hbGxvY2F0aW9uKG1fdmlldywgJmFsbG9jYXRpb24pOworICAgIHJldHVybiBJ
bnRTaXplKGFsbG9jYXRpb24ud2lkdGgsIGFsbG9jYXRpb24uaGVpZ2h0KTsKK30KKworYm9vbCBQ
YWdlQ2xpZW50SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdG
b2N1c2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBhZ2VDbGllbnRJbXBsOjppc1Zp
ZXdJbldpbmRvdygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJvY2Vzc0RpZENyYXNoKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWxhdW5jaFByb2Nl
c3MoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6
OnNldEZvY3VzKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQYWdl
Q2xpZW50SW1wbDo6dGFrZUZvY3VzKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBQYWdlQ2xpZW50SW1wbDo6dG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGll
bnRJbXBsOjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCit7CisgICAgLy8gW0dUS10g
V2lkZ2V0OjpzZXRDdXJzb3IoKSBnZXRzIGNhbGxlZCBmcmVxdWVudGx5CisgICAgLy8gaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzODgKKyAgICAvLyBTZXR0aW5nIHRo
ZSBjdXJzb3IgbWF5IGJlIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24gaW4gc29tZSBiYWNrZW5kcywK
KyAgICAvLyBzbyBkb24ndCByZS1zZXQgdGhlIGN1cnNvciBpZiBpdCdzIGFscmVhZHkgc2V0IHRv
IHRoZSB0YXJnZXQgdmFsdWUuCisgICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dl
dF93aW5kb3cobV92aWV3KTsKKyAgICBHZGtDdXJzb3IqIGN1cnJlbnRDdXJzb3IgPSBnZGtfd2lu
ZG93X2dldF9jdXJzb3Iod2luZG93KTsKKyAgICBHZGtDdXJzb3IqIG5ld0N1cnNvciA9IGN1cnNv
ci5wbGF0Zm9ybUN1cnNvcigpLmdldCgpOworICAgIGlmIChjdXJyZW50Q3Vyc29yICE9IG5ld0N1
cnNvcikKKyAgICAgICAgZ2RrX3dpbmRvd19zZXRfY3Vyc29yKHdpbmRvdywgbmV3Q3Vyc29yKTsK
K30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld3BvcnRBcmd1bWVudHMoY29uc3QgV2Vi
Q29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJF
ZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmNsZWFyQWxsRWRpdENvbW1h
bmRzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitGbG9hdFJlY3QgUGFnZUNsaWVu
dEltcGw6OmNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IEZsb2F0UmVjdCYgdmlld1JlY3QpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdmlld1JlY3Q7Cit9CisKK0Zsb2F0
UmVjdCBQYWdlQ2xpZW50SW1wbDo6Y29udmVydFRvVXNlclNwYWNlKGNvbnN0IEZsb2F0UmVjdCYg
dmlld1JlY3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdmlld1JlY3Q7
Cit9CisKK0ludFJlY3QgUGFnZUNsaWVudEltcGw6OndpbmRvd1RvU2NyZWVuKGNvbnN0IEludFJl
Y3QmIHJlY3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gSW50UmVjdCgp
OworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2
ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWROb3RIYW5kbGVLZXlFdmVu
dChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1w
bDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSop
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBi
b29sIGZhZGVPdXQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VEaWRFbnRlckFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUGFnZUNsaWVudEltcGw6OnBhZ2VEaWRMZWF2ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpnZXRFZGl0b3JDb21tYW5kc0Zvcktl
eUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmIGV2ZW50LCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBjb21tYW5kTGlzdCkKK3sKKyAgICB3ZWJLaXRXZWJWaWV3R2V0RWRpdG9yQ29tbWFu
ZHNGb3JLZXlFdmVudChXRUJLSVRfV0VCX1ZJRVcobV92aWV3KSwgZXZlbnQsIGNvbW1hbmRMaXN0
KTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShi
b29sIHVzZUN1c3RvbVJlcHJlc2VudGF0aW9uKQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBs
OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmKQorewor
fQorCitkb3VibGUgUGFnZUNsaWVudEltcGw6OmN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rv
cigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKGRvdWJsZSkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdl
Q2xvc2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3QKK3sKK30KKwordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKGNvbnN0IFZlY3RvcjxJ
bnRSZWN0PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZmQzY2EKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg
MjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhZ2VDbGll
bnRJbXBsX2gKKyNkZWZpbmUgUGFnZUNsaWVudEltcGxfaAorCisjaW5jbHVkZSAiUGFnZUNsaWVu
dC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIERyYXdpbmdBcmVhUHJveHk7CitjbGFzcyBXZWJQ
YWdlTmFtZXNwYWNlOworCitjbGFzcyBQYWdlQ2xpZW50SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICB+UGFnZUNsaWVudEltcGwoKTsKKyAgICBzdGF0aWMgUGFzc093blB0
cjxQYWdlQ2xpZW50SW1wbD4gY3JlYXRlKEd0a1dpZGdldCogd2ViVmlldykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZUNsaWVudEltcGwod2ViVmlldykpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBQYWdlQ2xpZW50SW1wbChHdGtXaWRnZXQqIHdlYlZpZXcpOworCisg
ICAgdmlydHVhbCBQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdpbmdBcmVh
UHJveHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXlWaWV3KCk7CisgICAgdmly
dHVhbCB2b2lkIHNjcm9sbFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFNpemUgdmlld1NpemUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3V2luZG93QWN0
aXZlKCk7CisgICAgdmlydHVhbCBib29sIGlzVmlld0ZvY3VzZWQoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNWaWV3VmlzaWJsZSgpOworICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdJbldpbmRvdygpOwor
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVsYXVuY2hQcm9jZXNzKCk7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VDbG9zZWQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9vbCBmb2N1c2VkKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGFr
ZUZvY3VzKGJvb2wgZGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQo
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJik7CisgICAgdmlydHVhbCB2b2lkIHNl
dFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJik7Cisg
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29t
bWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBj
b252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0Jik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1RvU2NyZWVu
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlF
dmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQp
OworICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50Jik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5
PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKTsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdl
UHJveHkqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZp
bmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VT
Y3JvbGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGZsYXNoQmFj
a2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHVwZGF0ZVJl
Y3RzKTsKKyAgICB2aXJ0dWFsIGZsb2F0IHVzZXJTcGFjZVNjYWxlRmFjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gMTsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50
KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBWZWN0b3I8V1RGOjpTdHJpbmc+Jik7CisK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdmlydHVhbCB2b2lkIHBhZ2VE
aWRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURp
ZExlYXZlQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShib29sIHVzZUN1c3RvbVJlcHJlc2VudGF0aW9u
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNl
bnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBDb3JlSVBDOjpE
YXRhUmVmZXJlbmNlJik7CisgICAgdmlydHVhbCBkb3VibGUgY3VzdG9tUmVwcmVzZW50YXRpb25a
b29tRmFjdG9yKCk7CisgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVJlcHJlc2VudGF0aW9uWm9v
bUZhY3Rvcihkb3VibGUpOworCisgICAgR3RrV2lkZ2V0KiBtX3ZpZXc7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBhZ2VDbGllbnRJbXBsX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQzMTQwMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0wLDAg
KzEsNjY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2Jp
bGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
S2l0V2ViVmlld1ByaXZhdGUuaCIKKworI2luY2x1ZGUgIkdPd25QdHJHdGsuaCIKKyNpbmNsdWRl
ICJHdGtWZXJzaW9uaW5nLmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgor
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIK
KyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJFdmVudEZhY3RvcnkuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNs
dWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
Kworc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0VkaXRvckluaXQoV2ViS2l0V2ViVmlldyogd2Vi
Vmlldyk7CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlldywgd2Via2l0X3dlYl92aWV3LCBH
VEtfVFlQRV9DT05UQUlORVIpCisKK3N0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgeworICAg
IE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKKyAgICBSZWZQdHI8V2ViUGFnZVBy
b3h5PiBwYWdlOworICAgIGdib29sZWFuIGlzUGFnZUFjdGl2ZTsKKworICAgIEd0a0lNQ29udGV4
dCogaW1Db250ZXh0OworICAgIGdpbnQgY3VycmVudENsaWNrQ291bnQ7CisgICAgSW50UG9pbnQg
cHJldmlvdXNDbGlja1BvaW50OworICAgIGd1aW50IHByZXZpb3VzQ2xpY2tCdXR0b247CisgICAg
Z3VpbnQzMiBwcmV2aW91c0NsaWNrVGltZTsKKworICAgIC8vIEVkaXRvcgorICAgIEdSZWZQdHI8
R3RrV2lkZ2V0PiBlZGl0b3JXaWRnZXQ7CisgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBwZW5kaW5n
RWRpdG9yQ29tbWFuZHM7Cit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3UmVhbGl6ZShH
dGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBndGtfd2lkZ2V0X3NldF9yZWFsaXplZCh3aWRnZXQs
IFRSVUUpOworCisgICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uOworICAgIGd0a193aWRnZXRf
Z2V0X2FsbG9jYXRpb24od2lkZ2V0LCAmYWxsb2NhdGlvbik7CisKKyAgICBHZGtXaW5kb3dBdHRy
IGF0dHJpYnV0ZXM7CisgICAgYXR0cmlidXRlcy53aW5kb3dfdHlwZSA9IEdES19XSU5ET1dfQ0hJ
TEQ7CisgICAgYXR0cmlidXRlcy54ID0gYWxsb2NhdGlvbi54OworICAgIGF0dHJpYnV0ZXMueSA9
IGFsbG9jYXRpb24ueTsKKyAgICBhdHRyaWJ1dGVzLndpZHRoID0gYWxsb2NhdGlvbi53aWR0aDsK
KyAgICBhdHRyaWJ1dGVzLmhlaWdodCA9IGFsbG9jYXRpb24uaGVpZ2h0OworICAgIGF0dHJpYnV0
ZXMud2NsYXNzID0gR0RLX0lOUFVUX09VVFBVVDsKKyAgICBhdHRyaWJ1dGVzLnZpc3VhbCA9IGd0
a193aWRnZXRfZ2V0X3Zpc3VhbCh3aWRnZXQpOworI2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCisg
ICAgYXR0cmlidXRlcy5jb2xvcm1hcCA9IGd0a193aWRnZXRfZ2V0X2NvbG9ybWFwKHdpZGdldCk7
CisjZW5kaWYKKyAgICBhdHRyaWJ1dGVzLmV2ZW50X21hc2sgPSBHREtfVklTSUJJTElUWV9OT1RJ
RllfTUFTSworICAgICAgICB8IEdES19FWFBPU1VSRV9NQVNLCisgICAgICAgIHwgR0RLX0JVVFRP
Tl9QUkVTU19NQVNLCisgICAgICAgIHwgR0RLX0JVVFRPTl9SRUxFQVNFX01BU0sKKyAgICAgICAg
fCBHREtfUE9JTlRFUl9NT1RJT05fTUFTSworICAgICAgICB8IEdES19LRVlfUFJFU1NfTUFTSwor
ICAgICAgICB8IEdES19LRVlfUkVMRUFTRV9NQVNLCisgICAgICAgIHwgR0RLX0JVVFRPTl9NT1RJ
T05fTUFTSworICAgICAgICB8IEdES19CVVRUT04xX01PVElPTl9NQVNLCisgICAgICAgIHwgR0RL
X0JVVFRPTjJfTU9USU9OX01BU0sKKyAgICAgICAgfCBHREtfQlVUVE9OM19NT1RJT05fTUFTSzsK
KworICAgIGdpbnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdES19XQV9ZIHwgR0RLX1dB
X1ZJU1VBTDsKKyNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIGF0dHJpYnV0ZXNNYXNrIHw9
IEdES19XQV9DT0xPUk1BUDsKKyNlbmRpZgorICAgIEdka1dpbmRvdyogd2luZG93ID0gZ2RrX3dp
bmRvd19uZXcoZ3RrX3dpZGdldF9nZXRfcGFyZW50X3dpbmRvdyh3aWRnZXQpLCAmYXR0cmlidXRl
cywgYXR0cmlidXRlc01hc2spOworICAgIGd0a193aWRnZXRfc2V0X3dpbmRvdyh3aWRnZXQsIHdp
bmRvdyk7CisgICAgZ2RrX3dpbmRvd19zZXRfdXNlcl9kYXRhKHdpbmRvdywgd2lkZ2V0KTsKKwor
I2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjAsIDAp
CisgICAgZ3RrX3dpZGdldF9zdHlsZV9hdHRhY2god2lkZ2V0KTsKKyNlbHNlCisgICAgd2lkZ2V0
LT5zdHlsZSA9IGd0a19zdHlsZV9hdHRhY2goZ3RrX3dpZGdldF9nZXRfc3R5bGUod2lkZ2V0KSwg
d2luZG93KTsKKyNlbmRpZgorICAgIGd0a19zdHlsZV9zZXRfYmFja2dyb3VuZChndGtfd2lkZ2V0
X2dldF9zdHlsZSh3aWRnZXQpLCB3aW5kb3csIEdUS19TVEFURV9OT1JNQUwpOworI2Vsc2UKKyAg
ICBndGtfc3R5bGVfY29udGV4dF9zZXRfYmFja2dyb3VuZChndGtfd2lkZ2V0X2dldF9zdHlsZV9j
b250ZXh0KHdpZGdldCksIHdpbmRvdyk7CisjZW5kaWYKKworICAgIFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0
ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAgZ3RrX2ltX2NvbnRleHRfc2V0X2NsaWVudF93
aW5kb3cocHJpdi0+aW1Db250ZXh0LCB3aW5kb3cpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3Q29udGFpbmVyQWRkKEd0a0NvbnRhaW5lciogY29udGFpbmVyLCBHdGtXaWRnZXQqIHdp
ZGdldCkKK3sKKyAgICBndGtfd2lkZ2V0X3NldF9wYXJlbnQod2lkZ2V0LCBHVEtfV0lER0VUKGNv
bnRhaW5lcikpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RmluYWxpemUoR09iamVj
dCogZ09iamVjdCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKGdPYmplY3QpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+
cHJpdjsKKworICAgIGlmIChwcml2LT5pbUNvbnRleHQpIHsKKyAgICAgICAgZ19vYmplY3RfdW5y
ZWYocHJpdi0+aW1Db250ZXh0KTsKKyAgICAgICAgcHJpdi0+aW1Db250ZXh0ID0gMDsKKyAgICB9
CisKKyAgICBkZWxldGUgcHJpdjsKKyAgICB3ZWJWaWV3LT5wcml2ID0gMDsKKworICAgIEdfT0JK
RUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShnT2JqZWN0
KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKK3sKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG5ldyBXZWJLaXRX
ZWJWaWV3UHJpdmF0ZSgpOworICAgIHdlYlZpZXctPnByaXYgPSBwcml2OworCisgICAgcHJpdi0+
Y3VycmVudENsaWNrQ291bnQgPSAwOworICAgIHByaXYtPnByZXZpb3VzQ2xpY2tCdXR0b24gPSAw
OworICAgIHByaXYtPnByZXZpb3VzQ2xpY2tUaW1lID0gMDsKKworICAgIGd0a193aWRnZXRfc2V0
X2Nhbl9mb2N1cyhHVEtfV0lER0VUKHdlYlZpZXcpLCBUUlVFKTsKKyAgICBwcml2LT5pbUNvbnRl
eHQgPSBndGtfaW1fbXVsdGljb250ZXh0X25ldygpOworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlKEdUS19XSURHRVQod2ViVmlldykpOworICAgIHByaXYtPnBh
Z2UgPSB0b0ltcGwoV0tDb250ZXh0R2V0U2hhcmVkUHJvY2Vzc0NvbnRleHQoKSktPmNyZWF0ZVdl
YlBhZ2UocHJpdi0+cGFnZUNsaWVudC5nZXQoKSwgMCk7CisKKyAgICBwcml2LT5wYWdlLT5pbml0
aWFsaXplV2ViUGFnZSgpOworCisgICAgd2Via2l0V2ViVmlld0VkaXRvckluaXQod2ViVmlldyk7
Cit9CisKKyNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorc3RhdGljIGdib29sZWFuIHdlYmtpdFdl
YlZpZXdFeHBvc2UoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50RXhwb3NlKiBldmVudCkKK3sK
KyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7Cisg
ICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIEdka1Jl
Y3RhbmdsZSBjbGlwUmVjdDsKKyAgICBnZGtfcmVnaW9uX2dldF9jbGlwYm94KGV2ZW50LT5yZWdp
b24sICZjbGlwUmVjdCk7CisKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0
X3dpbmRvdyh3aWRnZXQpOworICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGdka19j
YWlyb19jcmVhdGUod2luZG93KSk7CisKKyAgICBwcml2LT5wYWdlLT5kcmF3aW5nQXJlYSgpLT5w
YWludChjbGlwUmVjdCwgY3IpOworCisgICAgcmV0dXJuIEZBTFNFOworfQorI2Vsc2UKK3N0YXRp
YyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3RHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCog
Y3IpCit7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRn
ZXQpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAg
ICBHZGtSZWN0YW5nbGUgY2xpcFJlY3Q7CisKKyAgICBpZiAoIWdka19jYWlyb19nZXRfY2xpcF9y
ZWN0YW5nbGUoY3IsICZjbGlwUmVjdCkpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIHBy
aXYtPnBhZ2UtPmRyYXdpbmdBcmVhKCktPnBhaW50KGNsaXBSZWN0LCBjcik7CisKKyAgICByZXR1
cm4gRkFMU0U7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NpemVBbGxv
Y2F0ZShHdGtXaWRnZXQqIHdpZGdldCwgR3RrQWxsb2NhdGlvbiogYWxsb2NhdGlvbikKK3sKKyAg
ICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7CisgICAg
V2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworCisgICAgR1RLX1dJ
REdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+c2l6ZV9hbGxvY2F0ZSh3
aWRnZXQsIGFsbG9jYXRpb24pOworICAgIHByaXYtPnBhZ2UtPmRyYXdpbmdBcmVhKCktPnNldFNp
emUoSW50U2l6ZShhbGxvY2F0aW9uLT53aWR0aCwgYWxsb2NhdGlvbi0+aGVpZ2h0KSwgSW50U2l6
ZSgpKTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdGb2N1c0luRXZlbnQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqIGV2ZW50KQoreworICAgIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKKyAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICBHdGtXaWRnZXQqIHRvcGxldmVs
ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwod2lkZ2V0KTsKKyAgICBpZiAoZ3RrX3dpZGdldF9p
c190b3BsZXZlbCh0b3BsZXZlbCkgJiYgZ3RrX3dpbmRvd19oYXNfdG9wbGV2ZWxfZm9jdXMoR1RL
X1dJTkRPVyh0b3BsZXZlbCkpKSB7CisgICAgICAgIGd0a19pbV9jb250ZXh0X2ZvY3VzX2luKHBy
aXYtPmltQ29udGV4dCk7CisgICAgICAgIGlmICghcHJpdi0+aXNQYWdlQWN0aXZlKSB7CisgICAg
ICAgICAgICBwcml2LT5pc1BhZ2VBY3RpdmUgPSBUUlVFOworICAgICAgICAgICAgcHJpdi0+cGFn
ZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93
ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5mb2N1c19pbl9ldmVudCh3aWRnZXQsIGV2ZW50KTsKK30K
Kworc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdGb2N1c091dEV2ZW50KEd0a1dpZGdldCog
d2lkZ2V0LCBHZGtFdmVudEZvY3VzKiBldmVudCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUq
IHByaXYgPSB3ZWJWaWV3LT5wcml2OworCisgICAgcHJpdi0+aXNQYWdlQWN0aXZlID0gRkFMU0U7
CisgICAgcHJpdi0+cGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld1dp
bmRvd0lzQWN0aXZlKTsKKyAgICBpZiAocHJpdi0+aW1Db250ZXh0KQorICAgICAgICBndGtfaW1f
Y29udGV4dF9mb2N1c19vdXQocHJpdi0+aW1Db250ZXh0KTsKKworICAgIHJldHVybiBHVEtfV0lE
R0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5mb2N1c19vdXRfZXZlbnQo
d2lkZ2V0LCBldmVudCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3S2V5UHJl
c3NFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRLZXkqIGV2ZW50KQoreworICAgIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKKyAgICBXZWJL
aXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICBwcml2LT5wYWdl
LT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQocmVpbnRlcnByZXRf
Y2FzdDxHZGtFdmVudCo+KGV2ZW50KSkpOworCisgICAgcmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mo
d2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPmtleV9wcmVzc19ldmVudCh3aWRnZXQsIGV2
ZW50KTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdLZXlSZWxlYXNlRXZlbnQo
R3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5KiBldmVudCkKK3sKKyAgICBXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7CisgICAgV2ViS2l0V2ViVmll
d1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworCisgICAgaWYgKGd0a19pbV9jb250ZXh0
X2ZpbHRlcl9rZXlwcmVzcyhwcml2LT5pbUNvbnRleHQsIGV2ZW50KSkKKyAgICAgICAgcmV0dXJu
IFRSVUU7CisKKyAgICBwcml2LT5wYWdlLT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSkpOworCisgICAg
cmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPmtl
eV9yZWxlYXNlX2V2ZW50KHdpZGdldCwgZXZlbnQpOworfQorCisvLyBDb3BpZWQgZnJvbSB3ZWJr
aXR3ZWJ2aWV3LmNwcAorc3RhdGljIGd1aW50MzIgZ2V0RXZlbnRUaW1lKEdka0V2ZW50KiBldmVu
dCkKK3sKKyAgICBndWludDMyIHRpbWUgPSBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpOworICAg
IGlmICh0aW1lKQorICAgICAgICByZXR1cm4gdGltZTsKKworICAgIC8vIFJlYWwgZXZlbnRzIGFs
d2F5cyBoYXZlIGEgbm9uLXplcm8gdGltZSwgYnV0IGV2ZW50cyBzeW50aGVzaXplZAorICAgIC8v
IGJ5IHRoZSBEUlQgZG8gbm90IGFuZCB3ZSBtdXN0IGNhbGN1bGF0ZSBhIHRpbWUgbWFudWFsbHku
IFRoaXMgdGltZQorICAgIC8vIGlzIG5vdCBjYWxjdWxhdGVkIGluIHRoZSBEUlQsIGJlY2F1c2Ug
R1RLKyBkb2VzIG5vdCB3b3JrIHdlbGwgd2l0aAorICAgIC8vIGFueXRoaW5nIG90aGVyIHRoYW4g
R0RLX0NVUlJFTlRfVElNRSBvbiBzeW50aGVzaXplZCBldmVudHMuCisgICAgR1RpbWVWYWwgdGlt
ZVZhbHVlOworICAgIGdfZ2V0X2N1cnJlbnRfdGltZSgmdGltZVZhbHVlKTsKKyAgICByZXR1cm4g
KHRpbWVWYWx1ZS50dl9zZWMgKiAxMDAwKSArICh0aW1lVmFsdWUudHZfdXNlYyAvIDEwMDApOwor
fQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0J1dHRvblByZXNzRXZlbnQoR3RrV2lk
Z2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0dG9uKiBidXR0b25FdmVudCkKK3sKKyAgICBpZiAoYnV0
dG9uRXZlbnQtPmJ1dHRvbiA9PSAzKSB7CisgICAgICAgIC8vIEZJWE1FOiBbR1RLXSBBZGQgY29u
dGV4dCBtZW51IHN1cHBvcnQgZm9yIFdlYmtpdDIuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDgyNworICAgICAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgZ3RrX3dpZGdldF9ncmFiX2Zv
Y3VzKHdpZGdldCk7CisKKyAgICAvLyBGb3IgZG91YmxlIGFuZCB0cmlwbGUgY2xpY2tzIEdESyBz
ZW5kcyBib3RoIGEgbm9ybWFsIGJ1dHRvbiBwcmVzcyBldmVudAorICAgIC8vIGFuZCBhIHNwZWNp
ZmljIHR5cGUgKGxpa2UgR0RLXzJCVVRUT05fUFJFU1MpLiBJZiB3ZSBkZXRlY3QgYSBzcGVjaWFs
IHByZXNzCisgICAgLy8gY29taW5nIHVwLCBpZ25vcmUgdGhpcyBldmVudCBhcyBpdCBjZXJ0YWlu
bHkgZ2VuZXJhdGVkIHRoZSBkb3VibGUgb3IgdHJpcGxlCisgICAgLy8gY2xpY2suIFRoZSBjb25z
ZXF1ZW5jZSBvZiBub3QgZWF0aW5nIHRoaXMgZXZlbnQgaXMgdHdvIERPTSBidXR0b24gcHJlc3Mg
ZXZlbnRzCisgICAgLy8gYXJlIGdlbmVyYXRlZC4KKyAgICBHT3duUHRyPEdka0V2ZW50PiBuZXh0
RXZlbnQoZ2RrX2V2ZW50X3BlZWsoKSk7CisgICAgaWYgKG5leHRFdmVudCAmJiAobmV4dEV2ZW50
LT5hbnkudHlwZSA9PSBHREtfMkJVVFRPTl9QUkVTUyB8fCBuZXh0RXZlbnQtPmFueS50eXBlID09
IEdES18zQlVUVE9OX1BSRVNTKSkKKyAgICAgICAgcmV0dXJuIFRSVUU7CisKKyAgICBnaW50IGRv
dWJsZUNsaWNrRGlzdGFuY2UgPSAyNTA7CisgICAgZ2ludCBkb3VibGVDbGlja1RpbWUgPSA1Owor
ICAgIEd0a1NldHRpbmdzKiBzZXR0aW5ncyA9IGd0a19zZXR0aW5nc19nZXRfZm9yX3NjcmVlbihn
dGtfd2lkZ2V0X2dldF9zY3JlZW4od2lkZ2V0KSk7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdz
LAorICAgICAgICAgICAgICAgICAiZ3RrLWRvdWJsZS1jbGljay1kaXN0YW5jZSIsICZkb3VibGVD
bGlja0Rpc3RhbmNlLAorICAgICAgICAgICAgICAgICAiZ3RrLWRvdWJsZS1jbGljay10aW1lIiwg
JmRvdWJsZUNsaWNrVGltZSwgTlVMTCk7CisKKyAgICAvLyBHVEsrIG9ubHkgY291bnRzIHVwIHRv
IHRyaXBsZSBjbGlja3MsIGJ1dCBXZWJDb3JlIHdhbnRzIHRvIGtub3cgYWJvdXQKKyAgICAvLyBx
dWFkcnVwbGUgY2xpY2tzLCBxdWludHVwbGUgY2xpY2tzLCBhZCBpbmZpbml0dW0uIEhlcmUsIHdl
IHJlcGxpY2F0ZSB0aGUKKyAgICAvLyBHREsgbG9naWMgZm9yIGNvdW50aW5nIGNsaWNrcy4KKyAg
ICBHZGtFdmVudCogZXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGJ1dHRvbkV2ZW50
KSk7CisgICAgZ3VpbnQzMiBldmVudFRpbWUgPSBnZXRFdmVudFRpbWUoZXZlbnQpOworICAgIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKKyAgICBXZWJL
aXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAgaWYgKChldmVudC0+
dHlwZSA9PSBHREtfMkJVVFRPTl9QUkVTUyB8fCBldmVudC0+dHlwZSA9PSBHREtfM0JVVFRPTl9Q
UkVTUykKKyAgICAgICAgfHwgKChhYnMoYnV0dG9uRXZlbnQtPnggLSBwcml2LT5wcmV2aW91c0Ns
aWNrUG9pbnQueCgpKSA8IGRvdWJsZUNsaWNrRGlzdGFuY2UpCisgICAgICAgICAgICAmJiAoYWJz
KGJ1dHRvbkV2ZW50LT55IC0gcHJpdi0+cHJldmlvdXNDbGlja1BvaW50LnkoKSkgPCBkb3VibGVD
bGlja0Rpc3RhbmNlKQorICAgICAgICAgICAgJiYgKGV2ZW50VGltZSAtIHByaXYtPnByZXZpb3Vz
Q2xpY2tUaW1lIDwgc3RhdGljX2Nhc3Q8Z3VpbnQ+KGRvdWJsZUNsaWNrVGltZSkpCisgICAgICAg
ICAgICAmJiAoYnV0dG9uRXZlbnQtPmJ1dHRvbiA9PSBwcml2LT5wcmV2aW91c0NsaWNrQnV0dG9u
KSkpCisgICAgICAgIHByaXYtPmN1cnJlbnRDbGlja0NvdW50Kys7CisgICAgZWxzZQorICAgICAg
ICBwcml2LT5jdXJyZW50Q2xpY2tDb3VudCA9IDE7CisKKyAgICBwcml2LT5wYWdlLT5oYW5kbGVN
b3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChldmVudCwgcHJp
di0+Y3VycmVudENsaWNrQ291bnQpKTsKKworICAgIGdkb3VibGUgeCwgeTsKKyAgICBnZGtfZXZl
bnRfZ2V0X2Nvb3JkcyhldmVudCwgJngsICZ5KTsKKyAgICBwcml2LT5wcmV2aW91c0NsaWNrUG9p
bnQgPSBJbnRQb2ludCh4LCB5KTsKKyAgICBwcml2LT5wcmV2aW91c0NsaWNrQnV0dG9uID0gYnV0
dG9uRXZlbnQtPmJ1dHRvbjsKKyAgICBwcml2LT5wcmV2aW91c0NsaWNrVGltZSA9IGV2ZW50VGlt
ZTsKKworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZp
ZXdCdXR0b25SZWxlYXNlRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0dG9uKiBl
dmVudCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdp
ZGdldCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2Owor
CisgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzKHdpZGdldCk7CisgICAgcHJpdi0+cGFnZS0+aGFu
ZGxlTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQocmVpbnRl
cnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSwgMCAvKiBjdXJyZW50Q2xpY2tDb3VudCAqLykp
OworCisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmll
d1Njcm9sbEV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudFNjcm9sbCogZXZlbnQpCit7
CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQpOwor
ICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIHBy
aXYtPnBhZ2UtPmhhbmRsZVdoZWVsRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVl
bEV2ZW50KGV2ZW50KSk7CisKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVh
biB3ZWJraXRXZWJWaWV3TW90aW9uTm90aWZ5RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2
ZW50TW90aW9uKiBldmVudCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lU
X1dFQl9WSUVXKHdpZGdldCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJW
aWV3LT5wcml2OworCisgICAgcHJpdi0+cGFnZS0+aGFuZGxlTW91c2VFdmVudChXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2
ZW50KSwgMCAvKiBjdXJyZW50Q2xpY2tDb3VudCAqLykpOworCisgICAgcmV0dXJuIEZBTFNFOwor
fQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3
Q2xhc3MqIHdlYlZpZXdDbGFzcykKK3sKKyAgICBHdGtXaWRnZXRDbGFzcyogd2lkZ2V0Q2xhc3Mg
PSBHVEtfV0lER0VUX0NMQVNTKHdlYlZpZXdDbGFzcyk7CisgICAgd2lkZ2V0Q2xhc3MtPnJlYWxp
emUgPSB3ZWJraXRXZWJWaWV3UmVhbGl6ZTsKKyNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAg
IHdpZGdldENsYXNzLT5leHBvc2VfZXZlbnQgPSB3ZWJraXRXZWJWaWV3RXhwb3NlOworI2Vsc2UK
KyAgICB3aWRnZXRDbGFzcy0+ZHJhdyA9IHdlYmtpdFdlYlZpZXdEcmF3OworI2VuZGlmCisgICAg
d2lkZ2V0Q2xhc3MtPnNpemVfYWxsb2NhdGUgPSB3ZWJraXRXZWJWaWV3U2l6ZUFsbG9jYXRlOwor
ICAgIHdpZGdldENsYXNzLT5mb2N1c19pbl9ldmVudCA9IHdlYmtpdFdlYlZpZXdGb2N1c0luRXZl
bnQ7CisgICAgd2lkZ2V0Q2xhc3MtPmZvY3VzX291dF9ldmVudCA9IHdlYmtpdFdlYlZpZXdGb2N1
c091dEV2ZW50OworICAgIHdpZGdldENsYXNzLT5rZXlfcHJlc3NfZXZlbnQgPSB3ZWJraXRXZWJW
aWV3S2V5UHJlc3NFdmVudDsKKyAgICB3aWRnZXRDbGFzcy0+a2V5X3JlbGVhc2VfZXZlbnQgPSB3
ZWJraXRXZWJWaWV3S2V5UmVsZWFzZUV2ZW50OworICAgIHdpZGdldENsYXNzLT5idXR0b25fcHJl
c3NfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QnV0dG9uUHJlc3NFdmVudDsKKyAgICB3aWRnZXRDbGFz
cy0+YnV0dG9uX3JlbGVhc2VfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QnV0dG9uUmVsZWFzZUV2ZW50
OworICAgIHdpZGdldENsYXNzLT5zY3JvbGxfZXZlbnQgPSB3ZWJraXRXZWJWaWV3U2Nyb2xsRXZl
bnQ7CisgICAgd2lkZ2V0Q2xhc3MtPm1vdGlvbl9ub3RpZnlfZXZlbnQgPSB3ZWJraXRXZWJWaWV3
TW90aW9uTm90aWZ5RXZlbnQ7CisKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKHdlYlZpZXdDbGFzcyk7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9
IHdlYmtpdFdlYlZpZXdGaW5hbGl6ZTsKKworICAgIEd0a0NvbnRhaW5lckNsYXNzKiBjb250YWlu
ZXJDbGFzcyA9IEdUS19DT05UQUlORVJfQ0xBU1Mod2ViVmlld0NsYXNzKTsKKyAgICBjb250YWlu
ZXJDbGFzcy0+YWRkID0gd2Via2l0V2ViVmlld0NvbnRhaW5lckFkZDsKK30KKworLy8gRWRpdG9y
CisvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgbW92ZWQgdG8gYW5vdGhlciBmaWxl
Cit0eXBlZGVmIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4gSW50Q29uc3RDaGFySGFzaE1hcDsK
Kworc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0FkZFBlbmRpbmdFZGl0b3JDb21tYW5kKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIgKmNvbW1hbmQpCit7CisgICAgV2ViS2l0V2Vi
Vmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIHByaXYtPnBlbmRpbmdFZGl0
b3JDb21tYW5kcy5hcHBlbmQoV1RGOjpTdHJpbmcoY29tbWFuZCkpOworfQorc3RhdGljIHZvaWQg
YmFja3NwYWNlQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCit7CisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgImJhY2tz
cGFjZSIpOworICAgIHdlYmtpdFdlYlZpZXdBZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCh3ZWJWaWV3
LCAiRGVsZXRlQmFja3dhcmQiKTsKK30KKworc3RhdGljIHZvaWQgc2VsZWN0QWxsQ2FsbGJhY2so
R3RrV2lkZ2V0KiB3aWRnZXQsIGdib29sZWFuIHNlbGVjdCwgV2ViS2l0V2ViVmlldyogd2ViVmll
dykKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAic2VsZWN0
LWFsbCIpOworICAgIHdlYmtpdFdlYlZpZXdBZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCh3ZWJWaWV3
LCBzZWxlY3QgPyAiU2VsZWN0QWxsIiA6ICJVbnNlbGVjdCIpOworfQorCitzdGF0aWMgdm9pZCBj
dXRDbGlwYm9hcmRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAiY3V0
LWNsaXBib2FyZCIpOworICAgIHdlYmtpdFdlYlZpZXdBZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCh3
ZWJWaWV3LCAiQ3V0Iik7Cit9CisKK3N0YXRpYyB2b2lkIGNvcHlDbGlwYm9hcmRDYWxsYmFjayhH
dGtXaWRnZXQqIHdpZGdldCwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3NpZ25h
bF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAiY29weS1jbGlwYm9hcmQiKTsKKyAgICB3
ZWJraXRXZWJWaWV3QWRkUGVuZGluZ0VkaXRvckNvbW1hbmQod2ViVmlldywgIkNvcHkiKTsKK30K
Kworc3RhdGljIHZvaWQgcGFzdGVDbGlwYm9hcmRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwg
V2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5
X25hbWUod2lkZ2V0LCAicGFzdGUtY2xpcGJvYXJkIik7CisgICAgd2Via2l0V2ViVmlld0FkZFBl
bmRpbmdFZGl0b3JDb21tYW5kKHdlYlZpZXcsICJQYXN0ZSIpOworfQorCitzdGF0aWMgdm9pZCB0
b2dnbGVPdmVyd3JpdGVDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgV2ViS2l0V2ViVmlldyop
Cit7CisgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCB0b2dnbGluZyB0aGUgb3ZlcndyaXRlIG1vZGUs
IGJ1dCB0aGUgZGVmYXVsdCBjYWxsYmFjayBleHBlY3RzCisgICAgLy8gdGhlIEd0a1RleHRWaWV3
IHRvIGhhdmUgYSBsYXlvdXQsIHNvIHdlIGhhbmRsZSB0aGlzIHNpZ25hbCBqdXN0IHRvIHN0b3Ag
aXQuCisgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgInRvZ2dsZS1v
dmVyd3JpdGUiKTsKK30KKworLy8gR1RLKyB3aWxsIHN0aWxsIHNlbmQgdGhlc2Ugc2lnbmFscyB0
byB0aGUgd2ViIHZpZXcuIFNvIHdlIGNhbiBzYWZlbHkgc3RvcCBzaWduYWwKKy8vIGVtaXNzaW9u
IHdpdGhvdXQgYnJlYWtpbmcgYWNjZXNzaWJpbGl0eS4KK3N0YXRpYyB2b2lkIHBvcHVwTWVudUNh
bGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBXZWJLaXRXZWJWaWV3KikKK3sKKyAgICBnX3NpZ25h
bF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAicG9wdXAtbWVudSIpOworfQorCitzdGF0
aWMgdm9pZCBzaG93SGVscENhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBXZWJLaXRXZWJWaWV3
KikKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAic2hvdy1o
ZWxwIik7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBndGtEZWxldGVDb21tYW5kc1td
WzJdID0geworICAgIHsgIkRlbGV0ZUJhY2t3YXJkIiwgICAgICAgICAgICAgICAiRGVsZXRlRm9y
d2FyZCIgICAgICAgICAgICAgICAgICAgICAgICB9LCAvLyBDaGFyYWN0ZXJzCisgICAgeyAiRGVs
ZXRlV29yZEJhY2t3YXJkIiwgICAgICAgICAgICJEZWxldGVXb3JkRm9yd2FyZCIgICAgICAgICAg
ICAgICAgICAgIH0sIC8vIFdvcmQgZW5kcworICAgIHsgIkRlbGV0ZVdvcmRCYWNrd2FyZCIsICAg
ICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiICAgICAgICAgICAgICAgICAgICB9LCAvLyBXb3Jk
cworICAgIHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAiRGVsZXRlVG9FbmRPZkxp
bmUiICAgICAgICAgICAgICAgICAgICB9LCAvLyBMaW5lcworICAgIHsgIkRlbGV0ZVRvQmVnaW5u
aW5nT2ZMaW5lIiwgICAgICAiRGVsZXRlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAgICB9
LCAvLyBMaW5lIGVuZHMKKyAgICB7ICJEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgIkRl
bGV0ZVRvRW5kT2ZQYXJhZ3JhcGgiICAgICAgICAgICAgICAgfSwgLy8gUGFyYWdyYXBoIGVuZHMK
KyAgICB7ICJEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwgIkRlbGV0ZVRvRW5kT2ZQYXJh
Z3JhcGgiICAgICAgICAgICAgICAgfSwgLy8gUGFyYWdyYXBocworICAgIHsgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IC8vIFdoaXRlc3BhY2UgKE0tXCBpbiBFbWFjcykKK307CisKK3N0YXRpYyB2b2lkIGRlbGV0
ZUZyb21DdXJzb3JDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgR3RrRGVsZXRlVHlwZSBkZWxl
dGVUeXBlLCBnaW50IGNvdW50LCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfc2ln
bmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJkZWxldGUtZnJvbS1jdXJzb3IiKTsK
KyAgICBpbnQgZGlyZWN0aW9uID0gY291bnQgPiAwID8gMSA6IDA7CisKKyAgICAvLyBFbnN1cmlu
ZyB0aGF0IGRlbGV0ZVR5cGUgPD0gR19OX0VMRU1FTlRTIGhlcmUgcmVzdWx0cyBpbiBhIGNvbXBp
bGVyIHdhcm5pbmcKKyAgICAvLyB0aGF0IHRoZSBjb25kaXRpb24gaXMgYWx3YXlzIHRydWUuCisK
KyAgICBpZiAoZGVsZXRlVHlwZSA9PSBHVEtfREVMRVRFX1dPUkRTKSB7CisgICAgICAgIGlmICgh
ZGlyZWN0aW9uKSB7CisgICAgICAgICAgICB3ZWJraXRXZWJWaWV3QWRkUGVuZGluZ0VkaXRvckNv
bW1hbmQod2ViVmlldywgIk1vdmVXb3JkRm9yd2FyZCIpOworICAgICAgICAgICAgd2Via2l0V2Vi
Vmlld0FkZFBlbmRpbmdFZGl0b3JDb21tYW5kKHdlYlZpZXcsICJNb3ZlV29yZEJhY2t3YXJkIik7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3ZWJraXRXZWJWaWV3QWRkUGVuZGluZ0Vk
aXRvckNvbW1hbmQod2ViVmlldywgIk1vdmVXb3JkQmFja3dhcmQiKTsKKyAgICAgICAgICAgIHdl
YmtpdFdlYlZpZXdBZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCh3ZWJWaWV3LCAiTW92ZVdvcmRGb3J3
YXJkIik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGRlbGV0ZVR5cGUgPT0gR1RLX0RFTEVU
RV9ESVNQTEFZX0xJTkVTKSB7CisgICAgICAgIGlmICghZGlyZWN0aW9uKQorICAgICAgICAgICAg
d2Via2l0V2ViVmlld0FkZFBlbmRpbmdFZGl0b3JDb21tYW5kKHdlYlZpZXcsICJNb3ZlVG9CZWdp
bm5pbmdPZkxpbmUiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2Via2l0V2ViVmlld0Fk
ZFBlbmRpbmdFZGl0b3JDb21tYW5kKHdlYlZpZXcsICJNb3ZlVG9FbmRPZkxpbmUiKTsKKyAgICB9
IGVsc2UgaWYgKGRlbGV0ZVR5cGUgPT0gR1RLX0RFTEVURV9QQVJBR1JBUEhTKSB7CisgICAgICAg
IGlmICghZGlyZWN0aW9uKQorICAgICAgICAgICAgd2Via2l0V2ViVmlld0FkZFBlbmRpbmdFZGl0
b3JDb21tYW5kKHdlYlZpZXcsICJNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB3ZWJraXRXZWJWaWV3QWRkUGVuZGluZ0VkaXRvckNvbW1hbmQo
d2ViVmlldywgIk1vdmVUb0VuZE9mUGFyYWdyYXBoIik7CisgICAgfQorCisgICAgY29uc3QgY2hh
ciogcmF3Q29tbWFuZCA9IGd0a0RlbGV0ZUNvbW1hbmRzW2RlbGV0ZVR5cGVdW2RpcmVjdGlvbl07
CisgICAgaWYgKCFyYXdDb21tYW5kKQorICAgICAgcmV0dXJuOworCisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBhYnMoY291bnQpOyBpKyspCisgICAgICAgIHdlYmtpdFdlYlZpZXdBZGRQZW5kaW5n
RWRpdG9yQ29tbWFuZCh3ZWJWaWV3LCByYXdDb21tYW5kKTsKK30KKworc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IGd0a01vdmVDb21tYW5kc1tdWzRdID0geworICAgIHsgIk1vdmVCYWNrd2FyZCIs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmQiLAorICAgICAg
Ik1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAgICAgICAiTW92ZUZv
cndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgIH0sIC8vIEZvcndhcmQvYmFja3dh
cmQgZ3JhcGhlbWUKKyAgICB7ICJNb3ZlTGVmdCIsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIk1vdmVSaWdodCIsCisgICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uIiwgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIg
ICAgICAgICAgICAgfSwgLy8gTGVmdC9yaWdodCBncmFwaGVtZQorICAgIHsgIk1vdmVXb3JkQmFj
a3dhcmQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJkIiwK
KyAgICAgICJNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAg
Ik1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICB9LCAvLyBGb3J3YXJk
L2JhY2t3YXJkIHdvcmQKKyAgICB7ICJNb3ZlVXAiLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIk1vdmVEb3duIiwKKyAgICAgICJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rp
b24iLCAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAg
ICAgICAgICAgICAgICB9LCAvLyBVcC9kb3duIGxpbmUKKyAgICB7ICJNb3ZlVG9CZWdpbm5pbmdP
ZkxpbmUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZSIsCisgICAg
ICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICJNb3Zl
VG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgfSwgLy8gVXAvZG93biBsaW5l
IGVuZHMKKyAgICB7ICJNb3ZlUGFyYWdyYXBoRm9yd2FyZCIsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIk1vdmVQYXJhZ3JhcGhCYWNrd2FyZCIsCisgICAgICAiTW92ZVBhcmFncmFwaEZvcndh
cmRBbmRNb2RpZnlTZWxlY3Rpb24iLCAgICAgICAgICJNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRN
b2RpZnlTZWxlY3Rpb24iICAgfSwgLy8gVXAvZG93biBwYXJhZ3JhcGhzCisgICAgeyAiTW92ZVRv
QmVnaW5uaW5nT2ZQYXJhZ3JhcGgiLCAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZlBh
cmFncmFwaCIsCisgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxl
Y3Rpb24iLCAgICJNb3ZlVG9FbmRPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgfSwg
Ly8gVXAvZG93biBwYXJhZ3JhcGggZW5kcy4KKyAgICB7ICJNb3ZlUGFnZVVwIiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93biIsCisgICAgICAiTW92ZVBh
Z2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd25B
bmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgfSwgLy8gVXAvZG93biBwYWdlCisgICAgeyAi
TW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIsICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9F
bmRPZkRvY3VtZW50IiwKKyAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5
U2VsZWN0aW9uIiwgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iICAg
ICB9LCAvLyBCZWdpbi9lbmQgb2YgYnVmZmVyCisgICAgeyAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSAvLyBIb3Jpem9udGFsIHBhZ2UgbW92ZW1lbnQKK307CisKK3N0
YXRpYyB2b2lkIG1vdmVDdXJzb3JDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgR3RrTW92ZW1l
bnRTdGVwIHN0ZXAsIGdpbnQgY291bnQsIGdib29sZWFuIGV4dGVuZFNlbGVjdGlvbiwgV2ViS2l0
V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUo
d2lkZ2V0LCAibW92ZS1jdXJzb3IiKTsKKyAgICBpbnQgZGlyZWN0aW9uID0gY291bnQgPiAwID8g
MSA6IDA7CisgICAgaWYgKGV4dGVuZFNlbGVjdGlvbikKKyAgICAgICAgZGlyZWN0aW9uICs9IDI7
CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZXApID49IEdfTl9FTEVNRU5UUyhn
dGtNb3ZlQ29tbWFuZHMpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBjaGFyKiByYXdD
b21tYW5kID0gZ3RrTW92ZUNvbW1hbmRzW3N0ZXBdW2RpcmVjdGlvbl07CisgICAgaWYgKCFyYXdD
b21tYW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFicyhj
b3VudCk7IGkrKykKKyAgICAgICAgd2Via2l0V2ViVmlld0FkZFBlbmRpbmdFZGl0b3JDb21tYW5k
KHdlYlZpZXcsIHJhd0NvbW1hbmQpOworfQorCitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3RybEtl
eSA9IDEgPDwgMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7CitzdGF0
aWMgY29uc3QgdW5zaWduZWQgU2hpZnRLZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlEb3duRW50
cnkgeworICAgIHVuc2lnbmVkIHZpcnR1YWxLZXk7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOwor
ICAgIGNvbnN0IGNoYXIqIG5hbWU7Cit9OworCitzdHJ1Y3QgS2V5UHJlc3NFbnRyeSB7CisgICAg
dW5zaWduZWQgY2hhckNvZGU7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNvbnN0IGNo
YXIqIG5hbWU7Cit9OworCitzdGF0aWMgY29uc3QgS2V5RG93bkVudHJ5IGtleURvd25FbnRyaWVz
W10gPSB7CisgICAgeyAnQicsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlRvZ2dsZUJvbGQi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnSScsICAgICAgIEN0
cmxLZXksICAgICAgICAgICAgIlRvZ2dsZUl0YWxpYyIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgeyBWS19FU0NBUEUsIDAsICAgICAgICAgICAgICAgICAgIkNhbmNlbCIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19PRU1fUEVS
SU9ELCBDdHJsS2V5LCAgICAgICAgIkNhbmNlbCIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgeyBWS19UQUIsICAgIDAsICAgICAgICAgICAgICAgICAgIkluc2Vy
dFRhYiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19UQUIs
ICAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkluc2VydEJhY2t0YWIiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgeyBWS19SRVRVUk4sIDAsICAgICAgICAgICAgICAgICAgIklu
c2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19S
RVRVUk4sIEN0cmxLZXksICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19SRVRVUk4sIEFsdEtleSwgICAgICAgICAgICAg
Ikluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBW
S19SRVRVUk4sIEFsdEtleSB8IFNoaWZ0S2V5LCAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCit9OworCitzdGF0aWMgY29uc3QgS2V5UHJlc3NFbnRyeSBr
ZXlQcmVzc0VudHJpZXNbXSA9IHsKKyAgICB7ICdcdCcsICAgMCwgICAgICAgICAgICAgICAgICAi
SW5zZXJ0VGFiIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdc
dCcsICAgU2hpZnRLZXksICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAgMCwgICAgICAgICAgICAgICAgICAiSW5z
ZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdccics
ICAgQ3RybEtleSwgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAgQWx0S2V5LCAgICAgICAgICAgICAiSW5zZXJ0
TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAg
QWx0S2V5IHwgU2hpZnRLZXksICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdFZGl0b3JJbml0KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYg
PSB3ZWJWaWV3LT5wcml2OworCisgICAgcHJpdi0+ZWRpdG9yV2lkZ2V0ID0gZ3RrX3RleHRfdmll
d19uZXcoKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPmVkaXRvcldpZGdldC5nZXQoKSwg
ImJhY2tzcGFjZSIsIEdfQ0FMTEJBQ0soYmFja3NwYWNlQ2FsbGJhY2spLCB3ZWJWaWV3KTsKKyAg
ICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPmVkaXRvcldpZGdldC5nZXQoKSwgImN1dC1jbGlwYm9h
cmQiLCBHX0NBTExCQUNLKGN1dENsaXBib2FyZENhbGxiYWNrKSwgd2ViVmlldyk7CisgICAgZ19z
aWduYWxfY29ubmVjdChwcml2LT5lZGl0b3JXaWRnZXQuZ2V0KCksICJjb3B5LWNsaXBib2FyZCIs
IEdfQ0FMTEJBQ0soY29weUNsaXBib2FyZENhbGxiYWNrKSwgd2ViVmlldyk7CisgICAgZ19zaWdu
YWxfY29ubmVjdChwcml2LT5lZGl0b3JXaWRnZXQuZ2V0KCksICJwYXN0ZS1jbGlwYm9hcmQiLCBH
X0NBTExCQUNLKHBhc3RlQ2xpcGJvYXJkQ2FsbGJhY2spLCB3ZWJWaWV3KTsKKyAgICBnX3NpZ25h
bF9jb25uZWN0KHByaXYtPmVkaXRvcldpZGdldC5nZXQoKSwgInNlbGVjdC1hbGwiLCBHX0NBTExC
QUNLKHNlbGVjdEFsbENhbGxiYWNrKSwgd2ViVmlldyk7CisgICAgZ19zaWduYWxfY29ubmVjdChw
cml2LT5lZGl0b3JXaWRnZXQuZ2V0KCksICJtb3ZlLWN1cnNvciIsIEdfQ0FMTEJBQ0sobW92ZUN1
cnNvckNhbGxiYWNrKSwgd2ViVmlldyk7CisgICAgZ19zaWduYWxfY29ubmVjdChwcml2LT5lZGl0
b3JXaWRnZXQuZ2V0KCksICJkZWxldGUtZnJvbS1jdXJzb3IiLCBHX0NBTExCQUNLKGRlbGV0ZUZy
b21DdXJzb3JDYWxsYmFjayksIHdlYlZpZXcpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+
ZWRpdG9yV2lkZ2V0LmdldCgpLCAidG9nZ2xlLW92ZXJ3cml0ZSIsIEdfQ0FMTEJBQ0sodG9nZ2xl
T3ZlcndyaXRlQ2FsbGJhY2spLCB3ZWJWaWV3KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYt
PmVkaXRvcldpZGdldC5nZXQoKSwgInBvcHVwLW1lbnUiLCBHX0NBTExCQUNLKHBvcHVwTWVudUNh
bGxiYWNrKSwgd2ViVmlldyk7CisgICAgZ19zaWduYWxfY29ubmVjdChwcml2LT5lZGl0b3JXaWRn
ZXQuZ2V0KCksICJzaG93LWhlbHAiLCBHX0NBTExCQUNLKHNob3dIZWxwQ2FsbGJhY2spLCB3ZWJW
aWV3KTsKK30KKworLy8gUHJpdmF0ZSBBUEkKK3ZvaWQgd2ViS2l0V2ViVmlld0dldEVkaXRvckNv
bW1hbmRzRm9yS2V5RXZlbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudCYgZXZlbnQsIFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvbW1hbmRMaXN0KQor
eworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAg
IHByaXYtPnBlbmRpbmdFZGl0b3JDb21tYW5kcy5jbGVhcigpOworCisjaWZkZWYgR1RLX0FQSV9W
RVJTSU9OXzIKKyAgICBndGtfYmluZGluZ3NfYWN0aXZhdGVfZXZlbnQoR1RLX09CSkVDVChwcml2
LT5lZGl0b3JXaWRnZXQuZ2V0KCkpLCBjb25zdF9jYXN0PEdka0V2ZW50S2V5Kj4oJmV2ZW50Lm5h
dGl2ZUV2ZW50KCktPmtleSkpOworI2Vsc2UKKyAgICBndGtfYmluZGluZ3NfYWN0aXZhdGVfZXZl
bnQoR19PQkpFQ1QocHJpdi0+ZWRpdG9yV2lkZ2V0LmdldCgpKSwgY29uc3RfY2FzdDxHZGtFdmVu
dEtleSo+KCZldmVudC5uYXRpdmVFdmVudCgpLT5rZXkpKTsKKyNlbmRpZgorCisgICAgaWYgKHBy
aXYtPnBlbmRpbmdFZGl0b3JDb21tYW5kcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29tbWFuZExp
c3QuYXBwZW5kKHByaXYtPnBlbmRpbmdFZGl0b3JDb21tYW5kcyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEludENvbnN0Q2hhckhhc2hNYXAsIGtl
eURvd25Db21tYW5kc01hcCwgKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSW50Q29uc3RD
aGFySGFzaE1hcCwga2V5UHJlc3NDb21tYW5kc01hcCwgKCkpOworCisgICAgaWYgKGtleURvd25D
b21tYW5kc01hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IEdfTl9FTEVNRU5UUyhrZXlEb3duRW50cmllcyk7IGkrKykKKyAgICAgICAgICAgIGtleURvd25D
b21tYW5kc01hcC5zZXQoa2V5RG93bkVudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5RG93
bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CisKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhrZXlQcmVzc0VudHJpZXMp
OyBpKyspCisgICAgICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwLnNldChrZXlQcmVzc0VudHJp
ZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2RlLCBrZXlQ
cmVzc0VudHJpZXNbaV0ubmFtZSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbW9kaWZpZXJzID0g
MDsKKyAgICBpZiAoZXZlbnQuc2hpZnRLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IFNoaWZ0
S2V5OworICAgIGlmIChldmVudC5hbHRLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IEFsdEtl
eTsKKyAgICBpZiAoZXZlbnQuY29udHJvbEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gQ3Ry
bEtleTsKKworICAgIC8vIEZvciBrZXlwcmVzcyBldmVudHMsIHdlIHdhbnQgY2hhckNvZGUoKSwg
YnV0IGtleUNvZGUoKSBkb2VzIHRoYXQuCisgICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAx
NiB8IGV2ZW50Lm5hdGl2ZVZpcnR1YWxLZXlDb2RlKCk7CisgICAgaWYgKG1hcEtleSkgeworICAg
ICAgICBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBjb21tYW5kTWFwID0gZXZlbnQudHlwZSgp
ID09IFdlYkV2ZW50OjpLZXlEb3duID8KKyAgICAgICAgICAgICZrZXlEb3duQ29tbWFuZHNNYXAg
OiAma2V5UHJlc3NDb21tYW5kc01hcDsKKyAgICAgICAgaWYgKGNvbnN0IGNoYXIqIGNvbW1hbmRT
dHJpbmcgPSBjb21tYW5kTWFwLT5nZXQobWFwS2V5KSkKKyAgICAgICAgICAgIHByaXYtPnBlbmRp
bmdFZGl0b3JDb21tYW5kcy5hcHBlbmQoY29tbWFuZFN0cmluZyk7CisgICAgfQorCisgICAgY29t
bWFuZExpc3QuYXBwZW5kKHByaXYtPnBlbmRpbmdFZGl0b3JDb21tYW5kcyk7Cit9CisKK1dlYlBh
Z2VQcm94eSogd2ViS2l0V2ViVmlld0dldFBhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sK
KyAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+cGFnZS5nZXQoKTsKK30KKworLy8gUHVibGljIEFQ
SS4KK0d0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ldyh2b2lkKQoreworICAgIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X1dFQl9WSUVXLCBOVUxMKSk7CisKKyAgICByZXR1cm4gR1RLX1dJREdFVCh3ZWJWaWV3KTsKK30K
Kwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
Y29uc3QgZ2NoYXIqIHVyaSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbCh1cmkpOworCisgICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIFdLUGFnZUxvYWRVUkwo
dG9BUEkocHJpdi0+cGFnZS5nZXQoKSksIHRvQ29waWVkVVJMQVBJKFN0cmluZ0ltcGw6OmNyZWF0
ZSh1cmkpLmxlYWtSZWYoKSkpOworfQorCit2b2lkIHdlYmtpdF93ZWJfdmlld19nb19iYWNrKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldykpOworCisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3
ZWJWaWV3LT5wcml2OworICAgIFdLUGFnZUdvQmFjayh0b0FQSShwcml2LT5wYWdlLmdldCgpKSk7
Cit9CisKK3ZvaWQgd2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3
KSk7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Cisg
ICAgV0tQYWdlR29Gb3J3YXJkKHRvQVBJKHByaXYtPnBhZ2UuZ2V0KCkpKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTczZjU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0wLDAgKzEs
NzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViS2l0V2ViVmlld19oCisjZGVmaW5lIFdlYktp
dFdlYlZpZXdfaAorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgIndlYmtpdGRlZmlu
ZXMuaCIKKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9WSUVXICAg
ICAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VC
X1ZJRVcob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX1ZJRVcsIFdlYktpdFdlYlZpZXcpKQorI2RlZmluZSBXRUJLSVRfV0VC
X1ZJRVdfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAg
V0VCS0lUX1RZUEVfV0VCX1ZJRVcsIFdlYktpdFdlYlZpZXdDbGFzcykpCisjZGVmaW5lIFdFQktJ
VF9JU19XRUJfVklFVyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChv
YmopLCBXRUJLSVRfVFlQRV9XRUJfVklFVykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfVklFV19D
TEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQ
RV9XRUJfVklFVykpCisjZGVmaW5lIFdFQktJVF9XRUJfVklFV19HRVRfQ0xBU1Mob2JqKSAgKEdf
VFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfVklFVywgV2Vi
S2l0V2ViVmlld0NsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgICAgICAg
IFdlYktpdFdlYlZpZXc7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzICAgV2Vi
S2l0V2ViVmlld0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIFdl
YktpdFdlYlZpZXdQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgeworICAgIEd0a0Nv
bnRhaW5lciBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJL
aXRXZWJWaWV3UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNz
IHsKKyAgICBHdGtDb250YWluZXJDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJ
IEdUeXBlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3R5cGUodm9pZCk7CisKK1dFQktJVF9BUEkgR3Rr
V2lkZ2V0Kgord2Via2l0X3dlYl92aWV3X25ldyh2b2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2No
YXIqIHVyaSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X2dvX2JhY2soV2Vi
S2l0V2ViVmlldyogd2ViVmlldyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3
X2dvX2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldyk7CisKK0dfRU5EX0RFQ0xTCisKKyNl
bmRpZiAvLyBXZWJLaXRXZWJWaWV3X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjk4MmRkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjAg
QEAKKyNpZm5kZWYgV2ViS2l0V2ViVmlld1ByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRXZWJWaWV3
UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCisKKyNpbmNsdWRlICJOYXRp
dmVXZWJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0df
QkVHSU5fREVDTFMKKwordm9pZCB3ZWJLaXRXZWJWaWV3R2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlF
dmVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
JiBldmVudCwgVmVjdG9yPFdURjo6U3RyaW5nPiYgY29tbWFuZExpc3QpOworV2ViUGFnZVByb3h5
KiB3ZWJLaXRXZWJWaWV3R2V0UGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KTsKKworCitHX0VO
RF9ERUNMUworCisjZW5kaWYgLy8gV2ViS2l0V2ViVmlld1ByaXZhdGVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0ZGVmaW5lcy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0ZGVmaW5lcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1YzZhMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXRkZWZpbmVzLmgKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgd2Via2l0ZGVmaW5l
c19oCisjZGVmaW5lIHdlYmtpdGRlZmluZXNfaAorCisjaW5jbHVkZSA8Z2xpYi5oPgorCisjaWZk
ZWYgR19PU19XSU4zMgorICAgICNpZmRlZiBCVUlMRElOR19XRUJLSVQKKyAgICAgICAgI2RlZmlu
ZSBXRUJLSVRfQVBJIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorICAgICNlbHNlCisgICAgICAgICNk
ZWZpbmUgV0VCS0lUX0FQSSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyAgICAjZW5kaWYKKyAgICAj
ZGVmaW5lIFdFQktJVF9PQlNPTEVURV9BUEkgV0VCS0lUX0FQSQorI2Vsc2UKKyAgICAjZGVmaW5l
IFdFQktJVF9BUEkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyAgICAj
ZGVmaW5lIFdFQktJVF9PQlNPTEVURV9BUEkgV0VCS0lUX0FQSSBfX2F0dHJpYnV0ZV9fKChkZXBy
ZWNhdGVkKSkKKyNlbmRpZgorCisjaWZuZGVmIFdFQktJVF9BUEkKKyAgICAjZGVmaW5lIFdFQktJ
VF9BUEkKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggOTRlNDQxZi4uNDZk
YzI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRV
cGRhdGVEcmF3aW5nQXJlYVByb3h5LmgKQEAgLTQxLDYgKzQxLDcgQEAgT0JKQ19DTEFTUyBXS1Zp
ZXc7CiBjbGFzcyBRR3JhcGhpY3NXS1ZpZXc7CiAjZWxpZiBQTEFURk9STShHVEspCiB0eXBlZGVm
IHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7Cit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTYsOCArNTcsNyBAQCB0eXBlZGVmIFdlYlZpZXcgUGxhdGZvcm1XZWJWaWV3OwogI2Vs
aWYgUExBVEZPUk0oUVQpCiB0eXBlZGVmIFFHcmFwaGljc1dLVmlldyBQbGF0Zm9ybVdlYlZpZXc7
CiAjZWxpZiBQTEFURk9STShHVEspCi1jbGFzcyBXZWJWaWV3OwotdHlwZWRlZiBXZWJWaWV3IFBs
YXRmb3JtV2ViVmlldzsKK3R5cGVkZWYgV2ViS2l0V2ViVmlldyBQbGF0Zm9ybVdlYlZpZXc7CiAj
ZW5kaWYKIAogY2xhc3MgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkgOiBwdWJsaWMgRHJh
d2luZ0FyZWFQcm94eSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlHdGsuY3BwCmluZGV4IGE1
YzcwOGYuLjQ4NzI0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlHdGsuY3BwCkBAIC0z
MSw3ICszMSw3IEBACiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlICJVcGRhdGVD
aHVuay5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgIldlYlZpZXcu
aCIKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8Z2RrL2dk
ay5oPgogCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJQYWdlUHJv
eHkqIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpwYWdlKCkKIHsKLSAgICByZXR1cm4g
bV93ZWJWaWV3LT5wYWdlKCk7CisgICAgcmV0dXJuIHdlYktpdFdlYlZpZXdHZXRQYWdlKG1fd2Vi
Vmlldyk7CiB9CiAKIHZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OmVuc3VyZUJh
Y2tpbmdTdG9yZSgpCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdB
cmVhUHJveHk6OmVuc3VyZUJhY2tpbmdTdG9yZSgpCiAgICAgaWYgKG1fYmFja2luZ1N0b3JlSW1h
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fYmFja2luZ1N0b3JlSW1hZ2UgPSBnZGtfd2lu
ZG93X2NyZWF0ZV9zaW1pbGFyX3N1cmZhY2UoZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2ViVmll
dy0+d2luZG93KCkpLAorICAgIG1fYmFja2luZ1N0b3JlSW1hZ2UgPSBnZGtfd2luZG93X2NyZWF0
ZV9zaW1pbGFyX3N1cmZhY2UoZ3RrX3dpZGdldF9nZXRfd2luZG93KEdUS19XSURHRVQobV93ZWJW
aWV3KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBLCBzaXplKCkud2lkdGgoKSwgc2l6
ZSgpLmhlaWdodCgpKTsKIH0KIApAQCAtODcsNyArODcsNyBAQCB2b2lkIENodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5OjpkcmF3VXBkYXRlQ2h1bmtJbnRvQmFja2luZ1N0b3JlKFVwZGF0ZUNo
dW5rKgogICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgcGl4bWFwLmdldCgp
LCB1cGRhdGVDaHVua1JlY3QueCgpLCB1cGRhdGVDaHVua1JlY3QueSgpKTsKICAgICBjYWlyb19w
YWludChjci5nZXQoKSk7CiAKLSAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXdfYXJlYShtX3dlYlZp
ZXctPndpbmRvdygpLCB1cGRhdGVDaHVua1JlY3QueCgpLCB1cGRhdGVDaHVua1JlY3QueSgpLAor
ICAgIGd0a193aWRnZXRfcXVldWVfZHJhd19hcmVhKEdUS19XSURHRVQobV93ZWJWaWV3KSwgdXBk
YXRlQ2h1bmtSZWN0LngoKSwgdXBkYXRlQ2h1bmtSZWN0LnkoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1cGRhdGVDaHVua1JlY3Qud2lkdGgoKSwgdXBkYXRlQ2h1bmtSZWN0Lmhl
aWdodCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViVmlldy5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzYjU3MzYuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2Jp
bGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBJ
Z2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2Vi
Vmlldy5oIgotCi0jaW5jbHVkZSAiQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuaCIKLSNp
bmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQ
cm94eS5oIgotI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgotI2luY2x1ZGUgIldlYlZpZXdX
aWRnZXQuaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotdHlwZWRlZiBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+IEludENvbnN0
Q2hhckhhc2hNYXA7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotdm9pZCBXZWJWaWV3OjpoYW5kbGVGb2N1c0luRXZlbnQoR3RrV2lkZ2V0KiB3aWRn
ZXQpCi17Ci0gICAgaWYgKCEobV9pc1BhZ2VBY3RpdmUpKSB7Ci0gICAgICAgIG1faXNQYWdlQWN0
aXZlID0gdHJ1ZTsKLSAgICAgICAgbV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVBy
b3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOwotICAgIH0KLQotICAgIG1fcGFnZS0+dmlld1N0YXRl
RGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNlZCk7Ci19Ci0KLXZvaWQgV2ViVmll
dzo6aGFuZGxlRm9jdXNPdXRFdmVudChHdGtXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBtX2lzUGFn
ZUFjdGl2ZSA9IGZhbHNlOwotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQ
cm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKLX0KLQotCi1zdGF0aWMgdm9pZCBiYWNrc3BhY2VD
YWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgV2ViVmlldyogY2xpZW50KQotewotICAgIGdfc2ln
bmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJiYWNrc3BhY2UiKTsKLSAgICBjbGll
bnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJEZWxldGVCYWNrd2FyZCIpOwotfQotCi1zdGF0
aWMgdm9pZCBzZWxlY3RBbGxDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgZ2Jvb2xlYW4gc2Vs
ZWN0LCBXZWJWaWV3KiBjbGllbnQpCi17Ci0gICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9u
YW1lKHdpZGdldCwgInNlbGVjdC1hbGwiKTsKLSAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JD
b21tYW5kKHNlbGVjdCA/ICJTZWxlY3RBbGwiIDogIlVuc2VsZWN0Iik7Ci19Ci0KLXN0YXRpYyB2
b2lkIGN1dENsaXBib2FyZENhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBXZWJWaWV3KiBjbGll
bnQpCi17Ci0gICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgImN1dC1j
bGlwYm9hcmQiKTsKLSAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJDdXQiKTsK
LX0KLQotc3RhdGljIHZvaWQgY29weUNsaXBib2FyZENhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0
LCBXZWJWaWV3KiBjbGllbnQpCi17Ci0gICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1l
KHdpZGdldCwgImNvcHktY2xpcGJvYXJkIik7Ci0gICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9y
Q29tbWFuZCgiQ29weSIpOwotfQotCi1zdGF0aWMgdm9pZCBwYXN0ZUNsaXBib2FyZENhbGxiYWNr
KEd0a1dpZGdldCogd2lkZ2V0LCBXZWJWaWV3KiBjbGllbnQpCi17Ci0gICAgZ19zaWduYWxfc3Rv
cF9lbWlzc2lvbl9ieV9uYW1lKHdpZGdldCwgInBhc3RlLWNsaXBib2FyZCIpOwotICAgIGNsaWVu
dC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIlBhc3RlIik7Ci19Ci0KLXN0YXRpYyB2b2lkIHRv
Z2dsZU92ZXJ3cml0ZUNhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBFZGl0b3JDbGllbnQqKQot
ewotICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgdG9nZ2xpbmcgdGhlIG92ZXJ3cml0ZSBtb2RlLCBi
dXQgdGhlIGRlZmF1bHQgY2FsbGJhY2sgZXhwZWN0cwotICAgIC8vIHRoZSBHdGtUZXh0VmlldyB0
byBoYXZlIGEgbGF5b3V0LCBzbyB3ZSBoYW5kbGUgdGhpcyBzaWduYWwganVzdCB0byBzdG9wIGl0
LgotICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJ0b2dnbGUtb3Zl
cndyaXRlIik7Ci19Ci0KLS8vIEdUSysgd2lsbCBzdGlsbCBzZW5kIHRoZXNlIHNpZ25hbHMgdG8g
dGhlIHdlYiB2aWV3LiBTbyB3ZSBjYW4gc2FmZWx5IHN0b3Agc2lnbmFsCi0vLyBlbWlzc2lvbiB3
aXRob3V0IGJyZWFraW5nIGFjY2Vzc2liaWxpdHkuCi1zdGF0aWMgdm9pZCBwb3B1cE1lbnVDYWxs
YmFjayhHdGtXaWRnZXQqIHdpZGdldCwgRWRpdG9yQ2xpZW50KikKLXsKLSAgICBnX3NpZ25hbF9z
dG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAicG9wdXAtbWVudSIpOwotfQotCi1zdGF0aWMg
dm9pZCBzaG93SGVscENhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBFZGl0b3JDbGllbnQqKQot
ewotICAgIGdfc2lnbmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSh3aWRnZXQsICJzaG93LWhlbHAi
KTsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGd0a0RlbGV0ZUNvbW1hbmRzW11bMl0g
PSB7Ci0gICAgeyAiRGVsZXRlQmFja3dhcmQiLCAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJk
IiAgICAgICAgICAgICAgICAgICAgICAgIH0sIC8vIENoYXJhY3RlcnMKLSAgICB7ICJEZWxldGVX
b3JkQmFja3dhcmQiLCAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiAgICAgICAgICAgICAg
ICAgICAgfSwgLy8gV29yZCBlbmRzCi0gICAgeyAiRGVsZXRlV29yZEJhY2t3YXJkIiwgICAgICAg
ICAgICJEZWxldGVXb3JkRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgIH0sIC8vIFdvcmRzCi0g
ICAgeyAiRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUiLCAgICAgICJEZWxldGVUb0VuZE9mTGluZSIg
ICAgICAgICAgICAgICAgICAgIH0sIC8vIExpbmVzCi0gICAgeyAiRGVsZXRlVG9CZWdpbm5pbmdP
ZkxpbmUiLCAgICAgICJEZWxldGVUb0VuZE9mTGluZSIgICAgICAgICAgICAgICAgICAgIH0sIC8v
IExpbmUgZW5kcwotICAgIHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgiLCAiRGVsZXRl
VG9FbmRPZlBhcmFncmFwaCIgICAgICAgICAgICAgICB9LCAvLyBQYXJhZ3JhcGggZW5kcwotICAg
IHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgiLCAiRGVsZXRlVG9FbmRPZlBhcmFncmFw
aCIgICAgICAgICAgICAgICB9LCAvLyBQYXJhZ3JhcGhzCi0gICAgeyAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
Ly8gV2hpdGVzcGFjZSAoTS1cIGluIEVtYWNzKQotfTsKLQotc3RhdGljIHZvaWQgZGVsZXRlRnJv
bUN1cnNvckNhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtEZWxldGVUeXBlIGRlbGV0ZVR5
cGUsIGdpbnQgY291bnQsIFdlYlZpZXcqIGNsaWVudCkKLXsKLSAgICBnX3NpZ25hbF9zdG9wX2Vt
aXNzaW9uX2J5X25hbWUod2lkZ2V0LCAiZGVsZXRlLWZyb20tY3Vyc29yIik7Ci0gICAgaW50IGRp
cmVjdGlvbiA9IGNvdW50ID4gMCA/IDEgOiAwOwotCi0gICAgLy8gRW5zdXJpbmcgdGhhdCBkZWxl
dGVUeXBlIDw9IEdfTl9FTEVNRU5UUyBoZXJlIHJlc3VsdHMgaW4gYSBjb21waWxlciB3YXJuaW5n
Ci0gICAgLy8gdGhhdCB0aGUgY29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlLgotCi0gICAgaWYgKGRl
bGV0ZVR5cGUgPT0gR1RLX0RFTEVURV9XT1JEUykgewotICAgICAgICBpZiAoIWRpcmVjdGlvbikg
ewotICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVdvcmRG
b3J3YXJkIik7Ci0gICAgICAgICAgICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJN
b3ZlV29yZEJhY2t3YXJkIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjbGllbnQt
PmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlV29yZEJhY2t3YXJkIik7Ci0gICAgICAgICAg
ICBjbGllbnQtPmFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlV29yZEZvcndhcmQiKTsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSBpZiAoZGVsZXRlVHlwZSA9PSBHVEtfREVMRVRFX0RJU1BMQVlf
TElORVMpIHsKLSAgICAgICAgaWYgKCFkaXJlY3Rpb24pCi0gICAgICAgICAgICBjbGllbnQtPmFk
ZFBlbmRpbmdFZGl0b3JDb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgY2xpZW50LT5hZGRQZW5kaW5nRWRpdG9yQ29tbWFuZCgiTW92ZVRv
RW5kT2ZMaW5lIik7Ci0gICAgfSBlbHNlIGlmIChkZWxldGVUeXBlID09IEdUS19ERUxFVEVfUEFS
QUdSQVBIUykgewotICAgICAgICBpZiAoIWRpcmVjdGlvbikKLSAgICAgICAgICAgIGNsaWVudC0+
YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIik7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQo
Ik1vdmVUb0VuZE9mUGFyYWdyYXBoIik7Ci0gICAgfQotCi0gICAgY29uc3QgY2hhciogcmF3Q29t
bWFuZCA9IGd0a0RlbGV0ZUNvbW1hbmRzW2RlbGV0ZVR5cGVdW2RpcmVjdGlvbl07Ci0gICAgaWYg
KCFyYXdDb21tYW5kKQotICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBh
YnMoY291bnQpOyBpKyspCi0gICAgICAgIGNsaWVudC0+YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQo
cmF3Q29tbWFuZCk7Ci19Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBndGtNb3ZlQ29tbWFu
ZHNbXVs0XSA9IHsKLSAgICB7ICJNb3ZlQmFja3dhcmQiLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIk1vdmVGb3J3YXJkIiwKLSAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlT
ZWxlY3Rpb24iLCAgICAgICAgICAgICAgICAgIk1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9u
IiAgICAgICAgICAgICB9LCAvLyBGb3J3YXJkL2JhY2t3YXJkIGdyYXBoZW1lCi0gICAgeyAiTW92
ZUxlZnQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUmlnaHQi
LAotICAgICAgIk1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAgICAg
ICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgIH0sIC8vIExlZnQv
cmlnaHQgZ3JhcGhlbWUKLSAgICB7ICJNb3ZlV29yZEJhY2t3YXJkIiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCIsCi0gICAgICAiTW92ZVdvcmRCYWNrd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAgICAgICJNb3ZlV29yZEZvcndhcmRBbmRNb2Rp
ZnlTZWxlY3Rpb24iICAgICAgICAgfSwgLy8gRm9yd2FyZC9iYWNrd2FyZCB3b3JkCi0gICAgeyAi
TW92ZVVwIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93
biIsCi0gICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAgICAgICAgICAgICAgICAg
ICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgfSwgLy8gVXAv
ZG93biBsaW5lCi0gICAgeyAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiLAotICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2Vs
ZWN0aW9uIiAgICAgICAgIH0sIC8vIFVwL2Rvd24gbGluZSBlbmRzCi0gICAgeyAiTW92ZVBhcmFn
cmFwaEZvcndhcmQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFyYWdyYXBoQmFj
a3dhcmQiLAotICAgICAgIk1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwg
ICAgICAgICAiTW92ZVBhcmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiAgIH0sIC8v
IFVwL2Rvd24gcGFyYWdyYXBocwotICAgIHsgIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIiwg
ICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZQYXJhZ3JhcGgiLAotICAgICAgIk1vdmVU
b0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uIiwgICAiTW92ZVRvRW5kT2ZQ
YXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24iICAgIH0sIC8vIFVwL2Rvd24gcGFyYWdyYXBoIGVu
ZHMuCi0gICAgeyAiTW92ZVBhZ2VVcCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJNb3ZlUGFnZURvd24iLAotICAgICAgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24i
LCAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAg
ICAgICAgIH0sIC8vIFVwL2Rvd24gcGFnZQotICAgIHsgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1l
bnQiLCAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudCIsCi0gICAgICAi
TW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIsICAgICJNb3ZlVG9F
bmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgfSwgLy8gQmVnaW4vZW5kIG9mIGJ1
ZmZlcgotICAgIHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLAotICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gLy8g
SG9yaXpvbnRhbCBwYWdlIG1vdmVtZW50Ci19OwotCi1zdGF0aWMgdm9pZCBtb3ZlQ3Vyc29yQ2Fs
bGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a01vdmVtZW50U3RlcCBzdGVwLCBnaW50IGNvdW50
LCBnYm9vbGVhbiBleHRlbmRTZWxlY3Rpb24sIFdlYlZpZXcqIGNsaWVudCkKLXsKLSAgICBnX3Np
Z25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUod2lkZ2V0LCAibW92ZS1jdXJzb3IiKTsKLSAgICBp
bnQgZGlyZWN0aW9uID0gY291bnQgPiAwID8gMSA6IDA7Ci0gICAgaWYgKGV4dGVuZFNlbGVjdGlv
bikKLSAgICAgICAgZGlyZWN0aW9uICs9IDI7Ci0KLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0ZXApID49IEdfTl9FTEVNRU5UUyhndGtNb3ZlQ29tbWFuZHMpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBjb25zdCBjaGFyKiByYXdDb21tYW5kID0gZ3RrTW92ZUNvbW1hbmRzW3N0ZXBd
W2RpcmVjdGlvbl07Ci0gICAgaWYgKCFyYXdDb21tYW5kKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGFicyhjb3VudCk7IGkrKykKLSAgICAgICAgY2xpZW50LT5h
ZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChyYXdDb21tYW5kKTsKLX0KLQotc3RhdGljIGNvbnN0IHVu
c2lnbmVkIEN0cmxLZXkgPSAxIDw8IDA7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgQWx0S2V5ID0g
MSA8PCAxOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIFNoaWZ0S2V5ID0gMSA8PCAyOwotCi1zdHJ1
Y3QgS2V5RG93bkVudHJ5IHsKLSAgICB1bnNpZ25lZCB2aXJ0dWFsS2V5OwotICAgIHVuc2lnbmVk
IG1vZGlmaWVyczsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwotfTsKLQotc3RydWN0IEtleVByZXNz
RW50cnkgewotICAgIHVuc2lnbmVkIGNoYXJDb2RlOwotICAgIHVuc2lnbmVkIG1vZGlmaWVyczsK
LSAgICBjb25zdCBjaGFyKiBuYW1lOwotfTsKLQotc3RhdGljIGNvbnN0IEtleURvd25FbnRyeSBr
ZXlEb3duRW50cmllc1tdID0gewotICAgIHsgJ0InLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAg
ICJUb2dnbGVCb2xkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsg
J0knLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJUb2dnbGVJdGFsaWMiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfRVNDQVBFLCAwLCAgICAgICAgICAgICAg
ICAgICJDYW5jZWwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAg
IHsgVktfT0VNX1BFUklPRCwgQ3RybEtleSwgICAgICAgICJDYW5jZWwiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfVEFCLCAgICAwLCAgICAgICAgICAg
ICAgICAgICJJbnNlcnRUYWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAot
ICAgIHsgVktfVEFCLCAgICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfUkVUVVJOLCAwLCAgICAgICAg
ICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAotICAgIHsgVktfUkVUVVJOLCBDdHJsS2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgIHsgVktfUkVUVVJOLCBBbHRLZXks
ICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAotICAgIHsgVktfUkVUVVJOLCBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5l
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotfTsKLQotc3RhdGljIGNvbnN0IEtl
eVByZXNzRW50cnkga2V5UHJlc3NFbnRyaWVzW10gPSB7Ci0gICAgeyAnXHQnLCAgIDAsICAgICAg
ICAgICAgICAgICAgIkluc2VydFRhYiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCi0gICAgeyAnXHQnLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkluc2VydEJhY2t0YWIiICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgeyAnXHInLCAgIDAsICAgICAgICAg
ICAgICAgICAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgeyAnXHInLCAgIEN0cmxLZXksICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgeyAnXHInLCAgIEFsdEtleSwgICAgICAg
ICAgICAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgeyAnXHInLCAgIEFsdEtleSB8IFNoaWZ0S2V5LCAgIkluc2VydE5ld2xpbmUiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCi19OwotCi1XZWJWaWV3OjpXZWJWaWV3KFdlYkNvbnRl
eHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwKQotICAgIDogbV9pc1BhZ2VBY3Rp
dmUodHJ1ZSkKLSAgICAsIG1fbmF0aXZlV2lkZ2V0KGd0a190ZXh0X3ZpZXdfbmV3KCkpCi17Ci0g
ICAgbV9wYWdlID0gY29udGV4dC0+Y3JlYXRlV2ViUGFnZSh0aGlzLCBwYWdlR3JvdXApOwotCi0g
ICAgbV92aWV3V2lkZ2V0ID0gc3RhdGljX2Nhc3Q8R3RrV2lkZ2V0Kj4oZ19vYmplY3RfbmV3KFdF
Ql9WSUVXX1RZUEVfV0lER0VULCBOVUxMKSk7Ci0gICAgQVNTRVJUKG1fdmlld1dpZGdldCk7Ci0K
LSAgICBtX3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKCk7Ci0KLSAgICBXZWJWaWV3V2lkZ2V0KiB3
ZWJWaWV3V2lkZ2V0ID0gV0VCX1ZJRVdfV0lER0VUKG1fdmlld1dpZGdldCk7Ci0gICAgd2ViVmll
d1dpZGdldFNldFdlYlZpZXdJbnN0YW5jZSh3ZWJWaWV3V2lkZ2V0LCB0aGlzKTsKLQotICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV9uYXRpdmVXaWRnZXQuZ2V0KCksICJiYWNrc3BhY2UiLCBHX0NBTExC
QUNLKGJhY2tzcGFjZUNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX25h
dGl2ZVdpZGdldC5nZXQoKSwgImN1dC1jbGlwYm9hcmQiLCBHX0NBTExCQUNLKGN1dENsaXBib2Fy
ZENhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5n
ZXQoKSwgImNvcHktY2xpcGJvYXJkIiwgR19DQUxMQkFDSyhjb3B5Q2xpcGJvYXJkQ2FsbGJhY2sp
LCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAicGFz
dGUtY2xpcGJvYXJkIiwgR19DQUxMQkFDSyhwYXN0ZUNsaXBib2FyZENhbGxiYWNrKSwgdGhpcyk7
Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgInNlbGVjdC1hbGwi
LCBHX0NBTExCQUNLKHNlbGVjdEFsbENhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29u
bmVjdChtX25hdGl2ZVdpZGdldC5nZXQoKSwgIm1vdmUtY3Vyc29yIiwgR19DQUxMQkFDSyhtb3Zl
Q3Vyc29yQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lk
Z2V0LmdldCgpLCAiZGVsZXRlLWZyb20tY3Vyc29yIiwgR19DQUxMQkFDSyhkZWxldGVGcm9tQ3Vy
c29yQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0
LmdldCgpLCAidG9nZ2xlLW92ZXJ3cml0ZSIsIEdfQ0FMTEJBQ0sodG9nZ2xlT3ZlcndyaXRlQ2Fs
bGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgp
LCAicG9wdXAtbWVudSIsIEdfQ0FMTEJBQ0socG9wdXBNZW51Q2FsbGJhY2spLCB0aGlzKTsKLSAg
ICBnX3NpZ25hbF9jb25uZWN0KG1fbmF0aXZlV2lkZ2V0LmdldCgpLCAic2hvdy1oZWxwIiwgR19D
QUxMQkFDSyhzaG93SGVscENhbGxiYWNrKSwgdGhpcyk7Ci19Ci0KLVdlYlZpZXc6On5XZWJWaWV3
KCkKLXsKLX0KLQotR2RrV2luZG93KiBXZWJWaWV3OjpnZXRXZWJWaWV3V2luZG93KCkKLXsKLSAg
ICByZXR1cm4gZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fdmlld1dpZGdldCk7Ci19Ci0KLXZvaWQg
V2ViVmlldzo6cGFpbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka1JlY3RhbmdsZSByZWN0LCBjYWly
b190KiBjcikKLXsKLSAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnBhaW50KEludFJlY3QocmVj
dCksIGNyKTsKLX0KLQotdm9pZCBXZWJWaWV3OjpzZXRTaXplKEd0a1dpZGdldCosIEludFNpemUg
d2luZG93U2l6ZSkKLXsKLSAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnNldFNpemUod2luZG93
U2l6ZSwgSW50U2l6ZSgpKTsKLX0KLQotdm9pZCBXZWJWaWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50
KEdka0V2ZW50S2V5KiBldmVudCkKLXsKLSAgICBtX3BhZ2UtPmhhbmRsZUtleWJvYXJkRXZlbnQo
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQp
KSk7Ci19Ci0KLXZvaWQgV2ViVmlldzo6aGFuZGxlTW91c2VFdmVudChHZGtFdmVudCogZXZlbnQs
IGludCBjdXJyZW50Q2xpY2tDb3VudCkKLXsKLSAgICBtX3BhZ2UtPmhhbmRsZU1vdXNlRXZlbnQo
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50LCBjdXJyZW50Q2xpY2tD
b3VudCkpOwotfQotCi12b2lkIFdlYlZpZXc6OmhhbmRsZVdoZWVsRXZlbnQoR2RrRXZlbnRTY3Jv
bGwqIGV2ZW50KQotewotICAgIG1fcGFnZS0+aGFuZGxlV2hlZWxFdmVudChXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoZXZlbnQpKTsKLX0KLQotdm9pZCBXZWJWaWV3OjpnZXRF
ZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmIGV2
ZW50LCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBjb21tYW5kTGlzdCkKLXsKLSAgICBtX3BlbmRpbmdF
ZGl0b3JDb21tYW5kcy5jbGVhcigpOwotCi0jaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKLSAgICBn
dGtfYmluZGluZ3NfYWN0aXZhdGVfZXZlbnQoR1RLX09CSkVDVChtX25hdGl2ZVdpZGdldC5nZXQo
KSksIGNvbnN0X2Nhc3Q8R2RrRXZlbnRLZXkqPigmZXZlbnQubmF0aXZlRXZlbnQoKS0+a2V5KSk7
Ci0jZWxzZQotICAgIGd0a19iaW5kaW5nc19hY3RpdmF0ZV9ldmVudChHX09CSkVDVChtX25hdGl2
ZVdpZGdldC5nZXQoKSksIGNvbnN0X2Nhc3Q8R2RrRXZlbnRLZXkqPigmZXZlbnQubmF0aXZlRXZl
bnQoKS0+a2V5KSk7Ci0jZW5kaWYKLQotICAgIGlmIChtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgY29tbWFuZExpc3QuYXBwZW5kKG1fcGVuZGluZ0VkaXRvckNv
bW1hbmRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoSW50Q29uc3RDaGFySGFzaE1hcCwga2V5RG93bkNvbW1hbmRzTWFwLCAoKSk7Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChJbnRDb25zdENoYXJIYXNoTWFwLCBrZXlQcmVzc0NvbW1hbmRzTWFw
LCAoKSk7Ci0KLSAgICBpZiAoa2V5RG93bkNvbW1hbmRzTWFwLmlzRW1wdHkoKSkgewotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTKGtleURvd25FbnRyaWVzKTsg
aSsrKQotICAgICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLnNldChrZXlEb3duRW50cmllc1tp
XS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0dWFsS2V5LCBrZXlEb3du
RW50cmllc1tpXS5uYW1lKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR19O
X0VMRU1FTlRTKGtleVByZXNzRW50cmllcyk7IGkrKykKLSAgICAgICAgICAgIGtleVByZXNzQ29t
bWFuZHNNYXAuc2V0KGtleVByZXNzRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlQcmVz
c0VudHJpZXNbaV0uY2hhckNvZGUsIGtleVByZXNzRW50cmllc1tpXS5uYW1lKTsKLSAgICB9Ci0K
LSAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOwotICAgIGlmIChldmVudC5zaGlmdEtleSgpKQot
ICAgICAgICBtb2RpZmllcnMgfD0gU2hpZnRLZXk7Ci0gICAgaWYgKGV2ZW50LmFsdEtleSgpKQot
ICAgICAgICBtb2RpZmllcnMgfD0gQWx0S2V5OwotICAgIGlmIChldmVudC5jb250cm9sS2V5KCkp
Ci0gICAgICAgIG1vZGlmaWVycyB8PSBDdHJsS2V5OwotCi0gICAgLy8gRm9yIGtleXByZXNzIGV2
ZW50cywgd2Ugd2FudCBjaGFyQ29kZSgpLCBidXQga2V5Q29kZSgpIGRvZXMgdGhhdC4KLSAgICBp
bnQgbWFwS2V5ID0gbW9kaWZpZXJzIDw8IDE2IHwgZXZlbnQubmF0aXZlVmlydHVhbEtleUNvZGUo
KTsKLSAgICBpZiAobWFwS2V5KSB7Ci0gICAgICAgIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4q
IGNvbW1hbmRNYXAgPSBldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6OktleURvd24gPwotICAgICAg
ICAgICAgJmtleURvd25Db21tYW5kc01hcCA6ICZrZXlQcmVzc0NvbW1hbmRzTWFwOwotICAgICAg
ICBpZiAoY29uc3QgY2hhciogY29tbWFuZFN0cmluZyA9IGNvbW1hbmRNYXAtPmdldChtYXBLZXkp
KQotICAgICAgICAgICAgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXBwZW5kKGNvbW1hbmRTdHJp
bmcpOwotICAgIH0KLQotICAgIGNvbW1hbmRMaXN0LmFwcGVuZChtX3BlbmRpbmdFZGl0b3JDb21t
YW5kcyk7Ci19Ci0KLWJvb2wgV2ViVmlldzo6aXNBY3RpdmUoKQotewotICAgIHJldHVybiBtX2lz
UGFnZUFjdGl2ZTsKLX0KLQotdm9pZCBXZWJWaWV3OjpjbG9zZSgpCi17Ci0gICAgbV9wYWdlLT5j
bG9zZSgpOwotfQotCi0vLyBQYWdlQ2xpZW50J3MgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucwotUGFz
c093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBXZWJWaWV3OjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5
KCkKLXsKLSAgICByZXR1cm4gQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OmNyZWF0ZSh0
aGlzLCBtX3BhZ2UuZ2V0KCkpOwotfQotCi12b2lkIFdlYlZpZXc6OnNldFZpZXdOZWVkc0Rpc3Bs
YXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBXZWJWaWV3OjpkaXNwbGF5VmlldygpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBXZWJWaWV3OjpzY3JvbGxWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNj
cm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi1XZWJDb3JlOjpJbnRTaXplIFdlYlZpZXc6OnZpZXdTaXpl
KCkKLXsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb247Ci0gICAgZ3RrX3dpZGdldF9nZXRf
YWxsb2NhdGlvbihtX3ZpZXdXaWRnZXQsICZhbGxvY2F0aW9uKTsKLSAgICByZXR1cm4gSW50U2l6
ZShhbGxvY2F0aW9uLndpZHRoLCBhbGxvY2F0aW9uLmhlaWdodCk7Ci19Ci0KLWJvb2wgV2ViVmll
dzo6aXNWaWV3V2luZG93QWN0aXZlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi1ib29sIFdlYlZpZXc6OmlzVmlld0ZvY3VzZWQoKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgV2ViVmlldzo6aXNW
aWV3VmlzaWJsZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotYm9vbCBXZWJWaWV3Ojppc1ZpZXdJbldpbmRvdygpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJWaWV3OjpXZWJWaWV3Ojpwcm9j
ZXNzRGlkQ3Jhc2goKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViVmll
dzo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFdlYlZpZXc6OnNldEZvY3VzKGJvb2wpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBXZWJWaWV3Ojp0YWtlRm9jdXMoYm9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi12b2lkIFdlYlZpZXc6OnRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJWaWV3Ojpz
ZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCi17Ci0gICAgLy8gW0dUS10gV2lkZ2V0Ojpz
ZXRDdXJzb3IoKSBnZXRzIGNhbGxlZCBmcmVxdWVudGx5Ci0gICAgLy8gaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzODgKLSAgICAvLyBTZXR0aW5nIHRoZSBjdXJzb3Ig
bWF5IGJlIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24gaW4gc29tZSBiYWNrZW5kcywKLSAgICAvLyBz
byBkb24ndCByZS1zZXQgdGhlIGN1cnNvciBpZiBpdCdzIGFscmVhZHkgc2V0IHRvIHRoZSB0YXJn
ZXQgdmFsdWUuCi0gICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3co
bV92aWV3V2lkZ2V0KTsKLSAgICBHZGtDdXJzb3IqIGN1cnJlbnRDdXJzb3IgPSBnZGtfd2luZG93
X2dldF9jdXJzb3Iod2luZG93KTsKLSAgICBHZGtDdXJzb3IqIG5ld0N1cnNvciA9IGN1cnNvci5w
bGF0Zm9ybUN1cnNvcigpLmdldCgpOwotICAgIGlmIChjdXJyZW50Q3Vyc29yICE9IG5ld0N1cnNv
cikKLSAgICAgICAgZ2RrX3dpbmRvd19zZXRfY3Vyc29yKHdpbmRvdywgbmV3Q3Vyc29yKTsKLX0K
LQotdm9pZCBXZWJWaWV3OjpzZXRWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50cyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJW
aWV3OjpyZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4s
IFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIFdlYlZpZXc6OmNsZWFyQWxsRWRpdENvbW1hbmRzKCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi1GbG9hdFJlY3QgV2ViVmlldzo6Y29udmVydFRvRGV2aWNlU3BhY2UoY29u
c3QgRmxvYXRSZWN0JiB2aWV3UmVjdCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiB2aWV3UmVjdDsKLX0KLQotRmxvYXRSZWN0IFdlYlZpZXc6OmNvbnZlcnRUb1VzZXJTcGFj
ZShjb25zdCBGbG9hdFJlY3QmIHZpZXdSZWN0KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIHZpZXdSZWN0OwotfQotCi1JbnRSZWN0IFdlYlZpZXc6OndpbmRvd1RvU2NyZWVu
KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gSW50UmVjdCgpOwotfQotCi12b2lkIFdlYlZpZXc6OmRvbmVXaXRoS2V5RXZlbnQoY29uc3Qg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViVmlldzo6ZGlkTm90SGFuZGxlS2V5RXZlbnQo
Y29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gV2ViVmlldzo6Y3JlYXRl
UG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFdlYlZp
ZXc6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIFdlYlZpZXc6OnNldEZpbmRJbmRp
Y2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0KQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12
b2lkIFdlYlZpZXc6OnBhZ2VEaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViVmlldzo6cGFnZURpZExlYXZlQWNjZWxl
cmF0ZWRDb21wb3NpdGluZygpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLSNlbmRpZiAv
LyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLXZvaWQgV2ViVmlldzo6ZGlkQ29tbWl0
TG9hZEZvck1haW5GcmFtZShib29sIHVzZUN1c3RvbVJlcHJlc2VudGF0aW9uKQotewotfQotCi12
b2lkIFdlYlZpZXc6OmRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24o
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVy
ZW5jZSYpCi17Ci19Ci0KLWRvdWJsZSBXZWJWaWV3OjpjdXN0b21SZXByZXNlbnRhdGlvblpvb21G
YWN0b3IoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZv
aWQgV2ViVmlldzo6c2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKGRvdWJsZSkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYlZpZXc6OnBhZ2VDbG9zZWQoKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViVmlldzo6ZGlkQ2hhbmdlU2Ny
b2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0Ci17Ci19Ci0KLXZvaWQgV2ViVmlldzo6Zmxhc2hC
YWNraW5nU3RvcmVVcGRhdGVzKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJWaWV3LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwOGNh
ODkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3LmgK
KysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQg
KGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJW
aWV3X2gKLSNkZWZpbmUgV2ViVmlld19oCi0KLSNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCi0jaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KLSNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0jaW5j
bHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKLWNs
YXNzIFdlYlBhZ2VOYW1lc3BhY2U7Ci0KLWNsYXNzIFdlYlZpZXcgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJWaWV3PiwgcHVibGljIFBhZ2VDbGllbnQgewotcHVibGljOgotICAgIH5XZWJWaWV3KCk7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVmlldz4gY3JlYXRlKFdlYkNvbnRleHQqIGNvbnRl
eHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJWaWV3KGNvbnRleHQsIHBhZ2VHcm91cCkpOwotICAgIH0KLQotICAgIEd0a1dp
ZGdldCogd2luZG93KCkgY29uc3QgeyByZXR1cm4gbV92aWV3V2lkZ2V0OyB9Ci0KLSAgICBXZWJQ
YWdlUHJveHkqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KLQotICAgIHZv
aWQgaGFuZGxlRm9jdXNJbkV2ZW50KEd0a1dpZGdldCopOwotICAgIHZvaWQgaGFuZGxlRm9jdXNP
dXRFdmVudChHdGtXaWRnZXQqKTsKLQotICAgIHZvaWQgcGFpbnQoR3RrV2lkZ2V0KiwgR2RrUmVj
dGFuZ2xlLCBjYWlyb190Kik7Ci0gICAgdm9pZCBzZXRTaXplKEd0a1dpZGdldCosIFdlYkNvcmU6
OkludFNpemUpOwotICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChHZGtFdmVudEtleSopOwot
ICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudChHZGtFdmVudFNjcm9sbCopOwotICAgIHZvaWQgaGFu
ZGxlTW91c2VFdmVudChHZGtFdmVudCosIGludCk7Ci0KLSAgICAvLyBLZXlib2FyZCBldmVudHMg
aGFuZGxpbmcuCi0gICAgdm9pZCBhZGRQZW5kaW5nRWRpdG9yQ29tbWFuZChjb25zdCBjaGFyKiBj
b21tYW5kKSB7IG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmFwcGVuZChXVEY6OlN0cmluZyhjb21t
YW5kKSk7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJWaWV3KFdlYkNvbnRleHQqLCBXZWJQYWdlR3Jv
dXAqKTsKLQotICAgIEdka1dpbmRvdyogZ2V0V2ViVmlld1dpbmRvdygpOwotCi0gICAgYm9vbCBp
c0FjdGl2ZSgpOwotICAgIHZvaWQgY2xvc2UoKTsKLQotICAgIC8vIFBhZ2VDbGllbnQKLSAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94
eSgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheVZpZXcoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
SW50U2l6ZSB2aWV3U2l6ZSgpOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUo
KTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3Rm9jdXNlZCgpOwotICAgIHZpcnR1YWwgYm9vbCBp
c1ZpZXdWaXNpYmxlKCk7Ci0gICAgdmlydHVhbCBib29sIGlzVmlld0luV2luZG93KCk7Ci0gICAg
dmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxh
dW5jaFByb2Nlc3MoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgpOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRGb2N1cyhib29sIGZvY3VzZWQpOwotICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9j
dXMoYm9vbCBkaXJlY3Rpb24pOwotICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vmll
d3BvcnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5k
UHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOwotICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckFsbEVkaXRDb21tYW5kcygpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZl
cnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwotICAgIHZpcnR1YWwg
V2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgd2luZG93VG9TY3JlZW4oY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50
KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZUtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJv
YXJkRXZlbnQmKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNy
ZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94
eSopOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZElu
ZGljYXRvcj4sIGJvb2wgZmFkZU91dCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9s
bGJhcnNGb3JNYWluRnJhbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZmxhc2hCYWNraW5n
U3RvcmVVcGRhdGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgdXBkYXRlUmVjdHMp
OwotICAgIHZpcnR1YWwgZmxvYXQgdXNlclNwYWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVy
biAxOyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29u
c3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIFZlY3RvcjxXVEY6OlN0cmluZz4mKTsKLQotI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZEVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpOwotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkTGVh
dmVBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgdm9pZCBk
aWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGJvb2wgdXNlQ3VzdG9tUmVwcmVzZW50YXRpb24pOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0
aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IENvcmVJUEM6OkRhdGFS
ZWZlcmVuY2UmKTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBjdXN0b21SZXByZXNlbnRhdGlvblpvb21G
YWN0b3IoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFj
dG9yKGRvdWJsZSk7Ci0KLSAgICAvLyBNZW1iZXJzIG9mIFdlYlZpZXcgY2xhc3MKLSAgICBHdGtX
aWRnZXQqIG1fdmlld1dpZGdldDsKLSAgICBib29sIG1faXNQYWdlQWN0aXZlOwotICAgIFJlZlB0
cjxXZWJQYWdlUHJveHk+IG1fcGFnZTsKLSAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fcGVuZGlu
Z0VkaXRvckNvbW1hbmRzOwotICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBtX25hdGl2ZVdpZGdldDsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViVmlld19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXdXaWRnZXQuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3V2lkZ2V0LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZGZkZDNiMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYlZpZXdXaWRnZXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzc3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmls
aXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJW
aWV3V2lkZ2V0LmgiCi0KLSNpbmNsdWRlICJHT3duUHRyR3RrLmgiCi0jaW5jbHVkZSAiR3RrVmVy
c2lvbmluZy5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUmVmUHRy
Q2Fpcm8uaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1zdGF0aWMgZ3BvaW50ZXIgd2ViVmlld1dpZGdldFBhcmVudENsYXNzID0gMDsKLQot
c3RydWN0IF9XZWJWaWV3V2lkZ2V0UHJpdmF0ZSB7Ci0gICAgV2ViVmlldyogd2ViVmlld0luc3Rh
bmNlOwotICAgIEd0a0lNQ29udGV4dCogaW1Db250ZXh0OwotICAgIGdpbnQgY3VycmVudENsaWNr
Q291bnQ7Ci0gICAgSW50UG9pbnQgcHJldmlvdXNDbGlja1BvaW50OwotICAgIGd1aW50IHByZXZp
b3VzQ2xpY2tCdXR0b247Ci0gICAgZ3VpbnQzMiBwcmV2aW91c0NsaWNrVGltZTsKLX07Ci0KLXN0
YXRpYyB2b2lkIHdlYlZpZXdXaWRnZXRSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQotewotICAg
IGd0a193aWRnZXRfc2V0X3JlYWxpemVkKHdpZGdldCwgVFJVRSk7Ci0KLSAgICBHdGtBbGxvY2F0
aW9uIGFsbG9jYXRpb247Ci0gICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbih3aWRnZXQsICZh
bGxvY2F0aW9uKTsKLQotICAgIEdka1dpbmRvd0F0dHIgYXR0cmlidXRlczsKLSAgICBhdHRyaWJ1
dGVzLndpbmRvd190eXBlID0gR0RLX1dJTkRPV19DSElMRDsKLSAgICBhdHRyaWJ1dGVzLnggPSBh
bGxvY2F0aW9uLng7Ci0gICAgYXR0cmlidXRlcy55ID0gYWxsb2NhdGlvbi55OwotICAgIGF0dHJp
YnV0ZXMud2lkdGggPSBhbGxvY2F0aW9uLndpZHRoOwotICAgIGF0dHJpYnV0ZXMuaGVpZ2h0ID0g
YWxsb2NhdGlvbi5oZWlnaHQ7Ci0gICAgYXR0cmlidXRlcy53Y2xhc3MgPSBHREtfSU5QVVRfT1VU
UFVUOwotICAgIGF0dHJpYnV0ZXMudmlzdWFsID0gZ3RrX3dpZGdldF9nZXRfdmlzdWFsKHdpZGdl
dCk7Ci0jaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKLSAgICBhdHRyaWJ1dGVzLmNvbG9ybWFwID0g
Z3RrX3dpZGdldF9nZXRfY29sb3JtYXAod2lkZ2V0KTsKLSNlbmRpZgotICAgIGF0dHJpYnV0ZXMu
ZXZlbnRfbWFzayA9IEdES19WSVNJQklMSVRZX05PVElGWV9NQVNLCi0gICAgICAgIHwgR0RLX0VY
UE9TVVJFX01BU0sKLSAgICAgICAgfCBHREtfQlVUVE9OX1BSRVNTX01BU0sKLSAgICAgICAgfCBH
REtfQlVUVE9OX1JFTEVBU0VfTUFTSwotICAgICAgICB8IEdES19QT0lOVEVSX01PVElPTl9NQVNL
Ci0gICAgICAgIHwgR0RLX0tFWV9QUkVTU19NQVNLCi0gICAgICAgIHwgR0RLX0tFWV9SRUxFQVNF
X01BU0sKLSAgICAgICAgfCBHREtfQlVUVE9OX01PVElPTl9NQVNLCi0gICAgICAgIHwgR0RLX0JV
VFRPTjFfTU9USU9OX01BU0sKLSAgICAgICAgfCBHREtfQlVUVE9OMl9NT1RJT05fTUFTSwotICAg
ICAgICB8IEdES19CVVRUT04zX01PVElPTl9NQVNLOwotCi0gICAgZ2ludCBhdHRyaWJ1dGVzTWFz
ayA9IEdES19XQV9YIHwgR0RLX1dBX1kgfCBHREtfV0FfVklTVUFMOwotI2lmZGVmIEdUS19BUElf
VkVSU0lPTl8yCi0gICAgYXR0cmlidXRlc01hc2sgfD0gR0RLX1dBX0NPTE9STUFQOwotI2VuZGlm
Ci0gICAgR2RrV2luZG93KiB3aW5kb3cgPSBnZGtfd2luZG93X25ldyhndGtfd2lkZ2V0X2dldF9w
YXJlbnRfd2luZG93KHdpZGdldCksICZhdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzTWFzayk7Ci0gICAg
Z3RrX3dpZGdldF9zZXRfd2luZG93KHdpZGdldCwgd2luZG93KTsKLSAgICBnZGtfd2luZG93X3Nl
dF91c2VyX2RhdGEod2luZG93LCB3aWRnZXQpOwotCi0jaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIK
LSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMCwgMCkKLSAgICBndGtfd2lkZ2V0X3N0eWxlX2F0
dGFjaCh3aWRnZXQpOwotI2Vsc2UKLSAgICB3aWRnZXQtPnN0eWxlID0gZ3RrX3N0eWxlX2F0dGFj
aChndGtfd2lkZ2V0X2dldF9zdHlsZSh3aWRnZXQpLCB3aW5kb3cpOwotI2VuZGlmCi0gICAgZ3Rr
X3N0eWxlX3NldF9iYWNrZ3JvdW5kKGd0a193aWRnZXRfZ2V0X3N0eWxlKHdpZGdldCksIHdpbmRv
dywgR1RLX1NUQVRFX05PUk1BTCk7Ci0jZWxzZQotICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9i
YWNrZ3JvdW5kKGd0a193aWRnZXRfZ2V0X3N0eWxlX2NvbnRleHQod2lkZ2V0KSwgd2luZG93KTsK
LSNlbmRpZgotCi0gICAgV2ViVmlld1dpZGdldCogd2ViVmlldyA9IFdFQl9WSUVXX1dJREdFVCh3
aWRnZXQpOwotICAgIFdlYlZpZXdXaWRnZXRQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsK
LSAgICBndGtfaW1fY29udGV4dF9zZXRfY2xpZW50X3dpbmRvdyhwcml2LT5pbUNvbnRleHQsIHdp
bmRvdyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYlZpZXdXaWRnZXRDb250YWluZXJBZGQoR3RrQ29u
dGFpbmVyKiBjb250YWluZXIsIEd0a1dpZGdldCogd2lkZ2V0KQotewotICAgIGd0a193aWRnZXRf
c2V0X3BhcmVudCh3aWRnZXQsIEdUS19XSURHRVQoY29udGFpbmVyKSk7Ci19Ci0KLXN0YXRpYyB2
b2lkIHdlYlZpZXdXaWRnZXREaXNwb3NlKEdPYmplY3QqIGdvYmplY3QpCi17Ci0gICAgV2ViVmll
d1dpZGdldCogd2ViVmlld1dpZGdldCA9IFdFQl9WSUVXX1dJREdFVChnb2JqZWN0KTsKLSAgICBX
ZWJWaWV3V2lkZ2V0UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdXaWRnZXQtPnByaXY7Ci0KLSAgICBp
ZiAocHJpdi0+aW1Db250ZXh0KSB7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmltQ29u
dGV4dCk7Ci0gICAgICAgIHByaXYtPmltQ29udGV4dCA9IDA7Ci0gICAgfQotCi0gICAgR19PQkpF
Q1RfQ0xBU1Mod2ViVmlld1dpZGdldFBhcmVudENsYXNzKS0+ZGlzcG9zZShnb2JqZWN0KTsKLX0K
LQotc3RhdGljIHZvaWQgd2ViVmlld1dpZGdldEluaXQoV2ViVmlld1dpZGdldCogd2ViVmlld1dp
ZGdldCkKLXsKLSAgICBXZWJWaWV3V2lkZ2V0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5D
RV9HRVRfUFJJVkFURSh3ZWJWaWV3V2lkZ2V0LCBXRUJfVklFV19UWVBFX1dJREdFVCwgV2ViVmll
d1dpZGdldFByaXZhdGUpOwotICAgIHdlYlZpZXdXaWRnZXQtPnByaXYgPSBwcml2OwotCi0gICAg
Z3RrX3dpZGdldF9zZXRfY2FuX2ZvY3VzKEdUS19XSURHRVQod2ViVmlld1dpZGdldCksIFRSVUUp
OwotICAgIHByaXYtPmltQ29udGV4dCA9IGd0a19pbV9tdWx0aWNvbnRleHRfbmV3KCk7Ci0KLSAg
ICBwcml2LT5jdXJyZW50Q2xpY2tDb3VudCA9IDA7Ci0gICAgcHJpdi0+cHJldmlvdXNDbGlja0J1
dHRvbiA9IDA7Ci0gICAgcHJpdi0+cHJldmlvdXNDbGlja1RpbWUgPSAwOwotfQotCi0jaWZkZWYg
R1RLX0FQSV9WRVJTSU9OXzIKLXN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RXhwb3NlKEd0a1dpZGdl
dCogd2lkZ2V0LCBHZGtFdmVudEV4cG9zZSogZXZlbnQpCi17Ci0gICAgV2ViVmlldyogd2ViVmll
dyA9IHdlYlZpZXdXaWRnZXRHZXRXZWJWaWV3SW5zdGFuY2UoV0VCX1ZJRVdfV0lER0VUKHdpZGdl
dCkpOwotICAgIEdka1JlY3RhbmdsZSBjbGlwUmVjdDsKLSAgICBnZGtfcmVnaW9uX2dldF9jbGlw
Ym94KGV2ZW50LT5yZWdpb24sICZjbGlwUmVjdCk7Ci0KLSAgICBHZGtXaW5kb3cqIHdpbmRvdyA9
IGd0a193aWRnZXRfZ2V0X3dpbmRvdyh3aWRnZXQpOwotICAgIFJlZlB0cjxjYWlyb190PiBjciA9
IGFkb3B0UmVmKGdka19jYWlyb19jcmVhdGUod2luZG93KSk7Ci0KLSAgICB3ZWJWaWV3LT5wYWlu
dCh3aWRnZXQsIGNsaXBSZWN0LCBjci5nZXQoKSk7Ci0KLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0j
ZWxzZQotc3RhdGljIGdib29sZWFuIHdlYlZpZXdEcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWly
b190KiBjcikKLXsKLSAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gd2ViVmlld1dpZGdldEdldFdlYlZp
ZXdJbnN0YW5jZShXRUJfVklFV19XSURHRVQod2lkZ2V0KSk7Ci0gICAgR2RrUmVjdGFuZ2xlIGNs
aXBSZWN0OwotCi0gICAgaWYgKCFnZGtfY2Fpcm9fZ2V0X2NsaXBfcmVjdGFuZ2xlKGNyLCAmY2xp
cFJlY3QpKQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0KLSAgICB3ZWJWaWV3LT5wYWludCh3aWRn
ZXQsIGNsaXBSZWN0LCBjcik7Ci0KLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0jZW5kaWYKLQotc3Rh
dGljIHZvaWQgd2ViVmlld1NpemVBbGxvY2F0ZShHdGtXaWRnZXQqIHdpZGdldCwgR3RrQWxsb2Nh
dGlvbiogYWxsb2NhdGlvbikKLXsKLSAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gd2ViVmlld1dpZGdl
dEdldFdlYlZpZXdJbnN0YW5jZShXRUJfVklFV19XSURHRVQod2lkZ2V0KSk7Ci0gICAgR1RLX1dJ
REdFVF9DTEFTUyh3ZWJWaWV3V2lkZ2V0UGFyZW50Q2xhc3MpLT5zaXplX2FsbG9jYXRlKHdpZGdl
dCwgYWxsb2NhdGlvbik7Ci0gICAgd2ViVmlldy0+c2V0U2l6ZSh3aWRnZXQsIEludFNpemUoYWxs
b2NhdGlvbi0+d2lkdGgsIGFsbG9jYXRpb24tPmhlaWdodCkpOwotfQotCi1zdGF0aWMgZ2Jvb2xl
YW4gd2ViVmlld0ZvY3VzSW5FdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyog
ZXZlbnQpCi17Ci0gICAgV2ViVmlld1dpZGdldCogd2ViVmlld1dpZGdldCA9IFdFQl9WSUVXX1dJ
REdFVCh3aWRnZXQpOwotICAgIFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJWaWV3V2lkZ2V0R2V0V2Vi
Vmlld0luc3RhbmNlKHdlYlZpZXdXaWRnZXQpOwotCi0gICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9
IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKHdpZGdldCk7Ci0gICAgaWYgKGd0a193aWRnZXRfaXNf
dG9wbGV2ZWwodG9wbGV2ZWwpICYmIGd0a193aW5kb3dfaGFzX3RvcGxldmVsX2ZvY3VzKEdUS19X
SU5ET1codG9wbGV2ZWwpKSkgewotICAgICAgICBndGtfaW1fY29udGV4dF9mb2N1c19pbih3ZWJW
aWV3V2lkZ2V0R2V0SU1Db250ZXh0KHdlYlZpZXdXaWRnZXQpKTsKLSAgICAgICAgd2ViVmlldy0+
aGFuZGxlRm9jdXNJbkV2ZW50KHdpZGdldCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIEdUS19XSURH
RVRfQ0xBU1Mod2ViVmlld1dpZGdldFBhcmVudENsYXNzKS0+Zm9jdXNfaW5fZXZlbnQod2lkZ2V0
LCBldmVudCk7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3Rm9jdXNPdXRFdmVudChHdGtX
aWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyogZXZlbnQpCi17Ci0gICAgV2ViVmlld1dpZGdl
dCogd2ViVmlld1dpZGdldCA9IFdFQl9WSUVXX1dJREdFVCh3aWRnZXQpOwotICAgIFdlYlZpZXcq
IHdlYlZpZXcgPSB3ZWJWaWV3V2lkZ2V0R2V0V2ViVmlld0luc3RhbmNlKHdlYlZpZXdXaWRnZXQp
OwotCi0gICAgd2ViVmlldy0+aGFuZGxlRm9jdXNPdXRFdmVudCh3aWRnZXQpOwotICAgIEd0a0lN
Q29udGV4dCogaW1Db250ZXh0ID0gd2ViVmlld1dpZGdldEdldElNQ29udGV4dCh3ZWJWaWV3V2lk
Z2V0KTsKLSAgICBpZiAoaW1Db250ZXh0KQotICAgICAgICBndGtfaW1fY29udGV4dF9mb2N1c19v
dXQoaW1Db250ZXh0KTsKLQotICAgIHJldHVybiBHVEtfV0lER0VUX0NMQVNTKHdlYlZpZXdXaWRn
ZXRQYXJlbnRDbGFzcyktPmZvY3VzX291dF9ldmVudCh3aWRnZXQsIGV2ZW50KTsKLX0KLQotc3Rh
dGljIGdib29sZWFuIHdlYlZpZXdLZXlQcmVzc0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtF
dmVudEtleSogZXZlbnQpCi17Ci0gICAgV2ViVmlldyogd2ViVmlldyA9IHdlYlZpZXdXaWRnZXRH
ZXRXZWJWaWV3SW5zdGFuY2UoV0VCX1ZJRVdfV0lER0VUKHdpZGdldCkpOwotICAgIHdlYlZpZXct
PmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOwotCi0gICAgcmV0dXJuIEdUS19XSURHRVRfQ0xB
U1Mod2ViVmlld1dpZGdldFBhcmVudENsYXNzKS0+a2V5X3ByZXNzX2V2ZW50KHdpZGdldCwgZXZl
bnQpOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0tleVJlbGVhc2VFdmVudChHdGtXaWRn
ZXQqIHdpZGdldCwgR2RrRXZlbnRLZXkqIGV2ZW50KQotewotICAgIFdlYlZpZXdXaWRnZXQqIHdl
YlZpZXdXaWRnZXQgPSBXRUJfVklFV19XSURHRVQod2lkZ2V0KTsKLSAgICBXZWJWaWV3KiB3ZWJW
aWV3ID0gd2ViVmlld1dpZGdldEdldFdlYlZpZXdJbnN0YW5jZSh3ZWJWaWV3V2lkZ2V0KTsKLQot
ICAgIGlmIChndGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3Mod2ViVmlld1dpZGdldEdldElN
Q29udGV4dCh3ZWJWaWV3V2lkZ2V0KSwgZXZlbnQpKQotICAgICAgICByZXR1cm4gVFJVRTsKLQot
ICAgIHdlYlZpZXctPmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOwotCi0gICAgcmV0dXJuIEdU
S19XSURHRVRfQ0xBU1Mod2ViVmlld1dpZGdldFBhcmVudENsYXNzKS0+a2V5X3JlbGVhc2VfZXZl
bnQod2lkZ2V0LCBldmVudCk7Ci19Ci0KLS8vIENvcGllZCBmcm9tIHdlYmtpdHdlYnZpZXcuY3Bw
Ci1zdGF0aWMgZ3VpbnQzMiBnZXRFdmVudFRpbWUoR2RrRXZlbnQqIGV2ZW50KQotewotICAgIGd1
aW50MzIgdGltZSA9IGdka19ldmVudF9nZXRfdGltZShldmVudCk7Ci0gICAgaWYgKHRpbWUpCi0g
ICAgICAgIHJldHVybiB0aW1lOwotCi0gICAgLy8gUmVhbCBldmVudHMgYWx3YXlzIGhhdmUgYSBu
b24temVybyB0aW1lLCBidXQgZXZlbnRzIHN5bnRoZXNpemVkCi0gICAgLy8gYnkgdGhlIERSVCBk
byBub3QgYW5kIHdlIG11c3QgY2FsY3VsYXRlIGEgdGltZSBtYW51YWxseS4gVGhpcyB0aW1lCi0g
ICAgLy8gaXMgbm90IGNhbGN1bGF0ZWQgaW4gdGhlIERSVCwgYmVjYXVzZSBHVEsrIGRvZXMgbm90
IHdvcmsgd2VsbCB3aXRoCi0gICAgLy8gYW55dGhpbmcgb3RoZXIgdGhhbiBHREtfQ1VSUkVOVF9U
SU1FIG9uIHN5bnRoZXNpemVkIGV2ZW50cy4KLSAgICBHVGltZVZhbCB0aW1lVmFsdWU7Ci0gICAg
Z19nZXRfY3VycmVudF90aW1lKCZ0aW1lVmFsdWUpOwotICAgIHJldHVybiAodGltZVZhbHVlLnR2
X3NlYyAqIDEwMDApICsgKHRpbWVWYWx1ZS50dl91c2VjIC8gMTAwMCk7Ci19Ci0KLXN0YXRpYyBn
Ym9vbGVhbiB3ZWJWaWV3QnV0dG9uUHJlc3NFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZl
bnRCdXR0b24qIGJ1dHRvbkV2ZW50KQotewotICAgIGlmIChidXR0b25FdmVudC0+YnV0dG9uID09
IDMpIHsKLSAgICAgICAgLy8gRklYTUU6IFtHVEtdIEFkZCBjb250ZXh0IG1lbnUgc3VwcG9ydCBm
b3IgV2Via2l0Mi4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU0ODI3Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgIHJldHVybiBG
QUxTRTsKLSAgICB9Ci0KLSAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMod2lkZ2V0KTsKLQotICAg
IC8vIEZvciBkb3VibGUgYW5kIHRyaXBsZSBjbGlja3MgR0RLIHNlbmRzIGJvdGggYSBub3JtYWwg
YnV0dG9uIHByZXNzIGV2ZW50Ci0gICAgLy8gYW5kIGEgc3BlY2lmaWMgdHlwZSAobGlrZSBHREtf
MkJVVFRPTl9QUkVTUykuIElmIHdlIGRldGVjdCBhIHNwZWNpYWwgcHJlc3MKLSAgICAvLyBjb21p
bmcgdXAsIGlnbm9yZSB0aGlzIGV2ZW50IGFzIGl0IGNlcnRhaW5seSBnZW5lcmF0ZWQgdGhlIGRv
dWJsZSBvciB0cmlwbGUKLSAgICAvLyBjbGljay4gVGhlIGNvbnNlcXVlbmNlIG9mIG5vdCBlYXRp
bmcgdGhpcyBldmVudCBpcyB0d28gRE9NIGJ1dHRvbiBwcmVzcyBldmVudHMKLSAgICAvLyBhcmUg
Z2VuZXJhdGVkLgotICAgIEdPd25QdHI8R2RrRXZlbnQ+IG5leHRFdmVudChnZGtfZXZlbnRfcGVl
aygpKTsKLSAgICBpZiAobmV4dEV2ZW50ICYmIChuZXh0RXZlbnQtPmFueS50eXBlID09IEdES18y
QlVUVE9OX1BSRVNTIHx8IG5leHRFdmVudC0+YW55LnR5cGUgPT0gR0RLXzNCVVRUT05fUFJFU1Mp
KQotICAgICAgICByZXR1cm4gVFJVRTsKLQotICAgIGdpbnQgZG91YmxlQ2xpY2tEaXN0YW5jZSA9
IDI1MDsKLSAgICBnaW50IGRvdWJsZUNsaWNrVGltZSA9IDU7Ci0gICAgR3RrU2V0dGluZ3MqIHNl
dHRpbmdzID0gZ3RrX3NldHRpbmdzX2dldF9mb3Jfc2NyZWVuKGd0a193aWRnZXRfZ2V0X3NjcmVl
bih3aWRnZXQpKTsKLSAgICBnX29iamVjdF9nZXQoc2V0dGluZ3MsCi0gICAgICAgICAgICAgICAg
ICJndGstZG91YmxlLWNsaWNrLWRpc3RhbmNlIiwgJmRvdWJsZUNsaWNrRGlzdGFuY2UsCi0gICAg
ICAgICAgICAgICAgICJndGstZG91YmxlLWNsaWNrLXRpbWUiLCAmZG91YmxlQ2xpY2tUaW1lLCBO
VUxMKTsKLQotICAgIC8vIEdUSysgb25seSBjb3VudHMgdXAgdG8gdHJpcGxlIGNsaWNrcywgYnV0
IFdlYkNvcmUgd2FudHMgdG8ga25vdyBhYm91dAotICAgIC8vIHF1YWRydXBsZSBjbGlja3MsIHF1
aW50dXBsZSBjbGlja3MsIGFkIGluZmluaXR1bS4gSGVyZSwgd2UgcmVwbGljYXRlIHRoZQotICAg
IC8vIEdESyBsb2dpYyBmb3IgY291bnRpbmcgY2xpY2tzLgotICAgIEdka0V2ZW50KiBldmVudChy
ZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oYnV0dG9uRXZlbnQpKTsKLSAgICBndWludDMyIGV2
ZW50VGltZSA9IGdldEV2ZW50VGltZShldmVudCk7Ci0gICAgV2ViVmlld1dpZGdldCogd2ViVmll
d1dpZGdldCA9IFdFQl9WSUVXX1dJREdFVCh3aWRnZXQpOwotICAgIFdlYlZpZXdXaWRnZXRQcml2
YXRlKiBwcml2ID0gd2ViVmlld1dpZGdldC0+cHJpdjsKLSAgICBpZiAoKGV2ZW50LT50eXBlID09
IEdES18yQlVUVE9OX1BSRVNTIHx8IGV2ZW50LT50eXBlID09IEdES18zQlVUVE9OX1BSRVNTKQot
ICAgICAgICB8fCAoKGFicyhidXR0b25FdmVudC0+eCAtIHByaXYtPnByZXZpb3VzQ2xpY2tQb2lu
dC54KCkpIDwgZG91YmxlQ2xpY2tEaXN0YW5jZSkKLSAgICAgICAgICAgICYmIChhYnMoYnV0dG9u
RXZlbnQtPnkgLSBwcml2LT5wcmV2aW91c0NsaWNrUG9pbnQueSgpKSA8IGRvdWJsZUNsaWNrRGlz
dGFuY2UpCi0gICAgICAgICAgICAmJiAoZXZlbnRUaW1lIC0gcHJpdi0+cHJldmlvdXNDbGlja1Rp
bWUgPCBzdGF0aWNfY2FzdDxndWludD4oZG91YmxlQ2xpY2tUaW1lKSkKLSAgICAgICAgICAgICYm
IChidXR0b25FdmVudC0+YnV0dG9uID09IHByaXYtPnByZXZpb3VzQ2xpY2tCdXR0b24pKSkKLSAg
ICAgICAgcHJpdi0+Y3VycmVudENsaWNrQ291bnQrKzsKLSAgICBlbHNlCi0gICAgICAgIHByaXYt
PmN1cnJlbnRDbGlja0NvdW50ID0gMTsKLQotICAgIFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJWaWV3
V2lkZ2V0R2V0V2ViVmlld0luc3RhbmNlKHdlYlZpZXdXaWRnZXQpOwotICAgIHdlYlZpZXctPmhh
bmRsZU1vdXNlRXZlbnQoZXZlbnQsIHByaXYtPmN1cnJlbnRDbGlja0NvdW50KTsKLQotICAgIGdk
b3VibGUgeCwgeTsKLSAgICBnZGtfZXZlbnRfZ2V0X2Nvb3JkcyhldmVudCwgJngsICZ5KTsKLSAg
ICBwcml2LT5wcmV2aW91c0NsaWNrUG9pbnQgPSBJbnRQb2ludCh4LCB5KTsKLSAgICBwcml2LT5w
cmV2aW91c0NsaWNrQnV0dG9uID0gYnV0dG9uRXZlbnQtPmJ1dHRvbjsKLSAgICBwcml2LT5wcmV2
aW91c0NsaWNrVGltZSA9IGV2ZW50VGltZTsKLQotICAgIHJldHVybiBGQUxTRTsKLX0KLQotc3Rh
dGljIGdib29sZWFuIHdlYlZpZXdCdXR0b25SZWxlYXNlRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQs
IEdka0V2ZW50QnV0dG9uKiBldmVudCkKLXsKLSAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gd2ViVmll
d1dpZGdldEdldFdlYlZpZXdJbnN0YW5jZShXRUJfVklFV19XSURHRVQod2lkZ2V0KSk7Ci0gICAg
Z3RrX3dpZGdldF9ncmFiX2ZvY3VzKHdpZGdldCk7Ci0gICAgd2ViVmlldy0+aGFuZGxlTW91c2VF
dmVudChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLCAwIC8qIGN1cnJlbnRDbGlj
a0NvdW50ICovKTsKLQotICAgIHJldHVybiBGQUxTRTsKLX0KLQotc3RhdGljIGdib29sZWFuIHdl
YlZpZXdTY3JvbGxFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRTY3JvbGwqIGV2ZW50
KQotewotICAgIFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJWaWV3V2lkZ2V0R2V0V2ViVmlld0luc3Rh
bmNlKFdFQl9WSUVXX1dJREdFVCh3aWRnZXQpKTsKLSAgICB3ZWJWaWV3LT5oYW5kbGVXaGVlbEV2
ZW50KGV2ZW50KTsKLQotICAgIHJldHVybiBGQUxTRTsKLX0KLQotc3RhdGljIGdib29sZWFuIHdl
YlZpZXdNb3Rpb25Ob3RpZnlFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRNb3Rpb24q
IGV2ZW50KQotewotICAgIFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJWaWV3V2lkZ2V0R2V0V2ViVmll
d0luc3RhbmNlKFdFQl9WSUVXX1dJREdFVCh3aWRnZXQpKTsKLSAgICB3ZWJWaWV3LT5oYW5kbGVN
b3VzZUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCksIDAgLyogY3VycmVu
dENsaWNrQ291bnQgKi8pOwotCi0gICAgcmV0dXJuIEZBTFNFOwotfQotCi1zdGF0aWMgdm9pZCB3
ZWJWaWV3V2lkZ2V0Q2xhc3NJbml0KFdlYlZpZXdXaWRnZXRDbGFzcyogd2ViVmlld1dpZGdldENs
YXNzKQotewotICAgIHdlYlZpZXdXaWRnZXRQYXJlbnRDbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVr
X3BhcmVudCh3ZWJWaWV3V2lkZ2V0Q2xhc3MpOwotCi0gICAgR3RrV2lkZ2V0Q2xhc3MqIHdpZGdl
dENsYXNzID0gR1RLX1dJREdFVF9DTEFTUyh3ZWJWaWV3V2lkZ2V0Q2xhc3MpOwotICAgIHdpZGdl
dENsYXNzLT5yZWFsaXplID0gd2ViVmlld1dpZGdldFJlYWxpemU7Ci0jaWZkZWYgR1RLX0FQSV9W
RVJTSU9OXzIKLSAgICB3aWRnZXRDbGFzcy0+ZXhwb3NlX2V2ZW50ID0gd2ViVmlld0V4cG9zZTsK
LSNlbHNlCi0gICAgd2lkZ2V0Q2xhc3MtPmRyYXcgPSB3ZWJWaWV3RHJhdzsKLSNlbmRpZgotICAg
IHdpZGdldENsYXNzLT5zaXplX2FsbG9jYXRlID0gd2ViVmlld1NpemVBbGxvY2F0ZTsKLSAgICB3
aWRnZXRDbGFzcy0+Zm9jdXNfaW5fZXZlbnQgPSB3ZWJWaWV3Rm9jdXNJbkV2ZW50OwotICAgIHdp
ZGdldENsYXNzLT5mb2N1c19vdXRfZXZlbnQgPSB3ZWJWaWV3Rm9jdXNPdXRFdmVudDsKLSAgICB3
aWRnZXRDbGFzcy0+a2V5X3ByZXNzX2V2ZW50ID0gd2ViVmlld0tleVByZXNzRXZlbnQ7Ci0gICAg
d2lkZ2V0Q2xhc3MtPmtleV9yZWxlYXNlX2V2ZW50ID0gd2ViVmlld0tleVJlbGVhc2VFdmVudDsK
LSAgICB3aWRnZXRDbGFzcy0+YnV0dG9uX3ByZXNzX2V2ZW50ID0gd2ViVmlld0J1dHRvblByZXNz
RXZlbnQ7Ci0gICAgd2lkZ2V0Q2xhc3MtPmJ1dHRvbl9yZWxlYXNlX2V2ZW50ID0gd2ViVmlld0J1
dHRvblJlbGVhc2VFdmVudDsKLSAgICB3aWRnZXRDbGFzcy0+c2Nyb2xsX2V2ZW50ID0gd2ViVmll
d1Njcm9sbEV2ZW50OwotICAgIHdpZGdldENsYXNzLT5tb3Rpb25fbm90aWZ5X2V2ZW50ID0gd2Vi
Vmlld01vdGlvbk5vdGlmeUV2ZW50OwotCi0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3Mg
PSBHX09CSkVDVF9DTEFTUyh3ZWJWaWV3V2lkZ2V0Q2xhc3MpOwotICAgIGdvYmplY3RDbGFzcy0+
ZGlzcG9zZSA9IHdlYlZpZXdXaWRnZXREaXNwb3NlOwotCi0gICAgR3RrQ29udGFpbmVyQ2xhc3Mq
IGNvbnRhaW5lckNsYXNzID0gR1RLX0NPTlRBSU5FUl9DTEFTUyh3ZWJWaWV3V2lkZ2V0Q2xhc3Mp
OwotICAgIGNvbnRhaW5lckNsYXNzLT5hZGQgPSB3ZWJWaWV3V2lkZ2V0Q29udGFpbmVyQWRkOwot
Ci0gICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHdlYlZpZXdXaWRnZXRDbGFzcywgc2l6ZW9m
KFdlYlZpZXdXaWRnZXRQcml2YXRlKSk7Ci19Ci0KLUdUeXBlIHdlYlZpZXdXaWRnZXRHZXRUeXBl
KCkKLXsKLSAgICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgZ0RlZmluZVR5cGVJZFZvbGF0aWxlID0g
MDsKLQotICAgIGlmICghZ19vbmNlX2luaXRfZW50ZXIoJmdEZWZpbmVUeXBlSWRWb2xhdGlsZSkp
Ci0gICAgICAgIHJldHVybiBnRGVmaW5lVHlwZUlkVm9sYXRpbGU7Ci0KLSAgICBHVHlwZSBnRGVm
aW5lVHlwZUlkID0gZ190eXBlX3JlZ2lzdGVyX3N0YXRpY19zaW1wbGUoR1RLX1RZUEVfQ09OVEFJ
TkVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnX2ludGVybl9zdGF0aWNfc3RyaW5nKCJXZWJWaWV3V2lkZ2V0IiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihXZWJW
aWV3V2lkZ2V0Q2xhc3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEdDbGFzc0luaXRGdW5jPih3ZWJWaWV3
V2lkZ2V0Q2xhc3NJbml0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZW9mKFdlYlZpZXdXaWRnZXQpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PEdJbnN0YW5jZUluaXRGdW5jPih3ZWJWaWV3V2lkZ2V0SW5pdCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdUeXBl
RmxhZ3M+KDApKTsKLSAgICBnX29uY2VfaW5pdF9sZWF2ZSgmZ0RlZmluZVR5cGVJZFZvbGF0aWxl
LCBnRGVmaW5lVHlwZUlkKTsKLQotICAgIHJldHVybiBnRGVmaW5lVHlwZUlkVm9sYXRpbGU7Ci19
Ci0KLVdlYlZpZXcqIHdlYlZpZXdXaWRnZXRHZXRXZWJWaWV3SW5zdGFuY2UoV2ViVmlld1dpZGdl
dCogd2ViVmlld1dpZGdldCkKLXsKLSAgICByZXR1cm4gd2ViVmlld1dpZGdldC0+cHJpdi0+d2Vi
Vmlld0luc3RhbmNlOwotfQotCi12b2lkIHdlYlZpZXdXaWRnZXRTZXRXZWJWaWV3SW5zdGFuY2Uo
V2ViVmlld1dpZGdldCogd2ViVmlld1dpZGdldCwgV2ViVmlldyogd2ViVmlld0luc3RhbmNlKQot
ewotICAgIHdlYlZpZXdXaWRnZXQtPnByaXYtPndlYlZpZXdJbnN0YW5jZSA9IHdlYlZpZXdJbnN0
YW5jZTsKLX0KLQotR3RrSU1Db250ZXh0KiB3ZWJWaWV3V2lkZ2V0R2V0SU1Db250ZXh0KFdlYlZp
ZXdXaWRnZXQqIHdlYlZpZXdXaWRnZXQpCi17Ci0gICAgcmV0dXJuIHdlYlZpZXdXaWRnZXQtPnBy
aXYtPmltQ29udGV4dDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViVmlld1dpZGdldC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3
V2lkZ2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMWQ4N2YuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJWaWV3V2lkZ2V0LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAx
MCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlZpZXdXaWRn
ZXRfaAotI2RlZmluZSBXZWJWaWV3V2lkZ2V0X2gKLQotI2luY2x1ZGUgIldlYlZpZXcuaCIKLQot
I2luY2x1ZGUgPGd0ay9ndGsuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotR19CRUdJ
Tl9ERUNMUwotCi0jZGVmaW5lIFdFQl9WSUVXX1RZUEVfV0lER0VUICAgICAgICAgICAgICAod2Vi
Vmlld1dpZGdldEdldFR5cGUoKSkKLSNkZWZpbmUgV0VCX1ZJRVdfV0lER0VUKG9iamVjdCkgICAg
ICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqZWN0KSwgV0VCX1ZJRVdfVFlQ
RV9XSURHRVQsIFdlYlZpZXdXaWRnZXQpKQotI2RlZmluZSBXRUJfVklFV19XSURHRVRfQ0xBU1Mo
a2xhc3MpICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIFdFQl9WSUVXX1RZ
UEVfV0lER0VULCBXZWJWaWV3V2lkZ2V0Q2xhc3MpKQotI2RlZmluZSBXRUJfVklFV19JU19XSURH
RVQob2JqZWN0KSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmplY3QpLCBX
RUJfVklFV19UWVBFX1dJREdFVCkpCi0jZGVmaW5lIFdFQl9WSUVXX0lTX0NMQVNTKGtsYXNzKSAg
ICAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgV0VCX1ZJRVdfVFlQRV9X
SURHRVQpKQotI2RlZmluZSBXRUJfVklFV19XSURHRVRfR0VUX0NMQVNTKG9iamVjdCkgKEdfVFlQ
RV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iamVjdCksIFdFQl9WSUVXX1RZUEVfV0lER0VULCBXZWJW
aWV3V2lkZ2V0Q2xhc3MpKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViVmlld1dpZGdldCBXZWJWaWV3
V2lkZ2V0OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYlZpZXdXaWRnZXRDbGFzcyBXZWJWaWV3V2lkZ2V0
Q2xhc3M7Ci10eXBlZGVmIHN0cnVjdCBfV2ViVmlld1dpZGdldFByaXZhdGUgV2ViVmlld1dpZGdl
dFByaXZhdGU7Ci0KLXN0cnVjdCBfV2ViVmlld1dpZGdldCB7Ci0gICAgR3RrQ29udGFpbmVyIHBh
cmVudEluc3RhbmNlOwotICAgIC8qPCBwcml2YXRlID4qLwotICAgIFdlYlZpZXdXaWRnZXRQcml2
YXRlKiBwcml2OwotfTsKLQotc3RydWN0IF9XZWJWaWV3V2lkZ2V0Q2xhc3MgewotICAgIEd0a0Nv
bnRhaW5lckNsYXNzIHBhcmVudENsYXNzOwotfTsKLQotR1R5cGUgd2ViVmlld1dpZGdldEdldFR5
cGUoKTsKLQotV2ViVmlldyogd2ViVmlld1dpZGdldEdldFdlYlZpZXdJbnN0YW5jZShXZWJWaWV3
V2lkZ2V0Kik7Ci0KLXZvaWQgd2ViVmlld1dpZGdldFNldFdlYlZpZXdJbnN0YW5jZShXZWJWaWV3
V2lkZ2V0KiwgV2ViVmlldyopOwotCi1HdGtJTUNvbnRleHQqIHdlYlZpZXdXaWRnZXRHZXRJTUNv
bnRleHQoV2ViVmlld1dpZGdldCopOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLy8gV2ViVmll
d1dpZGdldF9oCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCAwYzMyNTEwLi5mYzM0ZTAxIDEwMDY0NAot
LS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9tYWluLmMKQEAgLTI1LDE0ICsyNSwxNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXRXZWJW
aWV3Lmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCi1zdGF0aWMgdm9pZCBhY3RpdmF0ZVVyaUVu
dHJ5Q2FsbGJhY2soR3RrV2lkZ2V0ICplbnRyeSwgZ3BvaW50ZXIgZGF0YSkKK3N0YXRpYyB2b2lk
IGFjdGl2YXRlVXJpRW50cnlDYWxsYmFjayhHdGtFbnRyeSAqZW50cnkpCiB7Ci0gICAgV0tWaWV3
UmVmIHdlYlZpZXcgPSBnX29iamVjdF9nZXRfZGF0YShHX09CSkVDVChlbnRyeSksICJ3ZWItdmll
dyIpOwotICAgIGNvbnN0IGdjaGFyICp1cmkgPSBndGtfZW50cnlfZ2V0X3RleHQoR1RLX0VOVFJZ
KGVudHJ5KSk7Ci0gICAgV0tQYWdlTG9hZFVSTChXS1ZpZXdHZXRQYWdlKHdlYlZpZXcpLCBXS1VS
TENyZWF0ZVdpdGhVUkwodXJpKSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdfb2Jq
ZWN0X2dldF9kYXRhKEdfT0JKRUNUKGVudHJ5KSwgIndlYi12aWV3Iik7CisgICAgY29uc3QgZ2No
YXIgKnVyaSA9IGd0a19lbnRyeV9nZXRfdGV4dChlbnRyeSk7CisgICAgd2Via2l0X3dlYl92aWV3
X2xvYWRfdXJpKHdlYlZpZXcsIHVyaSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRlc3Ryb3lDYWxsYmFj
ayhHdGtXaWRnZXQgKndpZGdldCwgR3RrV2lkZ2V0ICp3aW5kb3cpCkBAIC00MCwxNyArNDAsMTcg
QEAgc3RhdGljIHZvaWQgZGVzdHJveUNhbGxiYWNrKEd0a1dpZGdldCAqd2lkZ2V0LCBHdGtXaWRn
ZXQgKndpbmRvdykKICAgICBndGtfbWFpbl9xdWl0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGdvQmFj
a0NhbGxiYWNrKEd0a1dpZGdldCAqd2lkZ2V0LCBXS1ZpZXdSZWYgd2ViVmlldykKK3N0YXRpYyB2
b2lkIGdvQmFja0NhbGxiYWNrKEd0a1dpZGdldCAqd2lkZ2V0LCBXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogewotICAgIFdLUGFnZUdvQmFjayhXS1ZpZXdHZXRQYWdlKHdlYlZpZXcpKTsKKyAgICB3
ZWJraXRfd2ViX3ZpZXdfZ29fYmFjayh3ZWJWaWV3KTsKIH0KIAotc3RhdGljIHZvaWQgZ29Gb3J3
YXJkQ2FsbGJhY2soR3RrV2lkZ2V0ICp3aWRnZXQsIFdLVmlld1JlZiB3ZWJWaWV3KQorc3RhdGlj
IHZvaWQgZ29Gb3J3YXJkQ2FsbGJhY2soR3RrV2lkZ2V0ICp3aWRnZXQsIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiB7Ci0gICAgV0tQYWdlR29Gb3J3YXJkKFdLVmlld0dldFBhZ2Uod2ViVmlldykp
OworICAgIHdlYmtpdF93ZWJfdmlld19nb19mb3J3YXJkKHdlYlZpZXcpOwogfQogCi1zdGF0aWMg
R3RrV2lkZ2V0ICpjcmVhdGVUb29sYmFyKEd0a1dpZGdldCAqdXJpRW50cnksIFdLVmlld1JlZiB3
ZWJWaWV3KQorc3RhdGljIEd0a1dpZGdldCAqY3JlYXRlVG9vbGJhcihHdGtXaWRnZXQgKnVyaUVu
dHJ5LCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEd0a1dpZGdldCAqdG9vbGJhciA9
IGd0a190b29sYmFyX25ldygpOwogCkBAIC04MywxMiArODMsNyBAQCBzdGF0aWMgR3RrV2lkZ2V0
ICpjcmVhdGVUb29sYmFyKEd0a1dpZGdldCAqdXJpRW50cnksIFdLVmlld1JlZiB3ZWJWaWV3KQog
ICAgIHJldHVybiB0b29sYmFyOwogfQogCi1zdGF0aWMgV0tWaWV3UmVmIGNyZWF0ZVdlYlZpZXco
KQotewotICAgIHJldHVybiBXS1ZpZXdDcmVhdGUoV0tDb250ZXh0R2V0U2hhcmVkUHJvY2Vzc0Nv
bnRleHQoKSwgMCk7Ci19Ci0KLXN0YXRpYyBHdGtXaWRnZXQgKmNyZWF0ZVdpbmRvdyhXS1ZpZXdS
ZWYgd2ViVmlldykKK3N0YXRpYyBHdGtXaWRnZXQgKmNyZWF0ZVdpbmRvdyhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogewogICAgIEd0a1dpZGdldCAqd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RL
X1dJTkRPV19UT1BMRVZFTCk7CiAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19X
SU5ET1cod2luZG93KSwgODAwLCA2MDApOwpAQCAtOTgsNyArOTMsNyBAQCBzdGF0aWMgR3RrV2lk
Z2V0ICpjcmVhdGVXaW5kb3coV0tWaWV3UmVmIHdlYlZpZXcpCiAKICAgICBHdGtXaWRnZXQgKnZi
b3ggPSBndGtfdmJveF9uZXcoRkFMU0UsIDApOwogICAgIGd0a19ib3hfcGFja19zdGFydChHVEtf
Qk9YKHZib3gpLCBjcmVhdGVUb29sYmFyKHVyaUVudHJ5LCB3ZWJWaWV3KSwgRkFMU0UsIEZBTFNF
LCAwKTsKLSAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgV0tWaWV3R2V0V2lu
ZG93KHdlYlZpZXcpLCBUUlVFLCBUUlVFLCAwKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RL
X0JPWCh2Ym94KSwgR1RLX1dJREdFVCh3ZWJWaWV3KSwgVFJVRSwgVFJVRSwgMCk7CiAKICAgICBn
dGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZib3gpOwogCkBAIC0xMjMs
MTQgKzExOCwxNCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIGlmICgh
Z190aHJlYWRfc3VwcG9ydGVkKCkpCiAgICAgICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CiAKLSAg
ICBXS1ZpZXdSZWYgd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXcoKTsKKyAgICBXZWJLaXRXZWJWaWV3
ICp3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CiAgICAg
R3RrV2lkZ2V0ICptYWluV2luZG93ID0gY3JlYXRlV2luZG93KHdlYlZpZXcpOwogCiAgICAgZ2No
YXIqIHVybCA9IGFyZ3VtZW50VG9VUkwoYXJnYyA+IDEgPyBhcmd2WzFdIDogImh0dHA6Ly93d3cu
d2Via2l0Z3RrLm9yZy8iKTsKLSAgICBXS1BhZ2VMb2FkVVJMKFdLVmlld0dldFBhZ2Uod2ViVmll
dyksIFdLVVJMQ3JlYXRlV2l0aFVSTCh1cmwpKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91
cmkod2ViVmlldywgdXJsKTsKICAgICBnX2ZyZWUodXJsKTsKIAotICAgIGd0a193aWRnZXRfZ3Jh
Yl9mb2N1cyhXS1ZpZXdHZXRXaW5kb3cod2ViVmlldykpOworICAgIGd0a193aWRnZXRfZ3JhYl9m
b2N1cyhHVEtfV0lER0VUICh3ZWJWaWV3KSk7CiAgICAgZ3RrX3dpZGdldF9zaG93X2FsbChtYWlu
V2luZG93KTsKICAgICBndGtfbWFpbigpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88406</attachid>
            <date>2011-04-06 06:27:21 -0700</date>
            <delta_ts>2011-04-15 02:42:21 -0700</delta_ts>
            <desc>Patch to add WebKitWebView</desc>
            <filename>wk2-webkitwebview.diff</filename>
            <type>text/plain</type>
            <size>15430</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkZGYwYjQyLi4zMjAzYmIx
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDQtMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEV4
cG9ydCBhbiBBUEkgc2ltaWxhciB0byBXZWJLaXQxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzgyMAorCisgICAgICAgIEJ1aWxkIEd0a0xhdW5jaGVy
IGZvciB3ZWJraXQyIHRvby4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorCiAyMDExLTA0
LTA0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBC
dWlsZCBmaXggZm9yIEdUSysgYWZ0ZXIgcjgyODc2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY3MGIyMTUuLjM1
ODIyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0wNC0wNiAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRXhwb3J0IGFuIEFQSSBzaW1pbGFyIHRv
IFdlYktpdDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU3ODIwCisKKyAgICAgICAgQWRkIGZpcnN0IGltcGxlbWVudGF0aW9uIG9mIFdlYktpdFdlYlZp
ZXcsIGEgY2xhc3Mgd2l0aCB0aGUgc2FtZQorICAgICAgICBBUEkgdGhhbiB3ZWJraXQxIHRoYXQg
d3JhcHMgdGhlIEMgQVBJIHRvIHByb3ZpZGUgYSBoaWdoIGxldmVsCisgICAgICAgIFdlYktpdDIg
QVBJIGZvciBHVEsgcG9ydC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19uZXcpOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2xvYWRfdXJpKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nb19iYWNrKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19nb19mb3J3YXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZGVkLgorCiAyMDExLTA0LTA1ICBDaGFuZyBTaHUgIDxj
c2h1QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWRhZjBhNS4u
Mzk2MDEzMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTA0LTA2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbR1RLXSBFeHBvcnQgYW4gQVBJIHNpbWlsYXIgdG8gV2ViS2l0MQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc4MjAKKworICAgICAg
ICBCdWlsZCBHdGtMYXVuY2hlciBmb3Igd2Via2l0MiB0b28uCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbToKKyAgICAgICAgKiBHdGtMYXVuY2hlci9tYWluLmM6CisgICAgICAgIChjcmVhdGVC
cm93c2VyKToKKyAgICAgICAgKGRpc2FibGVQbHVnaW4pOgorCiAyMDExLTA0LTA1ICBLZXZpbiBP
bGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gTWFjIGJ1
aWxkIGZpeC4gSGFuZGxlIGNhc2VzIHdoZXJlIDEwLjQgU0RLIGlzIG5vdCBpbnN0YWxsZWQsIGFu
ZCBhbHNvIGFkZCB4ODZfNjQgYXJjaApkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVt
YWtlZmlsZS5hbQppbmRleCBhZjU0ODkxLi40MzUzNWYxIDEwMDY0NAotLS0gYS9HTlVtYWtlZmls
ZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtMjM2LDkgKzIzNiw5IEBAIHN0YW1wLXBvOgog
ZWxzZQogaW5jbHVkZSBTb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQogaW5jbHVkZSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCi1pbmNsdWRlIFRv
b2xzL0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRlIFNvdXJjZS9XZWJLaXQvZ3RrL3BvL0dOVW1ha2Vm
aWxlLmFtCiBlbmRpZgoraW5jbHVkZSBUb29scy9HTlVtYWtlZmlsZS5hbQogCiAjIEF1dG9nZW5l
cmF0ZWQgc291cmNlcwogQlVJTFRfU09VUkNFUyArPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4
IDExYjU5MTAuLjE2OTM0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC02OSw3ICs2OSw4IEBA
IGxpYldlYktpdDJfbGFfSEVBREVSUyA9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9X
S1Byb3RlY3Rpb25TcGFjZS5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XS1Byb3Rl
Y3Rpb25TcGFjZVR5cGVzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3Vy
Y2VDYWNoZU1hbmFnZXIuaCBcCi0JJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2NwcC9XS1JldGFp
blB0ci5oCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oIFwKKwkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAogCiBub2Rpc3RfbGli
V2ViS2l0Ml9sYV9TT1VSQ0VTID0gXAogCSQod2Via2l0Ml9idWlsdF9zb3VyY2VzKQpAQCAtMzU3
LDYgKzM1OCw4IEBAIGxpYldlYktpdDJfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xMzNhYjUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTAsMCArMSw4MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIK
KworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworR19ERUZJTkVfVFlQRShXZWJL
aXRXZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXcsIFdFQktJVF9UWVBFX1dFQl9WSUVXX0JBU0UpCisK
K3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
Cit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdFQktJVF9XRUJfVklFV19C
QVNFKHdlYlZpZXcpLCBXS0NvbnRleHRHZXRTaGFyZWRQcm9jZXNzQ29udGV4dCgpLCAwKTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0Ns
YXNzKiB3ZWJWaWV3Q2xhc3MpCit7Cit9CisKKy8vIFB1YmxpYyBBUEkuCitHdGtXaWRnZXQqIHdl
YmtpdF93ZWJfdmlld19uZXcodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0g
V0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywgTlVMTCkp
OworCisgICAgcmV0dXJuIEdUS19XSURHRVQod2ViVmlldyk7Cit9CisKK3ZvaWQgd2Via2l0X3dl
Yl92aWV3X2xvYWRfdXJpKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiB1cmkp
Cit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwodXJpKTsKKworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdl
YmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7Cisg
ICAgV0tQYWdlTG9hZFVSTCh0b0FQSShwYWdlKSwgV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmco
dXJpKSk7Cit9CisKK3ZvaWQgd2Via2l0X3dlYl92aWV3X2dvX2JhY2soV2ViS2l0V2ViVmlldyog
d2ViVmlldykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CisKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBh
Z2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykpOworICAgIFdLUGFnZUdvQmFjayh0b0FQ
SShwYWdlKSk7Cit9CisKK3ZvaWQgd2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSk7CisKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFz
ZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykpOworICAgIFdLUGFnZUdvRm9y
d2FyZCh0b0FQSShwYWdlKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MzBkMmMyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHly
aWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYktpdFdlYlZpZXdfaAorI2RlZmluZSBXZWJLaXRXZWJWaWV3X2gKKworI2luY2x1ZGUgIldl
YktpdFdlYlZpZXdCYXNlLmgiCisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQ
RV9XRUJfVklFVyAgICAgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3R5cGUoKSkKKyNkZWZp
bmUgV0VCS0lUX1dFQl9WSUVXKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9WSUVXLCBXZWJLaXRXZWJWaWV3KSkKKyNkZWZp
bmUgV0VCS0lUX1dFQl9WSUVXX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NB
U1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9WSUVXLCBXZWJLaXRXZWJWaWV3Q2xhc3MpKQor
I2RlZmluZSBXRUJLSVRfSVNfV0VCX1ZJRVcob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5T
VEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1ZJRVcpKQorI2RlZmluZSBXRUJLSVRf
SVNfV0VCX1ZJRVdfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3Mp
LCAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcpKQorI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfR0VUX0NM
QVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVf
V0VCX1ZJRVcsIFdlYktpdFdlYlZpZXdDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJWaWV3ICAgICAgICBXZWJLaXRXZWJWaWV3OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXdDbGFzcyAgIFdlYktpdFdlYlZpZXdDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJW
aWV3UHJpdmF0ZSBXZWJLaXRXZWJWaWV3UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJWaWV3
IHsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICAvKjwgcHJp
dmF0ZSA+Ki8KKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBf
V2ViS2l0V2ViVmlld0NsYXNzIHsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZUNsYXNzIHBhcmVudF9j
bGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfdmlld19nZXRfdHlwZSh2
b2lkKTsKKworV0VCS0lUX0FQSSBHdGtXaWRnZXQqCit3ZWJraXRfd2ViX3ZpZXdfbmV3KHZvaWQp
OworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19sb2FkX3VyaShXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogdXJpKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfd2ViX3ZpZXdfZ29fYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KTsKKworV0VCS0lUX0FQ
SSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9HTlVtYWtlZmls
ZS5hbSBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCmluZGV4IDZkZTFhZjUuLjdhNmUxMzQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCkBA
IC0xLDkgKzEsMTkgQEAKIG5vaW5zdF9QUk9HUkFNUyArPSBcCisJUHJvZ3JhbXMvR3RrTGF1bmNo
ZXIKKworaWYgIUVOQUJMRV9XRUJLSVQyCitub2luc3RfUFJPR1JBTVMgKz0gXAogCVByb2dyYW1z
L0R1bXBSZW5kZXJUcmVlIFwKLQlQcm9ncmFtcy9HdGtMYXVuY2hlciBcCiAJUHJvZ3JhbXMvSW1h
Z2VEaWZmCitlbmRpZgogCiAjIEd0a0xhdW5jaGVyCitpZiBFTkFCTEVfV0VCS0lUMgorUHJvZ3Jh
bXNfR3RrTGF1bmNoZXJfQ1BQRkxBR1MgPSBcCisJLUkkKHNyY2RpcikvU291cmNlIFwKKwktSSQo
dG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL2luY2x1ZGUgXAorCSQoZ2xvYmFs
X2NwcGZsYWdzKQorZWxzZQogUHJvZ3JhbXNfR3RrTGF1bmNoZXJfQ1BQRkxBR1MgPSBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9jYWNoZS8gXApAQCAtMTEsNiArMjEsNyBAQCBQcm9ncmFt
c19HdGtMYXVuY2hlcl9DUFBGTEFHUyA9IFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291
cmNlcyBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKIAkkKGphdmFzY3JpcHRjb3JlX2NwcGZsYWdz
KQorZW5kaWYKIAogUHJvZ3JhbXNfR3RrTGF1bmNoZXJfU09VUkNFUyA9IFwKIAlUb29scy9HdGtM
YXVuY2hlci9tYWluLmMKQEAgLTIyLDggKzMzLDIwIEBAIFByb2dyYW1zX0d0a0xhdW5jaGVyX0NG
TEFHUyA9IFwKIAkkKEdUS19DRkxBR1MpIFwKIAkkKExJQlNPVVBfQ0ZMQUdTKQogCitpZiBFTkFC
TEVfV0VCS0lUMgorUHJvZ3JhbXNfR3RrTGF1bmNoZXJfQ0ZMQUdTICs9IFwKKwktRFdFQktJVDI9
XCIxXCIKK2VuZGlmCisKK2lmIEVOQUJMRV9XRUJLSVQyCiBQcm9ncmFtc19HdGtMYXVuY2hlcl9M
REFERCA9IFwKLQlsaWJ3ZWJraXRndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAorCWxpYndlYmtpdDJndGstQFdFQktJVEdU
S19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEKK2Vs
c2UKK1Byb2dyYW1zX0d0a0xhdW5jaGVyX0xEQUREID0gXAorCWxpYndlYmtpdGd0ay1AV0VCS0lU
R1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYQor
ZW5kaWYKKworUHJvZ3JhbXNfR3RrTGF1bmNoZXJfTERBREQgKz0gXAogCSQoR1RLX0xJQlMpIFwK
IAkkKEdMSUJfTElCUykgXAogCSQoV0lOTU1fTElCUykKQEAgLTMyLDYgKzU1LDE3IEBAIFByb2dy
YW1zX0d0a0xhdW5jaGVyX0xERkxBR1MgPSBcCiAJLW5vLWZhc3QtaW5zdGFsbCBcCiAJLW5vLWlu
c3RhbGwKIAoraWYgRU5BQkxFX1dFQktJVDIKK0d0a0xhdW5jaGVyIDo9ICQoc3JjZGlyKS9Ub29s
cy9HdGtMYXVuY2hlcgorR3RrTGF1bmNoZXJGd2RIZWFkZXJzIDo9ICQoR0VOU09VUkNFU19XRUJL
SVQyKS9pbmNsdWRlCitCVUlMVF9TT1VSQ0VTICs9IFwKKwlnZW5lcmF0ZS1taW5pYnJvd3Nlci1m
b3J3YXJkLWhlYWRlcnMKK2VuZXJhdGUtbWluaWJyb3dzZXItZm9yd2FyZC1oZWFkZXJzOiAkKFdl
YktpdDIpL1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsICQoUHJvZ3JhbXNf
R3RrTGF1bmNoZXJfU09VUkNFUykKKwkkKEFNX1ZfR0VOKSQoUEVSTCkgJDwgJChHdGtMYXVuY2hl
cikgJChHdGtMYXVuY2hlckZ3ZEhlYWRlcnMpIGd0aworCSQoQU1fVl9HRU4pJChQRVJMKSAkPCAk
KEd0a0xhdW5jaGVyKSAkKEd0a0xhdW5jaGVyRndkSGVhZGVycykgc291cAorZW5kaWYKKworaWYg
IUVOQUJMRV9XRUJLSVQyCiAjIER1bXBSZW5kZXJUcmVlCiBkdW1wcmVuZGVydHJlZV9jcHBmbGFn
cyA6PSBcCiAJLUkkKHNyY2RpcikvVG9vbHMvRHVtcFJlbmRlclRyZWUgXApAQCAtMTQyLDkgKzE3
NiwxMyBAQCBQcm9ncmFtc19JbWFnZURpZmZfTERGTEFHUyA9IFwKICMgY2xlYW4gdGFyZ2V0CiBD
TEVBTkZJTEVTICs9IFwKIAlQcm9ncmFtcy9EdW1wUmVuZGVyVHJlZSBcCi0JUHJvZ3JhbXMvR3Rr
TGF1bmNoZXIgXAogCVByb2dyYW1zL0ltYWdlRGlmZgorZW5kaWYKKworQ0xFQU5GSUxFUyArPSBc
CisJUHJvZ3JhbXMvR3RrTGF1bmNoZXIKIAoraWYgIUVOQUJMRV9XRUJLSVQyCiBpZiBUQVJHRVRf
WDExCiAKICMgQnVpbGQgVGVzdE5ldHNjYXBlUGx1Z2luIG9ubHkgZm9yIFgxMQpAQCAtMjAxLDMg
KzIzOSw1IEBAIFRlc3ROZXRzY2FwZVBsdWdpbl9saWJ0ZXN0bmV0c2NhcGVwbHVnaW5fbGFfTERG
TEFHUyA9IFwKIAogQ0xFQU5GSUxFUyArPSBUZXN0TmV0c2NhcGVQbHVnaW4vbGlidGVzdG5ldHNj
YXBlcGx1Z2luLmxhCiBlbmRpZgorCitlbmRpZiAjIUVOQUJMRV9XRUJLSVQyClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jIGIv
VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCmluZGV4IGFkNjY2ZTIuLjY1NzM3MDkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0d0a0xhdW5jaGVyL21haW4uYworKysgYi9Ub29scy9HdGtMYXVuY2hlci9tYWlu
LmMKQEAgLTI1LDcgKzI1LDExIEBACiAgKi8KIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpZmRl
ZiBXRUJLSVQyCisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXRXZWJWaWV3Lmg+CisjZWxzZQogI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KKyNlbmRpZgogCiBzdGF0aWMgZ2ludCB3aW5kb3dDb3Vu
dCA9IDA7CiAKQEAgLTM5LDYgKzQzLDcgQEAgc3RhdGljIHZvaWQgYWN0aXZhdGVVcmlFbnRyeUNi
KEd0a1dpZGdldCogZW50cnksIGdwb2ludGVyIGRhdGEpCiAgICAgd2Via2l0X3dlYl92aWV3X2xv
YWRfdXJpKHdlYlZpZXcsIHVyaSk7CiB9CiAKKyNpZm5kZWYgV0VCS0lUMgogc3RhdGljIHZvaWQg
dXBkYXRlVGl0bGUoR3RrV2luZG93KiB3aW5kb3csIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7
CiAgICAgR1N0cmluZyAqc3RyaW5nID0gZ19zdHJpbmdfbmV3KHdlYmtpdF93ZWJfdmlld19nZXRf
dGl0bGUod2ViVmlldykpOwpAQCAtODAsNiArODUsNyBAQCBzdGF0aWMgdm9pZCBub3RpZnlQcm9n
cmVzc0NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqIHBzcGVjLCBHdGtXaWRn
ZQogewogICAgIHVwZGF0ZVRpdGxlKEdUS19XSU5ET1cod2luZG93KSwgd2ViVmlldyk7CiB9Cisj
ZW5kaWYKIAogc3RhdGljIHZvaWQgZGVzdHJveUNiKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtXaWRn
ZXQqIHdpbmRvdykKIHsKQEAgLTk3LDYgKzEwMyw3IEBAIHN0YXRpYyB2b2lkIGdvRm9yd2FyZENi
KEd0a1dpZGdldCogd2lkZ2V0LCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHdlYmtpdF93
ZWJfdmlld19nb19mb3J3YXJkKHdlYlZpZXcpOwogfQogCisjaWZuZGVmIFdFQktJVDIKIHN0YXRp
YyBXZWJLaXRXZWJWaWV3KgogY3JlYXRlV2ViVmlld0NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdFdlYkZyYW1lKiB3ZWJfZnJhbWUsIEd0a1dpZGdldCogd2luZG93KQogewpAQCAtMTE3
LDYgKzEyNCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBjbG9zZVdlYlZpZXdDYihXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBHdGtXaWRnZXQqIHdpbmRvdykKICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kod2lu
ZG93KTsKICAgICByZXR1cm4gVFJVRTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgR3RrV2lkZ2V0KiBj
cmVhdGVCcm93c2VyKEd0a1dpZGdldCogd2luZG93LCBHdGtXaWRnZXQqIHVyaUVudHJ5LCBHdGtX
aWRnZXQqIHN0YXR1c2JhciwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKQEAgLTEyNSw2ICsx
MzMsNyBAQCBzdGF0aWMgR3RrV2lkZ2V0KiBjcmVhdGVCcm93c2VyKEd0a1dpZGdldCogd2luZG93
LCBHdGtXaWRnZXQqIHVyaUVudHJ5LCBHdGtXaWRnZQogCiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQo
R1RLX0NPTlRBSU5FUihzY3JvbGxlZFdpbmRvdyksIEdUS19XSURHRVQod2ViVmlldykpOwogCisj
aWZuZGVmIFdFQktJVDIKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJub3RpZnk6OnRp
dGxlIiwgR19DQUxMQkFDSyhub3RpZnlUaXRsZUNiKSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9j
b25uZWN0KHdlYlZpZXcsICJub3RpZnk6OmxvYWQtc3RhdHVzIiwgR19DQUxMQkFDSyhub3RpZnlM
b2FkU3RhdHVzQ2IpLCB1cmlFbnRyeSk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAi
bm90aWZ5Ojpwcm9ncmVzcyIsIEdfQ0FMTEJBQ0sobm90aWZ5UHJvZ3Jlc3NDYiksIHdpbmRvdyk7
CkBAIC0xMzIsNiArMTQxLDcgQEAgc3RhdGljIEd0a1dpZGdldCogY3JlYXRlQnJvd3NlcihHdGtX
aWRnZXQqIHdpbmRvdywgR3RrV2lkZ2V0KiB1cmlFbnRyeSwgR3RrV2lkZ2UKICAgICBnX3NpZ25h
bF9jb25uZWN0KHdlYlZpZXcsICJjcmVhdGUtd2ViLXZpZXciLCBHX0NBTExCQUNLKGNyZWF0ZVdl
YlZpZXdDYiksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAid2ViLXZp
ZXctcmVhZHkiLCBHX0NBTExCQUNLKHdlYlZpZXdSZWFkeUNiKSwgd2luZG93KTsKICAgICBnX3Np
Z25hbF9jb25uZWN0KHdlYlZpZXcsICJjbG9zZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY2xvc2VX
ZWJWaWV3Q2IpLCB3aW5kb3cpOworI2VuZGlmCiAKICAgICByZXR1cm4gc2Nyb2xsZWRXaW5kb3c7
CiB9CkBAIC0yMzMsNiArMjQzLDcgQEAgc3RhdGljIGdjaGFyKiBmaWxlbmFtZVRvVVJMKGNvbnN0
IGNoYXIqIGZpbGVuYW1lKQogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgogc3RhdGljIHZvaWQg
ZGlzYWJsZVBsdWdpbihjb25zdCBjaGFyKiBwbHVnaW5OYW1lKQogeworI2lmbmRlZiBXRUJLSVQy
CiAgICAgV2ViS2l0V2ViUGx1Z2luRGF0YWJhc2UgKmRhdGFiYXNlID0gd2Via2l0X2dldF93ZWJf
cGx1Z2luX2RhdGFiYXNlKCk7CiAgICAgR1NMaXN0ICpwbHVnaW5zID0gd2Via2l0X3dlYl9wbHVn
aW5fZGF0YWJhc2VfZ2V0X3BsdWdpbnMoZGF0YWJhc2UpOwogICAgIEdTTGlzdCAqcDsKQEAgLTI0
NSw2ICsyNTYsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlUGx1Z2luKGNvbnN0IGNoYXIqIHBsdWdp
bk5hbWUpCiAgICAgfQogCiAgICAgd2Via2l0X3dlYl9wbHVnaW5fZGF0YWJhc2VfcGx1Z2luc19s
aXN0X2ZyZWUocGx1Z2lucyk7CisjZW5kaWYKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89759</attachid>
            <date>2011-04-15 02:42:21 -0700</date>
            <delta_ts>2011-04-25 02:36:11 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-gtk-api.diff</filename>
            <type>text/plain</type>
            <size>14850</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0NzZiYTQ3Li40ZDk5YmNl
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDQtMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEV4
cG9ydCBhbiBBUEkgc2ltaWxhciB0byBXZWJLaXQxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzgyMAorCisgICAgICAgIEJ1aWxkIEd0a0xhdW5jaGVy
IGZvciB3ZWJraXQyIHRvby4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorCiAyMDExLTA0
LTEzICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTM4OTQ0MS4uZjA1NmJkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA0LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbR1RLXSBFeHBvcnQgYW4gQVBJIHNpbWlsYXIgdG8gV2ViS2l0MQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc4MjAKKworICAg
ICAgICBBZGQgZmlyc3QgaW1wbGVtZW50YXRpb24gb2YgV2ViS2l0V2ViVmlldywgYSBjbGFzcyB3
aXRoIHRoZSBzYW1lCisgICAgICAgIEFQSSB0aGFuIHdlYmtpdDEsIHRoYXQgd3JhcHMgdGhlIEMg
QVBJIHRvIHByb3ZpZGUgYSBoaWdoIGxldmVsCisgICAgICAgIFdlYktpdDIgQVBJIGZvciBHVEsg
cG9ydC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdG
aW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogQWRkZWQuCisKIDIwMTEtMDQtMTMg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM3ZmVlZjkuLjA1ZDE2ZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0w
NC0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRXhwb3J0IGFu
IEFQSSBzaW1pbGFyIHRvIFdlYktpdDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU3ODIwCisKKyAgICAgICAgQnVpbGQgR3RrTGF1bmNoZXIgZm9yIHdl
YmtpdDIgdG9vLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR3RrTGF1
bmNoZXIvbWFpbi5jOgorICAgICAgICAodXBkYXRlVGl0bGUpOgorICAgICAgICAobm90aWZ5TG9h
ZFN0YXR1c0NiKToKKyAgICAgICAgKGdvQmFja0NiKToKKyAgICAgICAgKHdlYlZpZXdSZWFkeUNi
KToKKyAgICAgICAgKGNyZWF0ZUJyb3dzZXIpOgorCiAyMDExLTA0LTE0ICBBbG9rIFByaXlhZGFy
c2hpICA8YWxva3BAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IGFm
NTQ4OTEuLjQzNTM1ZjEgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2Vm
aWxlLmFtCkBAIC0yMzYsOSArMjM2LDkgQEAgc3RhbXAtcG86CiBlbHNlCiBpbmNsdWRlIFNvdXJj
ZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRlIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KLWluY2x1ZGUgVG9vbHMvR05VbWFrZWZpbGUuYW0K
IGluY2x1ZGUgU291cmNlL1dlYktpdC9ndGsvcG8vR05VbWFrZWZpbGUuYW0KIGVuZGlmCitpbmNs
dWRlIFRvb2xzL0dOVW1ha2VmaWxlLmFtCiAKICMgQXV0b2dlbmVyYXRlZCBzb3VyY2VzCiBCVUlM
VF9TT1VSQ0VTICs9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFt
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggYmY4N2ZmYS4uMDJkZWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTY5LDcgKzY5LDggQEAgbGliV2ViS2l0Ml9sYV9IRUFE
RVJTID0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmgg
XAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCBc
CiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oIFwK
LQkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmgKKwkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCiAKIG5vZGlzdF9saWJXZWJLaXQyX2xhX1NPVVJDRVMg
PSBcCiAJJCh3ZWJraXQyX2J1aWx0X3NvdXJjZXMpCkBAIC0zNTcsNiArMzU4LDggQEAgbGliV2Vi
S2l0Ml9sYV9TT1VSQ0VTID0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL1dL
UmV0YWluUHRyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExODFh
MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJLaXRXZWJWaWV3LmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1
ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTC5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlldywgd2Via2l0X3dlYl92aWV3LCBXRUJLSVRfVFlQ
RV9XRUJfVklFV19CQVNFKQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFn
ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSwgV0tDb250ZXh0R2V0U2hhcmVkUHJvY2Vz
c0NvbnRleHQoKSwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19p
bml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQoreworfQorCisvLyBQdWJsaWMg
QVBJLgorR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3KHZvaWQpCit7CisgICAgV2ViS2l0
V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfV0VCX1ZJRVcsIE5VTEwpKTsKKworICAgIHJldHVybiBHVEtfV0lER0VUKHdlYlZpZXcpOwor
fQorCit2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBjb25zdCBnY2hhciogdXJpKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CisKKyAgICBXZWJQ
YWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVX
X0JBU0Uod2ViVmlldykpOworICAgIFdLUGFnZUxvYWRVUkwodG9BUEkocGFnZSksIFdLVVJMQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKHVyaSkpOworfQorCit2b2lkIHdlYmtpdF93ZWJfdmlld19nb19i
YWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworCisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Vi
a2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsKKyAg
ICBXS1BhZ2VHb0JhY2sodG9BUEkocGFnZSkpOworfQorCit2b2lkIHdlYmtpdF93ZWJfdmlld19n
b19mb3J3YXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworCisgICAgV2ViUGFnZVByb3h5KiBwYWdl
ID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcp
KTsKKyAgICBXS1BhZ2VHb0ZvcndhcmQodG9BUEkocGFnZSkpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjg5MDBhODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTAsMCArMSw4MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYktpdFdlYlZpZXdfaAorI2RlZmluZSBXZWJLaXRXZWJWaWV3X2gKKworI2luY2x1ZGUgIldl
YktpdFdlYlZpZXdCYXNlLmgiCisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQ
RV9XRUJfVklFVyAgICAgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3R5cGUoKSkKKyNkZWZp
bmUgV0VCS0lUX1dFQl9WSUVXKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9WSUVXLCBXZWJLaXRXZWJWaWV3KSkKKyNkZWZp
bmUgV0VCS0lUX1dFQl9WSUVXX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NB
U1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9WSUVXLCBXZWJLaXRXZWJWaWV3Q2xhc3MpKQor
I2RlZmluZSBXRUJLSVRfSVNfV0VCX1ZJRVcob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5T
VEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1ZJRVcpKQorI2RlZmluZSBXRUJLSVRf
SVNfV0VCX1ZJRVdfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3Mp
LCAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcpKQorI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfR0VUX0NM
QVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVf
V0VCX1ZJRVcsIFdlYktpdFdlYlZpZXdDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJWaWV3ICAgICAgICBXZWJLaXRXZWJWaWV3OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXdDbGFzcyAgIFdlYktpdFdlYlZpZXdDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJW
aWV3UHJpdmF0ZSBXZWJLaXRXZWJWaWV3UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJWaWV3
IHsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJlbnQ7CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8K
KyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2Vi
Vmlld0NsYXNzIHsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZUNsYXNzIHBhcmVudDsKKworICAgIC8q
IFBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KKyAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDMpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsK
KyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDUpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtp
dF9yZXNlcnZlZDYpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDcpICh2b2lk
KTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfdmlld19nZXRfdHlwZSh2b2lk
KTsKKworV0VCS0lUX0FQSSBHdGtXaWRnZXQqCit3ZWJraXRfd2ViX3ZpZXdfbmV3KHZvaWQpOwor
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19sb2FkX3VyaShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogdXJpKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
d2ViX3ZpZXdfZ29fYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KTsK
KworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9HTlVtYWtlZmlsZS5h
bSBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCmluZGV4IDM0MDUyZDcuLjU3YTI5ZWEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCkBAIC0x
LDkgKzEsMTkgQEAKIG5vaW5zdF9QUk9HUkFNUyArPSBcCisJUHJvZ3JhbXMvR3RrTGF1bmNoZXIK
KworaWYgIUVOQUJMRV9XRUJLSVQyCitub2luc3RfUFJPR1JBTVMgKz0gXAogCVByb2dyYW1zL0R1
bXBSZW5kZXJUcmVlIFwKLQlQcm9ncmFtcy9HdGtMYXVuY2hlciBcCiAJUHJvZ3JhbXMvSW1hZ2VE
aWZmCitlbmRpZgogCiAjIEd0a0xhdW5jaGVyCitpZiBFTkFCTEVfV0VCS0lUMgorUHJvZ3JhbXNf
R3RrTGF1bmNoZXJfQ1BQRkxBR1MgPSBcCisJLUkkKHNyY2RpcikvU291cmNlIFwKKwktSSQodG9w
X2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL2luY2x1ZGUgXAorCSQoZ2xvYmFsX2Nw
cGZsYWdzKQorZWxzZQogUHJvZ3JhbXNfR3RrTGF1bmNoZXJfQ1BQRkxBR1MgPSBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdC9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9jYWNoZS8gXApAQCAtMTEsNiArMjEsNyBAQCBQcm9ncmFtc19H
dGtMYXVuY2hlcl9DUFBGTEFHUyA9IFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNl
cyBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKIAkkKGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzKQor
ZW5kaWYKIAogUHJvZ3JhbXNfR3RrTGF1bmNoZXJfU09VUkNFUyA9IFwKIAlUb29scy9HdGtMYXVu
Y2hlci9tYWluLmMKQEAgLTIyLDggKzMzLDIwIEBAIFByb2dyYW1zX0d0a0xhdW5jaGVyX0NGTEFH
UyA9IFwKIAkkKEdUS19DRkxBR1MpIFwKIAkkKExJQlNPVVBfQ0ZMQUdTKQogCitpZiBFTkFCTEVf
V0VCS0lUMgorUHJvZ3JhbXNfR3RrTGF1bmNoZXJfQ0ZMQUdTICs9IFwKKwktRFdFQktJVDI9XCIx
XCIKK2VuZGlmCisKK2lmIEVOQUJMRV9XRUJLSVQyCiBQcm9ncmFtc19HdGtMYXVuY2hlcl9MREFE
RCA9IFwKLQlsaWJ3ZWJraXRndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJ
VEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAorCWxpYndlYmtpdDJndGstQFdFQktJVEdUS19B
UElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEKK2Vsc2UK
K1Byb2dyYW1zX0d0a0xhdW5jaGVyX0xEQUREID0gXAorCWxpYndlYmtpdGd0ay1AV0VCS0lUR1RL
X0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYQorZW5k
aWYKKworUHJvZ3JhbXNfR3RrTGF1bmNoZXJfTERBREQgKz0gXAogCSQoR1RLX0xJQlMpIFwKIAkk
KEdMSUJfTElCUykgXAogCSQoV0lOTU1fTElCUykKQEAgLTMyLDYgKzU1LDE3IEBAIFByb2dyYW1z
X0d0a0xhdW5jaGVyX0xERkxBR1MgPSBcCiAJLW5vLWZhc3QtaW5zdGFsbCBcCiAJLW5vLWluc3Rh
bGwKIAoraWYgRU5BQkxFX1dFQktJVDIKK0d0a0xhdW5jaGVyIDo9ICQoc3JjZGlyKS9Ub29scy9H
dGtMYXVuY2hlcgorR3RrTGF1bmNoZXJGd2RIZWFkZXJzIDo9ICQoR0VOU09VUkNFU19XRUJLSVQy
KS9pbmNsdWRlCitCVUlMVF9TT1VSQ0VTICs9IFwKKwlnZW5lcmF0ZS1taW5pYnJvd3Nlci1mb3J3
YXJkLWhlYWRlcnMKK2VuZXJhdGUtbWluaWJyb3dzZXItZm9yd2FyZC1oZWFkZXJzOiAkKFdlYktp
dDIpL1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsICQoUHJvZ3JhbXNfR3Rr
TGF1bmNoZXJfU09VUkNFUykKKwkkKEFNX1ZfR0VOKSQoUEVSTCkgJDwgJChHdGtMYXVuY2hlcikg
JChHdGtMYXVuY2hlckZ3ZEhlYWRlcnMpIGd0aworCSQoQU1fVl9HRU4pJChQRVJMKSAkPCAkKEd0
a0xhdW5jaGVyKSAkKEd0a0xhdW5jaGVyRndkSGVhZGVycykgc291cAorZW5kaWYKKworaWYgIUVO
QUJMRV9XRUJLSVQyCiAjIER1bXBSZW5kZXJUcmVlCiBkdW1wcmVuZGVydHJlZV9jcHBmbGFncyA6
PSBcCiAJLUkkKHNyY2RpcikvVG9vbHMvRHVtcFJlbmRlclRyZWUgXApAQCAtMTQ2LDkgKzE4MCwx
MyBAQCBQcm9ncmFtc19JbWFnZURpZmZfTERGTEFHUyA9IFwKICMgY2xlYW4gdGFyZ2V0CiBDTEVB
TkZJTEVTICs9IFwKIAlQcm9ncmFtcy9EdW1wUmVuZGVyVHJlZSBcCi0JUHJvZ3JhbXMvR3RrTGF1
bmNoZXIgXAogCVByb2dyYW1zL0ltYWdlRGlmZgorZW5kaWYKKworQ0xFQU5GSUxFUyArPSBcCisJ
UHJvZ3JhbXMvR3RrTGF1bmNoZXIKIAoraWYgIUVOQUJMRV9XRUJLSVQyCiBpZiBUQVJHRVRfWDEx
CiAKICMgQnVpbGQgVGVzdE5ldHNjYXBlUGx1Z2luIG9ubHkgZm9yIFgxMQpAQCAtMjA2LDMgKzI0
NCw1IEBAIFRlc3ROZXRzY2FwZVBsdWdpbl9saWJ0ZXN0bmV0c2NhcGVwbHVnaW5fbGFfTERGTEFH
UyA9IFwKIAogQ0xFQU5GSUxFUyArPSBUZXN0TmV0c2NhcGVQbHVnaW4vbGlidGVzdG5ldHNjYXBl
cGx1Z2luLmxhCiBlbmRpZgorCitlbmRpZiAjIUVOQUJMRV9XRUJLSVQyCmRpZmYgLS1naXQgYS9U
b29scy9HdGtMYXVuY2hlci9tYWluLmMgYi9Ub29scy9HdGtMYXVuY2hlci9tYWluLmMKaW5kZXgg
YTFiYWYwNS4uNTljZWFjOCAxMDA2NDQKLS0tIGEvVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCisr
KyBiL1Rvb2xzL0d0a0xhdW5jaGVyL21haW4uYwpAQCAtMjUsNyArMjUsMTEgQEAKICAqLwogCiAj
aW5jbHVkZSA8Z3RrL2d0ay5oPgorI2lmZGVmIFdFQktJVDIKKyNpbmNsdWRlIDxXZWJLaXQyL1dl
YktpdFdlYlZpZXcuaD4KKyNlbHNlCiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdC5oPgorI2VuZGlm
CiAKIHN0YXRpYyBnaW50IHdpbmRvd0NvdW50ID0gMDsKIApAQCAtMzksNiArNDMsNyBAQCBzdGF0
aWMgdm9pZCBhY3RpdmF0ZVVyaUVudHJ5Q2IoR3RrV2lkZ2V0KiBlbnRyeSwgZ3BvaW50ZXIgZGF0
YSkKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldywgdXJpKTsKIH0KIAorI2lm
bmRlZiBXRUJLSVQyCiBzdGF0aWMgdm9pZCB1cGRhdGVUaXRsZShHdGtXaW5kb3cqIHdpbmRvdywg
V2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBHU3RyaW5nICpzdHJpbmcgPSBnX3N0cmlu
Z19uZXcod2Via2l0X3dlYl92aWV3X2dldF90aXRsZSh3ZWJWaWV3KSk7CkBAIC04MCw2ICs4NSw3
IEBAIHN0YXRpYyB2b2lkIG5vdGlmeVByb2dyZXNzQ2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
R1BhcmFtU3BlYyogcHNwZWMsIEd0a1dpZGdlCiB7CiAgICAgdXBkYXRlVGl0bGUoR1RLX1dJTkRP
Vyh3aW5kb3cpLCB3ZWJWaWV3KTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgdm9pZCBkZXN0cm95Q2Io
R3RrV2lkZ2V0KiB3aWRnZXQsIEd0a1dpZGdldCogd2luZG93KQogewpAQCAtOTcsNiArMTAzLDcg
QEAgc3RhdGljIHZvaWQgZ29Gb3J3YXJkQ2IoR3RrV2lkZ2V0KiB3aWRnZXQsIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiAgICAgd2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQod2ViVmlldyk7CiB9
CiAKKyNpZm5kZWYgV0VCS0lUMgogc3RhdGljIFdlYktpdFdlYlZpZXcqCiBjcmVhdGVXZWJWaWV3
Q2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViRnJhbWUqIHdlYl9mcmFtZSwgR3Rr
V2lkZ2V0KiB3aW5kb3cpCiB7CkBAIC0xMTcsNiArMTI0LDcgQEAgc3RhdGljIGdib29sZWFuIGNs
b3NlV2ViVmlld0NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a1dpZGdldCogd2luZG93KQog
ICAgIGd0a193aWRnZXRfZGVzdHJveSh3aW5kb3cpOwogICAgIHJldHVybiBUUlVFOwogfQorI2Vu
ZGlmCiAKIHN0YXRpYyBHdGtXaWRnZXQqIGNyZWF0ZUJyb3dzZXIoR3RrV2lkZ2V0KiB3aW5kb3cs
IEd0a1dpZGdldCogdXJpRW50cnksIEd0a1dpZGdldCogc3RhdHVzYmFyLCBXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogewpAQCAtMTI1LDYgKzEzMyw3IEBAIHN0YXRpYyBHdGtXaWRnZXQqIGNyZWF0
ZUJyb3dzZXIoR3RrV2lkZ2V0KiB3aW5kb3csIEd0a1dpZGdldCogdXJpRW50cnksIEd0a1dpZGdl
CiAKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHNjcm9sbGVkV2luZG93KSwg
R1RLX1dJREdFVCh3ZWJWaWV3KSk7CiAKKyNpZm5kZWYgV0VCS0lUMgogICAgIGdfc2lnbmFsX2Nv
bm5lY3Qod2ViVmlldywgIm5vdGlmeTo6dGl0bGUiLCBHX0NBTExCQUNLKG5vdGlmeVRpdGxlQ2Ip
LCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgIm5vdGlmeTo6bG9hZC1z
dGF0dXMiLCBHX0NBTExCQUNLKG5vdGlmeUxvYWRTdGF0dXNDYiksIHVyaUVudHJ5KTsKICAgICBn
X3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJub3RpZnk6OnByb2dyZXNzIiwgR19DQUxMQkFDSyhu
b3RpZnlQcm9ncmVzc0NiKSwgd2luZG93KTsKQEAgLTEzMiw2ICsxNDEsNyBAQCBzdGF0aWMgR3Rr
V2lkZ2V0KiBjcmVhdGVCcm93c2VyKEd0a1dpZGdldCogd2luZG93LCBHdGtXaWRnZXQqIHVyaUVu
dHJ5LCBHdGtXaWRnZQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgImNyZWF0ZS13ZWIt
dmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0NiKSwgd2luZG93KTsKICAgICBnX3NpZ25h
bF9jb25uZWN0KHdlYlZpZXcsICJ3ZWItdmlldy1yZWFkeSIsIEdfQ0FMTEJBQ0sod2ViVmlld1Jl
YWR5Q2IpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgImNsb3NlLXdl
Yi12aWV3IiwgR19DQUxMQkFDSyhjbG9zZVdlYlZpZXdDYiksIHdpbmRvdyk7CisjZW5kaWYKIAog
ICAgIHJldHVybiBzY3JvbGxlZFdpbmRvdzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90909</attachid>
            <date>2011-04-25 02:36:11 -0700</date>
            <delta_ts>2011-04-29 05:32:45 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-gtk-api3.diff</filename>
            <type>text/plain</type>
            <size>16947</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyNGNlYjBkLi40MmI3MjM3
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDQtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEV4
cG9ydCBhbiBBUEkgc2ltaWxhciB0byBXZWJLaXQxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzgyMAorCisgICAgICAgIEJ1aWxkIEd0a0xhdW5jaGVy
IGZvciB3ZWJraXQyIHRvby4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorCiAyMDExLTA0
LTIyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByODQ2MjcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzI0ZDY2ZC4u
YTliZmFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTA0LTI1ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBFeHBvcnQgYW4gQVBJIHNpbWlsYXIg
dG8gV2ViS2l0MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTc4MjAKKworICAgICAgICBBZGQgZmlyc3QgaW1wbGVtZW50YXRpb24gb2YgV2ViS2l0V2Vi
VmlldywgYSBjbGFzcyB3aXRoIHRoZSBzYW1lCisgICAgICAgIEFQSSB0aGFuIHdlYmtpdDEsIHRo
YXQgd3JhcHMgdGhlIEMgQVBJIHRvIHByb3ZpZGUgYSBoaWdoIGxldmVsCisgICAgICAgIFdlYktp
dDIgQVBJIGZvciBHVEsgcG9ydC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJvcGVy
dHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0L3dlYmtpdC5oOiBBZGRlZC4KKwog
MjAxMS0wNC0yNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViZWFiNTIuLjgxY2VhOGQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAx
MS0wNC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRXhwb3J0
IGFuIEFQSSBzaW1pbGFyIHRvIFdlYktpdDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU3ODIwCisKKyAgICAgICAgQnVpbGQgR3RrTGF1bmNoZXIgZm9y
IHdlYmtpdDIgdG9vLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR3Rr
TGF1bmNoZXIvbWFpbi5jOgorICAgICAgICAodXBkYXRlVGl0bGUpOgorICAgICAgICAobm90aWZ5
TG9hZFN0YXR1c0NiKToKKyAgICAgICAgKGdvQmFja0NiKToKKyAgICAgICAgKHdlYlZpZXdSZWFk
eUNiKToKKyAgICAgICAgKGNyZWF0ZUJyb3dzZXIpOgorCiAyMDExLTA0LTIzICBEb21pbmljIENv
b25leSAgPGRvbWluaWNjQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFt
CmluZGV4IGFmNTQ4OTEuLjQzNTM1ZjEgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBi
L0dOVW1ha2VmaWxlLmFtCkBAIC0yMzYsOSArMjM2LDkgQEAgc3RhbXAtcG86CiBlbHNlCiBpbmNs
dWRlIFNvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRlIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KLWluY2x1ZGUgVG9vbHMvR05VbWFr
ZWZpbGUuYW0KIGluY2x1ZGUgU291cmNlL1dlYktpdC9ndGsvcG8vR05VbWFrZWZpbGUuYW0KIGVu
ZGlmCitpbmNsdWRlIFRvb2xzL0dOVW1ha2VmaWxlLmFtCiAKICMgQXV0b2dlbmVyYXRlZCBzb3Vy
Y2VzCiBCVUlMVF9TT1VSQ0VTICs9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggYjYwZjlmNi4u
YTNhZjdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIv
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTY1LDcgKzY1LDkgQEAgbGlid2Via2l0
Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9W
RVJTSU9OQF9sYV9IRUEKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25T
cGFjZVR5cGVzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNo
ZU1hbmFnZXIuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5o
IFwKLQkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmgKKwkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBcCisJJChXZWJLaXQy
KS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKKwkkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdC93ZWJraXQuaAogCiBub2Rpc3RfbGlid2Via2l0Mmd0a19A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QF9sYV9TT1VSQ0VTID0gXAogCSQod2Via2l0Ml9idWlsdF9zb3VyY2VzKQpAQCAtMzU0LDYgKzM1
Niw4IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJ
VEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9jcHAvV0tSZXRhaW5QdHIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMTE4MWEyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCisjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJL
aXQyL1dLVVJMLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXcs
IFdFQktJVF9UWVBFX1dFQl9WSUVXX0JBU0UpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19pbml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VD
cmVhdGVXZWJQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpLCBXS0NvbnRleHRHZXRT
aGFyZWRQcm9jZXNzQ29udGV4dCgpLCAwKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCit7Cit9CisK
Ky8vIFB1YmxpYyBBUEkuCitHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXcodm9pZCkKK3sK
KyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfVklFVywgTlVMTCkpOworCisgICAgcmV0dXJuIEdUS19XSURHRVQo
d2ViVmlldyk7Cit9CisKK3ZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiB1cmkpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodXJpKTsK
KworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJL
SVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7CisgICAgV0tQYWdlTG9hZFVSTCh0b0FQSShwYWdl
KSwgV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJpKSk7Cit9CisKK3ZvaWQgd2Via2l0X3dl
Yl92aWV3X2dvX2JhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisKKyAgICBXZWJQYWdlUHJveHkq
IHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2Vi
VmlldykpOworICAgIFdLUGFnZUdvQmFjayh0b0FQSShwYWdlKSk7Cit9CisKK3ZvaWQgd2Via2l0
X3dlYl92aWV3X2dvX2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisKKyAgICBXZWJQYWdl
UHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JB
U0Uod2ViVmlldykpOworICAgIFdLUGFnZUdvRm9yd2FyZCh0b0FQSShwYWdlKSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkwMGE4NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMCww
ICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViS2l0V2ViVmlld19oCisjZGVmaW5lIFdlYktpdFdlYlZpZXdfaAorCisj
aW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2UuaCIKKworR19CRUdJTl9ERUNMUworCisjZGVmaW5l
IFdFQktJVF9UWVBFX1dFQl9WSUVXICAgICAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfdHlw
ZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVcob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1ZJRVcsIFdlYktpdFdlYlZp
ZXcpKQorI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hF
Q0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcsIFdlYktpdFdlYlZp
ZXdDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfVklFVyhvYmopICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVklFVykpCisjZGVm
aW5lIFdFQktJVF9JU19XRUJfVklFV19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19U
WVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVklFVykpCisjZGVmaW5lIFdFQktJVF9XRUJf
VklFV19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBX
RUJLSVRfVFlQRV9XRUJfVklFVywgV2ViS2l0V2ViVmlld0NsYXNzKSkKKwordHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXcgICAgICAgIFdlYktpdFdlYlZpZXc7Cit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViVmlld0NsYXNzICAgV2ViS2l0V2ViVmlld0NsYXNzOwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYlZpZXdQcml2YXRlIFdlYktpdFdlYlZpZXdQcml2YXRlOworCitzdHJ1Y3QgX1dl
YktpdFdlYlZpZXcgeworICAgIFdlYktpdFdlYlZpZXdCYXNlIHBhcmVudDsKKworICAgIC8qPCBw
cml2YXRlID4qLworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlICpwcml2OworfTsKKworc3RydWN0
IF9XZWJLaXRXZWJWaWV3Q2xhc3MgeworICAgIFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MgcGFyZW50
OworCisgICAgLyogUGFkZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworICAgIHZvaWQgKCpf
d2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkg
KHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQg
KCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
NCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNSkgKHZvaWQpOworICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkNikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkNykgKHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl92aWV3X2dl
dF90eXBlKHZvaWQpOworCitXRUJLSVRfQVBJIEd0a1dpZGdldCoKK3dlYmtpdF93ZWJfdmlld19u
ZXcodm9pZCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiB1cmkpOworCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF93ZWJfdmlld19nb19iYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpOworCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19nb19mb3J3YXJkKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdC93ZWJraXQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdC93ZWJraXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40MGY2YmJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0L3dlYmtpdC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfX1dF
QktJVF9IX18KKyNkZWZpbmUgX19XRUJLSVRfSF9fCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dlYktp
dDIuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdFdlYlZpZXdCYXNlLmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XZWJLaXRXZWJWaWV3Lmg+CisKKyNlbmRpZiAvKiBfX1dFQktJVF9IX18gKi8KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvR05VbWFrZWZpbGUuYW0KaW5k
ZXggMzQwNTJkNy4uOWYxMjA0NCAxMDA2NDQKLS0tIGEvVG9vbHMvR05VbWFrZWZpbGUuYW0KKysr
IGIvVG9vbHMvR05VbWFrZWZpbGUuYW0KQEAgLTEsOSArMSwyMSBAQAogbm9pbnN0X1BST0dSQU1T
ICs9IFwKKwlQcm9ncmFtcy9HdGtMYXVuY2hlcgorCitpZiAhRU5BQkxFX1dFQktJVDIKK25vaW5z
dF9QUk9HUkFNUyArPSBcCiAJUHJvZ3JhbXMvRHVtcFJlbmRlclRyZWUgXAotCVByb2dyYW1zL0d0
a0xhdW5jaGVyIFwKIAlQcm9ncmFtcy9JbWFnZURpZmYKK2VuZGlmCiAKICMgR3RrTGF1bmNoZXIK
K2lmIEVOQUJMRV9XRUJLSVQyCitQcm9ncmFtc19HdGtMYXVuY2hlcl9DUFBGTEFHUyA9IFwKKwkt
SSQoc3JjZGlyKS9Tb3VyY2UgXAorCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvaW5jbHVkZSBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsgXAorCS1JJCh0b3BfYnVpbGRkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrIFwKKwkkKGdsb2JhbF9jcHBmbGFncykKK2Vsc2UKIFByb2dyYW1zX0d0a0xhdW5jaGVyX0NQ
UEZMQUdTID0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvY2FjaGUvIFwKQEAgLTExLDE5
ICsyMywzNCBAQCBQcm9ncmFtc19HdGtMYXVuY2hlcl9DUFBGTEFHUyA9IFwKIAktSSQodG9wX2J1
aWxkZGlyKS9EZXJpdmVkU291cmNlcyBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKIAkkKGphdmFz
Y3JpcHRjb3JlX2NwcGZsYWdzKQorZW5kaWYKIAogUHJvZ3JhbXNfR3RrTGF1bmNoZXJfU09VUkNF
UyA9IFwKIAlUb29scy9HdGtMYXVuY2hlci9tYWluLmMKIAogUHJvZ3JhbXNfR3RrTGF1bmNoZXJf
Q0ZMQUdTID0gXAotCS1hbnNpIFwKIAktZm5vLXN0cmljdC1hbGlhc2luZyBcCiAJJChnbG9iYWxf
Y2ZsYWdzKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChMSUJTT1VQX0NGTEFHUykKIAoraWYgRU5B
QkxFX1dFQktJVDIKK1Byb2dyYW1zX0d0a0xhdW5jaGVyX0NGTEFHUyArPSBcCisJLURXRUJLSVQy
PVwiMVwiCitlbHNlCitQcm9ncmFtc19HdGtMYXVuY2hlcl9DRkxBR1MgKz0gXAorCS1hbnNpCitl
bmRpZgorCitpZiBFTkFCTEVfV0VCS0lUMgogUHJvZ3JhbXNfR3RrTGF1bmNoZXJfTERBREQgPSBc
Ci0JbGlid2Via2l0Z3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtf
QVBJX01JTk9SX1ZFUlNJT05ALmxhIFwKKwlsaWJ3ZWJraXQyZ3RrLUBXRUJLSVRHVEtfQVBJX01B
Sk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhCitlbHNlCitQcm9n
cmFtc19HdGtMYXVuY2hlcl9MREFERCA9IFwKKwlsaWJ3ZWJraXRndGstQFdFQktJVEdUS19BUElf
TUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEKK2VuZGlmCisK
K1Byb2dyYW1zX0d0a0xhdW5jaGVyX0xEQUREICs9IFwKIAkkKEdUS19MSUJTKSBcCiAJJChHTElC
X0xJQlMpIFwKIAkkKFdJTk1NX0xJQlMpCkBAIC0zMiw2ICs1OSwxNyBAQCBQcm9ncmFtc19HdGtM
YXVuY2hlcl9MREZMQUdTID0gXAogCS1uby1mYXN0LWluc3RhbGwgXAogCS1uby1pbnN0YWxsCiAK
K2lmIEVOQUJMRV9XRUJLSVQyCitHdGtMYXVuY2hlciA6PSAkKHNyY2RpcikvVG9vbHMvR3RrTGF1
bmNoZXIKK0d0a0xhdW5jaGVyRndkSGVhZGVycyA6PSAkKEdFTlNPVVJDRVNfV0VCS0lUMikvaW5j
bHVkZQorQlVJTFRfU09VUkNFUyArPSBcCisJZ2VuZXJhdGUtbWluaWJyb3dzZXItZm9yd2FyZC1o
ZWFkZXJzCitlbmVyYXRlLW1pbmlicm93c2VyLWZvcndhcmQtaGVhZGVyczogJChXZWJLaXQyKS9T
Y3JpcHRzL2dlbmVyYXRlLWZvcndhcmRpbmctaGVhZGVycy5wbCAkKFByb2dyYW1zX0d0a0xhdW5j
aGVyX1NPVVJDRVMpCisJJChBTV9WX0dFTikkKFBFUkwpICQ8ICQoR3RrTGF1bmNoZXIpICQoR3Rr
TGF1bmNoZXJGd2RIZWFkZXJzKSBndGsKKwkkKEFNX1ZfR0VOKSQoUEVSTCkgJDwgJChHdGtMYXVu
Y2hlcikgJChHdGtMYXVuY2hlckZ3ZEhlYWRlcnMpIHNvdXAKK2VuZGlmCisKK2lmICFFTkFCTEVf
V0VCS0lUMgogIyBEdW1wUmVuZGVyVHJlZQogZHVtcHJlbmRlcnRyZWVfY3BwZmxhZ3MgOj0gXAog
CS1JJChzcmNkaXIpL1Rvb2xzL0R1bXBSZW5kZXJUcmVlIFwKQEAgLTE0Niw5ICsxODQsMTMgQEAg
UHJvZ3JhbXNfSW1hZ2VEaWZmX0xERkxBR1MgPSBcCiAjIGNsZWFuIHRhcmdldAogQ0xFQU5GSUxF
UyArPSBcCiAJUHJvZ3JhbXMvRHVtcFJlbmRlclRyZWUgXAotCVByb2dyYW1zL0d0a0xhdW5jaGVy
IFwKIAlQcm9ncmFtcy9JbWFnZURpZmYKK2VuZGlmCisKK0NMRUFORklMRVMgKz0gXAorCVByb2dy
YW1zL0d0a0xhdW5jaGVyCiAKK2lmICFFTkFCTEVfV0VCS0lUMgogaWYgVEFSR0VUX1gxMQogCiAj
IEJ1aWxkIFRlc3ROZXRzY2FwZVBsdWdpbiBvbmx5IGZvciBYMTEKQEAgLTIwNiwzICsyNDgsNSBA
QCBUZXN0TmV0c2NhcGVQbHVnaW5fbGlidGVzdG5ldHNjYXBlcGx1Z2luX2xhX0xERkxBR1MgPSBc
CiAKIENMRUFORklMRVMgKz0gVGVzdE5ldHNjYXBlUGx1Z2luL2xpYnRlc3RuZXRzY2FwZXBsdWdp
bi5sYQogZW5kaWYKKworZW5kaWYgIyFFTkFCTEVfV0VCS0lUMgpkaWZmIC0tZ2l0IGEvVG9vbHMv
R3RrTGF1bmNoZXIvbWFpbi5jIGIvVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCmluZGV4IGExYmFm
MDUuLjhiM2E5ZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0d0a0xhdW5jaGVyL21haW4uYworKysgYi9U
b29scy9HdGtMYXVuY2hlci9tYWluLmMKQEAgLTM5LDYgKzM5LDcgQEAgc3RhdGljIHZvaWQgYWN0
aXZhdGVVcmlFbnRyeUNiKEd0a1dpZGdldCogZW50cnksIGdwb2ludGVyIGRhdGEpCiAgICAgd2Vi
a2l0X3dlYl92aWV3X2xvYWRfdXJpKHdlYlZpZXcsIHVyaSk7CiB9CiAKKyNpZm5kZWYgV0VCS0lU
Mgogc3RhdGljIHZvaWQgdXBkYXRlVGl0bGUoR3RrV2luZG93KiB3aW5kb3csIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiB7CiAgICAgR1N0cmluZyAqc3RyaW5nID0gZ19zdHJpbmdfbmV3KHdlYmtp
dF93ZWJfdmlld19nZXRfdGl0bGUod2ViVmlldykpOwpAQCAtODAsNiArODEsNyBAQCBzdGF0aWMg
dm9pZCBub3RpZnlQcm9ncmVzc0NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMq
IHBzcGVjLCBHdGtXaWRnZQogewogICAgIHVwZGF0ZVRpdGxlKEdUS19XSU5ET1cod2luZG93KSwg
d2ViVmlldyk7CiB9CisjZW5kaWYKIAogc3RhdGljIHZvaWQgZGVzdHJveUNiKEd0a1dpZGdldCog
d2lkZ2V0LCBHdGtXaWRnZXQqIHdpbmRvdykKIHsKQEAgLTk3LDYgKzk5LDcgQEAgc3RhdGljIHZv
aWQgZ29Gb3J3YXJkQ2IoR3RrV2lkZ2V0KiB3aWRnZXQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiAgICAgd2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQod2ViVmlldyk7CiB9CiAKKyNpZm5kZWYg
V0VCS0lUMgogc3RhdGljIFdlYktpdFdlYlZpZXcqCiBjcmVhdGVXZWJWaWV3Q2IoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0V2ViRnJhbWUqIHdlYl9mcmFtZSwgR3RrV2lkZ2V0KiB3aW5k
b3cpCiB7CkBAIC0xMTcsNiArMTIwLDcgQEAgc3RhdGljIGdib29sZWFuIGNsb3NlV2ViVmlld0Ni
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a1dpZGdldCogd2luZG93KQogICAgIGd0a193aWRn
ZXRfZGVzdHJveSh3aW5kb3cpOwogICAgIHJldHVybiBUUlVFOwogfQorI2VuZGlmCiAKIHN0YXRp
YyBHdGtXaWRnZXQqIGNyZWF0ZUJyb3dzZXIoR3RrV2lkZ2V0KiB3aW5kb3csIEd0a1dpZGdldCog
dXJpRW50cnksIEd0a1dpZGdldCogc3RhdHVzYmFyLCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
ewpAQCAtMTI1LDYgKzEyOSw3IEBAIHN0YXRpYyBHdGtXaWRnZXQqIGNyZWF0ZUJyb3dzZXIoR3Rr
V2lkZ2V0KiB3aW5kb3csIEd0a1dpZGdldCogdXJpRW50cnksIEd0a1dpZGdlCiAKICAgICBndGtf
Y29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHNjcm9sbGVkV2luZG93KSwgR1RLX1dJREdFVCh3
ZWJWaWV3KSk7CiAKKyNpZm5kZWYgV0VCS0lUMgogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmll
dywgIm5vdGlmeTo6dGl0bGUiLCBHX0NBTExCQUNLKG5vdGlmeVRpdGxlQ2IpLCB3aW5kb3cpOwog
ICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgIm5vdGlmeTo6bG9hZC1zdGF0dXMiLCBHX0NB
TExCQUNLKG5vdGlmeUxvYWRTdGF0dXNDYiksIHVyaUVudHJ5KTsKICAgICBnX3NpZ25hbF9jb25u
ZWN0KHdlYlZpZXcsICJub3RpZnk6OnByb2dyZXNzIiwgR19DQUxMQkFDSyhub3RpZnlQcm9ncmVz
c0NiKSwgd2luZG93KTsKQEAgLTEzMiw2ICsxMzcsNyBAQCBzdGF0aWMgR3RrV2lkZ2V0KiBjcmVh
dGVCcm93c2VyKEd0a1dpZGdldCogd2luZG93LCBHdGtXaWRnZXQqIHVyaUVudHJ5LCBHdGtXaWRn
ZQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FM
TEJBQ0soY3JlYXRlV2ViVmlld0NiKSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdl
YlZpZXcsICJ3ZWItdmlldy1yZWFkeSIsIEdfQ0FMTEJBQ0sod2ViVmlld1JlYWR5Q2IpLCB3aW5k
b3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgImNsb3NlLXdlYi12aWV3IiwgR19D
QUxMQkFDSyhjbG9zZVdlYlZpZXdDYiksIHdpbmRvdyk7CisjZW5kaWYKIAogICAgIHJldHVybiBz
Y3JvbGxlZFdpbmRvdzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91669</attachid>
            <date>2011-04-29 05:32:45 -0700</date>
            <delta_ts>2011-05-03 04:05:17 -0700</delta_ts>
            <desc>New patch updated to current git master</desc>
            <filename>wk2-gtk-api.diff</filename>
            <type>text/plain</type>
            <size>19417</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0MDhlNjcxLi5iOWYyMWFi
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDQtMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEV4
cG9ydCBhbiBBUEkgc2ltaWxhciB0byBXZWJLaXQxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzgyMAorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
IEFkZCBUb29scy9HTlVtYWtlZmlsZS5hbSB3aGVuIGJ1aWxkaW5nIFdlYktpdDIKKyAgICAgICAg
dG9vLgorCiAyMDExLTA0LTI4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDlhZGRiNi4uMzU2
ZDdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDExLTA0LTI5ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBFeHBvcnQgYW4gQVBJIHNpbWlsYXIgdG8g
V2ViS2l0MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTc4MjAKKworICAgICAgICBBZGQgZmlyc3QgaW1wbGVtZW50YXRpb24gb2YgV2ViS2l0V2ViVmll
dywgYSBjbGFzcyB3aXRoIHRoZSBzYW1lCisgICAgICAgIEFQSSB0aGFuIHdlYmtpdDEsIHRoYXQg
d3JhcHMgdGhlIEMgQVBJIHRvIHByb3ZpZGUgYSBoaWdoIGxldmVsCisgICAgICAgIFdlYktpdDIg
QVBJIGZvciBHVEsgcG9ydC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19uZXcpOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2xvYWRfdXJpKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nb19iYWNrKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19nb19mb3J3YXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRl
KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0L3dlYmtpdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaC4KKworMjAx
MS0wNC0yOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAg
ICAgICAgVW5yZXZpZXdlZC4gRml4IGEgY3Jhc2ggYWZ0ZXIgcjg1MjE0LgogCiAgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZiMGM2MmEuLjczZGJjOGQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwyMCBAQAogMjAxMS0wNC0yOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0dUS10gRXhwb3J0IGFuIEFQSSBzaW1pbGFyIHRvIFdlYktpdDEKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3ODIwCisKKyAgICAgICAgQnVpbGQgR3Rr
TGF1bmNoZXIyIGZvciBXZWJLaXQyLiBJdCdzIGFjdHVhbGx5IHRoZSBzYW1lCisgICAgICAgIEd0
a0xhdW5jaGVyIGNvZGUsIGJ1dCBsaW5raW5nIHRvIGxpYndlYmtpdDJndGsuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHdGtMYXVuY2hlci9tYWluLmM6CisgICAgICAg
IChjcmVhdGVCcm93c2VyKTogQWRkIHNvbWUgI2lmZGVmIGZvciB0aGUgbWlzc2luZyBmZWF0dXJl
cyBpbiBXZWJLaXQyLgorICAgICAgICAobWFpbik6IERpdHRvLgorCisyMDExLTA0LTI5ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBSZXZpZXdl
ZCBieSBNYXJ0aW4gUm9iaW5zb24uCiAKICAgICAgICAgW0dUS10gSW1wbGVtZW50IFVJIGNsaWVu
dCBpbiBtaW5pYnJvd3NlcgpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmls
ZS5hbQppbmRleCA0MGMwMGZhLi4zZmRiYmIyIDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQor
KysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtMjAwLDkgKzIwMCw5IEBAIHN0YW1wLXBvOgogZWxzZQog
aW5jbHVkZSBTb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQogaW5jbHVkZSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCi1pbmNsdWRlIFRvb2xzL0dO
VW1ha2VmaWxlLmFtCiBpbmNsdWRlIFNvdXJjZS9XZWJLaXQvZ3RrL3BvL0dOVW1ha2VmaWxlLmFt
CiBlbmRpZgoraW5jbHVkZSBUb29scy9HTlVtYWtlZmlsZS5hbQogCiAjIEF1dG9nZW5lcmF0ZWQg
c291cmNlcwogQlVJTFRfU09VUkNFUyArPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGQxMzYw
YzQuLjg5NjJmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC02NSw3ICs2NSw5IEBAIGxpYndl
YmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlO
T1JfVkVSU0lPTkBfbGFfSEVBCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0
aW9uU3BhY2VUeXBlcy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRhaW5Q
dHIuaCBcCi0JJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5o
CisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAorCSQoV2Vi
S2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuaCBcCisJJChXZWJLaXQy
KS9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQvd2Via2l0LmgKIAogbm9kaXN0X2xpYndlYmtpdDJn
dGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVS
U0lPTkBfbGFfU09VUkNFUyA9IFwKIAkkKHdlYmtpdDJfYnVpbHRfc291cmNlcykKQEAgLTM1Myw2
ICszNTUsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BX
RUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmI3ZjVhZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgorI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XS1VSTC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlldywgd2Via2l0X3dlYl92
aWV3LCBXRUJLSVRfVFlQRV9XRUJfVklFV19CQVNFKQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfaW5pdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIHdlYmtpdFdlYlZpZXdC
YXNlQ3JlYXRlV2ViUGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSwgV0tDb250ZXh0
R2V0U2hhcmVkUHJvY2Vzc0NvbnRleHQoKSwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQorewor
fQorCisvLyBQdWJsaWMgQVBJLgorR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3KHZvaWQp
Cit7CisgICAgcmV0dXJuIEdUS19XSURHRVQoV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9XRUJfVklFVywgTlVMTCkpKTsKK30KKwordm9pZCB3ZWJraXRfd2ViX3ZpZXdf
bG9hZF91cmkoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIHVyaSkKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgZ19y
ZXR1cm5faWZfZmFpbCh1cmkpOworCisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2Vi
Vmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsKKyAgICBXS1Bh
Z2VMb2FkVVJMKHRvQVBJKHBhZ2UpLCBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1cmkpKTsK
K30KKwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ29fYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsK
KworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJL
SVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7CisgICAgV0tQYWdlR29CYWNrKHRvQVBJKHBhZ2Up
KTsKK30KKwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2FyZChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZp
ZXcpKTsKKworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFn
ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7CisgICAgV0tQYWdlR29Gb3J3YXJkKHRv
QVBJKHBhZ2UpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDMzMmFk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJLaXRXZWJWaWV3X2gKKyNkZWZpbmUg
V2ViS2l0V2ViVmlld19oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdFdlYlZpZXdCYXNlLmg+
CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfVklFVyAgICAgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9WSUVX
KG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJ
VF9UWVBFX1dFQl9WSUVXLCBXZWJLaXRXZWJWaWV3KSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9WSUVX
X0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJ
VF9UWVBFX1dFQl9WSUVXLCBXZWJLaXRXZWJWaWV3Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNf
V0VCX1ZJRVcob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX1ZJRVcpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1ZJRVdfQ0xBU1Mo
a2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VC
X1ZJRVcpKQorI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVf
SU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcsIFdlYktpdFdl
YlZpZXdDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3ICAgICAgICBXZWJL
aXRXZWJWaWV3OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyAgIFdlYktpdFdl
YlZpZXdDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSBXZWJLaXRX
ZWJWaWV3UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKKyAgICBXZWJLaXRXZWJW
aWV3QmFzZSBwYXJlbnQ7CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKKyAgICBX
ZWJLaXRXZWJWaWV3QmFzZUNsYXNzIHBhcmVudDsKKworICAgIC8qIFBhZGRpbmcgZm9yIGZ1dHVy
ZSBleHBhbnNpb24gKi8KKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9y
ZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsK
KyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtp
dF9yZXNlcnZlZDUpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDYpICh2b2lk
KTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDcpICh2b2lkKTsKK307CisKK1dLX0VYUE9S
VCBHVHlwZQord2Via2l0X3dlYl92aWV3X2dldF90eXBlKHZvaWQpOworCitXS19FWFBPUlQgR3Rr
V2lkZ2V0Kgord2Via2l0X3dlYl92aWV3X25ldyh2b2lkKTsKKworV0tfRVhQT1JUIHZvaWQKK3dl
YmtpdF93ZWJfdmlld19sb2FkX3VyaShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hh
ciogdXJpKTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfdmlld19nb19iYWNrKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpOworCitXS19FWFBPUlQgdm9pZAord2Via2l0X3dlYl92aWV3X2dv
X2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwCmluZGV4IGFlZGJjZDcuLmRkYzdlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTMw
OCwxMSArMzA4LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUKIFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3Jv
dXAqIHBhZ2VHcm91cCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jh
c2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJ
RVdfQkFTRSwgTlVMTCkpOwotICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdl
YmtpdFdlYlZpZXdCYXNlLT5wcml2OwotCi0gICAgcHJpdi0+cGFnZSA9IGNvbnRleHQtPmNyZWF0
ZVdlYlBhZ2UocHJpdi0+cGFnZUNsaWVudC5nZXQoKSwgcGFnZUdyb3VwKTsKLSAgICBwcml2LT5w
YWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOwogCisgICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVX
ZWJQYWdlKHdlYmtpdFdlYlZpZXdCYXNlLCB0b0FQSShjb250ZXh0KSwgdG9BUEkocGFnZUdyb3Vw
KSk7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlOwogfQogCkBAIC0zMjUsMyArMzIyLDEx
IEBAIFdlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKIHsKICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2Ut
PnByaXYtPnBhZ2UuZ2V0KCk7CiB9CisKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQ
YWdlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKKworICAgIHByaXYtPnBh
Z2UgPSB0b0ltcGwoY29udGV4dCktPmNyZWF0ZVdlYlBhZ2UocHJpdi0+cGFnZUNsaWVudC5nZXQo
KSwgdG9JbXBsKHBhZ2VHcm91cCkpOworICAgIHByaXYtPnBhZ2UtPmluaXRpYWxpemVXZWJQYWdl
KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4IDNkMGVkNzQuLjRkNzdjNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3QmFzZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPFdlYktp
dDIvV2ViS2l0Mi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00MSw2ICs0Miw4
IEBAIEd0a0lNQ29udGV4dCogd2Via2l0V2ViVmlld0Jhc2VHZXRJTUNvbnRleHQoV2ViS2l0V2Vi
Vmlld0Jhc2UqKTsKIAogV2ViUGFnZVByb3h5KiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV2Vi
S2l0V2ViVmlld0Jhc2UqKTsKIAordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uo
V2ViS2l0V2ViVmlld0Jhc2UqLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmKTsKKwogR19F
TkRfREVDTFMKIAogI2VuZGlmIC8vIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQvd2Via2l0LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQvd2Via2l0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmNmJiYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdC93ZWJraXQuaApAQCAtMCwwICsx
LDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgX19XRUJLSVRfSF9fCisjZGVmaW5lIF9fV0VCS0lUX0hfXworCisjaW5jbHVkZSA8
V2ViS2l0Mi9XZWJLaXQyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXRXZWJWaWV3QmFzZS5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV2ViS2l0V2ViVmlldy5oPgorCisjZW5kaWYgLyogX19XRUJL
SVRfSF9fICovCmRpZmYgLS1naXQgYS9Ub29scy9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL0dOVW1h
a2VmaWxlLmFtCmluZGV4IDM1NmVmNmYuLmU5YWQxMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCkBAIC0xLDkgKzEsNDYgQEAKK2lm
IEVOQUJMRV9XRUJLSVQyCitub2luc3RfUFJPR1JBTVMgKz0gXAorCVByb2dyYW1zL0d0a0xhdW5j
aGVyMgorZWxzZQogbm9pbnN0X1BST0dSQU1TICs9IFwKLQlQcm9ncmFtcy9EdW1wUmVuZGVyVHJl
ZSBcCiAJUHJvZ3JhbXMvR3RrTGF1bmNoZXIgXAorCVByb2dyYW1zL0R1bXBSZW5kZXJUcmVlIFwK
IAlQcm9ncmFtcy9JbWFnZURpZmYKK2VuZGlmCiAKICMgR3RrTGF1bmNoZXIKK2lmIEVOQUJMRV9X
RUJLSVQyCitQcm9ncmFtc19HdGtMYXVuY2hlcjJfQ1BQRkxBR1MgPSBcCisJLUkkKHNyY2Rpcikv
U291cmNlIFwKKwktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL2luY2x1
ZGUgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrIFwKKwkt
SSQodG9wX2J1aWxkZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ayBcCisJJChn
bG9iYWxfY3BwZmxhZ3MpIFwKKwkkKGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzKQorCitQcm9ncmFt
c19HdGtMYXVuY2hlcjJfU09VUkNFUyA9IFwKKwlUb29scy9HdGtMYXVuY2hlci9tYWluLmMKKwor
UHJvZ3JhbXNfR3RrTGF1bmNoZXIyX0NGTEFHUyA9IFwKKwktRFdFQktJVDI9XCIxXCIgXAorCS1m
bm8tc3RyaWN0LWFsaWFzaW5nIFwKKwkkKGdsb2JhbF9jZmxhZ3MpIFwKKwkkKEdUS19DRkxBR1Mp
IFwKKwkkKExJQlNPVVBfQ0ZMQUdTKQorCitQcm9ncmFtc19HdGtMYXVuY2hlcjJfTERBREQgPSBc
CisJbGliamF2YXNjcmlwdGNvcmVndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAorCWxpYndlYmtpdDJndGstQFdFQktJVEdU
S19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAor
CSQoR1RLX0xJQlMpIFwKKwkkKEdMSUJfTElCUykgXAorCSQoTElCU09VUF9MSUJTKSBcCisJJChX
SU5NTV9MSUJTKQorCitQcm9ncmFtc19HdGtMYXVuY2hlcjJfTERGTEFHUyA9IFwKKwktbm8tZmFz
dC1pbnN0YWxsIFwKKwktbm8taW5zdGFsbAorCitlbHNlCiBQcm9ncmFtc19HdGtMYXVuY2hlcl9D
UFBGTEFHUyA9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ayBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL2NhY2hlLyBcCkBAIC0zMyw3
ICs3MCw5IEBAIFByb2dyYW1zX0d0a0xhdW5jaGVyX0xEQUREID0gXAogUHJvZ3JhbXNfR3RrTGF1
bmNoZXJfTERGTEFHUyA9IFwKIAktbm8tZmFzdC1pbnN0YWxsIFwKIAktbm8taW5zdGFsbAorZW5k
aWYKIAoraWYgIUVOQUJMRV9XRUJLSVQyCiAjIER1bXBSZW5kZXJUcmVlCiBkdW1wcmVuZGVydHJl
ZV9jcHBmbGFncyA6PSBcCiAJLUkkKHNyY2RpcikvVG9vbHMvRHVtcFJlbmRlclRyZWUgXApAQCAt
MTQ5LDkgKzE4OCwxOCBAQCBQcm9ncmFtc19JbWFnZURpZmZfTERGTEFHUyA9IFwKICMgY2xlYW4g
dGFyZ2V0CiBDTEVBTkZJTEVTICs9IFwKIAlQcm9ncmFtcy9EdW1wUmVuZGVyVHJlZSBcCi0JUHJv
Z3JhbXMvR3RrTGF1bmNoZXIgXAogCVByb2dyYW1zL0ltYWdlRGlmZgorZW5kaWYKIAoraWYgRU5B
QkxFX1dFQktJVDIKK0NMRUFORklMRVMgKz0gXAorCVByb2dyYW1zL0d0a0xhdW5jaGVyMgorZWxz
ZQorQ0xFQU5GSUxFUyArPSBcCisJUHJvZ3JhbXMvR3RrTGF1bmNoZXIKK2VuZGlmCisKK2lmICFF
TkFCTEVfV0VCS0lUMgogaWYgVEFSR0VUX1gxMQogCiAjIEJ1aWxkIFRlc3ROZXRzY2FwZVBsdWdp
biBvbmx5IGZvciBYMTEKQEAgLTIwOSwzICsyNTcsNSBAQCBUZXN0TmV0c2NhcGVQbHVnaW5fbGli
dGVzdG5ldHNjYXBlcGx1Z2luX2xhX0xERkxBR1MgPSBcCiAKIENMRUFORklMRVMgKz0gVGVzdE5l
dHNjYXBlUGx1Z2luL2xpYnRlc3RuZXRzY2FwZXBsdWdpbi5sYQogZW5kaWYKKworZW5kaWYgIyFF
TkFCTEVfV0VCS0lUMgpkaWZmIC0tZ2l0IGEvVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jIGIvVG9v
bHMvR3RrTGF1bmNoZXIvbWFpbi5jCmluZGV4IGE4ZTBlZmUuLmFlYTAxN2YgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0d0a0xhdW5jaGVyL21haW4uYworKysgYi9Ub29scy9HdGtMYXVuY2hlci9tYWluLmMK
QEAgLTM5LDYgKzM5LDcgQEAgc3RhdGljIHZvaWQgYWN0aXZhdGVVcmlFbnRyeUNiKEd0a1dpZGdl
dCogZW50cnksIGdwb2ludGVyIGRhdGEpCiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKHdl
YlZpZXcsIHVyaSk7CiB9CiAKKyNpZm5kZWYgV0VCS0lUMgogc3RhdGljIHZvaWQgdXBkYXRlVGl0
bGUoR3RrV2luZG93KiB3aW5kb3csIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgR1N0
cmluZyAqc3RyaW5nID0gZ19zdHJpbmdfbmV3KHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUod2Vi
VmlldykpOwpAQCAtODAsNiArODEsNyBAQCBzdGF0aWMgdm9pZCBub3RpZnlQcm9ncmVzc0NiKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqIHBzcGVjLCBHdGtXaWRnZQogewogICAg
IHVwZGF0ZVRpdGxlKEdUS19XSU5ET1cod2luZG93KSwgd2ViVmlldyk7CiB9CisjZW5kaWYKIAog
c3RhdGljIHZvaWQgZGVzdHJveUNiKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtXaWRnZXQqIHdpbmRv
dykKIHsKQEAgLTk3LDYgKzk5LDcgQEAgc3RhdGljIHZvaWQgZ29Gb3J3YXJkQ2IoR3RrV2lkZ2V0
KiB3aWRnZXQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgd2Via2l0X3dlYl92aWV3X2dv
X2ZvcndhcmQod2ViVmlldyk7CiB9CiAKKyNpZm5kZWYgV0VCS0lUMgogc3RhdGljIFdlYktpdFdl
YlZpZXcqCiBjcmVhdGVXZWJWaWV3Q2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2Vi
RnJhbWUqIHdlYl9mcmFtZSwgR3RrV2lkZ2V0KiB3aW5kb3cpCiB7CkBAIC0xMTcsNiArMTIwLDcg
QEAgc3RhdGljIGdib29sZWFuIGNsb3NlV2ViVmlld0NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IEd0a1dpZGdldCogd2luZG93KQogICAgIGd0a193aWRnZXRfZGVzdHJveSh3aW5kb3cpOwogICAg
IHJldHVybiBUUlVFOwogfQorI2VuZGlmCiAKIHN0YXRpYyBHdGtXaWRnZXQqIGNyZWF0ZUJyb3dz
ZXIoR3RrV2lkZ2V0KiB3aW5kb3csIEd0a1dpZGdldCogdXJpRW50cnksIEd0a1dpZGdldCogc3Rh
dHVzYmFyLCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewpAQCAtMTI1LDYgKzEyOSw3IEBAIHN0
YXRpYyBHdGtXaWRnZXQqIGNyZWF0ZUJyb3dzZXIoR3RrV2lkZ2V0KiB3aW5kb3csIEd0a1dpZGdl
dCogdXJpRW50cnksIEd0a1dpZGdlCiAKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJ
TkVSKHNjcm9sbGVkV2luZG93KSwgR1RLX1dJREdFVCh3ZWJWaWV3KSk7CiAKKyNpZm5kZWYgV0VC
S0lUMgogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgIm5vdGlmeTo6dGl0bGUiLCBHX0NB
TExCQUNLKG5vdGlmeVRpdGxlQ2IpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Vi
VmlldywgIm5vdGlmeTo6bG9hZC1zdGF0dXMiLCBHX0NBTExCQUNLKG5vdGlmeUxvYWRTdGF0dXND
YiksIHVyaUVudHJ5KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJub3RpZnk6OnBy
b2dyZXNzIiwgR19DQUxMQkFDSyhub3RpZnlQcm9ncmVzc0NiKSwgd2luZG93KTsKQEAgLTEzMiw2
ICsxMzcsNyBAQCBzdGF0aWMgR3RrV2lkZ2V0KiBjcmVhdGVCcm93c2VyKEd0a1dpZGdldCogd2lu
ZG93LCBHdGtXaWRnZXQqIHVyaUVudHJ5LCBHdGtXaWRnZQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
d2ViVmlldywgImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0NiKSwg
d2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJ3ZWItdmlldy1yZWFkeSIs
IEdfQ0FMTEJBQ0sod2ViVmlld1JlYWR5Q2IpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qod2ViVmlldywgImNsb3NlLXdlYi12aWV3IiwgR19DQUxMQkFDSyhjbG9zZVdlYlZpZXdDYiks
IHdpbmRvdyk7CisjZW5kaWYKIAogICAgIHJldHVybiBzY3JvbGxlZFdpbmRvdzsKIH0KQEAgLTIz
OSw2ICsyNDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgIGlmICgh
Z190aHJlYWRfc3VwcG9ydGVkKCkpCiAgICAgICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CiAKKyNp
Zm5kZWYgV0VCS0lUMgogI2lmZGVmIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9ERUZBVUxUCiAg
ICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlX2J5X3R5cGUod2Via2l0X2dldF9kZWZhdWx0X3Nl
c3Npb24oKSwgU09VUF9UWVBFX1BST1hZX1JFU09MVkVSX0RFRkFVTFQpOwogI2Vsc2UKQEAgLTI0
OSw2ICsyNTYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgICAgICBz
b3VwX3VyaV9mcmVlKHByb3h5VXJpKTsKICAgICB9CiAjZW5kaWYKKyNlbmRpZgogCiAgICAgbWFp
bl93aW5kb3cgPSBjcmVhdGVXaW5kb3coJndlYlZpZXcpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92059</attachid>
            <date>2011-05-03 04:05:17 -0700</date>
            <delta_ts>2011-06-10 03:50:43 -0700</delta_ts>
            <desc>Updated patch to current git master</desc>
            <filename>wk2-gtk-api-4.diff</filename>
            <type>text/plain</type>
            <size>17622</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiODA2M2I4Li5lNThhZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEg
QEAKIDIwMTEtMDUtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IEV4cG9ydCBhbiBBUEkgc2ltaWxhciB0byBXZWJLaXQxCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzgyMAorCisgICAgICAgIEFkZCBmaXJzdCBpbXBs
ZW1lbnRhdGlvbiBvZiBXZWJLaXRXZWJWaWV3LCBhIGNsYXNzIHdpdGggdGhlIHNhbWUKKyAgICAg
ICAgQVBJIHRoYW4gd2Via2l0MSwgdGhhdCB3cmFwcyB0aGUgQyBBUEkgdG8gcHJvdmlkZSBhIGhp
Z2ggbGV2ZWwKKyAgICAgICAgV2ViS2l0MiBBUEkgZm9yIEdUSyBwb3J0LgorCisgICAgICAgICog
R05VbWFrZWZpbGUuYW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHA6IEFkZGVkLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2luaXQpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X25l
dyk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkpOgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X2dvX2JhY2spOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VD
cmVhdGVXZWJQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQvd2Via2l0
Lmg6IEFkZGVkLgorCisyMDExLTA1LTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAg
ICBbR1RLXSBCdWlsZCB3ZWJraXQxIGV2ZW4gd2hlbiB3ZWJraXQyIGlzIGVuYWJsZWQKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4NzA5NmMwLi4y
ZDU3NmNkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDUtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtHVEtdIEV4cG9ydCBhbiBBUEkgc2ltaWxhciB0byBXZWJLaXQxCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzgyMAorCisgICAgICAg
IEJ1aWxkIEd0a0xhdW5jaGVyMiBmb3IgV2ViS2l0Mi4gSXQncyBhY3R1YWxseSB0aGUgc2FtZSBH
dGtMYXVuY2hlcgorICAgICAgICBjb2RlLCBidXQgbGlua2luZyB0byBsaWJ3ZWJraXQyZ3RrLgor
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR3RrTGF1bmNoZXIvbWFpbi5j
OgorICAgICAgICAoY3JlYXRlQnJvd3Nlcik6IEFkZCBzb21lICNpZmRlZiBmb3IgdGhlIG1pc3Np
bmcgZmVhdHVyZXMgaW4gV2ViS2l0Mi4KKyAgICAgICAgKG1haW4pOiBEaXR0by4KKwogMjAxMS0w
NS0wMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAzZjZjZmNkLi44
OGFjYzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtNjUsNyArNjUsOSBAQCBsaWJ3ZWJraXQy
Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZF
UlNJT05AX2xhX0hFQQogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNw
YWNlVHlwZXMuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hl
TWFuYWdlci5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmgg
XAotCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuaAorCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKKwkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmggXAorCSQoV2ViS2l0MikvVUlQ
cm9jZXNzL0FQSS9ndGsvd2Via2l0L3dlYmtpdC5oCiAKIG5vZGlzdF9saWJ3ZWJraXQyZ3RrX0BX
RUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05A
X2xhX1NPVVJDRVMgPSBcCiAJJCh3ZWJraXQyX2J1aWx0X3NvdXJjZXMpCkBAIC0zNTMsOSArMzU1
LDEyIEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJ
VEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9jcHAvV0tSZXRhaW5QdHIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
UGFnZUNsaWVudEltcGwuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQvd2Via2l0LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40MmUyODQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViS2l0V2ViVmlldy5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRl
ICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
KyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tVUkwuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitH
X0RFRklORV9UWVBFKFdlYktpdFdlYlZpZXcsIHdlYmtpdF93ZWJfdmlldywgV0VCS0lUX1RZUEVf
V0VCX1ZJRVdfQkFTRSkKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKK3sKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uo
V0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldyksIFdLQ29udGV4dEdldFNoYXJlZFByb2Nlc3ND
b250ZXh0KCksIDApOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKK3sKK30KKworLy8gUHVibGljIEFQ
SS4KK0d0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ldyh2b2lkKQoreworICAgIHJldHVybiBH
VEtfV0lER0VUKFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJ
RVcsIE5VTEwpKSk7Cit9CisKK3ZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiB1cmkpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodXJp
KTsKKworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShX
RUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7CisgICAgV0tQYWdlTG9hZFVSTCh0b0FQSShw
YWdlKSwgV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJpKSk7Cit9CisKK3ZvaWQgd2Via2l0
X3dlYl92aWV3X2dvX2JhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisKKyAgICBXZWJQYWdlUHJv
eHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uo
d2ViVmlldykpOworICAgIFdLUGFnZUdvQmFjayh0b0FQSShwYWdlKSk7Cit9CisKK3ZvaWQgd2Vi
a2l0X3dlYl92aWV3X2dvX2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisKKyAgICBXZWJQ
YWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVX
X0JBU0Uod2ViVmlldykpOworICAgIFdLUGFnZUdvRm9yd2FyZCh0b0FQSShwYWdlKSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVhMDA3MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAt
MCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVy
IEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQWxwIFRva2VyIDxhbHBAYXRv
a2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgorICogQ29weXJp
Z2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0V2ViVmlld19oCisjZGVmaW5l
IFdlYktpdFdlYlZpZXdfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXRXZWJWaWV3QmFzZS5o
PgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1ZJRVcgICAgICAg
ICAgICAod2Via2l0X3dlYl92aWV3X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVklF
VyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJL
SVRfVFlQRV9XRUJfVklFVywgV2ViS2l0V2ViVmlldykpCisjZGVmaW5lIFdFQktJVF9XRUJfVklF
V19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJL
SVRfVFlQRV9XRUJfVklFVywgV2ViS2l0V2ViVmlld0NsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lT
X1dFQl9WSUVXKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiks
IFdFQktJVF9UWVBFX1dFQl9WSUVXKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9WSUVXX0NMQVNT
KGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dF
Ql9WSUVXKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9WSUVXX0dFVF9DTEFTUyhvYmopICAoR19UWVBF
X0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9WSUVXLCBXZWJLaXRX
ZWJWaWV3Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyAgICAgICAgV2Vi
S2l0V2ViVmlldzsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgICBXZWJLaXRX
ZWJWaWV3Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgV2ViS2l0
V2ViVmlld1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViVmlldyB7CisgICAgV2ViS2l0V2Vi
Vmlld0Jhc2UgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisgICAgV2ViS2l0V2ViVmll
d1ByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CisgICAg
V2ViS2l0V2ViVmlld0Jhc2VDbGFzcyBwYXJlbnQ7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1
cmUgZXhwYW5zaW9uICovCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7Cisg
ICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRf
cmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7
CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ0KSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJr
aXRfcmVzZXJ2ZWQ1KSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ2KSAodm9p
ZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ3KSAodm9pZCk7Cit9OworCitXS19FWFBP
UlQgR1R5cGUKK3dlYmtpdF93ZWJfdmlld19nZXRfdHlwZSh2b2lkKTsKKworV0tfRVhQT1JUIEd0
a1dpZGdldCoKK3dlYmtpdF93ZWJfdmlld19uZXcodm9pZCk7CisKK1dLX0VYUE9SVCB2b2lkCit3
ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2No
YXIqIHVyaSk7CisKK1dLX0VYUE9SVCB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfZ29fYmFjayhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KTsKKworV0tfRVhQT1JUIHZvaWQKK3dlYmtpdF93ZWJfdmlld19n
b19mb3J3YXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpOworCitHX0VORF9ERUNMUworCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcAppbmRleCA5M2EzMjA1Li45ZTMyMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0z
MDgsMTEgKzMwOCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2lu
aXQoV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyogd2Via2l0V2ViVmllCiBXZWJLaXRXZWJWaWV3QmFz
ZSogd2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoV2ViQ29udGV4dCogY29udGV4dCwgV2ViUGFnZUdy
b3VwKiBwYWdlR3JvdXApCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdC
YXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9W
SUVXX0JBU0UsIE5VTEwpKTsKLSAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3
ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKLQotICAgIHByaXYtPnBhZ2VQcm94eSA9IGNvbnRleHQt
PmNyZWF0ZVdlYlBhZ2UocHJpdi0+cGFnZUNsaWVudC5nZXQoKSwgcGFnZUdyb3VwKTsKLSAgICBw
cml2LT5wYWdlUHJveHktPmluaXRpYWxpemVXZWJQYWdlKCk7Ci0KKyAgICB3ZWJraXRXZWJWaWV3
QmFzZUNyZWF0ZVdlYlBhZ2Uod2Via2l0V2ViVmlld0Jhc2UsIHRvQVBJKGNvbnRleHQpLCB0b0FQ
SShwYWdlR3JvdXApKTsKICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2U7CiB9CiAKQEAgLTMy
NSwzICszMjEsMTEgQEAgV2ViUGFnZVByb3h5KiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogewogICAgIHJldHVybiB3ZWJraXRX
ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LmdldCgpOwogfQorCit2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2Us
IFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApCit7CisgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2Via2l0V2ViVmlld0Jhc2UtPnByaXY7
CisKKyAgICBwcml2LT5wYWdlUHJveHkgPSB0b0ltcGwoY29udGV4dCktPmNyZWF0ZVdlYlBhZ2Uo
cHJpdi0+cGFnZUNsaWVudC5nZXQoKSwgdG9JbXBsKHBhZ2VHcm91cCkpOworICAgIHByaXYtPnBh
Z2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKaW5k
ZXggM2QwZWQ3NC4uNGQ3N2M0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKQEAgLTQxLDYgKzQyLDggQEAgR3RrSU1Db250ZXh0KiB3ZWJraXRXZWJWaWV3
QmFzZUdldElNQ29udGV4dChXZWJLaXRXZWJWaWV3QmFzZSopOwogCiBXZWJQYWdlUHJveHkqIHdl
YmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXZWJLaXRXZWJWaWV3QmFzZSopOwogCit2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSosIFdLQ29udGV4dFJl
ZiwgV0tQYWdlR3JvdXBSZWYpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYgLy8gV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3dlYmtpdC93ZWJraXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdC93ZWJraXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmVk
OGE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0L3dlYmtpdC5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2lmbmRlZiBfX1dFQktJVF9IX18KKyNkZWZpbmUgX19XRUJLSVRfSF9f
CisKKyNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dlYktp
dFdlYlZpZXdCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXRXZWJWaWV3Lmg+CisKKyNl
bmRpZiAvKiBfX1dFQktJVF9IX18gKi8KZGlmZiAtLWdpdCBhL1Rvb2xzL0dOVW1ha2VmaWxlLmFt
IGIvVG9vbHMvR05VbWFrZWZpbGUuYW0KaW5kZXggMzU2ZWY2Zi4uOWU2ZWM4YSAxMDA2NDQKLS0t
IGEvVG9vbHMvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvR05VbWFrZWZpbGUuYW0KQEAgLTMs
NyArMywzMiBAQCBub2luc3RfUFJPR1JBTVMgKz0gXAogCVByb2dyYW1zL0d0a0xhdW5jaGVyIFwK
IAlQcm9ncmFtcy9JbWFnZURpZmYKIAoraWYgRU5BQkxFX1dFQktJVDIKK25vaW5zdF9QUk9HUkFN
UyArPSBcCisJUHJvZ3JhbXMvR3RrTGF1bmNoZXIyCitlbmRpZgorCiAjIEd0a0xhdW5jaGVyCitn
dGtsYXVuY2hlcl9zb3VyY2VzID0gXAorCVRvb2xzL0d0a0xhdW5jaGVyL21haW4uYworCitndGts
YXVuY2hlcl9jZmxhZ3MgPSBcCisJLWZuby1zdHJpY3QtYWxpYXNpbmcgXAorCSQoZ2xvYmFsX2Nm
bGFncykgXAorCSQoR1RLX0NGTEFHUykgXAorCSQoTElCU09VUF9DRkxBR1MpCisKK2d0a2xhdW5j
aGVyX2xkYWRkID0gXAorCWxpYmphdmFzY3JpcHRjb3JlZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9S
X1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwKKwkkKEdUS19MSUJT
KSBcCisJJChHTElCX0xJQlMpIFwKKwkkKExJQlNPVVBfTElCUykgXAorCSQoV0lOTU1fTElCUykK
KworZ3RrbGF1bmNoZXJfbGRmbGFncyA9IFwKKwktbm8tZmFzdC1pbnN0YWxsIFwKKwktbm8taW5z
dGFsbAorCiBQcm9ncmFtc19HdGtMYXVuY2hlcl9DUFBGTEFHUyA9IFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0L2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL2NhY2hlLyBcCkBAIC0xMywyNiArMzgsNDMgQEAgUHJvZ3JhbXNfR3RrTGF1
bmNoZXJfQ1BQRkxBR1MgPSBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykKIAogUHJvZ3Jh
bXNfR3RrTGF1bmNoZXJfU09VUkNFUyA9IFwKLQlUb29scy9HdGtMYXVuY2hlci9tYWluLmMKKwkk
KGd0a2xhdW5jaGVyX3NvdXJjZXMpCiAKIFByb2dyYW1zX0d0a0xhdW5jaGVyX0NGTEFHUyA9IFwK
IAktYW5zaSBcCi0JLWZuby1zdHJpY3QtYWxpYXNpbmcgXAotCSQoZ2xvYmFsX2NmbGFncykgXAot
CSQoR1RLX0NGTEFHUykgXAotCSQoTElCU09VUF9DRkxBR1MpCisJJChndGtsYXVuY2hlcl9jZmxh
Z3MpCiAKIFByb2dyYW1zX0d0a0xhdW5jaGVyX0xEQUREID0gXAotCWxpYmphdmFzY3JpcHRjb3Jl
Z3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZF
UlNJT05ALmxhIFwKIAlsaWJ3ZWJraXRndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAu
QFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAotCSQoR1RLX0xJQlMpIFwKLQkkKEdM
SUJfTElCUykgXAotCSQoTElCU09VUF9MSUJTKSBcCi0JJChXSU5NTV9MSUJTKQorCSQoZ3RrbGF1
bmNoZXJfbGRhZGQpCiAKIFByb2dyYW1zX0d0a0xhdW5jaGVyX0xERkxBR1MgPSBcCi0JLW5vLWZh
c3QtaW5zdGFsbCBcCi0JLW5vLWluc3RhbGwKKwkkKGd0a2xhdW5jaGVyX2xkZmxhZ3MpCisKK2lm
IEVOQUJMRV9XRUJLSVQyCitQcm9ncmFtc19HdGtMYXVuY2hlcjJfQ1BQRkxBR1MgPSBcCisJLUkk
KHNyY2RpcikvU291cmNlIFwKKwktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL2luY2x1ZGUgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrIFwKKwktSSQodG9wX2J1aWxkZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ayBcCisJJChnbG9iYWxfY3BwZmxhZ3MpIFwKKwkkKGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzKQor
CitQcm9ncmFtc19HdGtMYXVuY2hlcjJfU09VUkNFUyA9IFwKKwkkKGd0a2xhdW5jaGVyX3NvdXJj
ZXMpCisKK1Byb2dyYW1zX0d0a0xhdW5jaGVyMl9DRkxBR1MgPSBcCisJLURXRUJLSVQyPVwiMVwi
IFwKKwkkKGd0a2xhdW5jaGVyX2NmbGFncykKKworUHJvZ3JhbXNfR3RrTGF1bmNoZXIyX0xEQURE
ID0gXAorCWxpYndlYmtpdDJndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJ
VEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAorCSQoZ3RrbGF1bmNoZXJfbGRhZGQpCisKK1By
b2dyYW1zX0d0a0xhdW5jaGVyMl9MREZMQUdTID0gXAorCSQoZ3RrbGF1bmNoZXJfbGRmbGFncykK
KworZW5kaWYKIAogIyBEdW1wUmVuZGVyVHJlZQogZHVtcHJlbmRlcnRyZWVfY3BwZmxhZ3MgOj0g
XApAQCAtMTUyLDYgKzE5NCwxMSBAQCBDTEVBTkZJTEVTICs9IFwKIAlQcm9ncmFtcy9HdGtMYXVu
Y2hlciBcCiAJUHJvZ3JhbXMvSW1hZ2VEaWZmCiAKK2lmIEVOQUJMRV9XRUJLSVQyCitDTEVBTkZJ
TEVTICs9IFwKKwlQcm9ncmFtcy9HdGtMYXVuY2hlcjIKK2VuZGlmCisKIGlmIFRBUkdFVF9YMTEK
IAogIyBCdWlsZCBUZXN0TmV0c2NhcGVQbHVnaW4gb25seSBmb3IgWDExCmRpZmYgLS1naXQgYS9U
b29scy9HdGtMYXVuY2hlci9tYWluLmMgYi9Ub29scy9HdGtMYXVuY2hlci9tYWluLmMKaW5kZXgg
YThlMGVmZS4uYWVhMDE3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCisr
KyBiL1Rvb2xzL0d0a0xhdW5jaGVyL21haW4uYwpAQCAtMzksNiArMzksNyBAQCBzdGF0aWMgdm9p
ZCBhY3RpdmF0ZVVyaUVudHJ5Q2IoR3RrV2lkZ2V0KiBlbnRyeSwgZ3BvaW50ZXIgZGF0YSkKICAg
ICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldywgdXJpKTsKIH0KIAorI2lmbmRlZiBX
RUJLSVQyCiBzdGF0aWMgdm9pZCB1cGRhdGVUaXRsZShHdGtXaW5kb3cqIHdpbmRvdywgV2ViS2l0
V2ViVmlldyogd2ViVmlldykKIHsKICAgICBHU3RyaW5nICpzdHJpbmcgPSBnX3N0cmluZ19uZXco
d2Via2l0X3dlYl92aWV3X2dldF90aXRsZSh3ZWJWaWV3KSk7CkBAIC04MCw2ICs4MSw3IEBAIHN0
YXRpYyB2b2lkIG5vdGlmeVByb2dyZXNzQ2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFt
U3BlYyogcHNwZWMsIEd0a1dpZGdlCiB7CiAgICAgdXBkYXRlVGl0bGUoR1RLX1dJTkRPVyh3aW5k
b3cpLCB3ZWJWaWV3KTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgdm9pZCBkZXN0cm95Q2IoR3RrV2lk
Z2V0KiB3aWRnZXQsIEd0a1dpZGdldCogd2luZG93KQogewpAQCAtOTcsNiArOTksNyBAQCBzdGF0
aWMgdm9pZCBnb0ZvcndhcmRDYihHdGtXaWRnZXQqIHdpZGdldCwgV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKICAgICB3ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2FyZCh3ZWJWaWV3KTsKIH0KIAorI2lm
bmRlZiBXRUJLSVQyCiBzdGF0aWMgV2ViS2l0V2ViVmlldyoKIGNyZWF0ZVdlYlZpZXdDYihXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJGcmFtZSogd2ViX2ZyYW1lLCBHdGtXaWRnZXQq
IHdpbmRvdykKIHsKQEAgLTExNyw2ICsxMjAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gY2xvc2VXZWJW
aWV3Q2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrV2lkZ2V0KiB3aW5kb3cpCiAgICAgZ3Rr
X3dpZGdldF9kZXN0cm95KHdpbmRvdyk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CisjZW5kaWYKIAog
c3RhdGljIEd0a1dpZGdldCogY3JlYXRlQnJvd3NlcihHdGtXaWRnZXQqIHdpbmRvdywgR3RrV2lk
Z2V0KiB1cmlFbnRyeSwgR3RrV2lkZ2V0KiBzdGF0dXNiYXIsIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiB7CkBAIC0xMjUsNiArMTI5LDcgQEAgc3RhdGljIEd0a1dpZGdldCogY3JlYXRlQnJvd3Nl
cihHdGtXaWRnZXQqIHdpbmRvdywgR3RrV2lkZ2V0KiB1cmlFbnRyeSwgR3RrV2lkZ2UKIAogICAg
IGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoc2Nyb2xsZWRXaW5kb3cpLCBHVEtfV0lE
R0VUKHdlYlZpZXcpKTsKIAorI2lmbmRlZiBXRUJLSVQyCiAgICAgZ19zaWduYWxfY29ubmVjdCh3
ZWJWaWV3LCAibm90aWZ5Ojp0aXRsZSIsIEdfQ0FMTEJBQ0sobm90aWZ5VGl0bGVDYiksIHdpbmRv
dyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1cyIs
IEdfQ0FMTEJBQ0sobm90aWZ5TG9hZFN0YXR1c0NiKSwgdXJpRW50cnkpOwogICAgIGdfc2lnbmFs
X2Nvbm5lY3Qod2ViVmlldywgIm5vdGlmeTo6cHJvZ3Jlc3MiLCBHX0NBTExCQUNLKG5vdGlmeVBy
b2dyZXNzQ2IpLCB3aW5kb3cpOwpAQCAtMTMyLDYgKzEzNyw3IEBAIHN0YXRpYyBHdGtXaWRnZXQq
IGNyZWF0ZUJyb3dzZXIoR3RrV2lkZ2V0KiB3aW5kb3csIEd0a1dpZGdldCogdXJpRW50cnksIEd0
a1dpZGdlCiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAiY3JlYXRlLXdlYi12aWV3Iiwg
R19DQUxMQkFDSyhjcmVhdGVXZWJWaWV3Q2IpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5l
Y3Qod2ViVmlldywgIndlYi12aWV3LXJlYWR5IiwgR19DQUxMQkFDSyh3ZWJWaWV3UmVhZHlDYiks
IHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAiY2xvc2Utd2ViLXZpZXci
LCBHX0NBTExCQUNLKGNsb3NlV2ViVmlld0NiKSwgd2luZG93KTsKKyNlbmRpZgogCiAgICAgcmV0
dXJuIHNjcm9sbGVkV2luZG93OwogfQpAQCAtMjM5LDYgKzI0NSw3IEBAIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiBhcmd2W10pCiAgICAgaWYgKCFnX3RocmVhZF9zdXBwb3J0ZWQoKSkKICAgICAg
ICAgZ190aHJlYWRfaW5pdChOVUxMKTsKIAorI2lmbmRlZiBXRUJLSVQyCiAjaWZkZWYgU09VUF9U
WVBFX1BST1hZX1JFU09MVkVSX0RFRkFVTFQKICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmVf
YnlfdHlwZSh3ZWJraXRfZ2V0X2RlZmF1bHRfc2Vzc2lvbigpLCBTT1VQX1RZUEVfUFJPWFlfUkVT
T0xWRVJfREVGQVVMVCk7CiAjZWxzZQpAQCAtMjQ5LDYgKzI1Niw3IEBAIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgIHNvdXBfdXJpX2ZyZWUocHJveHlVcmkpOwogICAg
IH0KICNlbmRpZgorI2VuZGlmCiAKICAgICBtYWluX3dpbmRvdyA9IGNyZWF0ZVdpbmRvdygmd2Vi
Vmlldyk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96727</attachid>
            <date>2011-06-10 03:50:43 -0700</date>
            <delta_ts>2011-06-10 07:58:21 -0700</delta_ts>
            <desc>Patch rebased to current git master</desc>
            <filename>wk2-gtk-api7.diff</filename>
            <type>text/plain</type>
            <size>22828</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCBjMDA0OTQ0Li41NDA1YmFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTEtMDYtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtHVEtdIEV4cG9ydCBhbiBBUEkgc2ltaWxhciB0byBXZWJLaXQxCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzgyMAorCisgICAgICAgICog
R05VbWFrZWZpbGUuYW06IEFkZCB3ZWJraXR3ZWJ2aWV3Y29tbW9uLmggdG8gcHVibGljIGhlYWRl
ciBsaXN0LgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg6IE1vdmUgZGVjbGFyYXRp
b25zIGNvbW1vbiB0byBXZWJLaXQyIHRvCisgICAgICAgIHdlYmtpdHdlYnZpZXdjb21tb24uaC4K
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlld2NvbW1vbi5oOiBBZGRlZC4KKwogMjAxMS0w
Ni0wOSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzVhYzNiMS4uOWIwNTYyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDExLTA2LTEwICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbR1RLXSBFeHBvcnQgYW4gQVBJIHNpbWlsYXIgdG8gV2ViS2l0
MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc4MjAK
KworICAgICAgICBBZGQgZmlyc3QgaW1wbGVtZW50YXRpb24gb2YgV2ViS2l0V2ViVmlldywgYSBj
bGFzcyB3aXRoIHRoZSBzYW1lCisgICAgICAgIEFQSSB0aGFuIHdlYmtpdDEsIHRoYXQgd3JhcHMg
dGhlIEMgQVBJIHRvIHByb3ZpZGUgYSBoaWdoIGxldmVsCisgICAgICAgIFdlYktpdDIgQVBJIGZv
ciBHVEsgcG9ydC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgbmV3IGZpbGVzIHRv
IGNvbXBpbGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19pbml0KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19uZXcp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19nb19iYWNrKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nb19mb3J3YXJkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0L3dlYmtpdC5o
OiBBZGRlZC4KKwogMjAxMS0wNi0wOSAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWVkZDEyMi4uMzhmMzNjMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDExLTA2LTEwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RL
XSBFeHBvcnQgYW4gQVBJIHNpbWlsYXIgdG8gV2ViS2l0MQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc4MjAKKworICAgICAgICBCdWlsZCBHdGtMYXVu
Y2hlcjIgZm9yIFdlYktpdDIuIEl0J3MgYWN0dWFsbHkgdGhlIHNhbWUgR3RrTGF1bmNoZXIKKyAg
ICAgICAgY29kZSwgYnV0IGxpbmtpbmcgdG8gbGlid2Via2l0Mmd0ay4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIEd0a0xhdW5jaGVyL21haW4uYzoKKyAgICAgICAgKGNy
ZWF0ZUJyb3dzZXIpOgorICAgICAgICAobWFpbik6CisKIDIwMTEtMDYtMDkgIENzYWJhIE9zenRy
b2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHJvbGxpbmcg
b3V0IHI4ODQ3MSwgYmVjYXVzZSBpdCBicm9rZSBwbHVnaW4gdGVzdHMgb24gUXQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGJkZWY4YWEuLmVlOTdlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1h
a2VmaWxlLmFtCkBAIC0xMzcsNyArMTM3LDggQEAgd2Via2l0Z3RrX3N0YXRpY19oX2FwaSArPSBc
CiAJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5o
IFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdz
LmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93
ZmVhdHVyZXMuaCBcCi0JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmgKKwkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuaCBcCisJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
Y29tbW9uLmgKIAogd2Via2l0Z3RrX2J1aWx0X2hfYXBpICs9IFwKIAlTb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuaAppbmRleCAzOGM5YTcwLi5jMTYzYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0d2ViZnJhbWUuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaD4K
ICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2Vidmlld2NvbW1vbi5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKQEAgLTE1MywxNSArMTU0
LDYgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogICAgIHZvaWQgKCpfd2Via2l0X3Jl
c2VydmVkMikgKHZvaWQpOwogfTsKIAotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X3dlYl92aWV3
X2dldF90eXBlICh2b2lkKTsKLQotV0VCS0lUX0FQSSBHdGtXaWRnZXQgKgotd2Via2l0X3dlYl92
aWV3X25ldyAodm9pZCk7Ci0KLVdFQktJVF9BUEkgR19DT05TVF9SRVRVUk4gZ2NoYXIgKgotd2Vi
a2l0X3dlYl92aWV3X2dldF90aXRsZSAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICp3ZWJWaWV3KTsKLQogV0VCS0lUX0FQSSBHX0NPTlNUX1JFVFVSTiBnY2hhciAq
CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgKndlYlZpZXcpOwogCkBAIC0xODcsMTYgKzE3OSwxMCBAQCBXRUJLSVRf
QVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQgICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYlZpZXcpOwogCiBXRUJLSVRfQVBJIHZvaWQK
LXdlYmtpdF93ZWJfdmlld19nb19iYWNrICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAqd2ViVmlldyk7Ci0KLVdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92
aWV3X2dvX2JhY2tfb3JfZm9yd2FyZCAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICp3ZWJWaWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdpbnQgICAgICAgICAgICAgICAgICBzdGVwcyk7CiAKIFdFQktJVF9BUEkgdm9pZAotd2Vi
a2l0X3dlYl92aWV3X2dvX2ZvcndhcmQgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICp3ZWJWaWV3KTsKLQotV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdf
c3RvcF9sb2FkaW5nICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndl
YlZpZXcpOwogCiBXRUJLSVRfQVBJIHZvaWQKQEAgLTIxMCwxMCArMTk2LDYgQEAgV0VCS0lUX0FQ
SSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZSAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgKndlYlZpZXcpOwogCiBXRUJLSVRfQVBJIHZvaWQKLXdlYmtp
dF93ZWJfdmlld19sb2FkX3VyaSAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAqd2ViVmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAqdXJpKTsKLQotV0VCS0lUX0FQSSB2b2lk
CiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgKndlYlZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKmNvbnRlbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg
ICAgICAgKm1pbWVfdHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3Y29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlld2NvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YzI2NWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
d2NvbW1vbi5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBbHAg
VG9rZXIgPGFscEBhdG9rZXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBM
dGQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZm5kZWYgd2Via2l0d2Vidmlld2NvbW1vbl9oCisjZGVmaW5lIHdlYmtpdHdlYnZpZXdj
b21tb25faAorCitHX0JFR0lOX0RFQ0xTCisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJf
dmlld19nZXRfdHlwZSAodm9pZCk7CisKK1dFQktJVF9BUEkgR3RrV2lkZ2V0ICoKK3dlYmtpdF93
ZWJfdmlld19uZXcgKHZvaWQpOworCitXRUJLSVRfQVBJIEdfQ09OU1RfUkVUVVJOIGdjaGFyICoK
K3dlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAqd2ViVmlldyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92
aWV3X2dvX2JhY2sgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICp3ZWJWaWV3KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2Fy
ZCAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYlZpZXcpOwor
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19sb2FkX3VyaSAgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViVmlldywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAq
dXJpKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDY4
MjNlZDguLjQyMjBiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFt
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC02NSw3ICs2NSw5IEBAIGxp
YndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElf
TUlOT1JfVkVSU0lPTkBfbGFfSEVBCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV0tQcm90
ZWN0aW9uU3BhY2VUeXBlcy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291
cmNlQ2FjaGVNYW5hZ2VyLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRh
aW5QdHIuaCBcCi0JJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5oCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggXAorCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuaCBcCisJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQvd2Via2l0LmgKIAogbm9kaXN0X2xpYndlYmtp
dDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1Jf
VkVSU0lPTkBfbGFfU09VUkNFUyA9IFwKIAkkKHdlYmtpdDJfYnVpbHRfc291cmNlcykKQEAgLTM2
MCw5ICszNjIsMTIgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9O
QF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdC93ZWJraXQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjQyZTI4NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMCwwICsxLDcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
I2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S1VSTC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlldywgd2Via2l0X3dlYl92aWV3LCBXRUJL
SVRfVFlQRV9XRUJfVklFV19CQVNFKQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5p
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRl
V2ViUGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSwgV0tDb250ZXh0R2V0U2hhcmVk
UHJvY2Vzc0NvbnRleHQoKSwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19j
bGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQoreworfQorCisvLyBQ
dWJsaWMgQVBJLgorR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3KHZvaWQpCit7CisgICAg
cmV0dXJuIEdUS19XSURHRVQoV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfVklFVywgTlVMTCkpKTsKK30KKwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmko
V2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIHVyaSkKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZf
ZmFpbCh1cmkpOworCisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VH
ZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsKKyAgICBXS1BhZ2VMb2FkVVJM
KHRvQVBJKHBhZ2UpLCBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1cmkpKTsKK30KKwordm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfZ29fYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKworICAgIFdl
YlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJ
RVdfQkFTRSh3ZWJWaWV3KSk7CisgICAgV0tQYWdlR29CYWNrKHRvQVBJKHBhZ2UpKTsKK30KKwor
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKwor
ICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRf
V0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7CisgICAgV0tQYWdlR29Gb3J3YXJkKHRvQVBJKHBhZ2Up
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDU4OTM5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhh
bnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBbHAgVG9rZXIg
PGFscEBhdG9rZXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRXZWJWaWV3X2gK
KyNkZWZpbmUgV2ViS2l0V2ViVmlld19oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdFdlYlZp
ZXdCYXNlLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKyNpbmNsdWRlIDx3
ZWJraXQvd2Via2l0d2Vidmlld2NvbW1vbi5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUg
V0VCS0lUX1RZUEVfV0VCX1ZJRVcgICAgICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF90eXBl
KCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVklFVyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVklFVywgV2ViS2l0V2ViVmll
dykpCisjZGVmaW5lIFdFQktJVF9XRUJfVklFV19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVD
S19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVklFVywgV2ViS2l0V2ViVmll
d0NsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9WSUVXKG9iaikgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9WSUVXKSkKKyNkZWZp
bmUgV0VCS0lUX0lTX1dFQl9WSUVXX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZ
UEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9WSUVXKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9W
SUVXX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdF
QktJVF9UWVBFX1dFQl9WSUVXLCBXZWJLaXRXZWJWaWV3Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgV2ViS2l0V2ViVmlld1ByaXZhdGU7CisKK3N0cnVjdCBf
V2ViS2l0V2ViVmlldyB7CisgICAgV2ViS2l0V2ViVmlld0Jhc2UgcGFyZW50OworCisgICAgLyo8
IHByaXZhdGUgPiovCisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1
Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyBwYXJl
bnQ7CisKKyAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5zaW9uICovCisgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQx
KSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9p
ZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2
ZWQ0KSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ1KSAodm9pZCk7CisgICAg
dm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQ2KSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQ3KSAodm9pZCk7Cit9OworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApp
bmRleCA0ZTJlZmM5Li40N2NhNWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0zMzcsMTEgKzMzNyw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQoV2ViS2l0V2ViVmll
d0Jhc2VDbGFzcyogd2Via2l0V2ViVmllCiBXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmll
d0Jhc2VDcmVhdGUoV2ViQ29udGV4dCogY29udGV4dCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAp
CiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlID0gV0VCS0lUX1dF
Ql9WSUVXX0JBU0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXX0JBU0UsIE5VTEwp
KTsKLSAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFz
ZS0+cHJpdjsKLQotICAgIHByaXYtPnBhZ2VQcm94eSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2Uo
cHJpdi0+cGFnZUNsaWVudC5nZXQoKSwgcGFnZUdyb3VwKTsKLSAgICBwcml2LT5wYWdlUHJveHkt
PmluaXRpYWxpemVXZWJQYWdlKCk7Ci0KKyAgICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBh
Z2Uod2Via2l0V2ViVmlld0Jhc2UsIHRvQVBJKGNvbnRleHQpLCB0b0FQSShwYWdlR3JvdXApKTsK
ICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2U7CiB9CiAKQEAgLTM1NSw2ICszNTEsMTQgQEAg
V2ViUGFnZVByb3h5KiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYmtpdFdlYlZpZXdCYXNlKQogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+
cGFnZVByb3h5LmdldCgpOwogfQogCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFn
ZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlKiBwcml2ID0gd2Via2l0V2ViVmlld0Jhc2UtPnByaXY7CisKKyAgICBwcml2LT5wYWdl
UHJveHkgPSB0b0ltcGwoY29udGV4dCktPmNyZWF0ZVdlYlBhZ2UocHJpdi0+cGFnZUNsaWVudC5n
ZXQoKSwgdG9JbXBsKHBhZ2VHcm91cCkpOworICAgIHByaXYtPnBhZ2VQcm94eS0+aW5pdGlhbGl6
ZVdlYlBhZ2UoKTsKK30KKwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvb2x0aXBUZXh0KFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgY29uc3QgY2hhciogdG9vbHRpcCkKIHsKICNp
ZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxMiwgMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKaW5kZXgg
NDgzNGQxNy4uNjk5NjczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKQEAgLTQxLDYgKzQyLDggQEAgR3RrSU1Db250ZXh0KiB3ZWJraXRXZWJWaWV3QmFz
ZUdldElNQ29udGV4dChXZWJLaXRXZWJWaWV3QmFzZSopOwogCiBXZWJQYWdlUHJveHkqIHdlYmtp
dFdlYlZpZXdCYXNlR2V0UGFnZShXZWJLaXRXZWJWaWV3QmFzZSopOwogCit2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSosIFdLQ29udGV4dFJlZiwg
V0tQYWdlR3JvdXBSZWYpOworCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRpcFRleHQo
V2ViS2l0V2ViVmlld0Jhc2UqLCBjb25zdCBjaGFyKik7CiAKIEdfRU5EX0RFQ0xTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQvd2Via2l0LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQvd2Via2l0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZlZDhhNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdC93ZWJraXQuaApAQCAtMCwwICsx
LDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19X
RUJLSVRfSF9fCisjZGVmaW5lIF9fV0VCS0lUX0hfXworCisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJL
aXQyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXRXZWJWaWV3QmFzZS5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV2ViS2l0V2ViVmlldy5oPgorCisjZW5kaWYgLyogX19XRUJLSVRfSF9fICovCmRp
ZmYgLS1naXQgYS9Ub29scy9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDVmNDU1MDQuLjliMTZmMmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCkBAIC0zLDcgKzMsMzIgQEAgbm9pbnN0X1BST0dSQU1T
ICs9IFwKIAlQcm9ncmFtcy9HdGtMYXVuY2hlciBcCiAJUHJvZ3JhbXMvSW1hZ2VEaWZmCiAKK2lm
IEVOQUJMRV9XRUJLSVQyCitub2luc3RfUFJPR1JBTVMgKz0gXAorCVByb2dyYW1zL0d0a0xhdW5j
aGVyMgorZW5kaWYKKwogIyBHdGtMYXVuY2hlcgorZ3RrbGF1bmNoZXJfc291cmNlcyA9IFwKKwlU
b29scy9HdGtMYXVuY2hlci9tYWluLmMKKworZ3RrbGF1bmNoZXJfY2ZsYWdzID0gXAorCS1mbm8t
c3RyaWN0LWFsaWFzaW5nIFwKKwkkKGdsb2JhbF9jZmxhZ3MpIFwKKwkkKEdUS19DRkxBR1MpIFwK
KwkkKExJQlNPVVBfQ0ZMQUdTKQorCitndGtsYXVuY2hlcl9sZGFkZCA9IFwKKwlsaWJqYXZhc2Ny
aXB0Y29yZWd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9N
SU5PUl9WRVJTSU9OQC5sYSBcCisJJChHVEtfTElCUykgXAorCSQoR0xJQl9MSUJTKSBcCisJJChM
SUJTT1VQX0xJQlMpIFwKKwkkKFdJTk1NX0xJQlMpCisKK2d0a2xhdW5jaGVyX2xkZmxhZ3MgPSBc
CisJLW5vLWZhc3QtaW5zdGFsbCBcCisJLW5vLWluc3RhbGwKKwogUHJvZ3JhbXNfR3RrTGF1bmNo
ZXJfQ1BQRkxBR1MgPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9jYWNoZS8gXApAQCAt
MTMsMjYgKzM4LDQ2IEBAIFByb2dyYW1zX0d0a0xhdW5jaGVyX0NQUEZMQUdTID0gXAogCSQoamF2
YXNjcmlwdGNvcmVfY3BwZmxhZ3MpCiAKIFByb2dyYW1zX0d0a0xhdW5jaGVyX1NPVVJDRVMgPSBc
Ci0JVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCisJJChndGtsYXVuY2hlcl9zb3VyY2VzKQogCiBQ
cm9ncmFtc19HdGtMYXVuY2hlcl9DRkxBR1MgPSBcCiAJLWFuc2kgXAotCS1mbm8tc3RyaWN0LWFs
aWFzaW5nIFwKLQkkKGdsb2JhbF9jZmxhZ3MpIFwKLQkkKEdUS19DRkxBR1MpIFwKLQkkKExJQlNP
VVBfQ0ZMQUdTKQorCSQoZ3RrbGF1bmNoZXJfY2ZsYWdzKQogCiBQcm9ncmFtc19HdGtMYXVuY2hl
cl9MREFERCA9IFwKLQlsaWJqYXZhc2NyaXB0Y29yZWd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9W
RVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYSBcCiAJbGlid2Via2l0Z3Rr
LUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJ
T05ALmxhIFwKLQkkKEdUS19MSUJTKSBcCi0JJChHTElCX0xJQlMpIFwKLQkkKExJQlNPVVBfTElC
UykgXAotCSQoV0lOTU1fTElCUykKKwkkKGd0a2xhdW5jaGVyX2xkYWRkKQogCiBQcm9ncmFtc19H
dGtMYXVuY2hlcl9MREZMQUdTID0gXAotCS1uby1mYXN0LWluc3RhbGwgXAotCS1uby1pbnN0YWxs
CisJJChndGtsYXVuY2hlcl9sZGZsYWdzKQorCitpZiBFTkFCTEVfV0VCS0lUMgorUHJvZ3JhbXNf
R3RrTGF1bmNoZXIyX0NQUEZMQUdTID0gXAorCS1JJChzcmNkaXIpL1NvdXJjZSBcCisJLUkkKHRv
cF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9pbmNsdWRlIFwKKwktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ayBcCisJLUkkKHRvcF9idWlsZGRpcikv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQvZ3RrIFwKKwktSSQodG9wX2J1aWxkZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ayBcCisJLUkk
KHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMgXAorCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCisJ
JChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykKKworUHJvZ3JhbXNfR3RrTGF1bmNoZXIyX1NPVVJD
RVMgPSBcCisJJChndGtsYXVuY2hlcl9zb3VyY2VzKQorCitQcm9ncmFtc19HdGtMYXVuY2hlcjJf
Q0ZMQUdTID0gXAorCS1EV0VCS0lUMj1cIjFcIiBcCisJJChndGtsYXVuY2hlcl9jZmxhZ3MpCisK
K1Byb2dyYW1zX0d0a0xhdW5jaGVyMl9MREFERCA9IFwKKwlsaWJ3ZWJraXQyZ3RrLUBXRUJLSVRH
VEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwK
KwkkKGd0a2xhdW5jaGVyX2xkYWRkKQorCitQcm9ncmFtc19HdGtMYXVuY2hlcjJfTERGTEFHUyA9
IFwKKwkkKGd0a2xhdW5jaGVyX2xkZmxhZ3MpCisKK2VuZGlmCiAKICMgbGliV2ViQ29yZUludGVy
bmFscwogIyBXZSBtdXN0IHNwbGl0IG9mZiB0aGUgd2luZG93LmludGVybmFscyBpbXBsZW1lbnRh
dGlvbiBpbnRvIGEgc2VwYXJhdGUKQEAgLTE5MCw2ICsyMzUsMTEgQEAgQ0xFQU5GSUxFUyArPSBc
CiAJUHJvZ3JhbXMvR3RrTGF1bmNoZXIgXAogCVByb2dyYW1zL0ltYWdlRGlmZgogCitpZiBFTkFC
TEVfV0VCS0lUMgorQ0xFQU5GSUxFUyArPSBcCisJUHJvZ3JhbXMvR3RrTGF1bmNoZXIyCitlbmRp
ZgorCiBpZiBUQVJHRVRfWDExCiAKICMgQnVpbGQgVGVzdE5ldHNjYXBlUGx1Z2luIG9ubHkgZm9y
IFgxMQpkaWZmIC0tZ2l0IGEvVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jIGIvVG9vbHMvR3RrTGF1
bmNoZXIvbWFpbi5jCmluZGV4IGE4ZTBlZmUuLmFlYTAxN2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0d0
a0xhdW5jaGVyL21haW4uYworKysgYi9Ub29scy9HdGtMYXVuY2hlci9tYWluLmMKQEAgLTM5LDYg
KzM5LDcgQEAgc3RhdGljIHZvaWQgYWN0aXZhdGVVcmlFbnRyeUNiKEd0a1dpZGdldCogZW50cnks
IGdwb2ludGVyIGRhdGEpCiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKHdlYlZpZXcsIHVy
aSk7CiB9CiAKKyNpZm5kZWYgV0VCS0lUMgogc3RhdGljIHZvaWQgdXBkYXRlVGl0bGUoR3RrV2lu
ZG93KiB3aW5kb3csIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgR1N0cmluZyAqc3Ry
aW5nID0gZ19zdHJpbmdfbmV3KHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUod2ViVmlldykpOwpA
QCAtODAsNiArODEsNyBAQCBzdGF0aWMgdm9pZCBub3RpZnlQcm9ncmVzc0NiKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqIHBzcGVjLCBHdGtXaWRnZQogewogICAgIHVwZGF0ZVRp
dGxlKEdUS19XSU5ET1cod2luZG93KSwgd2ViVmlldyk7CiB9CisjZW5kaWYKIAogc3RhdGljIHZv
aWQgZGVzdHJveUNiKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtXaWRnZXQqIHdpbmRvdykKIHsKQEAg
LTk3LDYgKzk5LDcgQEAgc3RhdGljIHZvaWQgZ29Gb3J3YXJkQ2IoR3RrV2lkZ2V0KiB3aWRnZXQs
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgd2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQo
d2ViVmlldyk7CiB9CiAKKyNpZm5kZWYgV0VCS0lUMgogc3RhdGljIFdlYktpdFdlYlZpZXcqCiBj
cmVhdGVXZWJWaWV3Q2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViRnJhbWUqIHdl
Yl9mcmFtZSwgR3RrV2lkZ2V0KiB3aW5kb3cpCiB7CkBAIC0xMTcsNiArMTIwLDcgQEAgc3RhdGlj
IGdib29sZWFuIGNsb3NlV2ViVmlld0NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a1dpZGdl
dCogd2luZG93KQogICAgIGd0a193aWRnZXRfZGVzdHJveSh3aW5kb3cpOwogICAgIHJldHVybiBU
UlVFOwogfQorI2VuZGlmCiAKIHN0YXRpYyBHdGtXaWRnZXQqIGNyZWF0ZUJyb3dzZXIoR3RrV2lk
Z2V0KiB3aW5kb3csIEd0a1dpZGdldCogdXJpRW50cnksIEd0a1dpZGdldCogc3RhdHVzYmFyLCBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewpAQCAtMTI1LDYgKzEyOSw3IEBAIHN0YXRpYyBHdGtX
aWRnZXQqIGNyZWF0ZUJyb3dzZXIoR3RrV2lkZ2V0KiB3aW5kb3csIEd0a1dpZGdldCogdXJpRW50
cnksIEd0a1dpZGdlCiAKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHNjcm9s
bGVkV2luZG93KSwgR1RLX1dJREdFVCh3ZWJWaWV3KSk7CiAKKyNpZm5kZWYgV0VCS0lUMgogICAg
IGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgIm5vdGlmeTo6dGl0bGUiLCBHX0NBTExCQUNLKG5v
dGlmeVRpdGxlQ2IpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgIm5v
dGlmeTo6bG9hZC1zdGF0dXMiLCBHX0NBTExCQUNLKG5vdGlmeUxvYWRTdGF0dXNDYiksIHVyaUVu
dHJ5KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJub3RpZnk6OnByb2dyZXNzIiwg
R19DQUxMQkFDSyhub3RpZnlQcm9ncmVzc0NiKSwgd2luZG93KTsKQEAgLTEzMiw2ICsxMzcsNyBA
QCBzdGF0aWMgR3RrV2lkZ2V0KiBjcmVhdGVCcm93c2VyKEd0a1dpZGdldCogd2luZG93LCBHdGtX
aWRnZXQqIHVyaUVudHJ5LCBHdGtXaWRnZQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywg
ImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0NiKSwgd2luZG93KTsK
ICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJ3ZWItdmlldy1yZWFkeSIsIEdfQ0FMTEJB
Q0sod2ViVmlld1JlYWR5Q2IpLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmll
dywgImNsb3NlLXdlYi12aWV3IiwgR19DQUxMQkFDSyhjbG9zZVdlYlZpZXdDYiksIHdpbmRvdyk7
CisjZW5kaWYKIAogICAgIHJldHVybiBzY3JvbGxlZFdpbmRvdzsKIH0KQEAgLTIzOSw2ICsyNDUs
NyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgIGlmICghZ190aHJlYWRf
c3VwcG9ydGVkKCkpCiAgICAgICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CiAKKyNpZm5kZWYgV0VC
S0lUMgogI2lmZGVmIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9ERUZBVUxUCiAgICAgc291cF9z
ZXNzaW9uX2FkZF9mZWF0dXJlX2J5X3R5cGUod2Via2l0X2dldF9kZWZhdWx0X3Nlc3Npb24oKSwg
U09VUF9UWVBFX1BST1hZX1JFU09MVkVSX0RFRkFVTFQpOwogI2Vsc2UKQEAgLTI0OSw2ICsyNTYs
NyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgICAgICBzb3VwX3VyaV9m
cmVlKHByb3h5VXJpKTsKICAgICB9CiAjZW5kaWYKKyNlbmRpZgogCiAgICAgbWFpbl93aW5kb3cg
PSBjcmVhdGVXaW5kb3coJndlYlZpZXcpOwogCg==
</data>
<flag name="review"
          id="90499"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>