<?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>32290</bug_id>
          
          <creation_ts>2009-12-08 14:55:14 -0800</creation_ts>
          <short_desc>[GTK] can&apos;t input korean into lower all input box except adress input box in webkit gtk launcher</short_desc>
          <delta_ts>2010-03-16 10:41:20 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="sandy paulanskaya">kuh3h3</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bertwasbeer</cc>
    
    <cc>darin</cc>
    
    <cc>dev</cc>
    
    <cc>eric</cc>
    
    <cc>evan</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>otte</cc>
    
    <cc>pclouds</cc>
    
    <cc>penghuang</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>169803</commentid>
    <comment_count>0</comment_count>
    <who name="sandy paulanskaya">kuh3h3</who>
    <bug_when>2009-12-08 14:55:14 -0800</bug_when>
    <thetext>can`t input korean into lower all input box except for adress input box in webkit gtk launcher after recent svn update.
prior version worked well with my scim-bridge and scim-hangul in korean input.
first i report this bug to midori Bug Tracker(http://www.twotoasts.de/bugs/index.php?do=details&amp;task_id=598).
i`m using gtk 2.14.4 with webkit 1.1.17(recent svn version compiled by me) on ubuntu 8.10.

you can see my problems in screenshots.
midori screenshot(http://www.twotoasts.de/bugs/index.php?getfile=811)
gtk launcher screenshot(http://www.twotoasts.de/bugs/index.php?getfile=826)

what cause this weird korean input failure?
my linux system(google chrom and prior version midori before recent webkit gtk update )
works well with current scim-bridge and scim-hangul.

of course there is no problem in google chrome.
google chrome screenshot(http://www.twotoasts.de/bugs/index.php?getfile=810)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176307</commentid>
    <comment_count>1</comment_count>
    <who name="Duy Nguyen">pclouds</who>
    <bug_when>2010-01-02 03:57:25 -0800</bug_when>
    <thetext>I will try to reproduce but I admit I haven&apos;t used scim before. Just for the record, how did you do scim setup (any env variable setting, or file config, or it comes from Ubuntu default config)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176309</commentid>
    <comment_count>2</comment_count>
    <who name="Duy Nguyen">pclouds</who>
    <bug_when>2010-01-02 04:33:13 -0800</bug_when>
    <thetext>Confirmed preedit characters do not show up (only shown after pressing space, I guess that would stop preedit mode). Tested with GtkLauncher r52555 and GTK_IM_MODULE=scim-bridge</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176317</commentid>
    <comment_count>3</comment_count>
    <who name="Duy Nguyen">pclouds</who>
    <bug_when>2010-01-02 08:36:32 -0800</bug_when>
    <thetext>It seems that scim generates preedit and commit signals properly. But for some reason, the code that commits string in EditorClient::handleKeyboardEvent() is only executed when I press whitespace key. As the result, string is queued up in pendingComposition but never gets processed.

Martin, any idea how a keypressEvent is created? Is it possible that scim eats all key press and release so keypressEvent is never created?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176403</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-01-02 17:43:56 -0800</bug_when>
    <thetext>After looking into this, the situation as I understand it is...

For non-SCIM input: &quot;commit&quot; and &quot;preedit-changed&quot; signals are fired during keydown events. The correct behavior in this case is to wait for the keyup event to modify the editable area (the current code).

For SCIM input: SCIM eats keypresses after the preedit starts. After this point, the editable area needs to be updated during signal handling (the old behavior of this code), because no further key events will be passed to WebKit for this composition.

The second case is currently broken. I&apos;ll try making a patch for this issue. My approach will be to change the editable area immediately only if we are not in the middle of handling a keydown event, otherwise the code will wait until keyup event to commit changes.

As an aside, it would be nice to establish some tests for this behavior, but I&apos;m unsure of the best way given the intricacies of SCIM configuration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183685</commentid>
    <comment_count>5</comment_count>
    <who name="Bert Wasbeer">bertwasbeer</who>
    <bug_when>2010-01-22 10:03:55 -0800</bug_when>
    <thetext>I&apos;d like to add that the same problem occurs with IBus, which has replaced SCIM as the default input method (for Korean, Chinese etc.) in distributions such as Ubuntu and Fedora. 

I&apos;m not really sure where/how to find the version of Webkit. I did search for it, but couldn&apos;t find it unfortunately, so I&apos;ll go with the numbering used in the Ubuntu repositories.

With libwebkit 1.02-2 1.1.15 from the default Ubuntu Karmic repositories, both SCIM and IBus work fine. I can type English (or any European language) as well as Chinese (or Korean, Japanese, etc).

With versions 1.1.16, 1.1.17 and 1.1.18 from the Webkit Team PPA for Ubuntu, neither SCIM nor IBus works. I can type English, but not Chinese.

With version 1.1.19 from the Webkit Team PPA however, SCIM is also not usable when I want to write in English, because every letter appears in duplicate. When for instance I type &quot;hello&quot; I get &quot;hheelloo&quot; on the screen. When I press backspace, it also removes two letters at a time. When I switch to Chinese input in SCIM, both the pinyin and Chinese characters appear on the screen. For instance, when I type &quot;nihao&quot; it gives me &quot;nihao你好&quot; where it should only give &quot;你好&quot;. IBus works as with versions 1.1.16 through 1.1.18: English is fine, Chinese does not work at all.

With both SCIM and IBus I used the default configurations that come with Ubuntu Karmic.

Hope this can be of help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186150</commentid>
    <comment_count>6</comment_count>
      <attachid>47782</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-01-30 19:43:11 -0800</bug_when>
    <thetext>Created attachment 47782
Proposed patch

I&apos;ve attached a proposed patch for this issue. It&apos;d be great if those having problems who can compile WebKit give this a shot and let me know how it works. I&apos;ll be able to put this up for review once I get a good bunch of unit tests to verify this fix and prevent regressions in the future.

Here is what I&apos;ve changed.
- Handle the case where the IMContext sends signals when not handling WebKit key events.
- Handle the case where the IMContext sends more than one &quot;committed&quot; signal in a row.
- Properly handle IME in two WebView simultaneously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186908</commentid>
    <comment_count>7</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-02 04:25:55 -0800</bug_when>
    <thetext>*** Bug 34394 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186919</commentid>
    <comment_count>8</comment_count>
      <attachid>47782</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-02 04:47:46 -0800</bug_when>
    <thetext>Comment on attachment 47782
Proposed patch

 67     gchar* newPreedit = 0;

You may want to use GOwnPtr for these, I guess?

 60         void updatePendingComposition(const gchar*);
 61         void updatePendingPreedit(const gchar*);

Just make these take const char*, there&apos;s no good reason to use gchar* unless it&apos;s API we&apos;re exposing (so keeping consistency with what&apos;s used on most APIs is useful). I understand the gchar typedef is required for the GOwnPtr, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187685</commentid>
    <comment_count>9</comment_count>
      <attachid>48121</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-02-04 01:42:00 -0800</bug_when>
    <thetext>Created attachment 48121
Proposed patch (rev2)

I&apos;ve attached another patch which incorporates kov&apos;s suggestions and also seems to fix the behavior of the xim IM module. While there are still some patches forthcoming to improve IME support, I think this one will fix most issues. After I finish writing some tests to go with this patch, I&apos;ll put it up for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187756</commentid>
    <comment_count>10</comment_count>
    <who name="sandy paulanskaya">kuh3h3</who>
    <bug_when>2010-02-04 05:57:06 -0800</bug_when>
    <thetext>webkit take too long to compile on my celeron 1.7 Ghz.(almost all day long).
your old patch has been applied to svn revision 54136 and worked on me.
(midori, arora ,gtk launcher) 
screenshot : http://yfrog.com/5escreenshot087gp

thanks for patch.i`ll try new rev2 patch next time :)

$ svn info
Path: .
URL: http://svn.webkit.org/repository/webkit/trunk
Repository Root: http://svn.webkit.org/repository/webkit
Repository UUID: 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Revision: 54136
Node Kind: directory
Schedule: normal
Last Changed Author: philn@webkit.org
Last Changed Rev: 54136
Last Changed Date: 2010-02-02 01:22:39 +0900 (Tue, 02 Feb 2010)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187777</commentid>
    <comment_count>11</comment_count>
    <who name="Duy Nguyen">pclouds</who>
    <bug_when>2010-02-04 07:01:09 -0800</bug_when>
    <thetext>Applied rev2 on top of r54341, ran testkeyevents and got:

/webkit/keyevent/textfield: OK
/webkit/keyevent/buttons: OK
/webkit/keyevent/link: OK
/webkit/keyevent/textfield: OK
/webkit/keyevent/textfield: Segmentation fault

(gdb) bt
#0  0xb5529129 in g_type_check_instance_cast ()
   from /usr/lib/libgobject-2.0.so.0
#1  0x080496d7 in test_scimlike_input_window_object_cleared_cb ()
#2  0xb797fd16 in webkit_marshal_VOID__OBJECT_POINTER_POINTER ()
   from /home/pclouds/w/webkit/.libs/libwebkit-1.0.so.2
#3  0xb55092eb in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#4  0xb551a388 in signal_emit_unlocked_R () from /usr/lib/libgobject-2.0.so.0
#5  0xb551b72f in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#6  0xb551ecdc in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#7  0xb79366a8 in WebKit::FrameLoaderClient::dispatchDidClearWindowObjectInWorld () from /home/pclouds/w/webkit/.libs/libwebkit-1.0.so.2
#8  0xb757b39d in WebCore::FrameLoader::dispatchDidClearWindowObjectInWorld ()
   from /home/pclouds/w/webkit/.libs/libwebkit-1.0.so.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187779</commentid>
    <comment_count>12</comment_count>
    <who name="Duy Nguyen">pclouds</who>
    <bug_when>2010-02-04 07:05:20 -0800</bug_when>
    <thetext>*** Bug 30389 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188243</commentid>
    <comment_count>13</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-02-05 12:07:25 -0800</bug_when>
    <thetext>I accidentally included my half-done unit test with the patch, sorry about the crash. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189625</commentid>
    <comment_count>14</comment_count>
      <attachid>48551</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-02-11 01:20:48 -0800</bug_when>
    <thetext>Created attachment 48551
Patch for this issue (rev3)

I&apos;ve attached a patch for this issue which streamlines the fixes from the previous iteration, calls focus_in and focus_out at the appropriate times, and properly handles Ctrl+U Unicode composition. After the review cycles are over, I don&apos;t mind committing this myself, I&apos;m eager to learn the process. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189626</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-11 01:25:07 -0800</bug_when>
    <thetext>Attachment 48551 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:96:  Use 0 instead of NULL.  [readability/null] [5]
Ignoring &quot;WebKit/gtk/tests/testkeyevents.c&quot;: this file is exempt from the style guide.
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189628</commentid>
    <comment_count>16</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-02-11 01:29:42 -0800</bug_when>
    <thetext>I&apos;ve filed a bug for webkit-style and g_strconcat here: https://bugs.webkit.org/show_bug.cgi?id=34834</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189795</commentid>
    <comment_count>17</comment_count>
      <attachid>48551</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-02-11 14:11:43 -0800</bug_when>
    <thetext>Comment on attachment 48551
Patch for this issue (rev3)

You may want to consider adding DRT support for input methods (a la /platform/mac/editing/input/text-control-ime-input.html i think).

The patch looks good to me, but i&apos;m not really a gtk dev -- if xan or some other gtk person thinks it&apos;s okay i&apos;m happy to r+ this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189982</commentid>
    <comment_count>18</comment_count>
      <attachid>48551</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-02-12 01:50:35 -0800</bug_when>
    <thetext>Comment on attachment 48551
Patch for this issue (rev3)

We did a review of this on IRC, Martin will post a new patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190287</commentid>
    <comment_count>19</comment_count>
      <attachid>48709</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-02-13 12:43:31 -0800</bug_when>
    <thetext>Created attachment 48709
Patch for this issue (rev4)

I&apos;ve attached an updated patch with the following changes:
    - Fixed the case where a page calls preventDefault() on some keypress events.
    - If a key release event is filtered and there is no pending composition, block the event.
    - Added a few comments which describe the timeline of key events using the &apos;simple&apos; context.
    - Add two more sets of unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190288</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-13 12:49:02 -0800</bug_when>
    <thetext>Attachment 48709 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:96:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:557:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Ignoring &quot;WebKit/gtk/tests/testkeyevents.c&quot;: this file is exempt from the style guide.
Total errors found: 2


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190290</commentid>
    <comment_count>21</comment_count>
      <attachid>48710</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-02-13 13:05:39 -0800</bug_when>
    <thetext>Created attachment 48710
Patch for this issue (rev5)

The style bot is a harsh mistress. I&apos;ve updated the patch to fix the style nit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190291</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-13 13:09:50 -0800</bug_when>
    <thetext>Attachment 48710 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:96:  Use 0 instead of NULL.  [readability/null] [5]
Ignoring &quot;WebKit/gtk/tests/testkeyevents.c&quot;: this file is exempt from the style guide.
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191496</commentid>
    <comment_count>23</comment_count>
    <who name="sandy paulanskaya">kuh3h3</who>
    <bug_when>2010-02-18 02:15:54 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Created an attachment (id=48710) [details]
&gt; Patch for this issue (rev5)
&gt; 
&gt; The style bot is a harsh mistress. I&apos;ve updated the patch to fix the style nit.

thanks for new v5 patch

but i got some error about gtk version 2,14.

 CC     WebKit/gtk/tests/Programs_unittests_testkeyevents-testkeyevents.o
WebKit/gtk/tests/testkeyevents.c: In function ‘test_xim_load_status_cb’:
WebKit/gtk/tests/testkeyevents.c:258: warning: implicit declaration of function ‘gtk_im_multicontext_get_context_id’
WebKit/gtk/tests/testkeyevents.c:258: warning: initialization makes pointer from integer without a cast
WebKit/gtk/tests/testkeyevents.c:259: warning: implicit declaration of function ‘gtk_im_multicontext_set_context_id’
  CCLD   Programs/unittests/testkeyevents
WebKit/gtk/tests/Programs_unittests_testkeyevents-testkeyevents.o: In function `test_xim_load_status_cb&apos;:
testkeyevents.c:(.text+0x289): undefined reference to `gtk_im_multicontext_get_context_id&apos;
testkeyevents.c:(.text+0x2ae): undefined reference to `gtk_im_multicontext_set_context_id&apos;
testkeyevents.c:(.text+0x406): undefined reference to `gtk_im_multicontext_set_context_id&apos;
collect2: ld returned 1 exit status
make[1]: *** [Programs/unittests/testkeyevents] error 1

maybe gtk_im_multicontext_get_context_id is gtk 2.16 function?
i want some ifdef statements for my gtk 2.14

. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192143</commentid>
    <comment_count>24</comment_count>
      <attachid>49120</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-02-19 23:43:30 -0800</bug_when>
    <thetext>Created attachment 49120
Patch for this issue (rev6)

Thanks for the information. I&apos;ve uploaded a new version of this patch which wraps the calls to gtk_im_multicontext_{g,s}et_context_id in an #if GTK_CHECK_VERSION(2, 16, 0).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192154</commentid>
    <comment_count>25</comment_count>
    <who name="sandy paulanskaya">kuh3h3</who>
    <bug_when>2010-02-20 01:45:55 -0800</bug_when>
    <thetext>Applied rev2 on top of r54959, ran testkeyevents and got:

/webkit/keyevents/event-textinput: OK
/webkit/keyevents/event-buttons: OK
/webkit/keyevents/event-link: OK
/webkit/keyevent/event-div: OK
/webkit/keyevent/ime-textinput: **
ERROR:WebKit/gtk/tests/testkeyevents.c:196:test_ime_load_status_cb: assertion failed: (element_text_equal_to(context, &quot;a&quot;))
Aborted

(gdb) r
Starting program: /media/sdc1/WebKit/Programs/unittests/testkeyevents 
[Thread debugging using libthread_db enabled]
/webkit/keyevents/event-textinput: [New Thread 0xb4f35b90 (LWP 9310)]
[New Thread 0xb460db90 (LWP 9311)]
[New Thread 0xb3e0db90 (LWP 9312)]
[Thread 0xb3e0db90 (LWP 9312) exited]
OK
/webkit/keyevents/event-buttons: OK
/webkit/keyevents/event-link: OK
/webkit/keyevent/event-div: OK
/webkit/keyevent/ime-textinput: **
ERROR:WebKit/gtk/tests/testkeyevents.c:196:test_ime_load_status_cb: assertion failed: (element_text_equal_to(context, &quot;a&quot;))

Program received signal SIGABRT, Aborted.
0xb68a5a16 in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64	../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
	in ../nptl/sysdeps/unix/sysv/linux/raise.c
(gdb) bt full
#0  0xb68a5a16 in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
        resultvar = &lt;value optimised out&gt;
        pid = -1231314956
        selftid = 9288
#1  0xb68a7318 in *__GI_abort () at abort.c:88
        act = {__sigaction_handler = {sa_handler = 0x1, sa_sigaction = 0x1}, sa_mask = {__val = {136609064, 3065769893, 136075184, 1632, 
              3221214080, 3221214068, 134538008, 3221214036, 4, 3221214144, 3064812272, 3063820273, 134536992, 0, 0, 1, 3221214008, 
              3062794188, 3063656768, 136073136, 136073136, 3064524788, 136073136, 1, 3221214040, 3062792100, 136073136, 135126960, 147, 
              3064524788, 3064524788, 147}}, sa_flags = -1073753112, sa_restorer = 0x806f7e0}
        sigs = {__val = {32, 0 &lt;repeats 31 times&gt;}}
#2  0xb6a38d13 in g_assertion_message () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#3  0xb6a3933d in g_assertion_message_expr () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#4  0x080499dc in test_ime_load_status_cb ()
No locals.
#5  0xb6aae55a in g_cclosure_marshal_VOID__PARAM () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#6  0xb6a9ff4b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#7  0xb6ab7697 in ?? () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#8  0x081c68a0 in ?? ()
No symbol table info available.
#9  0x00000000 in ?? ()
No symbol table info available.
(gdb) i r
eax            0x0	0
ecx            0x2448	9288
edx            0x6	6
ebx            0x2448	9288
esp            0xbfffd2b8	0xbfffd2b8
ebp            0xbfffd2c0	0xbfffd2c0
esi            0x806f7e0	134674400
edi            0xb69b9ff4	-1231314956
eip            0xb68a5a16	0xb68a5a16 &lt;*__GI_raise+70&gt;
eflags         0x200206	[ PF IF ID ]
cs             0x73	115
ss             0x7b	123
ds             0x7b	123
es             0x7b	123
fs             0x0	0
gs             0x33	51</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192155</commentid>
    <comment_count>26</comment_count>
    <who name="sandy paulanskaya">kuh3h3</who>
    <bug_when>2010-02-20 01:49:55 -0800</bug_when>
    <thetext>Applied rev6  not &quot;rev2 &quot;on top of r54959. sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194511</commentid>
    <comment_count>27</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-02-27 10:46:47 -0800</bug_when>
    <thetext>Sandy, what version of GTK+ 2.14 are you on? I&apos;m having trouble reproducing the test failure, even while running on 2.14.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194512</commentid>
    <comment_count>28</comment_count>
    <who name="sandy paulanskaya">kuh3h3</who>
    <bug_when>2010-02-27 11:00:14 -0800</bug_when>
    <thetext>$ more /usr/lib/pkgconfig/glib-2.0.pc
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums

Name: GLib
Description: C Utility Library
Version: 2.21.3
Libs: -L${libdir} -lglib-2.0 
Libs.private: 
Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include 

$ more /usr/lib/pkgconfig/gtk+-2.0.pc
prefix=/usr
exec_prefix=${prefix}
libdir=/usr/lib
includedir=${prefix}/include
target=x11

gtk_binary_version=2.10.0
gtk_host=i486-pc-linux-gnu

Name: GTK+
Description: GTK+ Graphical UI Library (${target} target)
Version: 2.14.4
Requires: gdk-${target}-2.0 atk cairo gio-2.0 pangoft2
Libs: -L${libdir} -lgtk-${target}-2.0 
Cflags: -I${includedir}/gtk-2.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197036</commentid>
    <comment_count>29</comment_count>
    <who name="Benjamin Otte">otte</who>
    <bug_when>2010-03-07 15:06:30 -0800</bug_when>
    <thetext>Might bug 35847 be related?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197038</commentid>
    <comment_count>30</comment_count>
    <who name="Benjamin Otte">otte</who>
    <bug_when>2010-03-07 15:18:51 -0800</bug_when>
    <thetext>I just tested the patch against the Compose key issue in bug 35847 with svn 65508 and it does not fix it. Unlike before, it now consumes the keypresses, but it does not output the final composed key. So instead of &quot;&lt;3&quot;, I get nothing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199352</commentid>
    <comment_count>31</comment_count>
    <who name="sandy paulanskaya">kuh3h3</who>
    <bug_when>2010-03-13 02:42:28 -0800</bug_when>
    <thetext>rev 55801 have not now wtf/gtk/GOwnPtr.h.
so compile failed.


CXX    WebKit/gtk/WebCoreSupport/libwebkit_1_0_la-EditorClientGtk.lo
In file included from WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:25:
WebKit/gtk/WebCoreSupport/EditorClientGtk.h:38:29: error: wtf/gtk/GOwnPtr.h: No such file or directory
In file included from WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:25:
WebKit/gtk/WebCoreSupport/EditorClientGtk.h:132: error: ISO C++ forbids declaration of ‘GOwnPtr’ with no type
WebKit/gtk/WebCoreSupport/EditorClientGtk.h:132: error: expected ‘;’ before ‘&lt;’ token
WebKit/gtk/WebCoreSupport/EditorClientGtk.h: In member function ‘void WebKit::EditorClient::clearPendingComposition()’:
WebKit/gtk/WebCoreSupport/EditorClientGtk.h:61: error: ‘m_pendingComposition’ was not declared in this scope
WebKit/gtk/WebCoreSupport/EditorClientGtk.h: In member function ‘bool WebKit::EditorClient::hasPendingComposition()’:
WebKit/gtk/WebCoreSupport/EditorClientGtk.h:62: error: ‘m_pendingComposition’ was not declared in this scope
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp: In member function ‘void WebKit::EditorClient::updatePendingComposition(const gchar
*)’:
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:93: error: ‘m_pendingComposition’ was not declared in this scope
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp: In member function ‘virtual void WebKit::EditorClient::handleKeyboardEvent(WebCore:
:KeyboardEvent*)’:
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:499: error: ‘m_pendingComposition’ was not declared in this scope
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp: In member function ‘virtual void WebKit::EditorClient::handleInputMethodKeydown(Web
Core::KeyboardEvent*)’:
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:557: error: ‘m_pendingComposition’ was not declared in this scope
make[1]: *** [WebKit/gtk/WebCoreSupport/libwebkit_1_0_la-EditorClientGtk.lo] error 1
make[1]: Leaving directory `/media/sdc1/WebKit&apos;
make: *** [all] error 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199386</commentid>
    <comment_count>32</comment_count>
      <attachid>50660</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-03-13 12:05:06 -0800</bug_when>
    <thetext>Created attachment 50660
Patch for this issue (rev7)

I&apos;ve updated this patch against ToT as well as initializing the m_treatContextCommitAsKeyEvent member, which I hope should fix the failure that Sandy is seeing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199469</commentid>
    <comment_count>33</comment_count>
    <who name="sandy paulanskaya">kuh3h3</who>
    <bug_when>2010-03-14 08:52:36 -0700</bug_when>
    <thetext>applied rev7 patch on svn revision 55967.
works great. have passed all key event tests.
thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200053</commentid>
    <comment_count>34</comment_count>
      <attachid>50772</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-03-16 00:46:50 -0700</bug_when>
    <thetext>Created attachment 50772
Patch for this issue (rev8)

I&apos;ve attached a new patch for this issue which includes the following improvements:
    * Fixes for memory corruption issues in testkeyevents.c
    * In webkit_web_view_focus_out_event, only call gtk_im_context_focus_out if the IM context is still valid.
    * Fixes for entering characters using the Amharic SCIM module and an expanded comment explaining this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200055</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-16 00:50:11 -0700</bug_when>
    <thetext>Attachment 50772 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:558:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:559:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/gtk/tests/testkeyevents.c&quot;
Total errors found: 2 in 5 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>200059</commentid>
    <comment_count>36</comment_count>
      <attachid>50775</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-03-16 01:12:38 -0700</bug_when>
    <thetext>Created attachment 50775
Patch for this issue (rev9)

Sorry for the spam. I have fixed the style issues. I mistakenly ran &quot;check-webkit-style --git-commit=HEAD&quot; instead of &quot;check-webkit-style --git-commit=HEAD^&quot;, which I believe is under discussion here: https://bugs.webkit.org/show_bug.cgi?id=35781 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200064</commentid>
    <comment_count>37</comment_count>
      <attachid>50775</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-03-16 01:27:42 -0700</bug_when>
    <thetext>Comment on attachment 50775
Patch for this issue (rev9)

&gt;-static void setPendingComposition(gchar* newComposition)
&gt;+static void imContextCommitted(GtkIMContext* context, const gchar* compositionString, EditorClient* client)
&gt; {
&gt;-    g_free(pendingComposition);
&gt;-    pendingComposition = newComposition;
&gt;-}
&gt;+    // If this signal fires during a keydown event when we are not in the middle
&gt;+    // of a composition, then treat this &apos;commit&apos; as a normal key event and just
&gt;+    // change the editable area right before the keypress event.
&gt;+    if (client-&gt;treatContextCommitAsKeyEvent()) {
&gt;+        client-&gt;updatePendingComposition(compositionString);
&gt;+        return;
&gt;+    }
&gt; 
&gt;-static void setPendingPreedit(gchar* newPreedit)
&gt;-{
&gt;-    g_free(pendingPreedit);
&gt;-    pendingPreedit = newPreedit;
&gt;-}
&gt;+    Frame* frame = core(client-&gt;webView())-&gt;focusController()-&gt;focusedOrMainFrame();
&gt;+    if (!frame || !frame-&gt;editor()-&gt;canEdit())
&gt;+        return;

I thought we had decided to move this check to the beginning of the function? Did you forget or have you found any problems with that?

It looks fine to me other than that, so r=me with that change unless you have a good reason not to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200237</commentid>
    <comment_count>38</comment_count>
      <attachid>50799</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-03-16 09:16:00 -0700</bug_when>
    <thetext>Created attachment 50799
Patch for this issue (final)

I&apos;ve attached the final version of this patch incorporating xan&apos;s suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200255</commentid>
    <comment_count>39</comment_count>
      <attachid>50799</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-03-16 09:33:52 -0700</bug_when>
    <thetext>Comment on attachment 50799
Patch for this issue (final)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200287</commentid>
    <comment_count>40</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-03-16 10:41:20 -0700</bug_when>
    <thetext>Committed r56072: &lt;http://trac.webkit.org/changeset/56072&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47782</attachid>
            <date>2010-01-30 19:43:11 -0800</date>
            <delta_ts>2010-02-04 01:42:00 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-Fix-IME-handling-for-SCIM-like-input.patch</filename>
            <type>text/plain</type>
            <size>8428</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA4ZmQ4Njc0NzM4ZmZlMDVkMjgzMTYyNDM5OGVlMDM0MDViYzMyODkxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBGcmksIDI5IEphbiAyMDEwIDE4OjUyOjM1IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
Rml4IElNRSBoYW5kbGluZyBmb3IgU0NJTS1saWtlIGlucHV0LgoKLS0tCiBXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAgfCAgMTE0ICsrKysrKysrKysrKysrKyst
LS0tLS0tLS0KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggICB8
ICAgMTMgKysrCiBXZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RrZXlldmVudHMuYyAgICAgICAgICAgICAg
fCAgIDk5ICsrKysrKysrKysrKysrKysrKystLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTc1IGluc2Vy
dGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCAwMmQxYTUzLi5kZGZkNjY5IDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCkBAIC01MSw0MiArNTEsODIg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0
aWMgZ2NoYXIqIHBlbmRpbmdDb21wb3NpdGlvbiA9IDA7Ci1zdGF0aWMgZ2NoYXIqIHBlbmRpbmdQ
cmVlZGl0ID0gMDsKK3N0YXRpYyB2b2lkIGltQ29udGV4dENvbW1pdHRlZChHdGtJTUNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IGdjaGFyKiBjb21wb3NpdGlvblN0cmluZywgRWRpdG9yQ2xpZW50KiBj
bGllbnQpCit7CisgICAgLy8gSWYgdGhpcyBzaWduYWwgZmlyZXMgZHVyaW5nIGEga2V5ZG93biBl
dmVudCwgd2Ugd2FudCB0aGUgZWRpdGFibGUgYXJlYQorICAgIC8vIHRvIGNoYW5nZSByaWdodCBi
ZWZvcmUgdGhlIGtleXVwIGV2ZW50LCBzbyB3ZSB3YWl0IHVudGlsIHRoZW4gdG8gYWN0dWFsbHkK
KyAgICAvLyBjb21taXQgdGhpcyBjb21wb3NpdGlvbi4gT3RoZXJ3aXNlLCBjaGFuZ2UgdGhlIGVk
aXRhYmxlIGFyZWEgaW1tZWRpYXRlbHkuCisgICAgY2xpZW50LT51cGRhdGVQZW5kaW5nQ29tcG9z
aXRpb24oY29tcG9zaXRpb25TdHJpbmcpOworICAgIGlmICghY2xpZW50LT5oYW5kbGluZ0tleUV2
ZW50KCkpCisgICAgICAgIGNsaWVudC0+dXNlUGVuZGluZ0NvbXBvc2l0aW9uKCk7Cit9CiAKLXN0
YXRpYyB2b2lkIHNldFBlbmRpbmdDb21wb3NpdGlvbihnY2hhciogbmV3Q29tcG9zaXRpb24pCitz
dGF0aWMgdm9pZCBpbUNvbnRleHRQcmVlZGl0Q2hhbmdlZChHdGtJTUNvbnRleHQqIGNvbnRleHQs
IEVkaXRvckNsaWVudCogY2xpZW50KQogewotICAgIGdfZnJlZShwZW5kaW5nQ29tcG9zaXRpb24p
OwotICAgIHBlbmRpbmdDb21wb3NpdGlvbiA9IG5ld0NvbXBvc2l0aW9uOworICAgIC8vIFdlIGln
bm9yZSB0aGUgcHJvdmlkZWQgUGFuZ29BdHRyTGlzdCBmb3Igbm93LgorICAgIGdjaGFyKiBuZXdQ
cmVlZGl0ID0gMDsKKyAgICBndGtfaW1fY29udGV4dF9nZXRfcHJlZWRpdF9zdHJpbmcoY29udGV4
dCwgJm5ld1ByZWVkaXQsIE5VTEwsIE5VTEwpOworICAgIGNsaWVudC0+dXBkYXRlUGVuZGluZ1By
ZWVkaXQobmV3UHJlZWRpdCk7CisgICAgZ19mcmVlKG5ld1ByZWVkaXQpOworCisgICAgaWYgKCFj
bGllbnQtPmhhbmRsaW5nS2V5RXZlbnQoKSkKKyAgICAgICAgY2xpZW50LT51c2VQZW5kaW5nUHJl
ZWRpdCgpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRQZW5kaW5nUHJlZWRpdChnY2hhciogbmV3UHJl
ZWRpdCkKK3ZvaWQgRWRpdG9yQ2xpZW50Ojp1cGRhdGVQZW5kaW5nQ29tcG9zaXRpb24oY29uc3Qg
Z2NoYXIqIG5ld0NvbXBvc2l0aW9uKQogewotICAgIGdfZnJlZShwZW5kaW5nUHJlZWRpdCk7Ci0g
ICAgcGVuZGluZ1ByZWVkaXQgPSBuZXdQcmVlZGl0OworICAgIC8vIFRoZSBJTUNvbnRleHQgbWF5
IHNpZ25hbCBtb3JlIHRoYW4gb25lIGNvbXBsZXRlZCBjb21wb3NpdGlvbiBpbiBhIHJvdywKKyAg
ICAvLyBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYXBwZW5kIHRoZW0sIHJhdGhlciB0aGFuIG92
ZXJ3cml0ZSB0aGUgb2xkIG9uZS4KKyAgICBpZiAoIW1fcGVuZGluZ0NvbXBvc2l0aW9uKQorICAg
ICAgICBtX3BlbmRpbmdDb21wb3NpdGlvbi5zZXQoZ19zdHJkdXAobmV3Q29tcG9zaXRpb24pKTsK
KyAgICBlbHNlCisgICAgICAgIG1fcGVuZGluZ0NvbXBvc2l0aW9uLnNldChnX3N0cmNvbmNhdCht
X3BlbmRpbmdDb21wb3NpdGlvbi5nZXQoKSwgbmV3Q29tcG9zaXRpb24sIE5VTEwpKTsKIH0KIAot
c3RhdGljIHZvaWQgY2xlYXJQZW5kaW5nSU1EYXRhKCkKK3ZvaWQgRWRpdG9yQ2xpZW50Ojp1cGRh
dGVQZW5kaW5nUHJlZWRpdChjb25zdCBnY2hhciogbmV3UHJlZWRpdCkKIHsKLSAgICBzZXRQZW5k
aW5nQ29tcG9zaXRpb24oMCk7Ci0gICAgc2V0UGVuZGluZ1ByZWVkaXQoMCk7CisgICAgLy8gV2hl
biB0aGUgSU1Db250ZXh0IHNpZ25hbHMgYSBuZXcgcHJlZWRpdCwgaXQgc2hvdWxkIGFsd2F5cyBk
ZXN0cm95CisgICAgLy8gdGhlIG9sZCBvbmUuCisgICAgbV9wZW5kaW5nUHJlZWRpdC5zZXQoZ19z
dHJkdXAobmV3UHJlZWRpdCkpOwogfQotc3RhdGljIHZvaWQgaW1Db250ZXh0Q29tbWl0dGVkKEd0
a0lNQ29udGV4dCogY29udGV4dCwgY29uc3QgZ2NoYXIqIHN0ciwgRWRpdG9yQ2xpZW50KiBjbGll
bnQpCisKK3ZvaWQgRWRpdG9yQ2xpZW50OjpjbGVhclBlbmRpbmdJTURhdGEoKQogewotICAgIC8v
IFRoaXMgc2lnbmFsIHdpbGwgZmlyZSBkdXJpbmcgYSBrZXlkb3duIGV2ZW50LiBXZSB3YW50IHRo
ZSBjb250ZW50cyBvZiB0aGUKLSAgICAvLyBmaWVsZCB0byBjaGFuZ2UgcmlnaHQgYmVmb3JlIHRo
ZSBrZXl1cCBldmVudCwgc28gd2Ugd2FpdCB1bnRpbCB0aGVuIHRvIGFjdHVhbGx5Ci0gICAgLy8g
Y29tbWl0IHRoaXMgY29tcG9zaXRpb24uCi0gICAgc2V0UGVuZGluZ0NvbXBvc2l0aW9uKGdfc3Ry
ZHVwKHN0cikpOworICAgIG1fcGVuZGluZ0NvbXBvc2l0aW9uLnNldCgwKTsKKyAgICBtX3BlbmRp
bmdQcmVlZGl0LnNldCgwKTsKIH0KIAotc3RhdGljIHZvaWQgaW1Db250ZXh0UHJlZWRpdENoYW5n
ZWQoR3RrSU1Db250ZXh0KiBjb250ZXh0LCBFZGl0b3JDbGllbnQqIGNsaWVudCkKK3ZvaWQgRWRp
dG9yQ2xpZW50Ojp1c2VQZW5kaW5nQ29tcG9zaXRpb24oKQogewotICAgIC8vIFdlIGlnbm9yZSB0
aGUgcHJvdmlkZWQgUGFuZ29BdHRyTGlzdCBmb3Igbm93LgotICAgIGdjaGFyKiBuZXdQcmVlZGl0
ID0gMDsKLSAgICBndGtfaW1fY29udGV4dF9nZXRfcHJlZWRpdF9zdHJpbmcoY29udGV4dCwgJm5l
d1ByZWVkaXQsIE5VTEwsIE5VTEwpOwotICAgIHNldFBlbmRpbmdQcmVlZGl0KG5ld1ByZWVkaXQp
OworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUobV93ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3Io
KS0+Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgY29tcG9zaXRpb25T
dHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KG1fcGVuZGluZ0NvbXBvc2l0aW9uLmdldCgpKTsKKyAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7
CisgICAgbV9wZW5kaW5nQ29tcG9zaXRpb24uc2V0KDApOworfQorCit2b2lkIEVkaXRvckNsaWVu
dDo6dXNlUGVuZGluZ1ByZWVkaXQoKQoreworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUobV93ZWJW
aWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICgh
ZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBTdHJpbmcgcHJlZWRpdFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgobV9wZW5kaW5nUHJl
ZWRpdC5nZXQoKSk7CisKKyAgICAvLyBEb24ndCB1c2UgYW4gZW1wdHkgcHJlZWRpdCBhcyBpdCB3
aWxsIGRlc3Ryb3kgdGhlIGN1cnJlbnQKKyAgICAvLyBzZWxlY3Rpb24sIGV2ZW4gaWYgdGhlIGNv
bXBvc2l0aW9uIGlzIGNhbmNlbGxlZCBvciBmYWlscyBsYXRlciBvbi4KKyAgICBpZiAoIXByZWVk
aXRTdHJpbmcuaXNFbXB0eSgpKSB7CisgICAgICAgIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGlu
ZT4gdW5kZXJsaW5lczsKKyAgICAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRl
cmxpbmUoMCwgcHJlZWRpdFN0cmluZy5sZW5ndGgoKSwgQ29sb3IoMCwgMCwgMCksIGZhbHNlKSk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdFN0cmluZywg
dW5kZXJsaW5lcywgMCwgMCk7CisgICAgfQorCisgICAgbV9wZW5kaW5nUHJlZWRpdC5zZXQoMCk7
CiB9CiAKKwogdm9pZCBFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBhY3Rp
dmUpCiB7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBtX3dlYlZpZXctPnByaXY7
CkBAIC00NjYsOCArNTA2LDEwIEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2
ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgaWYgKCFjb21tYW5kLmlzVGV4
dEluc2VydGlvbigpICYmIGNvbW1hbmQuZXhlY3V0ZShldmVudCkpCiAgICAgICAgICAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAKKyAgICAgICAgICAgIGNsZWFyUGVuZGluZ0lN
RGF0YSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IGVsc2UgaWYgKGNvbW1hbmQu
ZXhlY3V0ZShldmVudCkpIHsKKyAgICAgICAgICAgIGNsZWFyUGVuZGluZ0lNRGF0YSgpOwogICAg
ICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTQ3OCwyNSArNTIwLDE2IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpoYW5k
bGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIC8vIGJlIHJlZmxlY3Rl
ZCBpbiB0aGUgY29udGVudHMgb2YgdGhlIGZpZWxkIHVudGlsIHRoZSBrZXl1cCBET00gZXZlbnQu
CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpIHsK
IAotICAgICAgICBpZiAocGVuZGluZ0NvbXBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBTdHJpbmcg
Y29tcG9zaXRpb25TdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHBlbmRpbmdDb21wb3NpdGlvbik7
Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3Np
dGlvblN0cmluZyk7CisgICAgICAgIGlmIChtX3BlbmRpbmdDb21wb3NpdGlvbiB8fCBtX3BlbmRp
bmdQcmVlZGl0KSB7CiAKLSAgICAgICAgICAgIGNsZWFyUGVuZGluZ0lNRGF0YSgpOwotICAgICAg
ICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0KLSAgICAgICAgfSBlbHNlIGlmIChw
ZW5kaW5nUHJlZWRpdCkgewotICAgICAgICAgICAgU3RyaW5nIHByZWVkaXRTdHJpbmcgPSBTdHJp
bmc6OmZyb21VVEY4KHBlbmRpbmdQcmVlZGl0KTsKLQotICAgICAgICAgICAgLy8gRG9uJ3QgdXNl
IGFuIGVtcHR5IHByZWVkaXQgYXMgaXQgd2lsbCBkZXN0cm95IHRoZSBjdXJyZW50Ci0gICAgICAg
ICAgICAvLyBzZWxlY3Rpb24sIGV2ZW4gaWYgdGhlIGNvbXBvc2l0aW9uIGlzIGNhbmNlbGxlZCBv
ciBmYWlscyBsYXRlciBvbi4KLSAgICAgICAgICAgIGlmICghcHJlZWRpdFN0cmluZy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVy
bGluZXM7Ci0gICAgICAgICAgICAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRl
cmxpbmUoMCwgcHJlZWRpdFN0cmluZy5sZW5ndGgoKSwgQ29sb3IoMCwgMCwgMCksIGZhbHNlKSk7
Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihwcmVlZGl0
U3RyaW5nLCB1bmRlcmxpbmVzLCAwLCAwKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Y2xlYXJQZW5kaW5nSU1EYXRhKCk7CisgICAgICAgICAgICAvLyBVc2UgYm90aCB0aGUgcGVuZGlu
ZyBjb21wb3NpdGlvbiBhbmQgdGhlIHBlbmRpbmcgcHJlZWRpdC4gQW4KKyAgICAgICAgICAgIC8v
IElNQ29udGV4dCB3aWxsIHVwZGF0ZSBib3RoIHdoZW4gYSBrZXkgaXMgcHJlc3NlZCBUaGlzIG1l
YW5zIHRoYXQKKyAgICAgICAgICAgIC8vIGlmIGEga2V5cHJlc3MgY29tcGxldGVzIGEgY29tcG9z
aXRpb24sIHRoZSBwcmVlZGl0IHNob3VsZCBiZSBzZXQKKyAgICAgICAgICAgIC8vIHRvICIiLgor
ICAgICAgICAgICAgaWYgKG1fcGVuZGluZ0NvbXBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHVz
ZVBlbmRpbmdDb21wb3NpdGlvbigpOworICAgICAgICAgICAgaWYgKG1fcGVuZGluZ1ByZWVkaXQp
CisgICAgICAgICAgICAgICAgdXNlUGVuZGluZ1ByZWVkaXQoKTsKICAgICAgICAgICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogCiAgICAgICAgIH0gZWxzZSB7CkBAIC01MjMsNyArNTU2
LDEwIEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiAgICAgLy8gVE9ETzogV2UgbmVlZCB0byBkZWNpZGUgd2hpY2ggZmls
dGVyZWQga2V5c3Ryb2tlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyBJTQogICAgIC8vIGV2ZW50cyBh
bmQgd2hpY2ggc2hvdWxkIG5vdC4KICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1f
d2ViVmlldy0+cHJpdjsKKworICAgIG1faGFuZGxpbmdLZXlFdmVudCA9IHRydWU7CiAgICAgZ3Rr
X2ltX2NvbnRleHRfZmlsdGVyX2tleXByZXNzKHByaXYtPmltQ29udGV4dCwgZXZlbnQtPmtleUV2
ZW50KCktPmdka0V2ZW50S2V5KCkpOworICAgIG1faGFuZGxpbmdLZXlFdmVudCA9IGZhbHNlOwog
fQogCiBFZGl0b3JDbGllbnQ6OkVkaXRvckNsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaCBi
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKaW5kZXggOTI5MjY1
MS4uOTRlZmU4ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0
ay5oCkBAIC0zNCw4ICszNCwxMCBAQAogCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvZ3RrL0dPd25QdHIuaD4KIAogdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKK3R5cGVkZWYgY2hhciBnY2hh
cjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBhZ2U7CkBAIC01Myw2ICs1NSwx
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIEVkaXRvckNsaWVu
dChXZWJLaXRXZWJWaWV3Kik7CiAgICAgICAgIH5FZGl0b3JDbGllbnQoKTsKKyAgICAgICAgV2Vi
S2l0V2ViVmlldyogd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQorICAgICAgICBib29s
IGhhbmRsaW5nS2V5RXZlbnQoKSB7IHJldHVybiBtX2hhbmRsaW5nS2V5RXZlbnQ7IH0KKyAgICAg
ICAgdm9pZCB1cGRhdGVQZW5kaW5nQ29tcG9zaXRpb24oY29uc3QgZ2NoYXIqKTsKKyAgICAgICAg
dm9pZCB1cGRhdGVQZW5kaW5nUHJlZWRpdChjb25zdCBnY2hhciopOworICAgICAgICB2b2lkIHVz
ZVBlbmRpbmdDb21wb3NpdGlvbigpOworICAgICAgICB2b2lkIHVzZVBlbmRpbmdQcmVlZGl0KCk7
CiAKICAgICAgICAgLy8gZnJvbSBFZGl0b3JDbGllbnQKICAgICAgICAgdmlydHVhbCB2b2lkIHBh
Z2VEZXN0cm95ZWQoKTsKQEAgLTExOSw3ICsxMjcsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7CiAK
ICAgICBwcml2YXRlOgorICAgICAgICB2b2lkIGNsZWFyUGVuZGluZ0lNRGF0YSgpOworCiAgICAg
ICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKKyAgICAgICAgYm9vbCBtX2hhbmRsaW5nS2V5
RXZlbnQ7CisgICAgICAgIEdPd25QdHI8Z2NoYXI+IG1fcGVuZGluZ0NvbXBvc2l0aW9uOworICAg
ICAgICBHT3duUHRyPGdjaGFyPiBtX3BlbmRpbmdQcmVlZGl0OwogICAgIH07CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48121</attachid>
            <date>2010-02-04 01:42:00 -0800</date>
            <delta_ts>2010-02-11 01:20:48 -0800</delta_ts>
            <desc>Proposed patch (rev2)</desc>
            <filename>0001-Fix-IME-handling-for-SCIM-like-input.patch</filename>
            <type>text/plain</type>
            <size>15599</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBhYTBhZDdlNWE5ODA4ZDQ5NGQ2MmRmYmVlYzk5NmUxOWZlMjBkYmEzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBGcmksIDI5IEphbiAyMDEwIDE4OjUyOjM1IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
Rml4IElNRSBoYW5kbGluZyBmb3IgU0NJTS1saWtlIGlucHV0LgoKLS0tCiBXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAgfCAgMTIzICsrKysrKysrKysrKysrKyst
LS0tLS0tLS0KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggICB8
ICAgMTMgKysrCiBXZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RrZXlldmVudHMuYyAgICAgICAgICAgICAg
fCAgIDk5ICsrKysrKysrKysrKysrKysrLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDE4MSBpbnNlcnRp
b25zKCspLCA1NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEd0ay5jcHAKaW5kZXggMDJkMWE1My4uOGU0M2NkYSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcApAQCAtNTEsNDIgKzUxLDgxIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGlj
IGdjaGFyKiBwZW5kaW5nQ29tcG9zaXRpb24gPSAwOwotc3RhdGljIGdjaGFyKiBwZW5kaW5nUHJl
ZWRpdCA9IDA7CitzdGF0aWMgdm9pZCBpbUNvbnRleHRDb21taXR0ZWQoR3RrSU1Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBnY2hhciogY29tcG9zaXRpb25TdHJpbmcsIEVkaXRvckNsaWVudCogY2xp
ZW50KQoreworICAgIC8vIElmIHRoaXMgc2lnbmFsIGZpcmVzIGR1cmluZyBhIGtleWRvd24gZXZl
bnQsIHdlIHdhbnQgdGhlIGVkaXRhYmxlIGFyZWEKKyAgICAvLyB0byBjaGFuZ2UgcmlnaHQgYmVm
b3JlIHRoZSBrZXl1cCBldmVudCwgc28gd2Ugd2FpdCB1bnRpbCB0aGVuIHRvIGFjdHVhbGx5Cisg
ICAgLy8gY29tbWl0IHRoaXMgY29tcG9zaXRpb24uIE90aGVyd2lzZSwgY2hhbmdlIHRoZSBlZGl0
YWJsZSBhcmVhIGltbWVkaWF0ZWx5LgorICAgIGNsaWVudC0+dXBkYXRlUGVuZGluZ0NvbXBvc2l0
aW9uKGNvbXBvc2l0aW9uU3RyaW5nKTsKKyAgICBpZiAoIWNsaWVudC0+aGFuZGxpbmdLZXlFdmVu
dCgpKQorICAgICAgICBjbGllbnQtPnVzZVBlbmRpbmdDb21wb3NpdGlvbigpOworfQogCi1zdGF0
aWMgdm9pZCBzZXRQZW5kaW5nQ29tcG9zaXRpb24oZ2NoYXIqIG5ld0NvbXBvc2l0aW9uKQorc3Rh
dGljIHZvaWQgaW1Db250ZXh0UHJlZWRpdENoYW5nZWQoR3RrSU1Db250ZXh0KiBjb250ZXh0LCBF
ZGl0b3JDbGllbnQqIGNsaWVudCkKIHsKLSAgICBnX2ZyZWUocGVuZGluZ0NvbXBvc2l0aW9uKTsK
LSAgICBwZW5kaW5nQ29tcG9zaXRpb24gPSBuZXdDb21wb3NpdGlvbjsKKyAgICAvLyBXZSBpZ25v
cmUgdGhlIHByb3ZpZGVkIFBhbmdvQXR0ckxpc3QgZm9yIG5vdy4KKyAgICBHT3duUHRyPGdjaGFy
PiBuZXdQcmVlZGl0KDApOworICAgIGd0a19pbV9jb250ZXh0X2dldF9wcmVlZGl0X3N0cmluZyhj
b250ZXh0LCAmbmV3UHJlZWRpdC5vdXRQdHIoKSwgMCwgMCk7CisgICAgY2xpZW50LT51cGRhdGVQ
ZW5kaW5nUHJlZWRpdChuZXdQcmVlZGl0LmdldCgpKTsKKworICAgIGlmICghY2xpZW50LT5oYW5k
bGluZ0tleUV2ZW50KCkpCisgICAgICAgIGNsaWVudC0+dXNlUGVuZGluZ1ByZWVkaXQoKTsKIH0K
IAotc3RhdGljIHZvaWQgc2V0UGVuZGluZ1ByZWVkaXQoZ2NoYXIqIG5ld1ByZWVkaXQpCit2b2lk
IEVkaXRvckNsaWVudDo6dXBkYXRlUGVuZGluZ0NvbXBvc2l0aW9uKGNvbnN0IGdjaGFyKiBuZXdD
b21wb3NpdGlvbikKIHsKLSAgICBnX2ZyZWUocGVuZGluZ1ByZWVkaXQpOwotICAgIHBlbmRpbmdQ
cmVlZGl0ID0gbmV3UHJlZWRpdDsKKyAgICAvLyBUaGUgSU1Db250ZXh0IG1heSBzaWduYWwgbW9y
ZSB0aGFuIG9uZSBjb21wbGV0ZWQgY29tcG9zaXRpb24gaW4gYSByb3csCisgICAgLy8gaW4gd2hp
Y2ggY2FzZSB3ZSB3YW50IHRvIGFwcGVuZCB0aGVtLCByYXRoZXIgdGhhbiBvdmVyd3JpdGUgdGhl
IG9sZCBvbmUuCisgICAgaWYgKCFtX3BlbmRpbmdDb21wb3NpdGlvbikKKyAgICAgICAgbV9wZW5k
aW5nQ29tcG9zaXRpb24uc2V0KGdfc3RyZHVwKG5ld0NvbXBvc2l0aW9uKSk7CisgICAgZWxzZQor
ICAgICAgICBtX3BlbmRpbmdDb21wb3NpdGlvbi5zZXQoZ19zdHJjb25jYXQobV9wZW5kaW5nQ29t
cG9zaXRpb24uZ2V0KCksIG5ld0NvbXBvc2l0aW9uLCBOVUxMKSk7CiB9CiAKLXN0YXRpYyB2b2lk
IGNsZWFyUGVuZGluZ0lNRGF0YSgpCit2b2lkIEVkaXRvckNsaWVudDo6dXBkYXRlUGVuZGluZ1By
ZWVkaXQoY29uc3QgZ2NoYXIqIG5ld1ByZWVkaXQpCiB7Ci0gICAgc2V0UGVuZGluZ0NvbXBvc2l0
aW9uKDApOwotICAgIHNldFBlbmRpbmdQcmVlZGl0KDApOworICAgIC8vIFdoZW4gdGhlIElNQ29u
dGV4dCBzaWduYWxzIGEgbmV3IHByZWVkaXQsIGl0IHNob3VsZCBhbHdheXMgZGVzdHJveQorICAg
IC8vIHRoZSBvbGQgb25lLgorICAgIG1fcGVuZGluZ1ByZWVkaXQuc2V0KGdfc3RyZHVwKG5ld1By
ZWVkaXQpKTsKIH0KLXN0YXRpYyB2b2lkIGltQ29udGV4dENvbW1pdHRlZChHdGtJTUNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IGdjaGFyKiBzdHIsIEVkaXRvckNsaWVudCogY2xpZW50KQorCit2b2lk
IEVkaXRvckNsaWVudDo6Y2xlYXJQZW5kaW5nSU1EYXRhKCkKIHsKLSAgICAvLyBUaGlzIHNpZ25h
bCB3aWxsIGZpcmUgZHVyaW5nIGEga2V5ZG93biBldmVudC4gV2Ugd2FudCB0aGUgY29udGVudHMg
b2YgdGhlCi0gICAgLy8gZmllbGQgdG8gY2hhbmdlIHJpZ2h0IGJlZm9yZSB0aGUga2V5dXAgZXZl
bnQsIHNvIHdlIHdhaXQgdW50aWwgdGhlbiB0byBhY3R1YWxseQotICAgIC8vIGNvbW1pdCB0aGlz
IGNvbXBvc2l0aW9uLgotICAgIHNldFBlbmRpbmdDb21wb3NpdGlvbihnX3N0cmR1cChzdHIpKTsK
KyAgICBtX3BlbmRpbmdDb21wb3NpdGlvbi5zZXQoMCk7CisgICAgbV9wZW5kaW5nUHJlZWRpdC5z
ZXQoMCk7CiB9CiAKLXN0YXRpYyB2b2lkIGltQ29udGV4dFByZWVkaXRDaGFuZ2VkKEd0a0lNQ29u
dGV4dCogY29udGV4dCwgRWRpdG9yQ2xpZW50KiBjbGllbnQpCit2b2lkIEVkaXRvckNsaWVudDo6
dXNlUGVuZGluZ0NvbXBvc2l0aW9uKCkKIHsKLSAgICAvLyBXZSBpZ25vcmUgdGhlIHByb3ZpZGVk
IFBhbmdvQXR0ckxpc3QgZm9yIG5vdy4KLSAgICBnY2hhciogbmV3UHJlZWRpdCA9IDA7Ci0gICAg
Z3RrX2ltX2NvbnRleHRfZ2V0X3ByZWVkaXRfc3RyaW5nKGNvbnRleHQsICZuZXdQcmVlZGl0LCBO
VUxMLCBOVUxMKTsKLSAgICBzZXRQZW5kaW5nUHJlZWRpdChuZXdQcmVlZGl0KTsKKyAgICBGcmFt
ZSogZnJhbWUgPSBjb3JlKG1fd2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIGNvbXBvc2l0aW9uU3RyaW5nID0gU3Ry
aW5nOjpmcm9tVVRGOChtX3BlbmRpbmdDb21wb3NpdGlvbi5nZXQoKSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOworICAgIG1fcGVu
ZGluZ0NvbXBvc2l0aW9uLnNldCgwKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnQ6OnVzZVBlbmRp
bmdQcmVlZGl0KCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKG1fd2ViVmlldyktPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFm
cmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5n
IHByZWVkaXRTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KG1fcGVuZGluZ1ByZWVkaXQuZ2V0KCkp
OworCisgICAgLy8gRG9uJ3QgdXNlIGFuIGVtcHR5IHByZWVkaXQgYXMgaXQgd2lsbCBkZXN0cm95
IHRoZSBjdXJyZW50CisgICAgLy8gc2VsZWN0aW9uLCBldmVuIGlmIHRoZSBjb21wb3NpdGlvbiBp
cyBjYW5jZWxsZWQgb3IgZmFpbHMgbGF0ZXIgb24uCisgICAgaWYgKCFwcmVlZGl0U3RyaW5nLmlz
RW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGlu
ZXM7CisgICAgICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIHBy
ZWVkaXRTdHJpbmcubGVuZ3RoKCksIENvbG9yKDAsIDAsIDApLCBmYWxzZSkpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPnNldENvbXBvc2l0aW9uKHByZWVkaXRTdHJpbmcsIHVuZGVybGluZXMs
IDAsIDApOworICAgIH0KKworICAgIG1fcGVuZGluZ1ByZWVkaXQuc2V0KDApOwogfQogCisKIHZv
aWQgRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgYWN0aXZlKQogewogICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gbV93ZWJWaWV3LT5wcml2OwpAQCAtNDY2LDgg
KzUwNSwxMCBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2Fy
ZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGlmICghY29tbWFuZC5pc1RleHRJbnNlcnRpb24o
KSAmJiBjb21tYW5kLmV4ZWN1dGUoZXZlbnQpKQogICAgICAgICAgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOwogCisgICAgICAgICAgICBjbGVhclBlbmRpbmdJTURhdGEoKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIGlmIChjb21tYW5kLmV4ZWN1dGUoZXZl
bnQpKSB7CisgICAgICAgICAgICBjbGVhclBlbmRpbmdJTURhdGEoKTsKICAgICAgICAgICAgIGV2
ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC00NzgsMjUgKzUxOSwxNiBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRF
dmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAvLyBiZSByZWZsZWN0ZWQgaW4gdGhlIGNv
bnRlbnRzIG9mIHRoZSBmaWVsZCB1bnRpbCB0aGUga2V5dXAgRE9NIGV2ZW50LgogICAgIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KSB7CiAKLSAgICAgICAg
aWYgKHBlbmRpbmdDb21wb3NpdGlvbikgewotICAgICAgICAgICAgU3RyaW5nIGNvbXBvc2l0aW9u
U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChwZW5kaW5nQ29tcG9zaXRpb24pOwotICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcp
OworICAgICAgICBpZiAobV9wZW5kaW5nQ29tcG9zaXRpb24gfHwgbV9wZW5kaW5nUHJlZWRpdCkg
ewogCi0gICAgICAgICAgICBjbGVhclBlbmRpbmdJTURhdGEoKTsKLSAgICAgICAgICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotCi0gICAgICAgIH0gZWxzZSBpZiAocGVuZGluZ1ByZWVk
aXQpIHsKLSAgICAgICAgICAgIFN0cmluZyBwcmVlZGl0U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRG
OChwZW5kaW5nUHJlZWRpdCk7Ci0KLSAgICAgICAgICAgIC8vIERvbid0IHVzZSBhbiBlbXB0eSBw
cmVlZGl0IGFzIGl0IHdpbGwgZGVzdHJveSB0aGUgY3VycmVudAotICAgICAgICAgICAgLy8gc2Vs
ZWN0aW9uLCBldmVuIGlmIHRoZSBjb21wb3NpdGlvbiBpcyBjYW5jZWxsZWQgb3IgZmFpbHMgbGF0
ZXIgb24uCi0gICAgICAgICAgICBpZiAoIXByZWVkaXRTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwotICAg
ICAgICAgICAgICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIHBy
ZWVkaXRTdHJpbmcubGVuZ3RoKCksIENvbG9yKDAsIDAsIDApLCBmYWxzZSkpOwotICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdFN0cmluZywgdW5k
ZXJsaW5lcywgMCwgMCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNsZWFyUGVuZGlu
Z0lNRGF0YSgpOworICAgICAgICAgICAgLy8gVXNlIGJvdGggdGhlIHBlbmRpbmcgY29tcG9zaXRp
b24gYW5kIHRoZSBwZW5kaW5nIHByZWVkaXQuIEFuCisgICAgICAgICAgICAvLyBJTUNvbnRleHQg
d2lsbCB1cGRhdGUgYm90aCB3aGVuIGEga2V5IGlzIHByZXNzZWQgVGhpcyBtZWFucyB0aGF0Cisg
ICAgICAgICAgICAvLyBpZiBhIGtleXByZXNzIGNvbXBsZXRlcyBhIGNvbXBvc2l0aW9uLCB0aGUg
cHJlZWRpdCBzaG91bGQgYmUgc2V0CisgICAgICAgICAgICAvLyB0byAiIi4KKyAgICAgICAgICAg
IGlmIChtX3BlbmRpbmdDb21wb3NpdGlvbikKKyAgICAgICAgICAgICAgICB1c2VQZW5kaW5nQ29t
cG9zaXRpb24oKTsKKyAgICAgICAgICAgIGlmIChtX3BlbmRpbmdQcmVlZGl0KQorICAgICAgICAg
ICAgICAgIHVzZVBlbmRpbmdQcmVlZGl0KCk7CiAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKIAogICAgICAgICB9IGVsc2UgewpAQCAtNTIwLDEwICs1NTIsMTcgQEAgdm9p
ZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KiBl
dmVudCkKICAgICBpZiAoIXRhcmdldEZyYW1lIHx8ICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNh
bkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gVE9ETzogV2UgbmVlZCB0byBkZWNp
ZGUgd2hpY2ggZmlsdGVyZWQga2V5c3Ryb2tlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyBJTQotICAg
IC8vIGV2ZW50cyBhbmQgd2hpY2ggc2hvdWxkIG5vdC4KICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0
ZSogcHJpdiA9IG1fd2ViVmlldy0+cHJpdjsKLSAgICBndGtfaW1fY29udGV4dF9maWx0ZXJfa2V5
cHJlc3MocHJpdi0+aW1Db250ZXh0LCBldmVudC0+a2V5RXZlbnQoKS0+Z2RrRXZlbnRLZXkoKSk7
CisKKyAgICAvLyBTb21lIElNIGNvbnRleHRzIChlLmcuICdzaW1wbGUnKSB3aWxsIGFjdCBhcyBp
ZiB0aGV5IGZpbHRlciBldmVyeQorICAgIC8vIHNpbmdsZSBrZXlzdHJva2UgYW5kIGp1c3QgaXNz
dWUgYSAnY29tbWl0JyBzaWduYWwgZHVyaW5nIGhhbmRsaW5nLgorICAgIC8vIEluIHNpdHVhdGlv
bnMgd2hlcmUgJ2NvbW1pdCcgb3IgJ3ByZWVkaXQtY2hhbmdlZCcgc2lnbmFscyBoYXBwZW4KKyAg
ICAvLyBkdXJpbmcgZmlsdGVyaW5nLCBhY3QgYXMgaWYgdGhlIGtleXN0cm9rZSB3YXMgbm90IGZp
bHRlcmVkLgorICAgIG1faGFuZGxpbmdLZXlFdmVudCA9IHRydWU7CisgICAgaWYgKGd0a19pbV9j
b250ZXh0X2ZpbHRlcl9rZXlwcmVzcyhwcml2LT5pbUNvbnRleHQsIGV2ZW50LT5rZXlFdmVudCgp
LT5nZGtFdmVudEtleSgpKSAmJgorICAgICAgICAoIW1fcGVuZGluZ1ByZWVkaXQgJiYgIW1fcGVu
ZGluZ0NvbXBvc2l0aW9uKSkKKyAgICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7CisgICAg
bV9oYW5kbGluZ0tleUV2ZW50ID0gZmFsc2U7CiB9CiAKIEVkaXRvckNsaWVudDo6RWRpdG9yQ2xp
ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRHdGsuaAppbmRleCA5MjkyNjUxLi4xYjc3YTA3IDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKQEAgLTM0LDggKzM0LDEwIEBACiAKICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9ndGsvR093blB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJL
aXRXZWJWaWV3OwordHlwZWRlZiBjaGFyIGdjaGFyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgUGFnZTsKQEAgLTUzLDYgKzU1LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAg
IHB1YmxpYzoKICAgICAgICAgRWRpdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcqKTsKICAgICAgICAg
fkVkaXRvckNsaWVudCgpOworICAgICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KCkgeyByZXR1
cm4gbV93ZWJWaWV3OyB9CisgICAgICAgIGJvb2wgaGFuZGxpbmdLZXlFdmVudCgpIHsgcmV0dXJu
IG1faGFuZGxpbmdLZXlFdmVudDsgfQorICAgICAgICB2b2lkIHVwZGF0ZVBlbmRpbmdDb21wb3Np
dGlvbihjb25zdCBjaGFyKik7CisgICAgICAgIHZvaWQgdXBkYXRlUGVuZGluZ1ByZWVkaXQoY29u
c3QgY2hhciopOworICAgICAgICB2b2lkIHVzZVBlbmRpbmdDb21wb3NpdGlvbigpOworICAgICAg
ICB2b2lkIHVzZVBlbmRpbmdQcmVlZGl0KCk7CiAKICAgICAgICAgLy8gZnJvbSBFZGl0b3JDbGll
bnQKICAgICAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKQEAgLTExOSw3ICsxMjcs
MTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1l
dGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICB2b2lkIGNs
ZWFyUGVuZGluZ0lNRGF0YSgpOworCiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsK
KyAgICAgICAgYm9vbCBtX2hhbmRsaW5nS2V5RXZlbnQ7CisgICAgICAgIEdPd25QdHI8Z2NoYXI+
IG1fcGVuZGluZ0NvbXBvc2l0aW9uOworICAgICAgICBHT3duUHRyPGdjaGFyPiBtX3BlbmRpbmdQ
cmVlZGl0OwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdGtl
eWV2ZW50cy5jIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0a2V5ZXZlbnRzLmMKaW5kZXggZWU3NzI4
Yy4uOWY0NWFlOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay90ZXN0cy90ZXN0a2V5ZXZlbnRzLmMK
KysrIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0a2V5ZXZlbnRzLmMKQEAgLTIyLDEyICsyMiwxNSBA
QAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVm
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CisKIAogI2lmIEdU
S19DSEVDS19WRVJTSU9OKDIsIDE0LCAwKQogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gIGNoYXIqIHBh
Z2U7Ci0gIGdib29sZWFuIHNob3VsZEJlSGFuZGxlZDsKKyAgICBjaGFyKiBwYWdlOworICAgIGdi
b29sZWFuIHNob3VsZEJlSGFuZGxlZDsKIH0gVGVzdEluZm87CiAKIHR5cGVkZWYgc3RydWN0IHsK
QEAgLTk1LDcgKzk4LDcgQEAgc3RhdGljIGdib29sZWFuIGtleV9yZWxlYXNlX2V2ZW50X2NiKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIEdka0V2ZW50KiBldmVudCwgZ3AKICAgICByZXR1cm4gRkFM
U0U7CiB9CiAKLXN0YXRpYyB2b2lkIGxvYWRfc3RhdHVzX2NiKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIEdQYXJhbVNwZWMqIHNwZWMsIGdwb2ludGVyIGRhdGEpCitzdGF0aWMgdm9pZCB0ZXN0X2tl
eXByZXNzX2V2ZW50c19sb2FkX3N0YXR1c19jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFy
YW1TcGVjKiBzcGVjLCBncG9pbnRlciBkYXRhKQogewogICAgIEtleUV2ZW50Rml4dHVyZSogZml4
dHVyZSA9IChLZXlFdmVudEZpeHR1cmUqKWRhdGE7CiAgICAgV2ViS2l0TG9hZFN0YXR1cyBzdGF0
dXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRfc3RhdHVzKHdlYlZpZXcpOwpAQCAtMTEwLDIy
ICsxMTMsNzYgQEAgZ2Jvb2xlYW4gbWFwX2V2ZW50X2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBHZGtF
dmVudCogZXZlbnQsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3Vz
KHdpZGdldCk7CiAgICAgS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlID0gKEtleUV2ZW50Rml4dHVy
ZSopZGF0YTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcoZml4dHVyZS0+d2ViVmll
dywgZml4dHVyZS0+aW5mby0+cGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRleHQvaHRtbCIsICJ1dGYtOCIsICJmaWxlOi8vIik7CisgICAgcmV0dXJuIEZBTFNFOworfQor
CitzdGF0aWMgdm9pZCB0ZXN0X2tleXByZXNzX2V2ZW50cyhLZXlFdmVudEZpeHR1cmUqIGZpeHR1
cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkKK3sKKyAgICBmaXh0dXJlLT5pbmZvID0gKFRlc3RJbmZv
KilkYXRhOworCisgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53aW5kb3csICJtYXAtZXZl
bnQiLAorICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhtYXBfZXZlbnRfY2IpLCBmaXh0
dXJlKTsKKworICAgIGd0a193aWRnZXRfc2hvdyhmaXh0dXJlLT53aW5kb3cpOworICAgIGd0a193
aWRnZXRfc2hvdyhHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpKTsKKyAgICBndGtfd2luZG93
X3ByZXNlbnQoR1RLX1dJTkRPVyhmaXh0dXJlLT53aW5kb3cpKTsKIAogICAgIGdfc2lnbmFsX2Nv
bm5lY3QoZml4dHVyZS0+d2ViVmlldywgImtleS1wcmVzcy1ldmVudCIsCiAgICAgICAgICAgICAg
ICAgICAgICBHX0NBTExCQUNLKGtleV9wcmVzc19ldmVudF9jYiksIGZpeHR1cmUpOwogICAgIGdf
c2lnbmFsX2Nvbm5lY3QoZml4dHVyZS0+d2ViVmlldywgImtleS1yZWxlYXNlLWV2ZW50IiwKICAg
ICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0soa2V5X3JlbGVhc2VfZXZlbnRfY2IpLCBmaXh0
dXJlKTsKLQogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZml4dHVyZS0+d2ViVmlldywgIm5vdGlmeTo6
bG9hZC1zdGF0dXMiLAotICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhsb2FkX3N0YXR1
c19jYiksIGZpeHR1cmUpOworICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyh0ZXN0X2tl
eXByZXNzX2V2ZW50c19sb2FkX3N0YXR1c19jYiksIGZpeHR1cmUpOwogCi0gICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfc3RyaW5nKGZpeHR1cmUtPndlYlZpZXcsIGZpeHR1cmUtPmluZm8tPnBhZ2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0L2h0bWwiLCAidXRmLTgiLCAi
ZmlsZTovLyIpOworICAgIGdfbWFpbl9sb29wX3J1bihmaXh0dXJlLT5sb29wKTsKK30KKworc3Rh
dGljIGdib29sZWFuIHRleHRfaW5wdXRfdmFsdWVfZXF1YWxfdG8oSlNDb250ZXh0UmVmIGNvbnRl
eHQsIGNvbnN0IGdjaGFyKiB0ZXh0KQoreworICAgIEpTU3RyaW5nUmVmIHNjcmlwdFN0cmluZyA9
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKAorICAgICAgIndpbmRvdy5kb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChcImluXCIpLnZhbHVlIik7CisgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpT
RXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0U3RyaW5nLCBOVUxMLCBOVUxMLCAwLCBOVUxM
KTsKKyAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0U3RyaW5nKTsKKworICAgIGdfYXNzZXJ0KEpT
VmFsdWVJc1N0cmluZyhjb250ZXh0LCB2YWx1ZSkpOworICAgIEpTU3RyaW5nUmVmIGlucHV0U3Ry
aW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCB2YWx1ZSwgTlVMTCk7CisgICAgZ19h
c3NlcnQoaW5wdXRTdHJpbmcpOworCisgICAgZ2ludCBzaXplID0gSlNTdHJpbmdHZXRNYXhpbXVt
VVRGOENTdHJpbmdTaXplKGlucHV0U3RyaW5nKTsKKyAgICBnY2hhciogY1N0cmluZyA9IGdfbWFs
bG9jKHNpemUpOworICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoaW5wdXRTdHJpbmcsIGNTdHJp
bmcsIHNpemUpOworICAgIEpTU3RyaW5nUmVsZWFzZShpbnB1dFN0cmluZyk7CisKKyAgICBnYm9v
bGVhbiByZXN1bHQgPSBnX3N0cmNtcDAoY1N0cmluZywgdGV4dCkgPT0gMDsKKyAgICBnX2ZyZWUo
Y1N0cmluZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAorc3RhdGljIGdib29sZWFuIGRlZmVy
cmVkX3F1aXQoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBnX21haW5fbG9vcF9xdWl0KChHTWFpbkxv
b3AqKWRhdGEpOwogICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIHZvaWQgdGVzdF9rZXlw
cmVzcyhLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkKK3N0YXRp
YyB2b2lkIHRlc3Rfc2NpbWxpa2VfaW5wdXRfd2luZG93X29iamVjdF9jbGVhcmVkX2NiKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgSlNDb250ZXh0UmVmIGNv
bnRleHQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlID0g
KEtleUV2ZW50Rml4dHVyZSopZGF0YTsKKyAgICBnX2Fzc2VydCh0ZXh0X2lucHV0X3ZhbHVlX2Vx
dWFsX3RvKGNvbnRleHQsICIiKSk7CisKKyAgICBndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RL
X1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdhJyksIDApOworICAgIGdfYXNzZXJ0KHRleHRfaW5wdXRf
dmFsdWVfZXF1YWxfdG8oY29udGV4dCwgImEiKSk7CisKKyAgICBndGtfdGVzdF93aWRnZXRfc2Vu
ZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdhJyksIDApOworICAgIGdfYXNzZXJ0KHRl
eHRfaW5wdXRfdmFsdWVfZXF1YWxfdG8oY29udGV4dCwgImIiKSk7CisgICAgCisgICAgLy9nX2lk
bGVfYWRkKCZkZWZlcnJlZF9xdWl0LCBmaXh0dXJlLT5sb29wKTsKK30KKworc3RhdGljIHZvaWQg
dGVzdF9zY2ltbGlrZV9pbnB1dChLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50
ZXIgZGF0YSkKIHsKICAgICBmaXh0dXJlLT5pbmZvID0gKFRlc3RJbmZvKilkYXRhOwogCkBAIC0x
MzYsOCArMTkzLDEwIEBAIHN0YXRpYyB2b2lkIHRlc3Rfa2V5cHJlc3MoS2V5RXZlbnRGaXh0dXJl
KiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCiAgICAgZ3RrX3dpZGdldF9zaG93KEdUS19X
SURHRVQoZml4dHVyZS0+d2ViVmlldykpOwogICAgIGd0a193aW5kb3dfcHJlc2VudChHVEtfV0lO
RE9XKGZpeHR1cmUtPndpbmRvdykpOwogCi0gICAgZ19tYWluX2xvb3BfcnVuKGZpeHR1cmUtPmxv
b3ApOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZml4dHVyZS0+d2ViVmlldywgIndpbmRvdy1vYmpl
Y3QtY2xlYXJlZCIsCisgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKHRlc3Rfc2NpbWxp
a2VfaW5wdXRfd2luZG93X29iamVjdF9jbGVhcmVkX2NiKSwgZml4dHVyZSk7CiAKKyAgICBnX21h
aW5fbG9vcF9ydW4oZml4dHVyZS0+bG9vcCk7CiB9CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikKQEAgLTE1Miw3ICsyMTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8c2NyaXB0PmRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iLCBUUlVFKSwKICAgICAgICAgICAgICAgIGtleV9ldmVu
dF9maXh0dXJlX3NldHVwLAotICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzcywKKyAgICAgICAg
ICAgICAgIHRlc3Rfa2V5cHJlc3NfZXZlbnRzLAogICAgICAgICAgICAgICAga2V5X2V2ZW50X2Zp
eHR1cmVfdGVhcmRvd24pOwogCiAgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudC9idXR0
b25zIiwgS2V5RXZlbnRGaXh0dXJlLApAQCAtMTYwLDcgKzIxOSw3IEBAIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxzY3JpcHQ+
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTsiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICI8L3NjcmlwdD48L2JvZHk+PC9odG1sPiIsIEZBTFNFKSwKICAgICAgICAg
ICAgICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAotICAgICAgICAgICAgICAgdGVzdF9rZXlw
cmVzcywKKyAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3NfZXZlbnRzLAogICAgICAgICAgICAg
ICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOwogCiAgICAgZ190ZXN0X2FkZCgiL3dlYmtp
dC9rZXlldmVudC9saW5rIiwgS2V5RXZlbnRGaXh0dXJlLApAQCAtMTY5LDcgKzIyOCwyMyBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0PiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvYm9keT48L2h0bWw+IiwgRkFMU0UpLAogICAg
ICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCi0gICAgICAgICAgICAgICB0ZXN0
X2tleXByZXNzLAorICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzc19ldmVudHMsCisgICAgICAg
ICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisKKyAgICBnX3Rlc3RfYWRkKCIv
d2Via2l0L2tleWV2ZW50L3RleHRmaWVsZCIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAg
ICAgIHRlc3RfaW5mb19uZXcoIjxodG1sPjxib2R5PjxpbnB1dCBpZD1cImluXCIgdHlwZT1cInRl
eHRcIj4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8c2NyaXB0PmRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7IgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iLCBUUlVFKSwKKyAgICAgICAgICAgICAgIGtleV9l
dmVudF9maXh0dXJlX3NldHVwLAorICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzc19ldmVudHMs
CisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisKKyAgICBnX3Rl
c3RfYWRkKCIvd2Via2l0L2tleWV2ZW50L3RleHRmaWVsZCIsIEtleUV2ZW50Rml4dHVyZSwKKyAg
ICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcoIjxodG1sPjxib2R5PjxpbnB1dCBpZD1cImluXCIg
dHlwZT1cInRleHRcIj4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8c2NyaXB0PmRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7IgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iLCBUUlVFKSwKKyAgICAgICAgICAg
ICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAorICAgICAgICAgICAgICAgdGVzdF9zY2ltbGlr
ZV9pbnB1dCwKICAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKIAog
ICAgIHJldHVybiBnX3Rlc3RfcnVuKCk7Ci0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48551</attachid>
            <date>2010-02-11 01:20:48 -0800</date>
            <delta_ts>2010-02-13 12:43:31 -0800</delta_ts>
            <desc>Patch for this issue (rev3)</desc>
            <filename>0001-can-t-input-korean-into-lower-all-input-box-except-a.patch</filename>
            <type>text/plain</type>
            <size>22562</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBkZTFhZGIyZGRjODgwNjc0ODEzOTg5MWU5MmRiMWM1NTFhZGI3ZDBiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBGcmksIDI5IEphbiAyMDEwIDE4OjUyOjM1IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
Y2FuJ3QgaW5wdXQga29yZWFuIGludG8gbG93ZXIgYWxsIGlucHV0IGJveCBleGNlcHQgYWRyZXNz
IGlucHV0IGJveCBpbiB3ZWJraXQgZ3RrIGxhdW5jaGVyCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzIyOTAKCi0tLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA0NSArKysrKysrCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5jcHAgfCAgMTEwICsrKysrKysrKy0tLS0tLS0tCiBXZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oICAgfCAgICA5ICsrCiBXZWJLaXQv
Z3RrL3Rlc3RzL3Rlc3RrZXlldmVudHMuYyAgICAgICAgICAgICAgfCAgMTU2ICsrKysrKysrKysr
KysrKysrKystLS0tLS0KIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwICAgICAg
ICAgICB8ICAgIDQgKwogNSBmaWxlcyBjaGFuZ2VkLCAyMzkgaW5zZXJ0aW9ucygrKSwgODUgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwppbmRleCA3YTQ0ODg0Li41ODlhYWJiIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisy
MDEwLTAyLTExICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjYW4ndCBpbnB1dCBr
b3JlYW4gaW50byBsb3dlciBhbGwgaW5wdXQgYm94IGV4Y2VwdCBhZHJlc3MgaW5wdXQgYm94IGlu
IHdlYmtpdCBndGsgbGF1bmNoZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMyMjkwCisKKyAgICAgICAgTWFrZSB0aGUgR1RLKyBFZGl0b3JDbGllbnQg
cHJvcGVybHkgaGFuZGxlIGRpZmZlcmVudCB0eXBlcyBvZiBpbnB1dCBtb2R1bGUKKyAgICAgICAg
YmVoYXZpb3Igc3VjaCBhcyBjb21taXQgYW5kIHByZWVkaXQgc2lnbmFscyB0aGF0IGhhcHBlbiBv
dXRzaWRlIG9mIGtleSBldmVudAorICAgICAgICBmaWx0ZXJpbmcgYW5kIG11bHRpcGxlIHRpbWVz
IGluIGEgcm93LiBGaWx0ZXIga2V5dXAgZXZlbnRzIGFzIHdlbGwgYXMga2V5ZG93bgorICAgICAg
ICBldmVudHMgYW5kIGNhbGwgZ3RrX2ltX2NvbnRleHRfZm9jdXNfe2luL291dH0gd2hlbiB0aGUg
V2ViVmlldyBmb2N1cyBjaGFuZ2VzLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciB0aGlzIGJl
aGF2aW9yIHRvIHRoZSBHVEsrIHVuaXQgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjppbUNvbnRleHRDb21taXR0
ZWQpOiBIYW5kbGUgdGhpcyBzaWduYWwgcHJvcGVybHkgd2hlbiBpdCBoYXBwZW5zIG91dHNpZGUg
b2YKKyAgICAgICAga2V5IGV2ZW50IGZpbHRlcmluZy4KKyAgICAgICAgKFdlYktpdDo6aW1Db250
ZXh0UHJlZWRpdENoYW5nZWQpOiBJbW1lZGlhdGVseSB1cGRhdGUgdGhlIHByZWVkaXQgc3RhdGUg
YW5kIGRvIG5vdCByZWplY3QKKyAgICAgICAgZW1wdHkgcHJlZWRpdHMsIHNvIHRoYXQgY2FuY2Vs
bGF0aW9uIHdvcmtzIHByb3Blcmx5LgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OnVw
ZGF0ZVBlbmRpbmdDb21wb3NpdGlvbik6IEFkZCB0aGlzIG1ldGhvZCwgd2hpY2ggaGFuZGxlcyB0
aGUKKyAgICAgICAgc2l0dWF0aW9uIHdoZXJlIGEgY29tbWl0IHNpZ25hbCBoYXBwZW5zIHdoZW4g
dGhlcmUgaXMgc3RpbGwgYSBwZW5kaW5nIGNvbW1pdC4KKyAgICAgICAgKFdlYktpdDo6RWRpdG9y
Q2xpZW50OjpzaG91bGRCZWdpbkVkaXRpbmcpOiBDbGVhciBwZW5kaW5nIGNvbXBvc2l0aW9uIHN0
YXRlIGJlZm9yZSBlZGl0aW5nCisgICAgICAgIHN0YXJ0cy4KKyAgICAgICAgKFdlYktpdDo6RWRp
dG9yQ2xpZW50OjpzaG91bGRFbmRFZGl0aW5nKTogQ2xlYXIgcGVuZGluZyBjb21wb3NpdGlvbiBz
dGF0ZSBiZWZvcmUgZWRpdGluZyBlbmRzLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6
OmhhbmRsZUtleWJvYXJkRXZlbnQpOiBObyBsb25nZXIgc3BlY2lhbCBjYXNlIHByZWVkaXRzIHdo
aWNoIGhhcHBlbiBkdXJpbmcKKyAgICAgICAga2V5IGV2ZW50IGZpbHRlcmluZy4gV2hlbiBjb25m
aXJtaW5nIGEgcGVuZGluZyBjb21wb3NpdGlvbiB1c2UgaW5zZXJ0VGV4dCBpbnN0ZWFkIG9mIGNv
bmZpcm1Db21wb3NpdGlvbi4KKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50OjpoYW5kbGVJ
bnB1dE1ldGhvZEtleWRvd24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5oOiBNYWtlIHBlbmRpbmdDb21wb3NpdGlvbiBhIG1lbWJlciwgc28gdGhhdCBtdWx0aXBs
ZSBXZWJWaWV3cworICAgICAgICBkbyBub3Qgc2hhcmUgc3RhdGUuCisgICAgICAgIChXZWJLaXQ6
OkVkaXRvckNsaWVudDo6d2ViVmlldyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JD
bGllbnQ6OnRyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQpOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6RWRpdG9yQ2xpZW50OjpjbGVhclBlbmRpbmdDb21wb3NpdGlvbik6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3Rlc3RrZXlldmVudHMuYzoKKyAgICAgICAgKHRlc3Rfa2V5cHJlc3NfZXZl
bnRzX2xvYWRfc3RhdHVzX2NiKToKKyAgICAgICAgKG1hcF9ldmVudF9jYik6CisgICAgICAgIChz
ZXR1cF9rZXlldmVudF90ZXN0KToKKyAgICAgICAgKHRlc3Rfa2V5cHJlc3NfZXZlbnRzKToKKyAg
ICAgICAgKGVsZW1lbnRfdGV4dF9lcXVhbF90byk6CisgICAgICAgICh0ZXN0X2ltZV9sb2FkX3N0
YXR1c19jYik6CisgICAgICAgICh0ZXN0X2ltZSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfa2V5
X3JlbGVhc2VfZXZlbnQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2ZvY3VzX2luX2V2ZW50
KToKKwogMjAxMC0wMi0wOSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKaW5kZXggMDJkMWE1My4uNDY0ODc4OSAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCisrKyBi
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcApAQCAtNCw2ICs0
LDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgRGllZ28gRXNjYWxhbnRlIFVycmVsbyA8ZGll
Z29lQGdub21lLm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDksIElnYWxpYSBTLkwu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDEwLCBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJr
aXQub3JnPgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNTEsNDAgKzUyLDQ4IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIGdjaGFyKiBw
ZW5kaW5nQ29tcG9zaXRpb24gPSAwOwotc3RhdGljIGdjaGFyKiBwZW5kaW5nUHJlZWRpdCA9IDA7
Ci0KLXN0YXRpYyB2b2lkIHNldFBlbmRpbmdDb21wb3NpdGlvbihnY2hhciogbmV3Q29tcG9zaXRp
b24pCitzdGF0aWMgdm9pZCBpbUNvbnRleHRDb21taXR0ZWQoR3RrSU1Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBnY2hhciogY29tcG9zaXRpb25TdHJpbmcsIEVkaXRvckNsaWVudCogY2xpZW50KQog
ewotICAgIGdfZnJlZShwZW5kaW5nQ29tcG9zaXRpb24pOwotICAgIHBlbmRpbmdDb21wb3NpdGlv
biA9IG5ld0NvbXBvc2l0aW9uOwotfQorICAgIC8vIElmIHRoaXMgc2lnbmFsIGZpcmVzIGR1cmlu
ZyBhIGtleWRvd24gZXZlbnQgd2hlbiB3ZSBhcmUgbm90IGluIHRoZSBtaWRkbGUKKyAgICAvLyBv
ZiBhIGNvbXBvc2l0aW9uLCB0aGVuIHRyZWF0IHRoaXMgJ2NvbW1pdCcgYXMgYSBub3JtYWwga2V5
IGV2ZW50IGFuZCBqdXN0CisgICAgLy8gY2hhbmdlIHRoZSBlZGl0YWJsZSBhcmVhIHJpZ2h0IGJl
Zm9yZSB0aGUga2V5cHJlc3MgZXZlbnQuCisgICAgaWYgKGNsaWVudC0+dHJlYXRDb250ZXh0Q29t
bWl0QXNLZXlFdmVudCgpKSB7CisgICAgICAgIGNsaWVudC0+dXBkYXRlUGVuZGluZ0NvbXBvc2l0
aW9uKGNvbXBvc2l0aW9uU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotc3RhdGlj
IHZvaWQgc2V0UGVuZGluZ1ByZWVkaXQoZ2NoYXIqIG5ld1ByZWVkaXQpCi17Ci0gICAgZ19mcmVl
KHBlbmRpbmdQcmVlZGl0KTsKLSAgICBwZW5kaW5nUHJlZWRpdCA9IG5ld1ByZWVkaXQ7Ci19Cisg
ICAgRnJhbWUqIGZyYW1lID0gY29yZShjbGllbnQtPndlYlZpZXcoKSktPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRp
dG9yKCktPmNhbkVkaXQoKSkKKyAgICAgICAgcmV0dXJuOwogCi1zdGF0aWMgdm9pZCBjbGVhclBl
bmRpbmdJTURhdGEoKQotewotICAgIHNldFBlbmRpbmdDb21wb3NpdGlvbigwKTsKLSAgICBzZXRQ
ZW5kaW5nUHJlZWRpdCgwKTsKLX0KLXN0YXRpYyB2b2lkIGltQ29udGV4dENvbW1pdHRlZChHdGtJ
TUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGdjaGFyKiBzdHIsIEVkaXRvckNsaWVudCogY2xpZW50
KQotewotICAgIC8vIFRoaXMgc2lnbmFsIHdpbGwgZmlyZSBkdXJpbmcgYSBrZXlkb3duIGV2ZW50
LiBXZSB3YW50IHRoZSBjb250ZW50cyBvZiB0aGUKLSAgICAvLyBmaWVsZCB0byBjaGFuZ2Ugcmln
aHQgYmVmb3JlIHRoZSBrZXl1cCBldmVudCwgc28gd2Ugd2FpdCB1bnRpbCB0aGVuIHRvIGFjdHVh
bGx5Ci0gICAgLy8gY29tbWl0IHRoaXMgY29tcG9zaXRpb24uCi0gICAgc2V0UGVuZGluZ0NvbXBv
c2l0aW9uKGdfc3RyZHVwKHN0cikpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBv
c2l0aW9uKFN0cmluZzo6ZnJvbVVURjgoY29tcG9zaXRpb25TdHJpbmcpKTsKKyAgICBjbGllbnQt
PmNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7CiB9CiAKIHN0YXRpYyB2b2lkIGltQ29udGV4dFBy
ZWVkaXRDaGFuZ2VkKEd0a0lNQ29udGV4dCogY29udGV4dCwgRWRpdG9yQ2xpZW50KiBjbGllbnQp
CiB7CisgICAgRnJhbWUqIGZyYW1lID0gY29yZShjbGllbnQtPndlYlZpZXcoKSktPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFt
ZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gV2UgaWdu
b3JlIHRoZSBwcm92aWRlZCBQYW5nb0F0dHJMaXN0IGZvciBub3cuCi0gICAgZ2NoYXIqIG5ld1By
ZWVkaXQgPSAwOwotICAgIGd0a19pbV9jb250ZXh0X2dldF9wcmVlZGl0X3N0cmluZyhjb250ZXh0
LCAmbmV3UHJlZWRpdCwgTlVMTCwgTlVMTCk7Ci0gICAgc2V0UGVuZGluZ1ByZWVkaXQobmV3UHJl
ZWRpdCk7CisgICAgR093blB0cjxnY2hhcj4gbmV3UHJlZWRpdCgwKTsKKyAgICBndGtfaW1fY29u
dGV4dF9nZXRfcHJlZWRpdF9zdHJpbmcoY29udGV4dCwgJm5ld1ByZWVkaXQub3V0UHRyKCksIDAs
IDApOworCisgICAgU3RyaW5nIHByZWVkaXRTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KG5ld1By
ZWVkaXQuZ2V0KCkpOworICAgIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5l
czsKKyAgICB1bmRlcmxpbmVzLmFwcGVuZChDb21wb3NpdGlvblVuZGVybGluZSgwLCBwcmVlZGl0
U3RyaW5nLmxlbmd0aCgpLCBDb2xvcigwLCAwLCAwKSwgZmFsc2UpKTsKKyAgICBmcmFtZS0+ZWRp
dG9yKCktPnNldENvbXBvc2l0aW9uKHByZWVkaXRTdHJpbmcsIHVuZGVybGluZXMsIDAsIDApOwor
fQorCit2b2lkIEVkaXRvckNsaWVudDo6dXBkYXRlUGVuZGluZ0NvbXBvc2l0aW9uKGNvbnN0IGdj
aGFyKiBuZXdDb21wb3NpdGlvbikKK3sKKyAgICAvLyBUaGUgSU1Db250ZXh0IG1heSBzaWduYWwg
bW9yZSB0aGFuIG9uZSBjb21wbGV0ZWQgY29tcG9zaXRpb24gaW4gYSByb3csCisgICAgLy8gaW4g
d2hpY2ggY2FzZSB3ZSB3YW50IHRvIGFwcGVuZCB0aGVtLCByYXRoZXIgdGhhbiBvdmVyd3JpdGUg
dGhlIG9sZCBvbmUuCisgICAgaWYgKCFtX3BlbmRpbmdDb21wb3NpdGlvbikKKyAgICAgICAgbV9w
ZW5kaW5nQ29tcG9zaXRpb24uc2V0KGdfc3RyZHVwKG5ld0NvbXBvc2l0aW9uKSk7CisgICAgZWxz
ZQorICAgICAgICBtX3BlbmRpbmdDb21wb3NpdGlvbi5zZXQoZ19zdHJjb25jYXQobV9wZW5kaW5n
Q29tcG9zaXRpb24uZ2V0KCksIG5ld0NvbXBvc2l0aW9uLCBOVUxMKSk7CiB9CiAKIHZvaWQgRWRp
dG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgYWN0aXZlKQpAQCAtMTM5LDcgKzE0
OCw3IEBAIGludCBFZGl0b3JDbGllbnQ6OnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkKIAogYm9v
bCBFZGl0b3JDbGllbnQ6OnNob3VsZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopCiB7Ci0g
ICAgY2xlYXJQZW5kaW5nSU1EYXRhKCk7CisgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKTsK
IAogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDcsNyArMTU2
LDcgQEAgYm9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpSYW5n
ZSopCiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpzaG91bGRFbmRFZGl0aW5nKFdlYkNvcmU6OlJhbmdl
KikKIHsKLSAgICBjbGVhclBlbmRpbmdJTURhdGEoKTsKKyAgICBjbGVhclBlbmRpbmdDb21wb3Np
dGlvbigpOwogCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ2
Niw4ICs0NzUsMTIgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5
Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBpZiAoIWNvbW1hbmQuaXNUZXh0SW5zZXJ0
aW9uKCkgJiYgY29tbWFuZC5leGVjdXRlKGV2ZW50KSkKICAgICAgICAgICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKIAorICAgICAgICAgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRp
b24oKTsKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIGlmIChjb21tYW5kLmV4
ZWN1dGUoZXZlbnQpKSB7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29tbWFuZC5leGVjdXRl
KGV2ZW50KSkgeworICAgICAgICAgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKTsKICAgICAg
ICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC00NzgsMjUgKzQ5MSwxNCBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxl
S2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAvLyBiZSByZWZsZWN0ZWQg
aW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWVsZCB1bnRpbCB0aGUga2V5dXAgRE9NIGV2ZW50Lgog
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KSB7CiAK
LSAgICAgICAgaWYgKHBlbmRpbmdDb21wb3NpdGlvbikgewotICAgICAgICAgICAgU3RyaW5nIGNv
bXBvc2l0aW9uU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChwZW5kaW5nQ29tcG9zaXRpb24pOwot
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRp
b25TdHJpbmcpOwotCi0gICAgICAgICAgICBjbGVhclBlbmRpbmdJTURhdGEoKTsKLSAgICAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotCi0gICAgICAgIH0gZWxzZSBpZiAocGVu
ZGluZ1ByZWVkaXQpIHsKLSAgICAgICAgICAgIFN0cmluZyBwcmVlZGl0U3RyaW5nID0gU3RyaW5n
Ojpmcm9tVVRGOChwZW5kaW5nUHJlZWRpdCk7Ci0KLSAgICAgICAgICAgIC8vIERvbid0IHVzZSBh
biBlbXB0eSBwcmVlZGl0IGFzIGl0IHdpbGwgZGVzdHJveSB0aGUgY3VycmVudAotICAgICAgICAg
ICAgLy8gc2VsZWN0aW9uLCBldmVuIGlmIHRoZSBjb21wb3NpdGlvbiBpcyBjYW5jZWxsZWQgb3Ig
ZmFpbHMgbGF0ZXIgb24uCi0gICAgICAgICAgICBpZiAoIXByZWVkaXRTdHJpbmcuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxp
bmVzOwotICAgICAgICAgICAgICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJs
aW5lKDAsIHByZWVkaXRTdHJpbmcubGVuZ3RoKCksIENvbG9yKDAsIDAsIDApLCBmYWxzZSkpOwot
ICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdFN0
cmluZywgdW5kZXJsaW5lcywgMCwgMCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNs
ZWFyUGVuZGluZ0lNRGF0YSgpOworICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgcGVuZGluZyBjb21w
b3NpdGlvbiBhdCB0aGlzIHBvaW50LCBpdCBoYXBwZW5lZCB3aGlsZQorICAgICAgICAvLyBmaWx0
ZXJpbmcgYSBrZXlwcmVzcywgc28gd2UgdHJlYXQgaXQgYXMgYSBub3JtYWwgdGV4dCBpbnNlcnRp
b24uCisgICAgICAgIC8vIFRoaXMgd2lsbCBhbHNvIGVuc3VyZSB0aGF0IGlmIHRoZSBrZXlwcmVz
cyBldmVudCBoYW5kbGVyIGNoYW5nZWQgdGhlCisgICAgICAgIC8vIGN1cnJlbnRseSBmb2N1c2Vk
IG5vZGUsIHRoZSB0ZXh0IGlzIHN0aWxsIGluc2VydGVkIGludG8gdGhlIG9yaWdpbmFsCisgICAg
ICAgIC8vIG5vZGUgKGluc2VydFRleHQoKSBoYXMgdGhpcyBsb2dpYywgYnV0IGNvbmZpcm1Db21w
b3NpdGlvbigpIGRvZXMgbm90KS4KKyAgICAgICAgaWYgKG1fcGVuZGluZ0NvbXBvc2l0aW9uKSB7
CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoU3RyaW5nOjpmcm9tVVRG
OChtX3BlbmRpbmdDb21wb3NpdGlvbi5nZXQoKSksIGV2ZW50KTsKKyAgICAgICAgICAgIGNsZWFy
UGVuZGluZ0NvbXBvc2l0aW9uKCk7CiAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRs
ZWQoKTsKIAogICAgICAgICB9IGVsc2UgewpAQCAtNTIwLDEwICs1MjIsMTYgQEAgdm9pZCBFZGl0
b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KiBldmVudCkK
ICAgICBpZiAoIXRhcmdldEZyYW1lIHx8ICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gVE9ETzogV2UgbmVlZCB0byBkZWNpZGUgd2hp
Y2ggZmlsdGVyZWQga2V5c3Ryb2tlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyBJTQotICAgIC8vIGV2
ZW50cyBhbmQgd2hpY2ggc2hvdWxkIG5vdC4KICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJp
diA9IG1fd2ViVmlldy0+cHJpdjsKLSAgICBndGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3Mo
cHJpdi0+aW1Db250ZXh0LCBldmVudC0+a2V5RXZlbnQoKS0+Z2RrRXZlbnRLZXkoKSk7CisKKyAg
ICAvLyBTb21lIElNIGNvbnRleHRzIChlLmcuICdzaW1wbGUnKSB3aWxsIGFjdCBhcyBpZiB0aGV5
IGZpbHRlciBldmVyeQorICAgIC8vIGtleXN0cm9rZSBhbmQganVzdCBpc3N1ZSBhICdjb21taXQn
IHNpZ25hbCBkdXJpbmcgaGFuZGxpbmcuIEluIHNpdHVhdGlvbnMKKyAgICAvLyB3aGVyZSB0aGUg
J2NvbW1pdCcgc2lnbmFsIGhhcHBlbnMgZHVyaW5nIGZpbHRlcmluZyBhbmQgdGhlcmUgaXMgbm8g
YWN0aXZlCisgICAgLy8gY29tcG9zaXRpb24sIGFjdCBhcyBpZiB0aGUga2V5c3Ryb2tlIHdhcyBu
b3QgZmlsdGVyZWQuCisgICAgbV90cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50ID0gIXRhcmdl
dEZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKTsKKyAgICBpZiAoZ3RrX2ltX2NvbnRl
eHRfZmlsdGVyX2tleXByZXNzKHByaXYtPmltQ29udGV4dCwgZXZlbnQtPmtleUV2ZW50KCktPmdk
a0V2ZW50S2V5KCkpICYmICFtX3BlbmRpbmdDb21wb3NpdGlvbikKKyAgICAgICAgZXZlbnQtPnBy
ZXZlbnREZWZhdWx0KCk7CisgICAgbV90cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50ID0gZmFs
c2U7CiB9CiAKIEVkaXRvckNsaWVudDo6RWRpdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0
ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaAppbmRleCA5
MjkyNjUxLi40MmZkMTA1IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50R3RrLmgKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFj
ayBSdXNpbiA8emFja0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1
dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTWFydGluIFJvYmluc29uIDxtcm9iaW5z
b25Ad2Via2l0Lm9yZz4KICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTM0LDgg
KzM1LDEwIEBACiAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9ndGsvR093blB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3OwordHlwZWRlZiBjaGFyIGdjaGFyOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUGFnZTsKQEAgLTUzLDYgKzU2LDEwIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogICAgIHB1YmxpYzoKICAgICAgICAgRWRpdG9yQ2xpZW50KFdlYktpdFdlYlZp
ZXcqKTsKICAgICAgICAgfkVkaXRvckNsaWVudCgpOworICAgICAgICBXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CisgICAgICAgIGJvb2wgdHJlYXRDb250ZXh0
Q29tbWl0QXNLZXlFdmVudCgpIHsgcmV0dXJuIG1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVu
dDsgfQorICAgICAgICB2b2lkIHVwZGF0ZVBlbmRpbmdDb21wb3NpdGlvbihjb25zdCBjaGFyKik7
CisgICAgICAgIHZvaWQgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKSB7IG1fcGVuZGluZ0NvbXBv
c2l0aW9uLnNldCgwKTsgfQogCiAgICAgICAgIC8vIGZyb20gRWRpdG9yQ2xpZW50CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7CkBAIC0xMjAsNiArMTI3LDggQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dl
YlZpZXc7CisgICAgICAgIGJvb2wgbV90cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50OworICAg
ICAgICBHT3duUHRyPGdjaGFyPiBtX3BlbmRpbmdDb21wb3NpdGlvbjsKICAgICB9OwogfQogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RrZXlldmVudHMuYyBiL1dlYktpdC9ndGsv
dGVzdHMvdGVzdGtleWV2ZW50cy5jCmluZGV4IGVlNzcyOGMuLjZiNWUwZmMgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvdGVzdHMvdGVzdGtleWV2ZW50cy5jCisrKyBiL1dlYktpdC9ndGsvdGVzdHMv
dGVzdGtleWV2ZW50cy5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSBNYXJ0aW4gUm9iaW5zb24KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBNYXJ0aW4gUm9i
aW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDEy
ICsyMiwxNSBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+
CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
U3RyaW5nUmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CisK
IAogI2lmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE0LCAwKQogCiB0eXBlZGVmIHN0cnVjdCB7Ci0g
IGNoYXIqIHBhZ2U7Ci0gIGdib29sZWFuIHNob3VsZEJlSGFuZGxlZDsKKyAgICBjaGFyKiBwYWdl
OworICAgIGdib29sZWFuIHNob3VsZEJlSGFuZGxlZDsKIH0gVGVzdEluZm87CiAKIHR5cGVkZWYg
c3RydWN0IHsKQEAgLTk1LDExICs5OCwxNSBAQCBzdGF0aWMgZ2Jvb2xlYW4ga2V5X3JlbGVhc2Vf
ZXZlbnRfY2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR2RrRXZlbnQqIGV2ZW50LCBncAogICAg
IHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIHZvaWQgbG9hZF9zdGF0dXNfY2IoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgR1BhcmFtU3BlYyogc3BlYywgZ3BvaW50ZXIgZGF0YSkKK3N0YXRpYyB2
b2lkIHRlc3Rfa2V5cHJlc3NfZXZlbnRzX2xvYWRfc3RhdHVzX2NiKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIEdQYXJhbVNwZWMqIHNwZWMsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAgS2V5RXZlbnRG
aXh0dXJlKiBmaXh0dXJlID0gKEtleUV2ZW50Rml4dHVyZSopZGF0YTsKICAgICBXZWJLaXRMb2Fk
U3RhdHVzIHN0YXR1cyA9IHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZF9zdGF0dXMod2ViVmlldyk7
CiAgICAgaWYgKHN0YXR1cyA9PSBXRUJLSVRfTE9BRF9GSU5JU0hFRCkgeworICAgICAgICBnX3Np
Z25hbF9jb25uZWN0KGZpeHR1cmUtPndlYlZpZXcsICJrZXktcHJlc3MtZXZlbnQiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0soa2V5X3ByZXNzX2V2ZW50X2NiKSwgZml4dHVy
ZSk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoZml4dHVyZS0+d2ViVmlldywgImtleS1yZWxl
YXNlLWV2ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKGtleV9yZWxl
YXNlX2V2ZW50X2NiKSwgZml4dHVyZSk7CiAgICAgICAgIGd0a190ZXN0X3dpZGdldF9zZW5kX2tl
eShHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdhJyksIDApOwogICAgIH0KQEAgLTExMCwy
NSArMTE3LDE0IEBAIGdib29sZWFuIG1hcF9ldmVudF9jYihHdGtXaWRnZXQgKndpZGdldCwgR2Rr
RXZlbnQqIGV2ZW50LCBncG9pbnRlciBkYXRhKQogewogICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1
cyh3aWRnZXQpOwogICAgIEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSA9IChLZXlFdmVudEZpeHR1
cmUqKWRhdGE7Ci0KLSAgICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUtPndlYlZpZXcsICJrZXkt
cHJlc3MtZXZlbnQiLAotICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhrZXlfcHJlc3Nf
ZXZlbnRfY2IpLCBmaXh0dXJlKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUtPndlYlZp
ZXcsICJrZXktcmVsZWFzZS1ldmVudCIsCi0gICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNL
KGtleV9yZWxlYXNlX2V2ZW50X2NiKSwgZml4dHVyZSk7Ci0KLSAgICBnX3NpZ25hbF9jb25uZWN0
KGZpeHR1cmUtPndlYlZpZXcsICJub3RpZnk6OmxvYWQtc3RhdHVzIiwKLSAgICAgICAgICAgICAg
ICAgICAgIEdfQ0FMTEJBQ0sobG9hZF9zdGF0dXNfY2IpLCBmaXh0dXJlKTsKLQogICAgIHdlYmtp
dF93ZWJfdmlld19sb2FkX3N0cmluZyhmaXh0dXJlLT53ZWJWaWV3LCBmaXh0dXJlLT5pbmZvLT5w
YWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dC9odG1sIiwgInV0Zi04
IiwgImZpbGU6Ly8iKTsKLQogICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIHZvaWQgdGVz
dF9rZXlwcmVzcyhLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkK
K3N0YXRpYyB2b2lkIHNldHVwX2tleWV2ZW50X3Rlc3QoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJl
LCBnY29uc3Rwb2ludGVyIGRhdGEsIEdDYWxsYmFjayBsb2FkX2V2ZW50X2NhbGxiYWNrKQogewog
ICAgIGZpeHR1cmUtPmluZm8gPSAoVGVzdEluZm8qKWRhdGE7Ci0KICAgICBnX3NpZ25hbF9jb25u
ZWN0KGZpeHR1cmUtPndpbmRvdywgIm1hcC1ldmVudCIsCiAgICAgICAgICAgICAgICAgICAgICBH
X0NBTExCQUNLKG1hcF9ldmVudF9jYiksIGZpeHR1cmUpOwogCkBAIC0xMzYsOCArMTMyLDgwIEBA
IHN0YXRpYyB2b2lkIHRlc3Rfa2V5cHJlc3MoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29u
c3Rwb2ludGVyIGRhdGEpCiAgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQoZml4dHVyZS0+
d2ViVmlldykpOwogICAgIGd0a193aW5kb3dfcHJlc2VudChHVEtfV0lORE9XKGZpeHR1cmUtPndp
bmRvdykpOwogCisgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAibm90aWZ5
Ojpsb2FkLXN0YXR1cyIsCisgICAgICAgICAgICAgICAgICAgICBsb2FkX2V2ZW50X2NhbGxiYWNr
LCBmaXh0dXJlKTsKKwogICAgIGdfbWFpbl9sb29wX3J1bihmaXh0dXJlLT5sb29wKTsKK30KKwor
c3RhdGljIHZvaWQgdGVzdF9rZXlwcmVzc19ldmVudHMoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJl
LCBnY29uc3Rwb2ludGVyIGRhdGEpCit7CisgICAgc2V0dXBfa2V5ZXZlbnRfdGVzdChmaXh0dXJl
LCBkYXRhLCBHX0NBTExCQUNLKHRlc3Rfa2V5cHJlc3NfZXZlbnRzX2xvYWRfc3RhdHVzX2NiKSk7
Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBlbGVtZW50X3RleHRfZXF1YWxfdG8oSlNDb250ZXh0UmVm
IGNvbnRleHQsIGNvbnN0IGdjaGFyKiB0ZXh0KQoreworICAgIEpTU3RyaW5nUmVmIHNjcmlwdFN0
cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKAorICAgICAgIndpbmRvdy5kb2N1
bWVudC5nZXRFbGVtZW50QnlJZChcImluXCIpLnZhbHVlOyIpOworICAgIEpTVmFsdWVSZWYgdmFs
dWUgPSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdFN0cmluZywgMCwgMCwgMCwgMCk7
CisgICAgSlNTdHJpbmdSZWxlYXNlKHNjcmlwdFN0cmluZyk7CisKKyAgICAvLyBJZiB0aGUgdmFs
dWUgaXNuJ3QgYSBzdHJpbmcsIHRoZSBlbGVtZW50IGlzIHByb2JhYmx5IGEgZGl2CisgICAgLy8g
c28gZ3JhYiB0aGUgaW5uZXJUZXh0IGluc3RlYWQuCisgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmco
Y29udGV4dCwgdmFsdWUpKSB7CisgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdFN0cmluZyA9IEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKAorICAgICAgICAgICJ3aW5kb3cuZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoXCJpblwiKS5pbm5lclRleHQ7Iik7CisgICAgICAgIHZhbHVlID0gSlNF
dmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHRTdHJpbmcsIDAsIDAsIDAsIDApOworICAgICAg
ICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0U3RyaW5nKTsKKyAgICB9CisKKyAgICBnX2Fzc2VydChK
U1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKTsKKyAgICBKU1N0cmluZ1JlZiBpbnB1dFN0
cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIDApOworICAgIGdfYXNz
ZXJ0KGlucHV0U3RyaW5nKTsKKworICAgIGdpbnQgc2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVU
RjhDU3RyaW5nU2l6ZShpbnB1dFN0cmluZyk7CisgICAgZ2NoYXIqIGNTdHJpbmcgPSBnX21hbGxv
YyhzaXplKTsKKyAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGlucHV0U3RyaW5nLCBjU3RyaW5n
LCBzaXplKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UoaW5wdXRTdHJpbmcpOwogCisgICAgZ2Jvb2xl
YW4gcmVzdWx0ID0gZ191dGY4X2NvbGxhdGUoY1N0cmluZywgdGV4dCkgPT0gMDsKKyAgICBnX2Zy
ZWUoY1N0cmluZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQgdGVzdF9p
bWVfbG9hZF9zdGF0dXNfY2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFtU3BlYyogc3Bl
YywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUgPSAoS2V5
RXZlbnRGaXh0dXJlKilkYXRhOworICAgIFdlYktpdExvYWRTdGF0dXMgc3RhdHVzID0gd2Via2l0
X3dlYl92aWV3X2dldF9sb2FkX3N0YXR1cyh3ZWJWaWV3KTsKKyAgICBpZiAoc3RhdHVzICE9IFdF
QktJVF9MT0FEX0ZJTklTSEVEKQorICAgICAgICByZXR1cm47CisKKyAgICBKU0dsb2JhbENvbnRl
eHRSZWYgY29udGV4dCA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2dsb2JhbF9jb250ZXh0KAorICAg
ICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldykpOworICAgIGdfYXNz
ZXJ0KGNvbnRleHQpOworCisgICAgR3RrSU1Db250ZXh0KiBpbUNvbnRleHQgPSAwOworICAgIGdf
b2JqZWN0X2dldCh3ZWJWaWV3LCAiaW0tY29udGV4dCIsICZpbUNvbnRleHQsIE5VTEwpOworICAg
IGdfYXNzZXJ0KGltQ29udGV4dCk7CisKKyAgICAvLyBUZXN0IHRoYXQgY29tbWl0cyB0aGF0IGhh
cHBlbiBvdXRzaWRlIG9mIGtleSBldmVudHMKKyAgICAvLyBjaGFuZ2UgdGhlIHRleHQgZmllbGQg
aW1tZWRpYXRlbHkuIFRoaXMgY2xvc2VseSByZXBsaWNhdGVzCisgICAgLy8gdGhlIGJlaGF2aW9y
IG9mIFNDSU0uCisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsICIi
KSk7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGltQ29udGV4dCwgImNvbW1pdCIsICJhIik7
CisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsICJhIikpOworICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZShpbUNvbnRleHQsICJjb21taXQiLCAiYiIpOworICAgIGdf
YXNzZXJ0KGVsZW1lbnRfdGV4dF9lcXVhbF90byhjb250ZXh0LCAiYWIiKSk7CisgICAgZ19zaWdu
YWxfZW1pdF9ieV9uYW1lKGltQ29udGV4dCwgImNvbW1pdCIsICJjIik7CisgICAgZ19hc3NlcnQo
ZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsICJhYmMiKSk7CisKKyAgICBnX29iamVjdF91
bnJlZihpbUNvbnRleHQpOworICAgIGdfbWFpbl9sb29wX3F1aXQoZml4dHVyZS0+bG9vcCk7Cit9
CisKK3N0YXRpYyB2b2lkIHRlc3RfaW1lKEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSwgZ2NvbnN0
cG9pbnRlciBkYXRhKQoreworICAgIHNldHVwX2tleWV2ZW50X3Rlc3QoZml4dHVyZSwgZGF0YSwg
R19DQUxMQkFDSyh0ZXN0X2ltZV9sb2FkX3N0YXR1c19jYikpOwogfQogCiBpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCkBAIC0xNDcsMjkgKzIxNSw0OSBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCiAKICAgICBnX3Rlc3RfYnVnX2Jhc2UoImh0dHBzOi8vYnVncy53ZWJr
aXQub3JnLyIpOwogCi0gICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudC90ZXh0ZmllbGQi
LCBLZXlFdmVudEZpeHR1cmUsCi0gICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KCI8aHRtbD48
Ym9keT48aW5wdXQgaWQ9XCJpblwiIHR5cGU9XCJ0ZXh0XCI+IgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiPHNjcmlwdD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygp
OyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+
IiwgVFJVRSksCisKKyAgICAvLyBXZSdsbCB0ZXN0IGlucHV0IG9uIGEgc2xldyBvZiBkaWZmZXJl
bnQgbm9kZSB0eXBlcy4gS2V5IGV2ZW50cyB0bworICAgIC8vIHRleHQgaW5wdXRzIGFuZCBlZGl0
YWJsZSBkaXZzIHNob3VsZCBiZSBtYXJrZWQgYXMgaGFuZGxlZC4gS2V5IGV2ZW50cworICAgIC8v
IHRvIGJ1dHRvbnMgYW5kIGxpbmtzIHNob3VsZCBub3QuCisgICAgY29uc3QgY2hhciogdGV4dGlu
cHV0X2h0bWwgPSAiPGh0bWw+PGJvZHk+PGlucHV0IGlkPVwiaW5cIiB0eXBlPVwidGV4dFwiPiIK
KyAgICAgICAgIjxzY3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8
L3NjcmlwdD48L2JvZHk+PC9odG1sPiI7CisgICAgY29uc3QgY2hhciogYnV0dG9uX2h0bWwgPSAi
PGh0bWw+PGJvZHk+PGlucHV0IGlkPVwiaW5cIiB0eXBlPVwiYnV0dG9uXCI+IgorICAgICAgICAi
PHNjcmlwdD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0Pjwv
Ym9keT48L2h0bWw+IjsKKyAgICBjb25zdCBjaGFyKiBsaW5rX2h0bWwgPSAiPGh0bWw+PGJvZHk+
PGEgaHJlZj1cImh0dHA6Ly93d3cuZ25vbWUub3JnXCIgaWQ9XCJpblwiPiIKKyAgICAgICAgIkxJ
TktZIE1DTElOS0VSU09OPC9hPjxzY3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJyku
Zm9jdXMoKTs8L3NjcmlwdD4iCisgICAgICAgICI8L2JvZHk+PC9odG1sPiI7CisgICAgY29uc3Qg
Y2hhciogZGl2X2h0bWwgPSAiPGh0bWw+PGJvZHk+PGRpdiBpZD1cImluXCIgY29udGVudGVkaXRh
YmxlPVwidHJ1ZVwiPiIKKyAgICAgICAgIjxzY3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2luJykuZm9jdXMoKTs8L3NjcmlwdD48L2JvZHk+PC9odG1sPiI7CisKKyAgICBnX3Rlc3RfYWRk
KCIvd2Via2l0L2tleWV2ZW50cy9ldmVudC10ZXh0aW5wdXQiLCBLZXlFdmVudEZpeHR1cmUsCisg
ICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KHRleHRpbnB1dF9odG1sLCBUUlVFKSwKICAgICAg
ICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAotICAgICAgICAgICAgICAgdGVzdF9r
ZXlwcmVzcywKKyAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3NfZXZlbnRzLAogICAgICAgICAg
ICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOwotCi0gICAgZ190ZXN0X2FkZCgiL3dl
YmtpdC9rZXlldmVudC9idXR0b25zIiwgS2V5RXZlbnRGaXh0dXJlLAotICAgICAgICAgICAgICAg
dGVzdF9pbmZvX25ldygiPGh0bWw+PGJvZHk+PGlucHV0IGlkPVwiaW5cIiB0eXBlPVwiYnV0dG9u
XCI+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHNjcmlwdD5kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ijwvc2NyaXB0PjwvYm9keT48L2h0bWw+IiwgRkFMU0UpLAorICAgIGdfdGVzdF9hZGQoIi93ZWJr
aXQva2V5ZXZlbnRzL2V2ZW50LWJ1dHRvbnMiLCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAgICAg
ICAgICB0ZXN0X2luZm9fbmV3KGJ1dHRvbl9odG1sLCBGQUxTRSksCiAgICAgICAgICAgICAgICBr
ZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKLSAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3MsCisg
ICAgICAgICAgICAgICB0ZXN0X2tleXByZXNzX2V2ZW50cywKICAgICAgICAgICAgICAgIGtleV9l
dmVudF9maXh0dXJlX3RlYXJkb3duKTsKLQotICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZl
bnQvbGluayIsIEtleUV2ZW50Rml4dHVyZSwKLSAgICAgICAgICAgICAgIHRlc3RfaW5mb19uZXco
IjxodG1sPjxib2R5PjxhIGhyZWY9XCJodHRwOi8vd3d3Lmdub21lLm9yZ1wiIGlkPVwiaW5cIj4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMSU5LWSBNQ0xJTktFUlNPTjwvYT48c2Ny
aXB0PiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpbicpLmZvY3VzKCk7PC9zY3JpcHQ+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiPC9ib2R5PjwvaHRtbD4iLCBGQUxTRSksCisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXll
dmVudHMvZXZlbnQtbGluayIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3Rf
aW5mb19uZXcobGlua19odG1sLCBGQUxTRSksCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4
dHVyZV9zZXR1cCwKKyAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3NfZXZlbnRzLAorICAgICAg
ICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdfdGVzdF9hZGQoIi93
ZWJraXQva2V5ZXZlbnQvZXZlbnQtZGl2IiwgS2V5RXZlbnRGaXh0dXJlLAorICAgICAgICAgICAg
ICAgdGVzdF9pbmZvX25ldyhkaXZfaHRtbCwgVFJVRSksCisgICAgICAgICAgICAgICBrZXlfZXZl
bnRfZml4dHVyZV9zZXR1cCwKKyAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3NfZXZlbnRzLAor
ICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdfdGVzdF9h
ZGQoIi93ZWJraXQva2V5ZXZlbnQvaW1lLXRleHRpbnB1dCIsIEtleUV2ZW50Rml4dHVyZSwKKyAg
ICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcodGV4dGlucHV0X2h0bWwsIFRSVUUpLAorICAgICAg
ICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCisgICAgICAgICAgICAgICB0ZXN0X2lt
ZSwKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rl
c3RfYWRkKCIvd2Via2l0L2tleWV2ZW50L2ltZS1kaXYiLCBLZXlFdmVudEZpeHR1cmUsCisgICAg
ICAgICAgICAgICB0ZXN0X2luZm9fbmV3KGRpdl9odG1sLCBUUlVFKSwKICAgICAgICAgICAgICAg
IGtleV9ldmVudF9maXh0dXJlX3NldHVwLAotICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzcywK
KyAgICAgICAgICAgICAgIHRlc3RfaW1lLAogICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1
cmVfdGVhcmRvd24pOwogCiAgICAgcmV0dXJuIGdfdGVzdF9ydW4oKTsKZGlmZiAtLWdpdCBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKaW5kZXggOGM1YjgwMi4uZmI5NzliMiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKQEAgLTUxNCw2ICs1MTQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
X3dlYl92aWV3X2tleV9yZWxlYXNlX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtl
eQogICAgIGlmICghZnJhbWUtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCisgICAg
Z3RrX2ltX2NvbnRleHRfZmlsdGVyX2tleXByZXNzKHdlYlZpZXctPnByaXYtPmltQ29udGV4dCwg
ZXZlbnQpOwogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlib2FyZEV2ZW50KGV2ZW50KTsK
IAogICAgIGlmIChmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KGtleWJvYXJkRXZlbnQp
KQpAQCAtNjcwLDYgKzY3MSw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZm9j
dXNfaW5fZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqCiAgICAgICAgICAg
ICBmb2N1c0NvbnRyb2xsZXItPnNldEZvY3VzZWQodHJ1ZSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGZvY3VzQ29udHJvbGxlci0+c2V0Rm9jdXNlZEZyYW1lKGNvcmUod2ViVmlldyktPm1h
aW5GcmFtZSgpKTsKKworICAgICAgICBndGtfaW1fY29udGV4dF9mb2N1c19pbih3ZWJWaWV3LT5w
cml2LT5pbUNvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3ZWJr
aXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+Zm9jdXNfaW5fZXZlbnQod2lkZ2V0LCBldmVudCk7
CiB9CkBAIC02ODAsNiArNjgzLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19m
b2N1c19vdXRfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMKIAogICAgIGNv
cmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5zZXRBY3RpdmUoZmFsc2UpOwogICAgIGNv
cmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkKGZhbHNlKTsKKyAgICBn
dGtfaW1fY29udGV4dF9mb2N1c19vdXQod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0KTsKIAogICAg
IHJldHVybiBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5m
b2N1c19vdXRfZXZlbnQod2lkZ2V0LCBldmVudCk7CiB9Ci0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="31255"
          type_id="1"
          status="-"
          setter="xan.lopez"
    />
    <flag name="commit-queue"
          id="31256"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48709</attachid>
            <date>2010-02-13 12:43:31 -0800</date>
            <delta_ts>2010-02-13 13:05:39 -0800</delta_ts>
            <desc>Patch for this issue (rev4)</desc>
            <filename>0001-can-t-input-korean-into-lower-all-input-box-except-a.patch</filename>
            <type>text/plain</type>
            <size>30071</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBlZjAyODNjNzZjODU4ODczZTcxOGY0MjMyZWUxNzQzNWIzYzAxZWU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBGcmksIDI5IEphbiAyMDEwIDE4OjUyOjM1IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
Y2FuJ3QgaW5wdXQga29yZWFuIGludG8gbG93ZXIgYWxsIGlucHV0IGJveCBleGNlcHQgYWRyZXNz
IGlucHV0IGJveCBpbiB3ZWJraXQgZ3RrIGxhdW5jaGVyCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzIyOTAKCi0tLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA0NSArKysrCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5jcHAgfCAgMTM3ICsrKysrKysrLS0tLS0KIFdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggICB8ICAgMTAgKwogV2ViS2l0L2d0ay90ZXN0
cy90ZXN0a2V5ZXZlbnRzLmMgICAgICAgICAgICAgIHwgIDI3MiArKysrKysrKysrKysrKysrKysr
KystLS0tCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgICAgICAgfCAg
IDEyICstCiA1IGZpbGVzIGNoYW5nZWQsIDM4OSBpbnNlcnRpb25zKCspLCA4NyBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCmluZGV4IDdhNDQ4ODQuLjU4OWFhYmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDIt
MTEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNhbid0IGlucHV0IGtvcmVhbiBp
bnRvIGxvd2VyIGFsbCBpbnB1dCBib3ggZXhjZXB0IGFkcmVzcyBpbnB1dCBib3ggaW4gd2Via2l0
IGd0ayBsYXVuY2hlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzIyOTAKKworICAgICAgICBNYWtlIHRoZSBHVEsrIEVkaXRvckNsaWVudCBwcm9wZXJs
eSBoYW5kbGUgZGlmZmVyZW50IHR5cGVzIG9mIGlucHV0IG1vZHVsZQorICAgICAgICBiZWhhdmlv
ciBzdWNoIGFzIGNvbW1pdCBhbmQgcHJlZWRpdCBzaWduYWxzIHRoYXQgaGFwcGVuIG91dHNpZGUg
b2Yga2V5IGV2ZW50CisgICAgICAgIGZpbHRlcmluZyBhbmQgbXVsdGlwbGUgdGltZXMgaW4gYSBy
b3cuIEZpbHRlciBrZXl1cCBldmVudHMgYXMgd2VsbCBhcyBrZXlkb3duCisgICAgICAgIGV2ZW50
cyBhbmQgY2FsbCBndGtfaW1fY29udGV4dF9mb2N1c197aW4vb3V0fSB3aGVuIHRoZSBXZWJWaWV3
IGZvY3VzIGNoYW5nZXMuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIHRoaXMgYmVoYXZpb3Ig
dG8gdGhlIEdUSysgdW5pdCB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltQ29udGV4dENvbW1pdHRlZCk6IEhh
bmRsZSB0aGlzIHNpZ25hbCBwcm9wZXJseSB3aGVuIGl0IGhhcHBlbnMgb3V0c2lkZSBvZgorICAg
ICAgICBrZXkgZXZlbnQgZmlsdGVyaW5nLgorICAgICAgICAoV2ViS2l0OjppbUNvbnRleHRQcmVl
ZGl0Q2hhbmdlZCk6IEltbWVkaWF0ZWx5IHVwZGF0ZSB0aGUgcHJlZWRpdCBzdGF0ZSBhbmQgZG8g
bm90IHJlamVjdAorICAgICAgICBlbXB0eSBwcmVlZGl0cywgc28gdGhhdCBjYW5jZWxsYXRpb24g
d29ya3MgcHJvcGVybHkuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6dXBkYXRlUGVu
ZGluZ0NvbXBvc2l0aW9uKTogQWRkIHRoaXMgbWV0aG9kLCB3aGljaCBoYW5kbGVzIHRoZQorICAg
ICAgICBzaXR1YXRpb24gd2hlcmUgYSBjb21taXQgc2lnbmFsIGhhcHBlbnMgd2hlbiB0aGVyZSBp
cyBzdGlsbCBhIHBlbmRpbmcgY29tbWl0LgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6
OnNob3VsZEJlZ2luRWRpdGluZyk6IENsZWFyIHBlbmRpbmcgY29tcG9zaXRpb24gc3RhdGUgYmVm
b3JlIGVkaXRpbmcKKyAgICAgICAgc3RhcnRzLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGll
bnQ6OnNob3VsZEVuZEVkaXRpbmcpOiBDbGVhciBwZW5kaW5nIGNvbXBvc2l0aW9uIHN0YXRlIGJl
Zm9yZSBlZGl0aW5nIGVuZHMuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6aGFuZGxl
S2V5Ym9hcmRFdmVudCk6IE5vIGxvbmdlciBzcGVjaWFsIGNhc2UgcHJlZWRpdHMgd2hpY2ggaGFw
cGVuIGR1cmluZworICAgICAgICBrZXkgZXZlbnQgZmlsdGVyaW5nLiBXaGVuIGNvbmZpcm1pbmcg
YSBwZW5kaW5nIGNvbXBvc2l0aW9uIHVzZSBpbnNlcnRUZXh0IGluc3RlYWQgb2YgY29uZmlybUNv
bXBvc2l0aW9uLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0
aG9kS2V5ZG93bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmg6
IE1ha2UgcGVuZGluZ0NvbXBvc2l0aW9uIGEgbWVtYmVyLCBzbyB0aGF0IG11bHRpcGxlIFdlYlZp
ZXdzCisgICAgICAgIGRvIG5vdCBzaGFyZSBzdGF0ZS4KKyAgICAgICAgKFdlYktpdDo6RWRpdG9y
Q2xpZW50Ojp3ZWJWaWV3KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6
dHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpF
ZGl0b3JDbGllbnQ6OmNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKTogQWRkZWQuCisgICAgICAgICog
dGVzdHMvdGVzdGtleWV2ZW50cy5jOgorICAgICAgICAodGVzdF9rZXlwcmVzc19ldmVudHNfbG9h
ZF9zdGF0dXNfY2IpOgorICAgICAgICAobWFwX2V2ZW50X2NiKToKKyAgICAgICAgKHNldHVwX2tl
eWV2ZW50X3Rlc3QpOgorICAgICAgICAodGVzdF9rZXlwcmVzc19ldmVudHMpOgorICAgICAgICAo
ZWxlbWVudF90ZXh0X2VxdWFsX3RvKToKKyAgICAgICAgKHRlc3RfaW1lX2xvYWRfc3RhdHVzX2Ni
KToKKyAgICAgICAgKHRlc3RfaW1lKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19rZXlfcmVsZWFz
ZV9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQpOgorCiAy
MDEwLTAyLTA5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCAwMmQxYTUzLi5kMGRjMWVkIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCkBAIC00LDYgKzQsNyBAQAog
ICogIENvcHlyaWdodCAoQykgMjAwOSBEaWVnbyBFc2NhbGFudGUgVXJyZWxvIDxkaWVnb2VAZ25v
bWUub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwOSwgSWdhbGlhIFMuTC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTAsIE1hcnRpbiBSb2JpbnNvbiA8bXJvYmluc29uQHdlYmtpdC5vcmc+
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01MSw0MCArNTIsNDggQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgZ2NoYXIqIHBlbmRpbmdD
b21wb3NpdGlvbiA9IDA7Ci1zdGF0aWMgZ2NoYXIqIHBlbmRpbmdQcmVlZGl0ID0gMDsKLQotc3Rh
dGljIHZvaWQgc2V0UGVuZGluZ0NvbXBvc2l0aW9uKGdjaGFyKiBuZXdDb21wb3NpdGlvbikKK3N0
YXRpYyB2b2lkIGltQ29udGV4dENvbW1pdHRlZChHdGtJTUNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IGdjaGFyKiBjb21wb3NpdGlvblN0cmluZywgRWRpdG9yQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAg
Z19mcmVlKHBlbmRpbmdDb21wb3NpdGlvbik7Ci0gICAgcGVuZGluZ0NvbXBvc2l0aW9uID0gbmV3
Q29tcG9zaXRpb247Ci19CisgICAgLy8gSWYgdGhpcyBzaWduYWwgZmlyZXMgZHVyaW5nIGEga2V5
ZG93biBldmVudCB3aGVuIHdlIGFyZSBub3QgaW4gdGhlIG1pZGRsZQorICAgIC8vIG9mIGEgY29t
cG9zaXRpb24sIHRoZW4gdHJlYXQgdGhpcyAnY29tbWl0JyBhcyBhIG5vcm1hbCBrZXkgZXZlbnQg
YW5kIGp1c3QKKyAgICAvLyBjaGFuZ2UgdGhlIGVkaXRhYmxlIGFyZWEgcmlnaHQgYmVmb3JlIHRo
ZSBrZXlwcmVzcyBldmVudC4KKyAgICBpZiAoY2xpZW50LT50cmVhdENvbnRleHRDb21taXRBc0tl
eUV2ZW50KCkpIHsKKyAgICAgICAgY2xpZW50LT51cGRhdGVQZW5kaW5nQ29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQogCi1zdGF0aWMgdm9pZCBz
ZXRQZW5kaW5nUHJlZWRpdChnY2hhciogbmV3UHJlZWRpdCkKLXsKLSAgICBnX2ZyZWUocGVuZGlu
Z1ByZWVkaXQpOwotICAgIHBlbmRpbmdQcmVlZGl0ID0gbmV3UHJlZWRpdDsKLX0KKyAgICBGcmFt
ZSogZnJhbWUgPSBjb3JlKGNsaWVudC0+d2ViVmlldygpKS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+
Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm47CiAKLXN0YXRpYyB2b2lkIGNsZWFyUGVuZGluZ0lN
RGF0YSgpCi17Ci0gICAgc2V0UGVuZGluZ0NvbXBvc2l0aW9uKDApOwotICAgIHNldFBlbmRpbmdQ
cmVlZGl0KDApOwotfQotc3RhdGljIHZvaWQgaW1Db250ZXh0Q29tbWl0dGVkKEd0a0lNQ29udGV4
dCogY29udGV4dCwgY29uc3QgZ2NoYXIqIHN0ciwgRWRpdG9yQ2xpZW50KiBjbGllbnQpCi17Ci0g
ICAgLy8gVGhpcyBzaWduYWwgd2lsbCBmaXJlIGR1cmluZyBhIGtleWRvd24gZXZlbnQuIFdlIHdh
bnQgdGhlIGNvbnRlbnRzIG9mIHRoZQotICAgIC8vIGZpZWxkIHRvIGNoYW5nZSByaWdodCBiZWZv
cmUgdGhlIGtleXVwIGV2ZW50LCBzbyB3ZSB3YWl0IHVudGlsIHRoZW4gdG8gYWN0dWFsbHkKLSAg
ICAvLyBjb21taXQgdGhpcyBjb21wb3NpdGlvbi4KLSAgICBzZXRQZW5kaW5nQ29tcG9zaXRpb24o
Z19zdHJkdXAoc3RyKSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24o
U3RyaW5nOjpmcm9tVVRGOChjb21wb3NpdGlvblN0cmluZykpOworICAgIGNsaWVudC0+Y2xlYXJQ
ZW5kaW5nQ29tcG9zaXRpb24oKTsKIH0KIAogc3RhdGljIHZvaWQgaW1Db250ZXh0UHJlZWRpdENo
YW5nZWQoR3RrSU1Db250ZXh0KiBjb250ZXh0LCBFZGl0b3JDbGllbnQqIGNsaWVudCkKIHsKKyAg
ICBGcmFtZSogZnJhbWUgPSBjb3JlKGNsaWVudC0+d2ViVmlldygpKS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0
b3IoKS0+Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBXZSBpZ25vcmUgdGhl
IHByb3ZpZGVkIFBhbmdvQXR0ckxpc3QgZm9yIG5vdy4KLSAgICBnY2hhciogbmV3UHJlZWRpdCA9
IDA7Ci0gICAgZ3RrX2ltX2NvbnRleHRfZ2V0X3ByZWVkaXRfc3RyaW5nKGNvbnRleHQsICZuZXdQ
cmVlZGl0LCBOVUxMLCBOVUxMKTsKLSAgICBzZXRQZW5kaW5nUHJlZWRpdChuZXdQcmVlZGl0KTsK
KyAgICBHT3duUHRyPGdjaGFyPiBuZXdQcmVlZGl0KDApOworICAgIGd0a19pbV9jb250ZXh0X2dl
dF9wcmVlZGl0X3N0cmluZyhjb250ZXh0LCAmbmV3UHJlZWRpdC5vdXRQdHIoKSwgMCwgMCk7CisK
KyAgICBTdHJpbmcgcHJlZWRpdFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgobmV3UHJlZWRpdC5n
ZXQoKSk7CisgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOworICAg
IHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIHByZWVkaXRTdHJpbmcu
bGVuZ3RoKCksIENvbG9yKDAsIDAsIDApLCBmYWxzZSkpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+
c2V0Q29tcG9zaXRpb24ocHJlZWRpdFN0cmluZywgdW5kZXJsaW5lcywgMCwgMCk7Cit9CisKK3Zv
aWQgRWRpdG9yQ2xpZW50Ojp1cGRhdGVQZW5kaW5nQ29tcG9zaXRpb24oY29uc3QgZ2NoYXIqIG5l
d0NvbXBvc2l0aW9uKQoreworICAgIC8vIFRoZSBJTUNvbnRleHQgbWF5IHNpZ25hbCBtb3JlIHRo
YW4gb25lIGNvbXBsZXRlZCBjb21wb3NpdGlvbiBpbiBhIHJvdywKKyAgICAvLyBpbiB3aGljaCBj
YXNlIHdlIHdhbnQgdG8gYXBwZW5kIHRoZW0sIHJhdGhlciB0aGFuIG92ZXJ3cml0ZSB0aGUgb2xk
IG9uZS4KKyAgICBpZiAoIW1fcGVuZGluZ0NvbXBvc2l0aW9uKQorICAgICAgICBtX3BlbmRpbmdD
b21wb3NpdGlvbi5zZXQoZ19zdHJkdXAobmV3Q29tcG9zaXRpb24pKTsKKyAgICBlbHNlCisgICAg
ICAgIG1fcGVuZGluZ0NvbXBvc2l0aW9uLnNldChnX3N0cmNvbmNhdChtX3BlbmRpbmdDb21wb3Np
dGlvbi5nZXQoKSwgbmV3Q29tcG9zaXRpb24sIE5VTEwpKTsKIH0KIAogdm9pZCBFZGl0b3JDbGll
bnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBhY3RpdmUpCkBAIC0xMzksNyArMTQ4LDcgQEAg
aW50IEVkaXRvckNsaWVudDo6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKQogCiBib29sIEVkaXRv
ckNsaWVudDo6c2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNvcmU6OlJhbmdlKikKIHsKLSAgICBjbGVh
clBlbmRpbmdJTURhdGEoKTsKKyAgICBjbGVhclBlbmRpbmdDb21wb3NpdGlvbigpOwogCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0Nyw3ICsxNTYsNyBAQCBi
b29sIEVkaXRvckNsaWVudDo6c2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNvcmU6OlJhbmdlKikKIAog
Ym9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZEVuZEVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKQogewot
ICAgIGNsZWFyUGVuZGluZ0lNRGF0YSgpOworICAgIGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7
CiAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiB0cnVlOwpAQCAtNDY2LDggKzQ3
NSwxMiBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2
ZW50KiBldmVudCkKICAgICAgICAgICAgIGlmICghY29tbWFuZC5pc1RleHRJbnNlcnRpb24oKSAm
JiBjb21tYW5kLmV4ZWN1dGUoZXZlbnQpKQogICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZh
dWx0SGFuZGxlZCgpOwogCisgICAgICAgICAgICBjbGVhclBlbmRpbmdDb21wb3NpdGlvbigpOwog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYgKGNvbW1hbmQuZXhlY3V0ZShl
dmVudCkpIHsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb21tYW5kLmV4ZWN1dGUoZXZlbnQp
KSB7CisgICAgICAgICAgICBjbGVhclBlbmRpbmdDb21wb3NpdGlvbigpOwogICAgICAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTQ3OCwyNSArNDkxLDE0IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2Fy
ZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIC8vIGJlIHJlZmxlY3RlZCBpbiB0aGUg
Y29udGVudHMgb2YgdGhlIGZpZWxkIHVudGlsIHRoZSBrZXl1cCBET00gZXZlbnQuCiAgICAgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpIHsKIAotICAgICAg
ICBpZiAocGVuZGluZ0NvbXBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBTdHJpbmcgY29tcG9zaXRp
b25TdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHBlbmRpbmdDb21wb3NpdGlvbik7Ci0gICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmlu
Zyk7Ci0KLSAgICAgICAgICAgIGNsZWFyUGVuZGluZ0lNRGF0YSgpOwotICAgICAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0KLSAgICAgICAgfSBlbHNlIGlmIChwZW5kaW5nUHJl
ZWRpdCkgewotICAgICAgICAgICAgU3RyaW5nIHByZWVkaXRTdHJpbmcgPSBTdHJpbmc6OmZyb21V
VEY4KHBlbmRpbmdQcmVlZGl0KTsKLQotICAgICAgICAgICAgLy8gRG9uJ3QgdXNlIGFuIGVtcHR5
IHByZWVkaXQgYXMgaXQgd2lsbCBkZXN0cm95IHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAvLyBz
ZWxlY3Rpb24sIGV2ZW4gaWYgdGhlIGNvbXBvc2l0aW9uIGlzIGNhbmNlbGxlZCBvciBmYWlscyBs
YXRlciBvbi4KLSAgICAgICAgICAgIGlmICghcHJlZWRpdFN0cmluZy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXM7Ci0g
ICAgICAgICAgICAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwg
cHJlZWRpdFN0cmluZy5sZW5ndGgoKSwgQ29sb3IoMCwgMCwgMCksIGZhbHNlKSk7Ci0gICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihwcmVlZGl0U3RyaW5nLCB1
bmRlcmxpbmVzLCAwLCAwKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY2xlYXJQZW5k
aW5nSU1EYXRhKCk7CisgICAgICAgIC8vIElmIHdlIGhhdmUgYSBwZW5kaW5nIGNvbXBvc2l0aW9u
IGF0IHRoaXMgcG9pbnQsIGl0IGhhcHBlbmVkIHdoaWxlCisgICAgICAgIC8vIGZpbHRlcmluZyBh
IGtleXByZXNzLCBzbyB3ZSB0cmVhdCBpdCBhcyBhIG5vcm1hbCB0ZXh0IGluc2VydGlvbi4KKyAg
ICAgICAgLy8gVGhpcyB3aWxsIGFsc28gZW5zdXJlIHRoYXQgaWYgdGhlIGtleXByZXNzIGV2ZW50
IGhhbmRsZXIgY2hhbmdlZCB0aGUKKyAgICAgICAgLy8gY3VycmVudGx5IGZvY3VzZWQgbm9kZSwg
dGhlIHRleHQgaXMgc3RpbGwgaW5zZXJ0ZWQgaW50byB0aGUgb3JpZ2luYWwKKyAgICAgICAgLy8g
bm9kZSAoaW5zZXJ0VGV4dCgpIGhhcyB0aGlzIGxvZ2ljLCBidXQgY29uZmlybUNvbXBvc2l0aW9u
KCkgZG9lcyBub3QpLgorICAgICAgICBpZiAobV9wZW5kaW5nQ29tcG9zaXRpb24pIHsKKyAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChTdHJpbmc6OmZyb21VVEY4KG1fcGVu
ZGluZ0NvbXBvc2l0aW9uLmdldCgpKSwgZXZlbnQpOworICAgICAgICAgICAgY2xlYXJQZW5kaW5n
Q29tcG9zaXRpb24oKTsKICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
CiAgICAgICAgIH0gZWxzZSB7CkBAIC01MjAsMTAgKzUyMiw0MyBAQCB2b2lkIEVkaXRvckNsaWVu
dDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlm
ICghdGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICAvLyBUT0RPOiBXZSBuZWVkIHRvIGRlY2lkZSB3aGljaCBmaWx0
ZXJlZCBrZXlzdHJva2VzIHNob3VsZCBiZSB0cmVhdGVkIGFzIElNCi0gICAgLy8gZXZlbnRzIGFu
ZCB3aGljaCBzaG91bGQgbm90LgogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gbV93
ZWJWaWV3LT5wcml2OwotICAgIGd0a19pbV9jb250ZXh0X2ZpbHRlcl9rZXlwcmVzcyhwcml2LT5p
bUNvbnRleHQsIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtFdmVudEtleSgpKTsKKworICAgIC8vIFNv
bWUgSU0gY29udGV4dHMgKGUuZy4gJ3NpbXBsZScpIHdpbGwgYWN0IGFzIGlmIHRoZXkgZmlsdGVy
IGV2ZXJ5CisgICAgLy8ga2V5c3Ryb2tlIGFuZCBqdXN0IGlzc3VlIGEgJ2NvbW1pdCcgc2lnbmFs
IGR1cmluZyBoYW5kbGluZy4gSW4gc2l0dWF0aW9ucworICAgIC8vIHdoZXJlIHRoZSAnY29tbWl0
JyBzaWduYWwgaGFwcGVucyBkdXJpbmcgZmlsdGVyaW5nIGFuZCB0aGVyZSBpcyBubyBhY3RpdmUK
KyAgICAvLyBjb21wb3NpdGlvbiwgYWN0IGFzIGlmIHRoZSBrZXlzdHJva2Ugd2FzIG5vdCBmaWx0
ZXJlZC4KKworICAgIC8vIEhlcmUgaXMgYSB0eXBpY2FsIHNlcXVlbmNlIG9mIGV2ZW50cyBmb3Ig
dGhlICdzaW1wbGUnIGNvbnRleHQ6CisgICAgLy8gMS4gR0RLIGtleSBwcmVzcyBldmVudCAtPiB3
ZWJraXRfd2ViX3ZpZXdfa2V5X3ByZXNzX2V2ZW50CisgICAgLy8gMi4gS2V5ZG93biBldmVudCAt
PiBFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bgorICAgIC8vICAgICBndGtf
aW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MgcmV0dXJucyB0cnVlLCBidXQgdGhlcmUgaXMgYXBl
bmRpbmcKKyAgICAvLyAgICAgY29tcG9zaXRpb24gc28gZXZlbnQtPnByZXZlbnREZWZhdWx0IGlz
IG5vdCBjYWxsZWQgKGJlbG93KS4KKyAgICAvLyAzLiBLZXlkb3duIGV2ZW50IGJ1YmJsZXMgdGhy
b3VnaCB0aGUgRE9NCisgICAgLy8gNC4gS2V5ZG93biBldmVudCAtPiBFZGl0b3JDbGllbnQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQKKyAgICAvLyAgICAgTm8gYWN0aW9uIHRha2VuLgorICAgIC8vIDQu
IEdESyBrZXkgcmVsZWFzZSBldmVudCAtPiB3ZWJraXRfd2ViX3ZpZXdfa2V5X3JlbGVhc2VfZXZl
bnQKKyAgICAvLyA1LiBndGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MgaXMgY2FsbGVkIG9u
IHRoZSByZWxlYXNlIGV2ZW50LgorICAgIC8vICAgICBTaW1wbGUgZG9lcyBub3QgZmlsdGVyIG1v
c3Qga2V5IHJlbGVhc2VzLCBzbyB0aGUgZXZlbnQgY29udGludWVzLgorICAgIC8vIDYuIEtleXBy
ZXNzIGV2ZW50IGJ1YmJsZXMgdGhyb3VnaCB0aGUgRE9NLgorICAgIC8vIDcuIEtleXByZXNzIGV2
ZW50IC0+IEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudAorICAgIC8vICAgICBwZW5k
aW5nIGNvbXBvc2l0aW9uIGlzIGluc2VydGVkLgorICAgIC8vIDguIEtleXVwIGV2ZW50IGJ1YmJs
ZXMgdGhyb3VnaCB0aGUgRE9NLgorICAgIC8vIDkuIEtleXVwIGV2ZW50IC0+IEVkaXRvckNsaWVu
dDo6aGFuZGxlS2V5Ym9hcmRFdmVudAorICAgIC8vICAgICBObyBhY3Rpb24gdGFrZW4uCisKKyAg
ICAvLyBUaGVyZSBhcmUgdHdvIHNpdHVhdGlvbnMgd2hlcmUgd2UgZG8gZmlsdGVyIHRoZSBrZXlz
dHJva2U6CisgICAgLy8gMS4gVGhlIElNQ29udGV4dCBpbnN0cnVjdGVkIHVzIHRvIGZpbHRlciBh
bmQgd2UgaGF2ZSBubyBwZW5kaW5nIGNvbXBvc2l0aW9uLgorICAgIC8vIDIuIFRoZSBJTUNvbnRl
eHQgZGlkIG5vdCBpbnN0cnVjdCB1cyB0byBmaWx0ZXIsIGJ1dCB0aGUga2V5c3Ryb2tlIGNhdXNl
ZCBhCisgICAgLy8gICAgY29tcG9zaXRpb24gaW4gcHJvZ3Jlc3MgdG8gZmluaXNoLiBJdCBzZWVt
cyB0aGF0IHNvbWV0aW1lcyBTQ0lNIHdpbGwgZmluaXNoCisgICAgLy8gICAgYSBjb21wb3NpdGlv
biBhbmQgbm90IG1hcmsgdGhlIGtleXN0cm9rZSBhcyBmaWx0ZXJlZC4KKyAgICBjbGVhclBlbmRp
bmdDb21wb3NpdGlvbigpOworICAgIG1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCA9ICF0
YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgaWYgKChndGtfaW1f
Y29udGV4dF9maWx0ZXJfa2V5cHJlc3MocHJpdi0+aW1Db250ZXh0LCBldmVudC0+a2V5RXZlbnQo
KS0+Z2RrRXZlbnRLZXkoKSkgJiYgIW1fcGVuZGluZ0NvbXBvc2l0aW9uKSB8fAorICAgICAgICAo
IW1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCAmJiAhdGFyZ2V0RnJhbWUtPmVkaXRvcigp
LT5oYXNDb21wb3NpdGlvbigpKSkKKyAgICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7CisK
KyAgICBtX3RyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQgPSBmYWxzZTsKIH0KIAogRWRpdG9y
Q2xpZW50OjpFZGl0b3JDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKZGlmZiAtLWdpdCBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCmluZGV4IDkyOTI2NTEuLjJmMDJkMGMg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgK
KysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaApAQCAtMiw2
ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3JnPgog
ICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMzQsOCArMzUsMTAgQEAKIAogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL2d0ay9HT3duUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktp
dFdlYlZpZXc7Cit0eXBlZGVmIGNoYXIgZ2NoYXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBQYWdlOwpAQCAtNTMsNiArNTYsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAg
cHVibGljOgogICAgICAgICBFZGl0b3JDbGllbnQoV2ViS2l0V2ViVmlldyopOwogICAgICAgICB+
RWRpdG9yQ2xpZW50KCk7CisgICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcoKSB7IHJldHVy
biBtX3dlYlZpZXc7IH0KKyAgICAgICAgYm9vbCB0cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50
KCkgeyByZXR1cm4gbV90cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50OyB9CisgICAgICAgIHZv
aWQgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKSB7IG1fcGVuZGluZ0NvbXBvc2l0aW9uLnNldCgw
KTsgfQorICAgICAgICBib29sIGhhc1BlbmRpbmdDb21wb3NpdGlvbigpIHsgcmV0dXJuIG1fcGVu
ZGluZ0NvbXBvc2l0aW9uOyB9CisgICAgICAgIHZvaWQgdXBkYXRlUGVuZGluZ0NvbXBvc2l0aW9u
KGNvbnN0IGNoYXIqKTsKIAogICAgICAgICAvLyBmcm9tIEVkaXRvckNsaWVudAogICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOwpAQCAtMTIwLDYgKzEyOCw4IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJW
aWV3OworICAgICAgICBib29sIG1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudDsKKyAgICAg
ICAgR093blB0cjxnY2hhcj4gbV9wZW5kaW5nQ29tcG9zaXRpb247CiAgICAgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay90ZXN0cy90ZXN0a2V5ZXZlbnRzLmMgYi9XZWJLaXQvZ3RrL3Rl
c3RzL3Rlc3RrZXlldmVudHMuYwppbmRleCBlZTc3MjhjLi5kZjVkODMwIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RrZXlldmVudHMuYworKysgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rl
c3RrZXlldmVudHMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
TWFydGluIFJvYmluc29uCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgTWFydGluIFJvYmlu
c29uIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMiwxMiAr
MjIsMTYgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgog
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0
cmluZ1JlZi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgorCiAK
ICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKIAogdHlwZWRlZiBzdHJ1Y3QgewotICBj
aGFyKiBwYWdlOwotICBnYm9vbGVhbiBzaG91bGRCZUhhbmRsZWQ7CisgICAgY2hhciogcGFnZTsK
KyAgICBjb25zdCBjaGFyKiB0ZXh0OworICAgIGdib29sZWFuIHNob3VsZEJlSGFuZGxlZDsKIH0g
VGVzdEluZm87CiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTgyLDcgKzg2LDYgQEAgc3RhdGljIGdi
b29sZWFuIGtleV9wcmVzc19ldmVudF9jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtFdmVu
dCogZXZlbnQsIGdwb2kKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLQogc3RhdGljIGdib29sZWFu
IGtleV9yZWxlYXNlX2V2ZW50X2NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdka0V2ZW50KiBl
dmVudCwgZ3BvaW50ZXIgZGF0YSkKIHsKICAgICAvLyBXZWJDb3JlIG5ldmVyIHNlZW1zIHRvIG1h
cmsga2V5dXAgZXZlbnRzIGFzIGhhbmRsZWQuCkBAIC05NSwxMSArOTgsMTUgQEAgc3RhdGljIGdi
b29sZWFuIGtleV9yZWxlYXNlX2V2ZW50X2NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdka0V2
ZW50KiBldmVudCwgZ3AKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkIGxvYWRf
c3RhdHVzX2NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqIHNwZWMsIGdwb2lu
dGVyIGRhdGEpCitzdGF0aWMgdm9pZCB0ZXN0X2tleXByZXNzX2V2ZW50c19sb2FkX3N0YXR1c19j
YihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBzcGVjLCBncG9pbnRlciBkYXRh
KQogewogICAgIEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSA9IChLZXlFdmVudEZpeHR1cmUqKWRh
dGE7CiAgICAgV2ViS2l0TG9hZFN0YXR1cyBzdGF0dXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xv
YWRfc3RhdHVzKHdlYlZpZXcpOwogICAgIGlmIChzdGF0dXMgPT0gV0VCS0lUX0xPQURfRklOSVNI
RUQpIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAia2V5LXBy
ZXNzLWV2ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKGtleV9wcmVz
c19ldmVudF9jYiksIGZpeHR1cmUpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUt
PndlYlZpZXcsICJrZXktcmVsZWFzZS1ldmVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
R19DQUxMQkFDSyhrZXlfcmVsZWFzZV9ldmVudF9jYiksIGZpeHR1cmUpOwogICAgICAgICBndGtf
dGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnYScpLCAw
KTsKICAgICB9CkBAIC0xMTAsMjUgKzExNywxNCBAQCBnYm9vbGVhbiBtYXBfZXZlbnRfY2IoR3Rr
V2lkZ2V0ICp3aWRnZXQsIEdka0V2ZW50KiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKIHsKICAgICBn
dGtfd2lkZ2V0X2dyYWJfZm9jdXMod2lkZ2V0KTsKICAgICBLZXlFdmVudEZpeHR1cmUqIGZpeHR1
cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilkYXRhOwotCi0gICAgZ19zaWduYWxfY29ubmVjdChmaXh0
dXJlLT53ZWJWaWV3LCAia2V5LXByZXNzLWV2ZW50IiwKLSAgICAgICAgICAgICAgICAgICAgIEdf
Q0FMTEJBQ0soa2V5X3ByZXNzX2V2ZW50X2NiKSwgZml4dHVyZSk7Ci0gICAgZ19zaWduYWxfY29u
bmVjdChmaXh0dXJlLT53ZWJWaWV3LCAia2V5LXJlbGVhc2UtZXZlbnQiLAotICAgICAgICAgICAg
ICAgICAgICAgR19DQUxMQkFDSyhrZXlfcmVsZWFzZV9ldmVudF9jYiksIGZpeHR1cmUpOwotCi0g
ICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1
cyIsCi0gICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKGxvYWRfc3RhdHVzX2NiKSwgZml4
dHVyZSk7Ci0KICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcoZml4dHVyZS0+d2ViVmll
dywgZml4dHVyZS0+aW5mby0+cGFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRleHQvaHRtbCIsICJ1dGYtOCIsICJmaWxlOi8vIik7Ci0KICAgICByZXR1cm4gRkFMU0U7CiB9
CiAKLXN0YXRpYyB2b2lkIHRlc3Rfa2V5cHJlc3MoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBn
Y29uc3Rwb2ludGVyIGRhdGEpCitzdGF0aWMgdm9pZCBzZXR1cF9rZXlldmVudF90ZXN0KEtleUV2
ZW50Rml4dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRlciBkYXRhLCBHQ2FsbGJhY2sgbG9hZF9l
dmVudF9jYWxsYmFjaykKIHsKICAgICBmaXh0dXJlLT5pbmZvID0gKFRlc3RJbmZvKilkYXRhOwot
CiAgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53aW5kb3csICJtYXAtZXZlbnQiLAogICAg
ICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhtYXBfZXZlbnRfY2IpLCBmaXh0dXJlKTsKIApA
QCAtMTM2LDEwICsxMzIsMTYxIEBAIHN0YXRpYyB2b2lkIHRlc3Rfa2V5cHJlc3MoS2V5RXZlbnRG
aXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCiAgICAgZ3RrX3dpZGdldF9zaG93
KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldykpOwogICAgIGd0a193aW5kb3dfcHJlc2VudChH
VEtfV0lORE9XKGZpeHR1cmUtPndpbmRvdykpOwogCisgICAgZ19zaWduYWxfY29ubmVjdChmaXh0
dXJlLT53ZWJWaWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1cyIsCisgICAgICAgICAgICAgICAgICAg
ICBsb2FkX2V2ZW50X2NhbGxiYWNrLCBmaXh0dXJlKTsKKwogICAgIGdfbWFpbl9sb29wX3J1bihm
aXh0dXJlLT5sb29wKTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9rZXlwcmVzc19ldmVudHMoS2V5
RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCit7CisgICAgc2V0dXBf
a2V5ZXZlbnRfdGVzdChmaXh0dXJlLCBkYXRhLCBHX0NBTExCQUNLKHRlc3Rfa2V5cHJlc3NfZXZl
bnRzX2xvYWRfc3RhdHVzX2NiKSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBlbGVtZW50X3RleHRf
ZXF1YWxfdG8oSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IGdjaGFyKiB0ZXh0KQoreworICAg
IEpTU3RyaW5nUmVmIHNjcmlwdFN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KAorICAgICAgIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImluXCIpLnZhbHVlOyIp
OworICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlw
dFN0cmluZywgMCwgMCwgMCwgMCk7CisgICAgSlNTdHJpbmdSZWxlYXNlKHNjcmlwdFN0cmluZyk7
CisKKyAgICAvLyBJZiB0aGUgdmFsdWUgaXNuJ3QgYSBzdHJpbmcsIHRoZSBlbGVtZW50IGlzIHBy
b2JhYmx5IGEgZGl2CisgICAgLy8gc28gZ3JhYiB0aGUgaW5uZXJUZXh0IGluc3RlYWQuCisgICAg
aWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKSB7CisgICAgICAgIEpTU3RyaW5n
UmVmIHNjcmlwdFN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKAorICAgICAg
ICAgICJ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJpblwiKS5pbm5lclRleHQ7Iik7
CisgICAgICAgIHZhbHVlID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHRTdHJpbmcs
IDAsIDAsIDAsIDApOworICAgICAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0U3RyaW5nKTsKKyAg
ICB9CisKKyAgICBnX2Fzc2VydChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKTsKKyAg
ICBKU1N0cmluZ1JlZiBpbnB1dFN0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwg
dmFsdWUsIDApOworICAgIGdfYXNzZXJ0KGlucHV0U3RyaW5nKTsKKworICAgIGdpbnQgc2l6ZSA9
IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShpbnB1dFN0cmluZyk7CisgICAgZ2No
YXIqIGNTdHJpbmcgPSBnX21hbGxvYyhzaXplKTsKKyAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5n
KGlucHV0U3RyaW5nLCBjU3RyaW5nLCBzaXplKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UoaW5wdXRT
dHJpbmcpOworCisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gZ191dGY4X2NvbGxhdGUoY1N0cmluZywg
dGV4dCkgPT0gMDsKKyAgICBnX2ZyZWUoY1N0cmluZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworc3RhdGljIHZvaWQgdGVzdF9pbWVfbG9hZF9zdGF0dXNfY2IoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgR1BhcmFtU3BlYyogc3BlYywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBLZXlFdmVudEZp
eHR1cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilkYXRhOworICAgIFdlYktpdExvYWRT
dGF0dXMgc3RhdHVzID0gd2Via2l0X3dlYl92aWV3X2dldF9sb2FkX3N0YXR1cyh3ZWJWaWV3KTsK
KyAgICBpZiAoc3RhdHVzICE9IFdFQktJVF9MT0FEX0ZJTklTSEVEKQorICAgICAgICByZXR1cm47
CisKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0
X2dsb2JhbF9jb250ZXh0KAorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUo
d2ViVmlldykpOworICAgIGdfYXNzZXJ0KGNvbnRleHQpOworCisgICAgR3RrSU1Db250ZXh0KiBp
bUNvbnRleHQgPSAwOworICAgIGdfb2JqZWN0X2dldCh3ZWJWaWV3LCAiaW0tY29udGV4dCIsICZp
bUNvbnRleHQsIE5VTEwpOworICAgIGdfYXNzZXJ0KGltQ29udGV4dCk7CisKKyAgICAvLyBUZXN0
IHRoYXQgY29tbWl0cyB0aGF0IGhhcHBlbiBvdXRzaWRlIG9mIGtleSBldmVudHMKKyAgICAvLyBj
aGFuZ2UgdGhlIHRleHQgZmllbGQgaW1tZWRpYXRlbHkuIFRoaXMgY2xvc2VseSByZXBsaWNhdGVz
CisgICAgLy8gdGhlIGJlaGF2aW9yIG9mIFNDSU0uCisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0
X2VxdWFsX3RvKGNvbnRleHQsICIiKSk7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGltQ29u
dGV4dCwgImNvbW1pdCIsICJhIik7CisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3Rv
KGNvbnRleHQsICJhIikpOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShpbUNvbnRleHQsICJj
b21taXQiLCAiYiIpOworICAgIGdfYXNzZXJ0KGVsZW1lbnRfdGV4dF9lcXVhbF90byhjb250ZXh0
LCAiYWIiKSk7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGltQ29udGV4dCwgImNvbW1pdCIs
ICJjIik7CisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsICJhYmMi
KSk7CisKKyAgICBnX29iamVjdF91bnJlZihpbUNvbnRleHQpOworICAgIGdfbWFpbl9sb29wX3F1
aXQoZml4dHVyZS0+bG9vcCk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfaW1lKEtleUV2ZW50Rml4
dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRlciBkYXRhKQoreworICAgIHNldHVwX2tleWV2ZW50
X3Rlc3QoZml4dHVyZSwgZGF0YSwgR19DQUxMQkFDSyh0ZXN0X2ltZV9sb2FkX3N0YXR1c19jYikp
OworfQorCitzdGF0aWMgZ2Jvb2xlYW4gdmVyaWZ5X2NvbnRlbnRzKGdwb2ludGVyIGRhdGEpCit7
CisgICAgS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlID0gKEtleUV2ZW50Rml4dHVyZSopZGF0YTsK
KyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2ds
b2JhbF9jb250ZXh0KAorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUoZml4
dHVyZS0+d2ViVmlldykpOworICAgIGdfYXNzZXJ0KGNvbnRleHQpOworCisgICAgZ19hc3NlcnQo
ZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsIGZpeHR1cmUtPmluZm8tPnRleHQpKTsKKyAg
ICBnX21haW5fbG9vcF9xdWl0KGZpeHR1cmUtPmxvb3ApOworICAgIHJldHVybiBGQUxTRTsKK30K
Kworc3RhdGljIHZvaWQgdGVzdF9ibG9ja2luZ19sb2FkX3N0YXR1c19jYihXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBzcGVjLCBncG9pbnRlciBkYXRhKQoreworICAgIEtleUV2
ZW50Rml4dHVyZSogZml4dHVyZSA9IChLZXlFdmVudEZpeHR1cmUqKWRhdGE7CisgICAgV2ViS2l0
TG9hZFN0YXR1cyBzdGF0dXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRfc3RhdHVzKHdlYlZp
ZXcpOworICAgIGlmIChzdGF0dXMgIT0gV0VCS0lUX0xPQURfRklOSVNIRUQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIFRoZSBmaXJzdCBrZXlwcmVzcyBldmVudCBzaG91bGQgbm90IG1vZGlm
eSB0aGUgZmllbGQuCisgICAgZml4dHVyZS0+aW5mby0+dGV4dCA9ICJiYyI7CisgICAgZ3RrX3Rl
c3Rfd2lkZ2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnYScpLCAwKTsKKyAg
ICBndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdiJyks
IDApOworICAgIGd0a190ZXN0X3dpZGdldF9zZW5kX2tleShHVEtfV0lER0VUKGZpeHR1cmUtPndl
YlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2
YWwoJ2MnKSwgMCk7CisgICAgZ19pZGxlX2FkZCh2ZXJpZnlfY29udGVudHMsIGZpeHR1cmUpOwor
fQorCitzdGF0aWMgdm9pZCB0ZXN0X2Jsb2NraW5nKEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSwg
Z2NvbnN0cG9pbnRlciBkYXRhKQoreworICAgIHNldHVwX2tleWV2ZW50X3Rlc3QoZml4dHVyZSwg
ZGF0YSwgR19DQUxMQkFDSyh0ZXN0X2Jsb2NraW5nX2xvYWRfc3RhdHVzX2NiKSk7Cit9CiAKKyNp
ZmRlZiBHREtfV0lORE9XSU5HX1gxMQorc3RhdGljIHZvaWQgdGVzdF94aW1fbG9hZF9zdGF0dXNf
Y2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFtU3BlYyogc3BlYywgZ3BvaW50ZXIgZGF0
YSkKK3sKKyAgICBLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilk
YXRhOworICAgIFdlYktpdExvYWRTdGF0dXMgc3RhdHVzID0gd2Via2l0X3dlYl92aWV3X2dldF9s
b2FkX3N0YXR1cyh3ZWJWaWV3KTsKKyAgICBpZiAoc3RhdHVzICE9IFdFQktJVF9MT0FEX0ZJTklT
SEVEKQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtJTUNvbnRleHQqIGltQ29udGV4dCA9IDA7
CisgICAgZ19vYmplY3RfZ2V0KHdlYlZpZXcsICJpbS1jb250ZXh0IiwgJmltQ29udGV4dCwgTlVM
TCk7CisgICAgZ19hc3NlcnQoaW1Db250ZXh0KTsKKworICAgIGNvbnN0IGNoYXIqIG9yaWdpbmFs
SWQgPSBndGtfaW1fbXVsdGljb250ZXh0X2dldF9jb250ZXh0X2lkKEdUS19JTV9NVUxUSUNPTlRF
WFQoaW1Db250ZXh0KSk7CisgICAgZ3RrX2ltX211bHRpY29udGV4dF9zZXRfY29udGV4dF9pZChH
VEtfSU1fTVVMVElDT05URVhUKGltQ29udGV4dCksICJ4aW0iKTsKKworICAgIC8vIFRlc3QgdGhh
dCBjb21taXRzIHRoYXQgaGFwcGVuIG91dHNpZGUgb2Yga2V5IGV2ZW50cworICAgIC8vIGNoYW5n
ZSB0aGUgdGV4dCBmaWVsZCBpbW1lZGlhdGVseS4gVGhpcyBjbG9zZWx5IHJlcGxpY2F0ZXMKKyAg
ICAvLyB0aGUgYmVoYXZpb3Igb2YgU0NJTS4KKyAgICBmaXh0dXJlLT5pbmZvLT50ZXh0ID0gImRl
YmlhbiI7CisgICAgZ3RrX3Rlc3Rfd2lkZ2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4dHVyZS0+
d2ViVmlldyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tl
eXZhbCgnZCcpLCAwKTsKKyAgICBndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChm
aXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX3VuaWNv
ZGVfdG9fa2V5dmFsKCdlJyksIDApOworICAgIGd0a190ZXN0X3dpZGdldF9zZW5kX2tleShHVEtf
V0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZGtfdW5pY29kZV90b19rZXl2YWwoJ2InKSwgMCk7CisgICAgZ3RrX3Rlc3Rfd2lkZ2V0X3NlbmRf
a2V5KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnaScpLCAwKTsKKyAgICBndGtfdGVzdF93aWRn
ZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdhJyksIDApOworICAgIGd0a190
ZXN0X3dpZGdldF9zZW5kX2tleShHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2YWwoJ24nKSwgMCk7CisK
KyAgICBndGtfaW1fbXVsdGljb250ZXh0X3NldF9jb250ZXh0X2lkKEdUS19JTV9NVUxUSUNPTlRF
WFQoaW1Db250ZXh0KSwgb3JpZ2luYWxJZCk7CisgICAgZ19vYmplY3RfdW5yZWYoaW1Db250ZXh0
KTsKKworICAgIGdfaWRsZV9hZGQodmVyaWZ5X2NvbnRlbnRzLCBmaXh0dXJlKTsKIH0KIAorc3Rh
dGljIHZvaWQgdGVzdF94aW0oS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVy
IGRhdGEpCit7CisgICAgc2V0dXBfa2V5ZXZlbnRfdGVzdChmaXh0dXJlLCBkYXRhLCBHX0NBTExC
QUNLKHRlc3RfeGltX2xvYWRfc3RhdHVzX2NiKSk7Cit9CisjZW5kaWYKKwogaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQogewogICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CkBAIC0xNDcs
MzAgKzI5NCw4NSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKICAgICBnX3Rl
c3RfYnVnX2Jhc2UoImh0dHBzOi8vYnVncy53ZWJraXQub3JnLyIpOwogCi0gICAgZ190ZXN0X2Fk
ZCgiL3dlYmtpdC9rZXlldmVudC90ZXh0ZmllbGQiLCBLZXlFdmVudEZpeHR1cmUsCi0gICAgICAg
ICAgICAgICB0ZXN0X2luZm9fbmV3KCI8aHRtbD48Ym9keT48aW5wdXQgaWQ9XCJpblwiIHR5cGU9
XCJ0ZXh0XCI+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHNjcmlwdD5kb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOyIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+IiwgVFJVRSksCisKKyAgICAvLyBXZSdsbCB0
ZXN0IGlucHV0IG9uIGEgc2xldyBvZiBkaWZmZXJlbnQgbm9kZSB0eXBlcy4gS2V5IGV2ZW50cyB0
bworICAgIC8vIHRleHQgaW5wdXRzIGFuZCBlZGl0YWJsZSBkaXZzIHNob3VsZCBiZSBtYXJrZWQg
YXMgaGFuZGxlZC4gS2V5IGV2ZW50cworICAgIC8vIHRvIGJ1dHRvbnMgYW5kIGxpbmtzIHNob3Vs
ZCBub3QuCisgICAgY29uc3QgY2hhciogdGV4dGlucHV0X2h0bWwgPSAiPGh0bWw+PGJvZHk+PGlu
cHV0IGlkPVwiaW5cIiB0eXBlPVwidGV4dFwiPiIKKyAgICAgICAgIjxzY3JpcHQ+ZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8L3NjcmlwdD48L2JvZHk+PC9odG1sPiI7Cisg
ICAgY29uc3QgY2hhciogYnV0dG9uX2h0bWwgPSAiPGh0bWw+PGJvZHk+PGlucHV0IGlkPVwiaW5c
IiB0eXBlPVwiYnV0dG9uXCI+IgorICAgICAgICAiPHNjcmlwdD5kb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0PjwvYm9keT48L2h0bWw+IjsKKyAgICBjb25zdCBj
aGFyKiBsaW5rX2h0bWwgPSAiPGh0bWw+PGJvZHk+PGEgaHJlZj1cImh0dHA6Ly93d3cuZ25vbWUu
b3JnXCIgaWQ9XCJpblwiPiIKKyAgICAgICAgIkxJTktZIE1DTElOS0VSU09OPC9hPjxzY3JpcHQ+
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8L3NjcmlwdD4iCisgICAgICAg
ICI8L2JvZHk+PC9odG1sPiI7CisgICAgY29uc3QgY2hhciogZGl2X2h0bWwgPSAiPGh0bWw+PGJv
ZHk+PGRpdiBpZD1cImluXCIgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiPiIKKyAgICAgICAgIjxz
Y3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8L3NjcmlwdD48L2Jv
ZHk+PC9odG1sPiI7CisKKyAgICAvLyBUaGVzZSBhcmUgc2ltaWxhciB0byB0aGUgYmxvY2tzIGFi
b3ZlLCBidXQgdGhleSBzaG91bGQgYmxvY2sgdGhlIGZpcnN0CisgICAgLy8ga2V5cHJlc3MgbW9k
aWZ5aW5nIHRoZSBlZGl0YWJsZSBub2RlLgorICAgIGNvbnN0IGNoYXIqIHRleHRpbnB1dF9odG1s
X2Jsb2NraW5nID0gIjxodG1sPjxib2R5PiIKKyAgICAgICAgIjxpbnB1dCBpZD1cImluXCIgdHlw
ZT1cInRleHRcIiAiCisgICAgICAgICJvbmtleXByZXNzPVwiaWYgKGZpcnN0KSB7ZXZlbnQucHJl
dmVudERlZmF1bHQoKTtmaXJzdD1mYWxzZTt9XCI+IgorICAgICAgICAiPHNjcmlwdD5maXJzdCA9
IHRydWU7XG5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0Plxu
IgorICAgICAgICAiPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iOworICAgIGNvbnN0IGNoYXIqIGRp
dl9odG1sX2Jsb2NraW5nID0gIjxodG1sPjxib2R5PiIKKyAgICAgICAgIjxkaXYgaWQ9XCJpblwi
IGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIiAiCisgICAgICAgICJvbmtleXByZXNzPVwiaWYgKGZp
cnN0KSB7ZXZlbnQucHJldmVudERlZmF1bHQoKTtmaXJzdD1mYWxzZTt9XCI+IgorICAgICAgICAi
PHNjcmlwdD5maXJzdCA9IHRydWU7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3Vz
KCk7PC9zY3JpcHQ+XG4iCisgICAgICAgICI8L3NjcmlwdD48L2JvZHk+PC9odG1sPiI7CisKKyAg
ICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50cy9ldmVudC10ZXh0aW5wdXQiLCBLZXlFdmVu
dEZpeHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KHRleHRpbnB1dF9odG1sLCBU
UlVFKSwKICAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAotICAgICAgICAg
ICAgICAgdGVzdF9rZXlwcmVzcywKKyAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3NfZXZlbnRz
LAogICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOwotCi0gICAgZ190
ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudC9idXR0b25zIiwgS2V5RXZlbnRGaXh0dXJlLAotICAg
ICAgICAgICAgICAgdGVzdF9pbmZvX25ldygiPGh0bWw+PGJvZHk+PGlucHV0IGlkPVwiaW5cIiB0
eXBlPVwiYnV0dG9uXCI+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHNjcmlwdD5k
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOyIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+IiwgRkFMU0UpLAorICAgIGdfdGVz
dF9hZGQoIi93ZWJraXQva2V5ZXZlbnRzL2V2ZW50LWJ1dHRvbnMiLCBLZXlFdmVudEZpeHR1cmUs
CisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KGJ1dHRvbl9odG1sLCBGQUxTRSksCiAgICAg
ICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKLSAgICAgICAgICAgICAgIHRlc3Rf
a2V5cHJlc3MsCisgICAgICAgICAgICAgICB0ZXN0X2tleXByZXNzX2V2ZW50cywKICAgICAgICAg
ICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKLQotICAgIGdfdGVzdF9hZGQoIi93
ZWJraXQva2V5ZXZlbnQvbGluayIsIEtleUV2ZW50Rml4dHVyZSwKLSAgICAgICAgICAgICAgIHRl
c3RfaW5mb19uZXcoIjxodG1sPjxib2R5PjxhIGhyZWY9XCJodHRwOi8vd3d3Lmdub21lLm9yZ1wi
IGlkPVwiaW5cIj4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMSU5LWSBNQ0xJTktF
UlNPTjwvYT48c2NyaXB0PiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7PC9zY3JpcHQ+IgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiPC9ib2R5PjwvaHRtbD4iLCBGQUxTRSksCisgICAgZ190ZXN0X2FkZCgi
L3dlYmtpdC9rZXlldmVudHMvZXZlbnQtbGluayIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAg
ICAgICAgIHRlc3RfaW5mb19uZXcobGlua19odG1sLCBGQUxTRSksCiAgICAgICAgICAgICAgICBr
ZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKLSAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3MsCisg
ICAgICAgICAgICAgICB0ZXN0X2tleXByZXNzX2V2ZW50cywKICAgICAgICAgICAgICAgIGtleV9l
dmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50
L2V2ZW50LWRpdiIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5mb19u
ZXcoZGl2X2h0bWwsIFRSVUUpLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0
dXAsCisgICAgICAgICAgICAgICB0ZXN0X2tleXByZXNzX2V2ZW50cywKKyAgICAgICAgICAgICAg
IGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tl
eWV2ZW50L2ltZS10ZXh0aW5wdXQiLCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAgICAgICAgICB0
ZXN0X2luZm9fbmV3KHRleHRpbnB1dF9odG1sLCBUUlVFKSwKKyAgICAgICAgICAgICAgIGtleV9l
dmVudF9maXh0dXJlX3NldHVwLAorICAgICAgICAgICAgICAgdGVzdF9pbWUsCisgICAgICAgICAg
ICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisgICAgZ190ZXN0X2FkZCgiL3dlYmtp
dC9rZXlldmVudC9pbWUtZGl2IiwgS2V5RXZlbnRGaXh0dXJlLAorICAgICAgICAgICAgICAgdGVz
dF9pbmZvX25ldyhkaXZfaHRtbCwgVFJVRSksCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4
dHVyZV9zZXR1cCwKKyAgICAgICAgICAgICAgIHRlc3RfaW1lLAorICAgICAgICAgICAgICAga2V5
X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZl
bnQvYmxvY2stdGV4dGlucHV0IiwgS2V5RXZlbnRGaXh0dXJlLAorICAgICAgICAgICAgICAgdGVz
dF9pbmZvX25ldyh0ZXh0aW5wdXRfaHRtbF9ibG9ja2luZywgVFJVRSksCisgICAgICAgICAgICAg
ICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKKyAgICAgICAgICAgICAgIHRlc3RfYmxvY2tpbmcs
CisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisgICAgZ190ZXN0
X2FkZCgiL3dlYmtpdC9rZXlldmVudC9ibG9jay1kaXYiLCBLZXlFdmVudEZpeHR1cmUsCisgICAg
ICAgICAgICAgICB0ZXN0X2luZm9fbmV3KGRpdl9odG1sX2Jsb2NraW5nLCBUUlVFKSwKKyAgICAg
ICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAorICAgICAgICAgICAgICAgdGVzdF9i
bG9ja2luZywKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyNp
ZmRlZiBHREtfV0lORE9XSU5HX1gxMQorICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQv
eGltLXRleHRpbnB1dCIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5m
b19uZXcodGV4dGlucHV0X2h0bWwsIFRSVUUpLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2Zp
eHR1cmVfc2V0dXAsCisgICAgICAgICAgICAgICB0ZXN0X3hpbSwKKyAgICAgICAgICAgICAgIGtl
eV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2
ZW50L3hpbS1kaXYiLCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9f
bmV3KGRpdl9odG1sLCBUUlVFKSwKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3Nl
dHVwLAorICAgICAgICAgICAgICAgdGVzdF94aW0sCisgICAgICAgICAgICAgICBrZXlfZXZlbnRf
Zml4dHVyZV90ZWFyZG93bik7CisjZW5kaWYKIAogICAgIHJldHVybiBnX3Rlc3RfcnVuKCk7CiB9
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDhjNWI4MDIuLmMyM2VlN2YgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC01MTAsMTIgKzUxMCwxOSBAQCBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2tleV9yZWxlYXNlX2V2ZW50KEd0a1dpZGdldCog
d2lkZ2V0LCBHZGtFdmVudEtleQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJL
SVRfV0VCX1ZJRVcod2lkZ2V0KTsKIAorICAgIC8vIEdUSysgSU0gY29udGV4dHMgb2Z0ZW4gcmVx
dWlyZSB1cyB0byBmaWx0ZXIga2V5IHJlbGVhc2UgZXZlbnRzLCB3aGljaAorICAgIC8vIFdlYkNv
cmUgZG9lcyBub3QgZG8gYnkgZGVmYXVsdCwgc28gd2UgZmlsdGVyIHRoZSBldmVudCBoZXJlLiBX
ZSBvbmx5IGJsb2NrCisgICAgLy8gdGhlIGV2ZW50IGlmIHdlIGRvbid0IGhhdmUgYSBwZW5kaW5n
IGNvbXBvc2l0aW9uLCBiZWNhdXNlIHRoYXQgbWVhbnMgd2UKKyAgICAvLyBhcmUgdXNpbmcgYSBj
b250ZXh0IGxpa2UgJ3NpbXBsZScgd2hpY2ggbWFya3MgZXZlcnkga2V5c3Ryb2tlIGFzIGZpbHRl
cmVkLgorICAgIFdlYktpdDo6RWRpdG9yQ2xpZW50KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJL
aXQ6OkVkaXRvckNsaWVudCo+KGNvcmUod2ViVmlldyktPmVkaXRvckNsaWVudCgpKTsKKyAgICBp
ZiAoZ3RrX2ltX2NvbnRleHRfZmlsdGVyX2tleXByZXNzKHdlYlZpZXctPnByaXYtPmltQ29udGV4
dCwgZXZlbnQpICYmICFjbGllbnQtPmhhc1BlbmRpbmdDb21wb3NpdGlvbigpKQorICAgICAgICBy
ZXR1cm4gVFJVRTsKKwogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lLT52aWV3KCkp
CiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXli
b2FyZEV2ZW50KGV2ZW50KTsKLQogICAgIGlmIChmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2
ZW50KGtleWJvYXJkRXZlbnQpKQogICAgICAgICByZXR1cm4gVFJVRTsKIApAQCAtNjcwLDYgKzY3
Nyw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqCiAgICAgICAgICAgICBmb2N1c0NvbnRyb2xs
ZXItPnNldEZvY3VzZWQodHJ1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZvY3VzQ29u
dHJvbGxlci0+c2V0Rm9jdXNlZEZyYW1lKGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpKTsKKwor
ICAgICAgICBndGtfaW1fY29udGV4dF9mb2N1c19pbih3ZWJWaWV3LT5wcml2LT5pbUNvbnRleHQp
OwogICAgIH0KICAgICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFy
ZW50X2NsYXNzKS0+Zm9jdXNfaW5fZXZlbnQod2lkZ2V0LCBldmVudCk7CiB9CkBAIC02ODAsNiAr
Njg5LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb2N1c19vdXRfZXZlbnQo
R3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMKIAogICAgIGNvcmUod2ViVmlldyktPmZv
Y3VzQ29udHJvbGxlcigpLT5zZXRBY3RpdmUoZmFsc2UpOwogICAgIGNvcmUod2ViVmlldyktPmZv
Y3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkKGZhbHNlKTsKKyAgICBndGtfaW1fY29udGV4dF9m
b2N1c19vdXQod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0KTsKIAogICAgIHJldHVybiBHVEtfV0lE
R0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5mb2N1c19vdXRfZXZlbnQo
d2lkZ2V0LCBldmVudCk7CiB9Ci0tIAoxLjYuMy4zCgo=
</data>
<flag name="commit-queue"
          id="31435"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48710</attachid>
            <date>2010-02-13 13:05:39 -0800</date>
            <delta_ts>2010-02-19 23:43:30 -0800</delta_ts>
            <desc>Patch for this issue (rev5)</desc>
            <filename>0001-can-t-input-korean-into-lower-all-input-box-except-a.patch</filename>
            <type>text/plain</type>
            <size>30071</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA3M2Q4OTk3OGUyMGU4ODNjMGJmY2RiZjMzODAxNDIxZGI3MDA4MmI1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBGcmksIDI5IEphbiAyMDEwIDE4OjUyOjM1IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
Y2FuJ3QgaW5wdXQga29yZWFuIGludG8gbG93ZXIgYWxsIGlucHV0IGJveCBleGNlcHQgYWRyZXNz
IGlucHV0IGJveCBpbiB3ZWJraXQgZ3RrIGxhdW5jaGVyCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzIyOTAKCi0tLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA0NSArKysrCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5jcHAgfCAgMTM3ICsrKysrKysrLS0tLS0KIFdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggICB8ICAgMTAgKwogV2ViS2l0L2d0ay90ZXN0
cy90ZXN0a2V5ZXZlbnRzLmMgICAgICAgICAgICAgIHwgIDI3MiArKysrKysrKysrKysrKysrKysr
KystLS0tCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgICAgICAgfCAg
IDEyICstCiA1IGZpbGVzIGNoYW5nZWQsIDM4OSBpbnNlcnRpb25zKCspLCA4NyBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCmluZGV4IDdhNDQ4ODQuLmVkMjZhNWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDIt
MTMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNhbid0IGlucHV0IGtvcmVhbiBp
bnRvIGxvd2VyIGFsbCBpbnB1dCBib3ggZXhjZXB0IGFkcmVzcyBpbnB1dCBib3ggaW4gd2Via2l0
IGd0ayBsYXVuY2hlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzIyOTAKKworICAgICAgICBNYWtlIHRoZSBHVEsrIEVkaXRvckNsaWVudCBwcm9wZXJs
eSBoYW5kbGUgZGlmZmVyZW50IHR5cGVzIG9mIGlucHV0IG1vZHVsZQorICAgICAgICBiZWhhdmlv
ciBzdWNoIGFzIGNvbW1pdCBhbmQgcHJlZWRpdCBzaWduYWxzIHRoYXQgaGFwcGVuIG91dHNpZGUg
b2Yga2V5IGV2ZW50CisgICAgICAgIGZpbHRlcmluZyBhbmQgbXVsdGlwbGUgdGltZXMgaW4gYSBy
b3cuIEZpbHRlciBrZXl1cCBldmVudHMgYXMgd2VsbCBhcyBrZXlkb3duCisgICAgICAgIGV2ZW50
cyBhbmQgY2FsbCBndGtfaW1fY29udGV4dF9mb2N1c197aW4vb3V0fSB3aGVuIHRoZSBXZWJWaWV3
IGZvY3VzIGNoYW5nZXMuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIHRoaXMgYmVoYXZpb3Ig
dG8gdGhlIEdUSysgdW5pdCB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltQ29udGV4dENvbW1pdHRlZCk6IEhh
bmRsZSB0aGlzIHNpZ25hbCBwcm9wZXJseSB3aGVuIGl0IGhhcHBlbnMgb3V0c2lkZSBvZgorICAg
ICAgICBrZXkgZXZlbnQgZmlsdGVyaW5nLgorICAgICAgICAoV2ViS2l0OjppbUNvbnRleHRQcmVl
ZGl0Q2hhbmdlZCk6IEltbWVkaWF0ZWx5IHVwZGF0ZSB0aGUgcHJlZWRpdCBzdGF0ZSBhbmQgZG8g
bm90IHJlamVjdAorICAgICAgICBlbXB0eSBwcmVlZGl0cywgc28gdGhhdCBjYW5jZWxsYXRpb24g
d29ya3MgcHJvcGVybHkuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6dXBkYXRlUGVu
ZGluZ0NvbXBvc2l0aW9uKTogQWRkIHRoaXMgbWV0aG9kLCB3aGljaCBoYW5kbGVzIHRoZQorICAg
ICAgICBzaXR1YXRpb24gd2hlcmUgYSBjb21taXQgc2lnbmFsIGhhcHBlbnMgd2hlbiB0aGVyZSBp
cyBzdGlsbCBhIHBlbmRpbmcgY29tbWl0LgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6
OnNob3VsZEJlZ2luRWRpdGluZyk6IENsZWFyIHBlbmRpbmcgY29tcG9zaXRpb24gc3RhdGUgYmVm
b3JlIGVkaXRpbmcKKyAgICAgICAgc3RhcnRzLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGll
bnQ6OnNob3VsZEVuZEVkaXRpbmcpOiBDbGVhciBwZW5kaW5nIGNvbXBvc2l0aW9uIHN0YXRlIGJl
Zm9yZSBlZGl0aW5nIGVuZHMuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6aGFuZGxl
S2V5Ym9hcmRFdmVudCk6IE5vIGxvbmdlciBzcGVjaWFsIGNhc2UgcHJlZWRpdHMgd2hpY2ggaGFw
cGVuIGR1cmluZworICAgICAgICBrZXkgZXZlbnQgZmlsdGVyaW5nLiBXaGVuIGNvbmZpcm1pbmcg
YSBwZW5kaW5nIGNvbXBvc2l0aW9uIHVzZSBpbnNlcnRUZXh0IGluc3RlYWQgb2YgY29uZmlybUNv
bXBvc2l0aW9uLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0
aG9kS2V5ZG93bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmg6
IE1ha2UgcGVuZGluZ0NvbXBvc2l0aW9uIGEgbWVtYmVyLCBzbyB0aGF0IG11bHRpcGxlIFdlYlZp
ZXdzCisgICAgICAgIGRvIG5vdCBzaGFyZSBzdGF0ZS4KKyAgICAgICAgKFdlYktpdDo6RWRpdG9y
Q2xpZW50Ojp3ZWJWaWV3KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6
dHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpF
ZGl0b3JDbGllbnQ6OmNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKTogQWRkZWQuCisgICAgICAgICog
dGVzdHMvdGVzdGtleWV2ZW50cy5jOgorICAgICAgICAodGVzdF9rZXlwcmVzc19ldmVudHNfbG9h
ZF9zdGF0dXNfY2IpOgorICAgICAgICAobWFwX2V2ZW50X2NiKToKKyAgICAgICAgKHNldHVwX2tl
eWV2ZW50X3Rlc3QpOgorICAgICAgICAodGVzdF9rZXlwcmVzc19ldmVudHMpOgorICAgICAgICAo
ZWxlbWVudF90ZXh0X2VxdWFsX3RvKToKKyAgICAgICAgKHRlc3RfaW1lX2xvYWRfc3RhdHVzX2Ni
KToKKyAgICAgICAgKHRlc3RfaW1lKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19rZXlfcmVsZWFz
ZV9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQpOgorCiAy
MDEwLTAyLTA5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCAwMmQxYTUzLi4zMDllMjFlIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCkBAIC00LDYgKzQsNyBAQAog
ICogIENvcHlyaWdodCAoQykgMjAwOSBEaWVnbyBFc2NhbGFudGUgVXJyZWxvIDxkaWVnb2VAZ25v
bWUub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwOSwgSWdhbGlhIFMuTC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTAsIE1hcnRpbiBSb2JpbnNvbiA8bXJvYmluc29uQHdlYmtpdC5vcmc+
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01MSw0MCArNTIsNDggQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgZ2NoYXIqIHBlbmRpbmdD
b21wb3NpdGlvbiA9IDA7Ci1zdGF0aWMgZ2NoYXIqIHBlbmRpbmdQcmVlZGl0ID0gMDsKLQotc3Rh
dGljIHZvaWQgc2V0UGVuZGluZ0NvbXBvc2l0aW9uKGdjaGFyKiBuZXdDb21wb3NpdGlvbikKK3N0
YXRpYyB2b2lkIGltQ29udGV4dENvbW1pdHRlZChHdGtJTUNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IGdjaGFyKiBjb21wb3NpdGlvblN0cmluZywgRWRpdG9yQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAg
Z19mcmVlKHBlbmRpbmdDb21wb3NpdGlvbik7Ci0gICAgcGVuZGluZ0NvbXBvc2l0aW9uID0gbmV3
Q29tcG9zaXRpb247Ci19CisgICAgLy8gSWYgdGhpcyBzaWduYWwgZmlyZXMgZHVyaW5nIGEga2V5
ZG93biBldmVudCB3aGVuIHdlIGFyZSBub3QgaW4gdGhlIG1pZGRsZQorICAgIC8vIG9mIGEgY29t
cG9zaXRpb24sIHRoZW4gdHJlYXQgdGhpcyAnY29tbWl0JyBhcyBhIG5vcm1hbCBrZXkgZXZlbnQg
YW5kIGp1c3QKKyAgICAvLyBjaGFuZ2UgdGhlIGVkaXRhYmxlIGFyZWEgcmlnaHQgYmVmb3JlIHRo
ZSBrZXlwcmVzcyBldmVudC4KKyAgICBpZiAoY2xpZW50LT50cmVhdENvbnRleHRDb21taXRBc0tl
eUV2ZW50KCkpIHsKKyAgICAgICAgY2xpZW50LT51cGRhdGVQZW5kaW5nQ29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQogCi1zdGF0aWMgdm9pZCBz
ZXRQZW5kaW5nUHJlZWRpdChnY2hhciogbmV3UHJlZWRpdCkKLXsKLSAgICBnX2ZyZWUocGVuZGlu
Z1ByZWVkaXQpOwotICAgIHBlbmRpbmdQcmVlZGl0ID0gbmV3UHJlZWRpdDsKLX0KKyAgICBGcmFt
ZSogZnJhbWUgPSBjb3JlKGNsaWVudC0+d2ViVmlldygpKS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+
Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm47CiAKLXN0YXRpYyB2b2lkIGNsZWFyUGVuZGluZ0lN
RGF0YSgpCi17Ci0gICAgc2V0UGVuZGluZ0NvbXBvc2l0aW9uKDApOwotICAgIHNldFBlbmRpbmdQ
cmVlZGl0KDApOwotfQotc3RhdGljIHZvaWQgaW1Db250ZXh0Q29tbWl0dGVkKEd0a0lNQ29udGV4
dCogY29udGV4dCwgY29uc3QgZ2NoYXIqIHN0ciwgRWRpdG9yQ2xpZW50KiBjbGllbnQpCi17Ci0g
ICAgLy8gVGhpcyBzaWduYWwgd2lsbCBmaXJlIGR1cmluZyBhIGtleWRvd24gZXZlbnQuIFdlIHdh
bnQgdGhlIGNvbnRlbnRzIG9mIHRoZQotICAgIC8vIGZpZWxkIHRvIGNoYW5nZSByaWdodCBiZWZv
cmUgdGhlIGtleXVwIGV2ZW50LCBzbyB3ZSB3YWl0IHVudGlsIHRoZW4gdG8gYWN0dWFsbHkKLSAg
ICAvLyBjb21taXQgdGhpcyBjb21wb3NpdGlvbi4KLSAgICBzZXRQZW5kaW5nQ29tcG9zaXRpb24o
Z19zdHJkdXAoc3RyKSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24o
U3RyaW5nOjpmcm9tVVRGOChjb21wb3NpdGlvblN0cmluZykpOworICAgIGNsaWVudC0+Y2xlYXJQ
ZW5kaW5nQ29tcG9zaXRpb24oKTsKIH0KIAogc3RhdGljIHZvaWQgaW1Db250ZXh0UHJlZWRpdENo
YW5nZWQoR3RrSU1Db250ZXh0KiBjb250ZXh0LCBFZGl0b3JDbGllbnQqIGNsaWVudCkKIHsKKyAg
ICBGcmFtZSogZnJhbWUgPSBjb3JlKGNsaWVudC0+d2ViVmlldygpKS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0
b3IoKS0+Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBXZSBpZ25vcmUgdGhl
IHByb3ZpZGVkIFBhbmdvQXR0ckxpc3QgZm9yIG5vdy4KLSAgICBnY2hhciogbmV3UHJlZWRpdCA9
IDA7Ci0gICAgZ3RrX2ltX2NvbnRleHRfZ2V0X3ByZWVkaXRfc3RyaW5nKGNvbnRleHQsICZuZXdQ
cmVlZGl0LCBOVUxMLCBOVUxMKTsKLSAgICBzZXRQZW5kaW5nUHJlZWRpdChuZXdQcmVlZGl0KTsK
KyAgICBHT3duUHRyPGdjaGFyPiBuZXdQcmVlZGl0KDApOworICAgIGd0a19pbV9jb250ZXh0X2dl
dF9wcmVlZGl0X3N0cmluZyhjb250ZXh0LCAmbmV3UHJlZWRpdC5vdXRQdHIoKSwgMCwgMCk7CisK
KyAgICBTdHJpbmcgcHJlZWRpdFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgobmV3UHJlZWRpdC5n
ZXQoKSk7CisgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOworICAg
IHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIHByZWVkaXRTdHJpbmcu
bGVuZ3RoKCksIENvbG9yKDAsIDAsIDApLCBmYWxzZSkpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+
c2V0Q29tcG9zaXRpb24ocHJlZWRpdFN0cmluZywgdW5kZXJsaW5lcywgMCwgMCk7Cit9CisKK3Zv
aWQgRWRpdG9yQ2xpZW50Ojp1cGRhdGVQZW5kaW5nQ29tcG9zaXRpb24oY29uc3QgZ2NoYXIqIG5l
d0NvbXBvc2l0aW9uKQoreworICAgIC8vIFRoZSBJTUNvbnRleHQgbWF5IHNpZ25hbCBtb3JlIHRo
YW4gb25lIGNvbXBsZXRlZCBjb21wb3NpdGlvbiBpbiBhIHJvdywKKyAgICAvLyBpbiB3aGljaCBj
YXNlIHdlIHdhbnQgdG8gYXBwZW5kIHRoZW0sIHJhdGhlciB0aGFuIG92ZXJ3cml0ZSB0aGUgb2xk
IG9uZS4KKyAgICBpZiAoIW1fcGVuZGluZ0NvbXBvc2l0aW9uKQorICAgICAgICBtX3BlbmRpbmdD
b21wb3NpdGlvbi5zZXQoZ19zdHJkdXAobmV3Q29tcG9zaXRpb24pKTsKKyAgICBlbHNlCisgICAg
ICAgIG1fcGVuZGluZ0NvbXBvc2l0aW9uLnNldChnX3N0cmNvbmNhdChtX3BlbmRpbmdDb21wb3Np
dGlvbi5nZXQoKSwgbmV3Q29tcG9zaXRpb24sIE5VTEwpKTsKIH0KIAogdm9pZCBFZGl0b3JDbGll
bnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBhY3RpdmUpCkBAIC0xMzksNyArMTQ4LDcgQEAg
aW50IEVkaXRvckNsaWVudDo6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKQogCiBib29sIEVkaXRv
ckNsaWVudDo6c2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNvcmU6OlJhbmdlKikKIHsKLSAgICBjbGVh
clBlbmRpbmdJTURhdGEoKTsKKyAgICBjbGVhclBlbmRpbmdDb21wb3NpdGlvbigpOwogCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0Nyw3ICsxNTYsNyBAQCBi
b29sIEVkaXRvckNsaWVudDo6c2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNvcmU6OlJhbmdlKikKIAog
Ym9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZEVuZEVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKQogewot
ICAgIGNsZWFyUGVuZGluZ0lNRGF0YSgpOworICAgIGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7
CiAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiB0cnVlOwpAQCAtNDY2LDggKzQ3
NSwxMiBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2
ZW50KiBldmVudCkKICAgICAgICAgICAgIGlmICghY29tbWFuZC5pc1RleHRJbnNlcnRpb24oKSAm
JiBjb21tYW5kLmV4ZWN1dGUoZXZlbnQpKQogICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZh
dWx0SGFuZGxlZCgpOwogCisgICAgICAgICAgICBjbGVhclBlbmRpbmdDb21wb3NpdGlvbigpOwog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYgKGNvbW1hbmQuZXhlY3V0ZShl
dmVudCkpIHsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb21tYW5kLmV4ZWN1dGUoZXZlbnQp
KSB7CisgICAgICAgICAgICBjbGVhclBlbmRpbmdDb21wb3NpdGlvbigpOwogICAgICAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTQ3OCwyNSArNDkxLDE0IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2Fy
ZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIC8vIGJlIHJlZmxlY3RlZCBpbiB0aGUg
Y29udGVudHMgb2YgdGhlIGZpZWxkIHVudGlsIHRoZSBrZXl1cCBET00gZXZlbnQuCiAgICAgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpIHsKIAotICAgICAg
ICBpZiAocGVuZGluZ0NvbXBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBTdHJpbmcgY29tcG9zaXRp
b25TdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHBlbmRpbmdDb21wb3NpdGlvbik7Ci0gICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmlu
Zyk7Ci0KLSAgICAgICAgICAgIGNsZWFyUGVuZGluZ0lNRGF0YSgpOwotICAgICAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0KLSAgICAgICAgfSBlbHNlIGlmIChwZW5kaW5nUHJl
ZWRpdCkgewotICAgICAgICAgICAgU3RyaW5nIHByZWVkaXRTdHJpbmcgPSBTdHJpbmc6OmZyb21V
VEY4KHBlbmRpbmdQcmVlZGl0KTsKLQotICAgICAgICAgICAgLy8gRG9uJ3QgdXNlIGFuIGVtcHR5
IHByZWVkaXQgYXMgaXQgd2lsbCBkZXN0cm95IHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAvLyBz
ZWxlY3Rpb24sIGV2ZW4gaWYgdGhlIGNvbXBvc2l0aW9uIGlzIGNhbmNlbGxlZCBvciBmYWlscyBs
YXRlciBvbi4KLSAgICAgICAgICAgIGlmICghcHJlZWRpdFN0cmluZy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXM7Ci0g
ICAgICAgICAgICAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwg
cHJlZWRpdFN0cmluZy5sZW5ndGgoKSwgQ29sb3IoMCwgMCwgMCksIGZhbHNlKSk7Ci0gICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihwcmVlZGl0U3RyaW5nLCB1
bmRlcmxpbmVzLCAwLCAwKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY2xlYXJQZW5k
aW5nSU1EYXRhKCk7CisgICAgICAgIC8vIElmIHdlIGhhdmUgYSBwZW5kaW5nIGNvbXBvc2l0aW9u
IGF0IHRoaXMgcG9pbnQsIGl0IGhhcHBlbmVkIHdoaWxlCisgICAgICAgIC8vIGZpbHRlcmluZyBh
IGtleXByZXNzLCBzbyB3ZSB0cmVhdCBpdCBhcyBhIG5vcm1hbCB0ZXh0IGluc2VydGlvbi4KKyAg
ICAgICAgLy8gVGhpcyB3aWxsIGFsc28gZW5zdXJlIHRoYXQgaWYgdGhlIGtleXByZXNzIGV2ZW50
IGhhbmRsZXIgY2hhbmdlZCB0aGUKKyAgICAgICAgLy8gY3VycmVudGx5IGZvY3VzZWQgbm9kZSwg
dGhlIHRleHQgaXMgc3RpbGwgaW5zZXJ0ZWQgaW50byB0aGUgb3JpZ2luYWwKKyAgICAgICAgLy8g
bm9kZSAoaW5zZXJ0VGV4dCgpIGhhcyB0aGlzIGxvZ2ljLCBidXQgY29uZmlybUNvbXBvc2l0aW9u
KCkgZG9lcyBub3QpLgorICAgICAgICBpZiAobV9wZW5kaW5nQ29tcG9zaXRpb24pIHsKKyAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChTdHJpbmc6OmZyb21VVEY4KG1fcGVu
ZGluZ0NvbXBvc2l0aW9uLmdldCgpKSwgZXZlbnQpOworICAgICAgICAgICAgY2xlYXJQZW5kaW5n
Q29tcG9zaXRpb24oKTsKICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
CiAgICAgICAgIH0gZWxzZSB7CkBAIC01MjAsMTAgKzUyMiw0MyBAQCB2b2lkIEVkaXRvckNsaWVu
dDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlm
ICghdGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICAvLyBUT0RPOiBXZSBuZWVkIHRvIGRlY2lkZSB3aGljaCBmaWx0
ZXJlZCBrZXlzdHJva2VzIHNob3VsZCBiZSB0cmVhdGVkIGFzIElNCi0gICAgLy8gZXZlbnRzIGFu
ZCB3aGljaCBzaG91bGQgbm90LgogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gbV93
ZWJWaWV3LT5wcml2OwotICAgIGd0a19pbV9jb250ZXh0X2ZpbHRlcl9rZXlwcmVzcyhwcml2LT5p
bUNvbnRleHQsIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtFdmVudEtleSgpKTsKKworICAgIC8vIFNv
bWUgSU0gY29udGV4dHMgKGUuZy4gJ3NpbXBsZScpIHdpbGwgYWN0IGFzIGlmIHRoZXkgZmlsdGVy
IGV2ZXJ5CisgICAgLy8ga2V5c3Ryb2tlIGFuZCBqdXN0IGlzc3VlIGEgJ2NvbW1pdCcgc2lnbmFs
IGR1cmluZyBoYW5kbGluZy4gSW4gc2l0dWF0aW9ucworICAgIC8vIHdoZXJlIHRoZSAnY29tbWl0
JyBzaWduYWwgaGFwcGVucyBkdXJpbmcgZmlsdGVyaW5nIGFuZCB0aGVyZSBpcyBubyBhY3RpdmUK
KyAgICAvLyBjb21wb3NpdGlvbiwgYWN0IGFzIGlmIHRoZSBrZXlzdHJva2Ugd2FzIG5vdCBmaWx0
ZXJlZC4KKworICAgIC8vIEhlcmUgaXMgYSB0eXBpY2FsIHNlcXVlbmNlIG9mIGV2ZW50cyBmb3Ig
dGhlICdzaW1wbGUnIGNvbnRleHQ6CisgICAgLy8gMS4gR0RLIGtleSBwcmVzcyBldmVudCAtPiB3
ZWJraXRfd2ViX3ZpZXdfa2V5X3ByZXNzX2V2ZW50CisgICAgLy8gMi4gS2V5ZG93biBldmVudCAt
PiBFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bgorICAgIC8vICAgICBndGtf
aW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MgcmV0dXJucyB0cnVlLCBidXQgdGhlcmUgaXMgYXBl
bmRpbmcKKyAgICAvLyAgICAgY29tcG9zaXRpb24gc28gZXZlbnQtPnByZXZlbnREZWZhdWx0IGlz
IG5vdCBjYWxsZWQgKGJlbG93KS4KKyAgICAvLyAzLiBLZXlkb3duIGV2ZW50IGJ1YmJsZXMgdGhy
b3VnaCB0aGUgRE9NCisgICAgLy8gNC4gS2V5ZG93biBldmVudCAtPiBFZGl0b3JDbGllbnQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQKKyAgICAvLyAgICAgTm8gYWN0aW9uIHRha2VuLgorICAgIC8vIDQu
IEdESyBrZXkgcmVsZWFzZSBldmVudCAtPiB3ZWJraXRfd2ViX3ZpZXdfa2V5X3JlbGVhc2VfZXZl
bnQKKyAgICAvLyA1LiBndGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MgaXMgY2FsbGVkIG9u
IHRoZSByZWxlYXNlIGV2ZW50LgorICAgIC8vICAgICBTaW1wbGUgZG9lcyBub3QgZmlsdGVyIG1v
c3Qga2V5IHJlbGVhc2VzLCBzbyB0aGUgZXZlbnQgY29udGludWVzLgorICAgIC8vIDYuIEtleXBy
ZXNzIGV2ZW50IGJ1YmJsZXMgdGhyb3VnaCB0aGUgRE9NLgorICAgIC8vIDcuIEtleXByZXNzIGV2
ZW50IC0+IEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudAorICAgIC8vICAgICBwZW5k
aW5nIGNvbXBvc2l0aW9uIGlzIGluc2VydGVkLgorICAgIC8vIDguIEtleXVwIGV2ZW50IGJ1YmJs
ZXMgdGhyb3VnaCB0aGUgRE9NLgorICAgIC8vIDkuIEtleXVwIGV2ZW50IC0+IEVkaXRvckNsaWVu
dDo6aGFuZGxlS2V5Ym9hcmRFdmVudAorICAgIC8vICAgICBObyBhY3Rpb24gdGFrZW4uCisKKyAg
ICAvLyBUaGVyZSBhcmUgdHdvIHNpdHVhdGlvbnMgd2hlcmUgd2UgZG8gZmlsdGVyIHRoZSBrZXlz
dHJva2U6CisgICAgLy8gMS4gVGhlIElNQ29udGV4dCBpbnN0cnVjdGVkIHVzIHRvIGZpbHRlciBh
bmQgd2UgaGF2ZSBubyBwZW5kaW5nIGNvbXBvc2l0aW9uLgorICAgIC8vIDIuIFRoZSBJTUNvbnRl
eHQgZGlkIG5vdCBpbnN0cnVjdCB1cyB0byBmaWx0ZXIsIGJ1dCB0aGUga2V5c3Ryb2tlIGNhdXNl
ZCBhCisgICAgLy8gICAgY29tcG9zaXRpb24gaW4gcHJvZ3Jlc3MgdG8gZmluaXNoLiBJdCBzZWVt
cyB0aGF0IHNvbWV0aW1lcyBTQ0lNIHdpbGwgZmluaXNoCisgICAgLy8gICAgYSBjb21wb3NpdGlv
biBhbmQgbm90IG1hcmsgdGhlIGtleXN0cm9rZSBhcyBmaWx0ZXJlZC4KKyAgICBjbGVhclBlbmRp
bmdDb21wb3NpdGlvbigpOworICAgIG1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCA9ICF0
YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgaWYgKChndGtfaW1f
Y29udGV4dF9maWx0ZXJfa2V5cHJlc3MocHJpdi0+aW1Db250ZXh0LCBldmVudC0+a2V5RXZlbnQo
KS0+Z2RrRXZlbnRLZXkoKSkgJiYgIW1fcGVuZGluZ0NvbXBvc2l0aW9uKQorICAgICAgICB8fCAo
IW1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCAmJiAhdGFyZ2V0RnJhbWUtPmVkaXRvcigp
LT5oYXNDb21wb3NpdGlvbigpKSkKKyAgICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7CisK
KyAgICBtX3RyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQgPSBmYWxzZTsKIH0KIAogRWRpdG9y
Q2xpZW50OjpFZGl0b3JDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKZGlmZiAtLWdpdCBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCmluZGV4IDkyOTI2NTEuLjJmMDJkMGMg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgK
KysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaApAQCAtMiw2
ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3JnPgog
ICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMzQsOCArMzUsMTAgQEAKIAogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL2d0ay9HT3duUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktp
dFdlYlZpZXc7Cit0eXBlZGVmIGNoYXIgZ2NoYXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBQYWdlOwpAQCAtNTMsNiArNTYsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAg
cHVibGljOgogICAgICAgICBFZGl0b3JDbGllbnQoV2ViS2l0V2ViVmlldyopOwogICAgICAgICB+
RWRpdG9yQ2xpZW50KCk7CisgICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcoKSB7IHJldHVy
biBtX3dlYlZpZXc7IH0KKyAgICAgICAgYm9vbCB0cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50
KCkgeyByZXR1cm4gbV90cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50OyB9CisgICAgICAgIHZv
aWQgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKSB7IG1fcGVuZGluZ0NvbXBvc2l0aW9uLnNldCgw
KTsgfQorICAgICAgICBib29sIGhhc1BlbmRpbmdDb21wb3NpdGlvbigpIHsgcmV0dXJuIG1fcGVu
ZGluZ0NvbXBvc2l0aW9uOyB9CisgICAgICAgIHZvaWQgdXBkYXRlUGVuZGluZ0NvbXBvc2l0aW9u
KGNvbnN0IGNoYXIqKTsKIAogICAgICAgICAvLyBmcm9tIEVkaXRvckNsaWVudAogICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOwpAQCAtMTIwLDYgKzEyOCw4IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJW
aWV3OworICAgICAgICBib29sIG1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudDsKKyAgICAg
ICAgR093blB0cjxnY2hhcj4gbV9wZW5kaW5nQ29tcG9zaXRpb247CiAgICAgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay90ZXN0cy90ZXN0a2V5ZXZlbnRzLmMgYi9XZWJLaXQvZ3RrL3Rl
c3RzL3Rlc3RrZXlldmVudHMuYwppbmRleCBlZTc3MjhjLi5kZjVkODMwIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RrZXlldmVudHMuYworKysgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rl
c3RrZXlldmVudHMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
TWFydGluIFJvYmluc29uCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgTWFydGluIFJvYmlu
c29uIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMiwxMiAr
MjIsMTYgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgog
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0
cmluZ1JlZi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgorCiAK
ICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKIAogdHlwZWRlZiBzdHJ1Y3QgewotICBj
aGFyKiBwYWdlOwotICBnYm9vbGVhbiBzaG91bGRCZUhhbmRsZWQ7CisgICAgY2hhciogcGFnZTsK
KyAgICBjb25zdCBjaGFyKiB0ZXh0OworICAgIGdib29sZWFuIHNob3VsZEJlSGFuZGxlZDsKIH0g
VGVzdEluZm87CiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTgyLDcgKzg2LDYgQEAgc3RhdGljIGdi
b29sZWFuIGtleV9wcmVzc19ldmVudF9jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtFdmVu
dCogZXZlbnQsIGdwb2kKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLQogc3RhdGljIGdib29sZWFu
IGtleV9yZWxlYXNlX2V2ZW50X2NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdka0V2ZW50KiBl
dmVudCwgZ3BvaW50ZXIgZGF0YSkKIHsKICAgICAvLyBXZWJDb3JlIG5ldmVyIHNlZW1zIHRvIG1h
cmsga2V5dXAgZXZlbnRzIGFzIGhhbmRsZWQuCkBAIC05NSwxMSArOTgsMTUgQEAgc3RhdGljIGdi
b29sZWFuIGtleV9yZWxlYXNlX2V2ZW50X2NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdka0V2
ZW50KiBldmVudCwgZ3AKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkIGxvYWRf
c3RhdHVzX2NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqIHNwZWMsIGdwb2lu
dGVyIGRhdGEpCitzdGF0aWMgdm9pZCB0ZXN0X2tleXByZXNzX2V2ZW50c19sb2FkX3N0YXR1c19j
YihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBzcGVjLCBncG9pbnRlciBkYXRh
KQogewogICAgIEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSA9IChLZXlFdmVudEZpeHR1cmUqKWRh
dGE7CiAgICAgV2ViS2l0TG9hZFN0YXR1cyBzdGF0dXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xv
YWRfc3RhdHVzKHdlYlZpZXcpOwogICAgIGlmIChzdGF0dXMgPT0gV0VCS0lUX0xPQURfRklOSVNI
RUQpIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAia2V5LXBy
ZXNzLWV2ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKGtleV9wcmVz
c19ldmVudF9jYiksIGZpeHR1cmUpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUt
PndlYlZpZXcsICJrZXktcmVsZWFzZS1ldmVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
R19DQUxMQkFDSyhrZXlfcmVsZWFzZV9ldmVudF9jYiksIGZpeHR1cmUpOwogICAgICAgICBndGtf
dGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnYScpLCAw
KTsKICAgICB9CkBAIC0xMTAsMjUgKzExNywxNCBAQCBnYm9vbGVhbiBtYXBfZXZlbnRfY2IoR3Rr
V2lkZ2V0ICp3aWRnZXQsIEdka0V2ZW50KiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKIHsKICAgICBn
dGtfd2lkZ2V0X2dyYWJfZm9jdXMod2lkZ2V0KTsKICAgICBLZXlFdmVudEZpeHR1cmUqIGZpeHR1
cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilkYXRhOwotCi0gICAgZ19zaWduYWxfY29ubmVjdChmaXh0
dXJlLT53ZWJWaWV3LCAia2V5LXByZXNzLWV2ZW50IiwKLSAgICAgICAgICAgICAgICAgICAgIEdf
Q0FMTEJBQ0soa2V5X3ByZXNzX2V2ZW50X2NiKSwgZml4dHVyZSk7Ci0gICAgZ19zaWduYWxfY29u
bmVjdChmaXh0dXJlLT53ZWJWaWV3LCAia2V5LXJlbGVhc2UtZXZlbnQiLAotICAgICAgICAgICAg
ICAgICAgICAgR19DQUxMQkFDSyhrZXlfcmVsZWFzZV9ldmVudF9jYiksIGZpeHR1cmUpOwotCi0g
ICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1
cyIsCi0gICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKGxvYWRfc3RhdHVzX2NiKSwgZml4
dHVyZSk7Ci0KICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcoZml4dHVyZS0+d2ViVmll
dywgZml4dHVyZS0+aW5mby0+cGFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRleHQvaHRtbCIsICJ1dGYtOCIsICJmaWxlOi8vIik7Ci0KICAgICByZXR1cm4gRkFMU0U7CiB9
CiAKLXN0YXRpYyB2b2lkIHRlc3Rfa2V5cHJlc3MoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBn
Y29uc3Rwb2ludGVyIGRhdGEpCitzdGF0aWMgdm9pZCBzZXR1cF9rZXlldmVudF90ZXN0KEtleUV2
ZW50Rml4dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRlciBkYXRhLCBHQ2FsbGJhY2sgbG9hZF9l
dmVudF9jYWxsYmFjaykKIHsKICAgICBmaXh0dXJlLT5pbmZvID0gKFRlc3RJbmZvKilkYXRhOwot
CiAgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53aW5kb3csICJtYXAtZXZlbnQiLAogICAg
ICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhtYXBfZXZlbnRfY2IpLCBmaXh0dXJlKTsKIApA
QCAtMTM2LDEwICsxMzIsMTYxIEBAIHN0YXRpYyB2b2lkIHRlc3Rfa2V5cHJlc3MoS2V5RXZlbnRG
aXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCiAgICAgZ3RrX3dpZGdldF9zaG93
KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldykpOwogICAgIGd0a193aW5kb3dfcHJlc2VudChH
VEtfV0lORE9XKGZpeHR1cmUtPndpbmRvdykpOwogCisgICAgZ19zaWduYWxfY29ubmVjdChmaXh0
dXJlLT53ZWJWaWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1cyIsCisgICAgICAgICAgICAgICAgICAg
ICBsb2FkX2V2ZW50X2NhbGxiYWNrLCBmaXh0dXJlKTsKKwogICAgIGdfbWFpbl9sb29wX3J1bihm
aXh0dXJlLT5sb29wKTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9rZXlwcmVzc19ldmVudHMoS2V5
RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCit7CisgICAgc2V0dXBf
a2V5ZXZlbnRfdGVzdChmaXh0dXJlLCBkYXRhLCBHX0NBTExCQUNLKHRlc3Rfa2V5cHJlc3NfZXZl
bnRzX2xvYWRfc3RhdHVzX2NiKSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBlbGVtZW50X3RleHRf
ZXF1YWxfdG8oSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IGdjaGFyKiB0ZXh0KQoreworICAg
IEpTU3RyaW5nUmVmIHNjcmlwdFN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KAorICAgICAgIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImluXCIpLnZhbHVlOyIp
OworICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlw
dFN0cmluZywgMCwgMCwgMCwgMCk7CisgICAgSlNTdHJpbmdSZWxlYXNlKHNjcmlwdFN0cmluZyk7
CisKKyAgICAvLyBJZiB0aGUgdmFsdWUgaXNuJ3QgYSBzdHJpbmcsIHRoZSBlbGVtZW50IGlzIHBy
b2JhYmx5IGEgZGl2CisgICAgLy8gc28gZ3JhYiB0aGUgaW5uZXJUZXh0IGluc3RlYWQuCisgICAg
aWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKSB7CisgICAgICAgIEpTU3RyaW5n
UmVmIHNjcmlwdFN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKAorICAgICAg
ICAgICJ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJpblwiKS5pbm5lclRleHQ7Iik7
CisgICAgICAgIHZhbHVlID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHRTdHJpbmcs
IDAsIDAsIDAsIDApOworICAgICAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0U3RyaW5nKTsKKyAg
ICB9CisKKyAgICBnX2Fzc2VydChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKTsKKyAg
ICBKU1N0cmluZ1JlZiBpbnB1dFN0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwg
dmFsdWUsIDApOworICAgIGdfYXNzZXJ0KGlucHV0U3RyaW5nKTsKKworICAgIGdpbnQgc2l6ZSA9
IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShpbnB1dFN0cmluZyk7CisgICAgZ2No
YXIqIGNTdHJpbmcgPSBnX21hbGxvYyhzaXplKTsKKyAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5n
KGlucHV0U3RyaW5nLCBjU3RyaW5nLCBzaXplKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UoaW5wdXRT
dHJpbmcpOworCisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gZ191dGY4X2NvbGxhdGUoY1N0cmluZywg
dGV4dCkgPT0gMDsKKyAgICBnX2ZyZWUoY1N0cmluZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworc3RhdGljIHZvaWQgdGVzdF9pbWVfbG9hZF9zdGF0dXNfY2IoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgR1BhcmFtU3BlYyogc3BlYywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBLZXlFdmVudEZp
eHR1cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilkYXRhOworICAgIFdlYktpdExvYWRT
dGF0dXMgc3RhdHVzID0gd2Via2l0X3dlYl92aWV3X2dldF9sb2FkX3N0YXR1cyh3ZWJWaWV3KTsK
KyAgICBpZiAoc3RhdHVzICE9IFdFQktJVF9MT0FEX0ZJTklTSEVEKQorICAgICAgICByZXR1cm47
CisKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0
X2dsb2JhbF9jb250ZXh0KAorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUo
d2ViVmlldykpOworICAgIGdfYXNzZXJ0KGNvbnRleHQpOworCisgICAgR3RrSU1Db250ZXh0KiBp
bUNvbnRleHQgPSAwOworICAgIGdfb2JqZWN0X2dldCh3ZWJWaWV3LCAiaW0tY29udGV4dCIsICZp
bUNvbnRleHQsIE5VTEwpOworICAgIGdfYXNzZXJ0KGltQ29udGV4dCk7CisKKyAgICAvLyBUZXN0
IHRoYXQgY29tbWl0cyB0aGF0IGhhcHBlbiBvdXRzaWRlIG9mIGtleSBldmVudHMKKyAgICAvLyBj
aGFuZ2UgdGhlIHRleHQgZmllbGQgaW1tZWRpYXRlbHkuIFRoaXMgY2xvc2VseSByZXBsaWNhdGVz
CisgICAgLy8gdGhlIGJlaGF2aW9yIG9mIFNDSU0uCisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0
X2VxdWFsX3RvKGNvbnRleHQsICIiKSk7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGltQ29u
dGV4dCwgImNvbW1pdCIsICJhIik7CisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3Rv
KGNvbnRleHQsICJhIikpOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShpbUNvbnRleHQsICJj
b21taXQiLCAiYiIpOworICAgIGdfYXNzZXJ0KGVsZW1lbnRfdGV4dF9lcXVhbF90byhjb250ZXh0
LCAiYWIiKSk7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGltQ29udGV4dCwgImNvbW1pdCIs
ICJjIik7CisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsICJhYmMi
KSk7CisKKyAgICBnX29iamVjdF91bnJlZihpbUNvbnRleHQpOworICAgIGdfbWFpbl9sb29wX3F1
aXQoZml4dHVyZS0+bG9vcCk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfaW1lKEtleUV2ZW50Rml4
dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRlciBkYXRhKQoreworICAgIHNldHVwX2tleWV2ZW50
X3Rlc3QoZml4dHVyZSwgZGF0YSwgR19DQUxMQkFDSyh0ZXN0X2ltZV9sb2FkX3N0YXR1c19jYikp
OworfQorCitzdGF0aWMgZ2Jvb2xlYW4gdmVyaWZ5X2NvbnRlbnRzKGdwb2ludGVyIGRhdGEpCit7
CisgICAgS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlID0gKEtleUV2ZW50Rml4dHVyZSopZGF0YTsK
KyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2ds
b2JhbF9jb250ZXh0KAorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUoZml4
dHVyZS0+d2ViVmlldykpOworICAgIGdfYXNzZXJ0KGNvbnRleHQpOworCisgICAgZ19hc3NlcnQo
ZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsIGZpeHR1cmUtPmluZm8tPnRleHQpKTsKKyAg
ICBnX21haW5fbG9vcF9xdWl0KGZpeHR1cmUtPmxvb3ApOworICAgIHJldHVybiBGQUxTRTsKK30K
Kworc3RhdGljIHZvaWQgdGVzdF9ibG9ja2luZ19sb2FkX3N0YXR1c19jYihXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBzcGVjLCBncG9pbnRlciBkYXRhKQoreworICAgIEtleUV2
ZW50Rml4dHVyZSogZml4dHVyZSA9IChLZXlFdmVudEZpeHR1cmUqKWRhdGE7CisgICAgV2ViS2l0
TG9hZFN0YXR1cyBzdGF0dXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRfc3RhdHVzKHdlYlZp
ZXcpOworICAgIGlmIChzdGF0dXMgIT0gV0VCS0lUX0xPQURfRklOSVNIRUQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIFRoZSBmaXJzdCBrZXlwcmVzcyBldmVudCBzaG91bGQgbm90IG1vZGlm
eSB0aGUgZmllbGQuCisgICAgZml4dHVyZS0+aW5mby0+dGV4dCA9ICJiYyI7CisgICAgZ3RrX3Rl
c3Rfd2lkZ2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnYScpLCAwKTsKKyAg
ICBndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdiJyks
IDApOworICAgIGd0a190ZXN0X3dpZGdldF9zZW5kX2tleShHVEtfV0lER0VUKGZpeHR1cmUtPndl
YlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2
YWwoJ2MnKSwgMCk7CisgICAgZ19pZGxlX2FkZCh2ZXJpZnlfY29udGVudHMsIGZpeHR1cmUpOwor
fQorCitzdGF0aWMgdm9pZCB0ZXN0X2Jsb2NraW5nKEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSwg
Z2NvbnN0cG9pbnRlciBkYXRhKQoreworICAgIHNldHVwX2tleWV2ZW50X3Rlc3QoZml4dHVyZSwg
ZGF0YSwgR19DQUxMQkFDSyh0ZXN0X2Jsb2NraW5nX2xvYWRfc3RhdHVzX2NiKSk7Cit9CiAKKyNp
ZmRlZiBHREtfV0lORE9XSU5HX1gxMQorc3RhdGljIHZvaWQgdGVzdF94aW1fbG9hZF9zdGF0dXNf
Y2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFtU3BlYyogc3BlYywgZ3BvaW50ZXIgZGF0
YSkKK3sKKyAgICBLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilk
YXRhOworICAgIFdlYktpdExvYWRTdGF0dXMgc3RhdHVzID0gd2Via2l0X3dlYl92aWV3X2dldF9s
b2FkX3N0YXR1cyh3ZWJWaWV3KTsKKyAgICBpZiAoc3RhdHVzICE9IFdFQktJVF9MT0FEX0ZJTklT
SEVEKQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtJTUNvbnRleHQqIGltQ29udGV4dCA9IDA7
CisgICAgZ19vYmplY3RfZ2V0KHdlYlZpZXcsICJpbS1jb250ZXh0IiwgJmltQ29udGV4dCwgTlVM
TCk7CisgICAgZ19hc3NlcnQoaW1Db250ZXh0KTsKKworICAgIGNvbnN0IGNoYXIqIG9yaWdpbmFs
SWQgPSBndGtfaW1fbXVsdGljb250ZXh0X2dldF9jb250ZXh0X2lkKEdUS19JTV9NVUxUSUNPTlRF
WFQoaW1Db250ZXh0KSk7CisgICAgZ3RrX2ltX211bHRpY29udGV4dF9zZXRfY29udGV4dF9pZChH
VEtfSU1fTVVMVElDT05URVhUKGltQ29udGV4dCksICJ4aW0iKTsKKworICAgIC8vIFRlc3QgdGhh
dCBjb21taXRzIHRoYXQgaGFwcGVuIG91dHNpZGUgb2Yga2V5IGV2ZW50cworICAgIC8vIGNoYW5n
ZSB0aGUgdGV4dCBmaWVsZCBpbW1lZGlhdGVseS4gVGhpcyBjbG9zZWx5IHJlcGxpY2F0ZXMKKyAg
ICAvLyB0aGUgYmVoYXZpb3Igb2YgU0NJTS4KKyAgICBmaXh0dXJlLT5pbmZvLT50ZXh0ID0gImRl
YmlhbiI7CisgICAgZ3RrX3Rlc3Rfd2lkZ2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4dHVyZS0+
d2ViVmlldyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tl
eXZhbCgnZCcpLCAwKTsKKyAgICBndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChm
aXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX3VuaWNv
ZGVfdG9fa2V5dmFsKCdlJyksIDApOworICAgIGd0a190ZXN0X3dpZGdldF9zZW5kX2tleShHVEtf
V0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZGtfdW5pY29kZV90b19rZXl2YWwoJ2InKSwgMCk7CisgICAgZ3RrX3Rlc3Rfd2lkZ2V0X3NlbmRf
a2V5KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnaScpLCAwKTsKKyAgICBndGtfdGVzdF93aWRn
ZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdhJyksIDApOworICAgIGd0a190
ZXN0X3dpZGdldF9zZW5kX2tleShHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2YWwoJ24nKSwgMCk7CisK
KyAgICBndGtfaW1fbXVsdGljb250ZXh0X3NldF9jb250ZXh0X2lkKEdUS19JTV9NVUxUSUNPTlRF
WFQoaW1Db250ZXh0KSwgb3JpZ2luYWxJZCk7CisgICAgZ19vYmplY3RfdW5yZWYoaW1Db250ZXh0
KTsKKworICAgIGdfaWRsZV9hZGQodmVyaWZ5X2NvbnRlbnRzLCBmaXh0dXJlKTsKIH0KIAorc3Rh
dGljIHZvaWQgdGVzdF94aW0oS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVy
IGRhdGEpCit7CisgICAgc2V0dXBfa2V5ZXZlbnRfdGVzdChmaXh0dXJlLCBkYXRhLCBHX0NBTExC
QUNLKHRlc3RfeGltX2xvYWRfc3RhdHVzX2NiKSk7Cit9CisjZW5kaWYKKwogaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQogewogICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CkBAIC0xNDcs
MzAgKzI5NCw4NSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKICAgICBnX3Rl
c3RfYnVnX2Jhc2UoImh0dHBzOi8vYnVncy53ZWJraXQub3JnLyIpOwogCi0gICAgZ190ZXN0X2Fk
ZCgiL3dlYmtpdC9rZXlldmVudC90ZXh0ZmllbGQiLCBLZXlFdmVudEZpeHR1cmUsCi0gICAgICAg
ICAgICAgICB0ZXN0X2luZm9fbmV3KCI8aHRtbD48Ym9keT48aW5wdXQgaWQ9XCJpblwiIHR5cGU9
XCJ0ZXh0XCI+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHNjcmlwdD5kb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOyIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+IiwgVFJVRSksCisKKyAgICAvLyBXZSdsbCB0
ZXN0IGlucHV0IG9uIGEgc2xldyBvZiBkaWZmZXJlbnQgbm9kZSB0eXBlcy4gS2V5IGV2ZW50cyB0
bworICAgIC8vIHRleHQgaW5wdXRzIGFuZCBlZGl0YWJsZSBkaXZzIHNob3VsZCBiZSBtYXJrZWQg
YXMgaGFuZGxlZC4gS2V5IGV2ZW50cworICAgIC8vIHRvIGJ1dHRvbnMgYW5kIGxpbmtzIHNob3Vs
ZCBub3QuCisgICAgY29uc3QgY2hhciogdGV4dGlucHV0X2h0bWwgPSAiPGh0bWw+PGJvZHk+PGlu
cHV0IGlkPVwiaW5cIiB0eXBlPVwidGV4dFwiPiIKKyAgICAgICAgIjxzY3JpcHQ+ZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8L3NjcmlwdD48L2JvZHk+PC9odG1sPiI7Cisg
ICAgY29uc3QgY2hhciogYnV0dG9uX2h0bWwgPSAiPGh0bWw+PGJvZHk+PGlucHV0IGlkPVwiaW5c
IiB0eXBlPVwiYnV0dG9uXCI+IgorICAgICAgICAiPHNjcmlwdD5kb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0PjwvYm9keT48L2h0bWw+IjsKKyAgICBjb25zdCBj
aGFyKiBsaW5rX2h0bWwgPSAiPGh0bWw+PGJvZHk+PGEgaHJlZj1cImh0dHA6Ly93d3cuZ25vbWUu
b3JnXCIgaWQ9XCJpblwiPiIKKyAgICAgICAgIkxJTktZIE1DTElOS0VSU09OPC9hPjxzY3JpcHQ+
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8L3NjcmlwdD4iCisgICAgICAg
ICI8L2JvZHk+PC9odG1sPiI7CisgICAgY29uc3QgY2hhciogZGl2X2h0bWwgPSAiPGh0bWw+PGJv
ZHk+PGRpdiBpZD1cImluXCIgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiPiIKKyAgICAgICAgIjxz
Y3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8L3NjcmlwdD48L2Jv
ZHk+PC9odG1sPiI7CisKKyAgICAvLyBUaGVzZSBhcmUgc2ltaWxhciB0byB0aGUgYmxvY2tzIGFi
b3ZlLCBidXQgdGhleSBzaG91bGQgYmxvY2sgdGhlIGZpcnN0CisgICAgLy8ga2V5cHJlc3MgbW9k
aWZ5aW5nIHRoZSBlZGl0YWJsZSBub2RlLgorICAgIGNvbnN0IGNoYXIqIHRleHRpbnB1dF9odG1s
X2Jsb2NraW5nID0gIjxodG1sPjxib2R5PiIKKyAgICAgICAgIjxpbnB1dCBpZD1cImluXCIgdHlw
ZT1cInRleHRcIiAiCisgICAgICAgICJvbmtleXByZXNzPVwiaWYgKGZpcnN0KSB7ZXZlbnQucHJl
dmVudERlZmF1bHQoKTtmaXJzdD1mYWxzZTt9XCI+IgorICAgICAgICAiPHNjcmlwdD5maXJzdCA9
IHRydWU7XG5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0Plxu
IgorICAgICAgICAiPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iOworICAgIGNvbnN0IGNoYXIqIGRp
dl9odG1sX2Jsb2NraW5nID0gIjxodG1sPjxib2R5PiIKKyAgICAgICAgIjxkaXYgaWQ9XCJpblwi
IGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIiAiCisgICAgICAgICJvbmtleXByZXNzPVwiaWYgKGZp
cnN0KSB7ZXZlbnQucHJldmVudERlZmF1bHQoKTtmaXJzdD1mYWxzZTt9XCI+IgorICAgICAgICAi
PHNjcmlwdD5maXJzdCA9IHRydWU7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3Vz
KCk7PC9zY3JpcHQ+XG4iCisgICAgICAgICI8L3NjcmlwdD48L2JvZHk+PC9odG1sPiI7CisKKyAg
ICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50cy9ldmVudC10ZXh0aW5wdXQiLCBLZXlFdmVu
dEZpeHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KHRleHRpbnB1dF9odG1sLCBU
UlVFKSwKICAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAotICAgICAgICAg
ICAgICAgdGVzdF9rZXlwcmVzcywKKyAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3NfZXZlbnRz
LAogICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOwotCi0gICAgZ190
ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudC9idXR0b25zIiwgS2V5RXZlbnRGaXh0dXJlLAotICAg
ICAgICAgICAgICAgdGVzdF9pbmZvX25ldygiPGh0bWw+PGJvZHk+PGlucHV0IGlkPVwiaW5cIiB0
eXBlPVwiYnV0dG9uXCI+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHNjcmlwdD5k
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOyIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+IiwgRkFMU0UpLAorICAgIGdfdGVz
dF9hZGQoIi93ZWJraXQva2V5ZXZlbnRzL2V2ZW50LWJ1dHRvbnMiLCBLZXlFdmVudEZpeHR1cmUs
CisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KGJ1dHRvbl9odG1sLCBGQUxTRSksCiAgICAg
ICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKLSAgICAgICAgICAgICAgIHRlc3Rf
a2V5cHJlc3MsCisgICAgICAgICAgICAgICB0ZXN0X2tleXByZXNzX2V2ZW50cywKICAgICAgICAg
ICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKLQotICAgIGdfdGVzdF9hZGQoIi93
ZWJraXQva2V5ZXZlbnQvbGluayIsIEtleUV2ZW50Rml4dHVyZSwKLSAgICAgICAgICAgICAgIHRl
c3RfaW5mb19uZXcoIjxodG1sPjxib2R5PjxhIGhyZWY9XCJodHRwOi8vd3d3Lmdub21lLm9yZ1wi
IGlkPVwiaW5cIj4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMSU5LWSBNQ0xJTktF
UlNPTjwvYT48c2NyaXB0PiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7PC9zY3JpcHQ+IgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiPC9ib2R5PjwvaHRtbD4iLCBGQUxTRSksCisgICAgZ190ZXN0X2FkZCgi
L3dlYmtpdC9rZXlldmVudHMvZXZlbnQtbGluayIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAg
ICAgICAgIHRlc3RfaW5mb19uZXcobGlua19odG1sLCBGQUxTRSksCiAgICAgICAgICAgICAgICBr
ZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKLSAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3MsCisg
ICAgICAgICAgICAgICB0ZXN0X2tleXByZXNzX2V2ZW50cywKICAgICAgICAgICAgICAgIGtleV9l
dmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50
L2V2ZW50LWRpdiIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5mb19u
ZXcoZGl2X2h0bWwsIFRSVUUpLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0
dXAsCisgICAgICAgICAgICAgICB0ZXN0X2tleXByZXNzX2V2ZW50cywKKyAgICAgICAgICAgICAg
IGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tl
eWV2ZW50L2ltZS10ZXh0aW5wdXQiLCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAgICAgICAgICB0
ZXN0X2luZm9fbmV3KHRleHRpbnB1dF9odG1sLCBUUlVFKSwKKyAgICAgICAgICAgICAgIGtleV9l
dmVudF9maXh0dXJlX3NldHVwLAorICAgICAgICAgICAgICAgdGVzdF9pbWUsCisgICAgICAgICAg
ICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisgICAgZ190ZXN0X2FkZCgiL3dlYmtp
dC9rZXlldmVudC9pbWUtZGl2IiwgS2V5RXZlbnRGaXh0dXJlLAorICAgICAgICAgICAgICAgdGVz
dF9pbmZvX25ldyhkaXZfaHRtbCwgVFJVRSksCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4
dHVyZV9zZXR1cCwKKyAgICAgICAgICAgICAgIHRlc3RfaW1lLAorICAgICAgICAgICAgICAga2V5
X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZl
bnQvYmxvY2stdGV4dGlucHV0IiwgS2V5RXZlbnRGaXh0dXJlLAorICAgICAgICAgICAgICAgdGVz
dF9pbmZvX25ldyh0ZXh0aW5wdXRfaHRtbF9ibG9ja2luZywgVFJVRSksCisgICAgICAgICAgICAg
ICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKKyAgICAgICAgICAgICAgIHRlc3RfYmxvY2tpbmcs
CisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisgICAgZ190ZXN0
X2FkZCgiL3dlYmtpdC9rZXlldmVudC9ibG9jay1kaXYiLCBLZXlFdmVudEZpeHR1cmUsCisgICAg
ICAgICAgICAgICB0ZXN0X2luZm9fbmV3KGRpdl9odG1sX2Jsb2NraW5nLCBUUlVFKSwKKyAgICAg
ICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAorICAgICAgICAgICAgICAgdGVzdF9i
bG9ja2luZywKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyNp
ZmRlZiBHREtfV0lORE9XSU5HX1gxMQorICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQv
eGltLXRleHRpbnB1dCIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5m
b19uZXcodGV4dGlucHV0X2h0bWwsIFRSVUUpLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2Zp
eHR1cmVfc2V0dXAsCisgICAgICAgICAgICAgICB0ZXN0X3hpbSwKKyAgICAgICAgICAgICAgIGtl
eV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2
ZW50L3hpbS1kaXYiLCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9f
bmV3KGRpdl9odG1sLCBUUlVFKSwKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3Nl
dHVwLAorICAgICAgICAgICAgICAgdGVzdF94aW0sCisgICAgICAgICAgICAgICBrZXlfZXZlbnRf
Zml4dHVyZV90ZWFyZG93bik7CisjZW5kaWYKIAogICAgIHJldHVybiBnX3Rlc3RfcnVuKCk7CiB9
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDhjNWI4MDIuLmMyM2VlN2YgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC01MTAsMTIgKzUxMCwxOSBAQCBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2tleV9yZWxlYXNlX2V2ZW50KEd0a1dpZGdldCog
d2lkZ2V0LCBHZGtFdmVudEtleQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJL
SVRfV0VCX1ZJRVcod2lkZ2V0KTsKIAorICAgIC8vIEdUSysgSU0gY29udGV4dHMgb2Z0ZW4gcmVx
dWlyZSB1cyB0byBmaWx0ZXIga2V5IHJlbGVhc2UgZXZlbnRzLCB3aGljaAorICAgIC8vIFdlYkNv
cmUgZG9lcyBub3QgZG8gYnkgZGVmYXVsdCwgc28gd2UgZmlsdGVyIHRoZSBldmVudCBoZXJlLiBX
ZSBvbmx5IGJsb2NrCisgICAgLy8gdGhlIGV2ZW50IGlmIHdlIGRvbid0IGhhdmUgYSBwZW5kaW5n
IGNvbXBvc2l0aW9uLCBiZWNhdXNlIHRoYXQgbWVhbnMgd2UKKyAgICAvLyBhcmUgdXNpbmcgYSBj
b250ZXh0IGxpa2UgJ3NpbXBsZScgd2hpY2ggbWFya3MgZXZlcnkga2V5c3Ryb2tlIGFzIGZpbHRl
cmVkLgorICAgIFdlYktpdDo6RWRpdG9yQ2xpZW50KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJL
aXQ6OkVkaXRvckNsaWVudCo+KGNvcmUod2ViVmlldyktPmVkaXRvckNsaWVudCgpKTsKKyAgICBp
ZiAoZ3RrX2ltX2NvbnRleHRfZmlsdGVyX2tleXByZXNzKHdlYlZpZXctPnByaXYtPmltQ29udGV4
dCwgZXZlbnQpICYmICFjbGllbnQtPmhhc1BlbmRpbmdDb21wb3NpdGlvbigpKQorICAgICAgICBy
ZXR1cm4gVFJVRTsKKwogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lLT52aWV3KCkp
CiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXli
b2FyZEV2ZW50KGV2ZW50KTsKLQogICAgIGlmIChmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2
ZW50KGtleWJvYXJkRXZlbnQpKQogICAgICAgICByZXR1cm4gVFJVRTsKIApAQCAtNjcwLDYgKzY3
Nyw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqCiAgICAgICAgICAgICBmb2N1c0NvbnRyb2xs
ZXItPnNldEZvY3VzZWQodHJ1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZvY3VzQ29u
dHJvbGxlci0+c2V0Rm9jdXNlZEZyYW1lKGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpKTsKKwor
ICAgICAgICBndGtfaW1fY29udGV4dF9mb2N1c19pbih3ZWJWaWV3LT5wcml2LT5pbUNvbnRleHQp
OwogICAgIH0KICAgICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFy
ZW50X2NsYXNzKS0+Zm9jdXNfaW5fZXZlbnQod2lkZ2V0LCBldmVudCk7CiB9CkBAIC02ODAsNiAr
Njg5LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb2N1c19vdXRfZXZlbnQo
R3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMKIAogICAgIGNvcmUod2ViVmlldyktPmZv
Y3VzQ29udHJvbGxlcigpLT5zZXRBY3RpdmUoZmFsc2UpOwogICAgIGNvcmUod2ViVmlldyktPmZv
Y3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkKGZhbHNlKTsKKyAgICBndGtfaW1fY29udGV4dF9m
b2N1c19vdXQod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0KTsKIAogICAgIHJldHVybiBHVEtfV0lE
R0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5mb2N1c19vdXRfZXZlbnQo
d2lkZ2V0LCBldmVudCk7CiB9Ci0tIAoxLjYuMy4zCgo=
</data>
<flag name="commit-queue"
          id="31437"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49120</attachid>
            <date>2010-02-19 23:43:30 -0800</date>
            <delta_ts>2010-03-13 12:05:06 -0800</delta_ts>
            <desc>Patch for this issue (rev6)</desc>
            <filename>0001-can-t-input-korean-into-lower-all-input-box-except-a.patch</filename>
            <type>text/plain</type>
            <size>30166</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA4OTkyZTZlNTNkMWE2YzY2YWI2NmNkZWY5MjExOWZhZDE5YzA0M2Y3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBGcmksIDI5IEphbiAyMDEwIDE4OjUyOjM1IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
Y2FuJ3QgaW5wdXQga29yZWFuIGludG8gbG93ZXIgYWxsIGlucHV0IGJveCBleGNlcHQgYWRyZXNz
IGlucHV0IGJveCBpbiB3ZWJraXQgZ3RrIGxhdW5jaGVyCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzIyOTAKCi0tLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA0NSArKysrCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5jcHAgfCAgMTM3ICsrKysrKysrLS0tLS0KIFdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggICB8ICAgMTAgKwogV2ViS2l0L2d0ay90ZXN0
cy90ZXN0a2V5ZXZlbnRzLmMgICAgICAgICAgICAgIHwgIDI3MiArKysrKysrKysrKysrKysrKysr
KystLS0tCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgICAgICAgfCAg
IDEyICstCiA1IGZpbGVzIGNoYW5nZWQsIDM4OSBpbnNlcnRpb25zKCspLCA4NyBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCmluZGV4IDQzZDJkMjAuLmFmZGJkNGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDIt
MTkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNhbid0IGlucHV0IGtvcmVhbiBp
bnRvIGxvd2VyIGFsbCBpbnB1dCBib3ggZXhjZXB0IGFkcmVzcyBpbnB1dCBib3ggaW4gd2Via2l0
IGd0ayBsYXVuY2hlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzIyOTAKKworICAgICAgICBNYWtlIHRoZSBHVEsrIEVkaXRvckNsaWVudCBwcm9wZXJs
eSBoYW5kbGUgZGlmZmVyZW50IHR5cGVzIG9mIGlucHV0IG1vZHVsZQorICAgICAgICBiZWhhdmlv
ciBzdWNoIGFzIGNvbW1pdCBhbmQgcHJlZWRpdCBzaWduYWxzIHRoYXQgaGFwcGVuIG91dHNpZGUg
b2Yga2V5IGV2ZW50CisgICAgICAgIGZpbHRlcmluZyBhbmQgbXVsdGlwbGUgdGltZXMgaW4gYSBy
b3cuIEZpbHRlciBrZXl1cCBldmVudHMgYXMgd2VsbCBhcyBrZXlkb3duCisgICAgICAgIGV2ZW50
cyBhbmQgY2FsbCBndGtfaW1fY29udGV4dF9mb2N1c197aW4vb3V0fSB3aGVuIHRoZSBXZWJWaWV3
IGZvY3VzIGNoYW5nZXMuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIHRoaXMgYmVoYXZpb3Ig
dG8gdGhlIEdUSysgdW5pdCB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltQ29udGV4dENvbW1pdHRlZCk6IEhh
bmRsZSB0aGlzIHNpZ25hbCBwcm9wZXJseSB3aGVuIGl0IGhhcHBlbnMgb3V0c2lkZSBvZgorICAg
ICAgICBrZXkgZXZlbnQgZmlsdGVyaW5nLgorICAgICAgICAoV2ViS2l0OjppbUNvbnRleHRQcmVl
ZGl0Q2hhbmdlZCk6IEltbWVkaWF0ZWx5IHVwZGF0ZSB0aGUgcHJlZWRpdCBzdGF0ZSBhbmQgZG8g
bm90IHJlamVjdAorICAgICAgICBlbXB0eSBwcmVlZGl0cywgc28gdGhhdCBjYW5jZWxsYXRpb24g
d29ya3MgcHJvcGVybHkuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6dXBkYXRlUGVu
ZGluZ0NvbXBvc2l0aW9uKTogQWRkIHRoaXMgbWV0aG9kLCB3aGljaCBoYW5kbGVzIHRoZQorICAg
ICAgICBzaXR1YXRpb24gd2hlcmUgYSBjb21taXQgc2lnbmFsIGhhcHBlbnMgd2hlbiB0aGVyZSBp
cyBzdGlsbCBhIHBlbmRpbmcgY29tbWl0LgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6
OnNob3VsZEJlZ2luRWRpdGluZyk6IENsZWFyIHBlbmRpbmcgY29tcG9zaXRpb24gc3RhdGUgYmVm
b3JlIGVkaXRpbmcKKyAgICAgICAgc3RhcnRzLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGll
bnQ6OnNob3VsZEVuZEVkaXRpbmcpOiBDbGVhciBwZW5kaW5nIGNvbXBvc2l0aW9uIHN0YXRlIGJl
Zm9yZSBlZGl0aW5nIGVuZHMuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6aGFuZGxl
S2V5Ym9hcmRFdmVudCk6IE5vIGxvbmdlciBzcGVjaWFsIGNhc2UgcHJlZWRpdHMgd2hpY2ggaGFw
cGVuIGR1cmluZworICAgICAgICBrZXkgZXZlbnQgZmlsdGVyaW5nLiBXaGVuIGNvbmZpcm1pbmcg
YSBwZW5kaW5nIGNvbXBvc2l0aW9uIHVzZSBpbnNlcnRUZXh0IGluc3RlYWQgb2YgY29uZmlybUNv
bXBvc2l0aW9uLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0
aG9kS2V5ZG93bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmg6
IE1ha2UgcGVuZGluZ0NvbXBvc2l0aW9uIGEgbWVtYmVyLCBzbyB0aGF0IG11bHRpcGxlIFdlYlZp
ZXdzCisgICAgICAgIGRvIG5vdCBzaGFyZSBzdGF0ZS4KKyAgICAgICAgKFdlYktpdDo6RWRpdG9y
Q2xpZW50Ojp3ZWJWaWV3KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6
dHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpF
ZGl0b3JDbGllbnQ6OmNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKTogQWRkZWQuCisgICAgICAgICog
dGVzdHMvdGVzdGtleWV2ZW50cy5jOgorICAgICAgICAodGVzdF9rZXlwcmVzc19ldmVudHNfbG9h
ZF9zdGF0dXNfY2IpOgorICAgICAgICAobWFwX2V2ZW50X2NiKToKKyAgICAgICAgKHNldHVwX2tl
eWV2ZW50X3Rlc3QpOgorICAgICAgICAodGVzdF9rZXlwcmVzc19ldmVudHMpOgorICAgICAgICAo
ZWxlbWVudF90ZXh0X2VxdWFsX3RvKToKKyAgICAgICAgKHRlc3RfaW1lX2xvYWRfc3RhdHVzX2Ni
KToKKyAgICAgICAgKHRlc3RfaW1lKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19rZXlfcmVsZWFz
ZV9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQpOgorCiAy
MDEwLTAyLTE4ICBEaWVnbyBFc2NhbGFudGUgVXJyZWxvICA8ZGVzY2FsYW50ZUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCAwMmQxYTUzLi4z
MDllMjFlIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsu
Y3BwCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwOSBEaWVnbyBFc2NhbGFu
dGUgVXJyZWxvIDxkaWVnb2VAZ25vbWUub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
OSwgSWdhbGlhIFMuTC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAsIE1hcnRpbiBSb2JpbnNvbiA8
bXJvYmluc29uQHdlYmtpdC5vcmc+CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01MSw0MCArNTIs
NDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1z
dGF0aWMgZ2NoYXIqIHBlbmRpbmdDb21wb3NpdGlvbiA9IDA7Ci1zdGF0aWMgZ2NoYXIqIHBlbmRp
bmdQcmVlZGl0ID0gMDsKLQotc3RhdGljIHZvaWQgc2V0UGVuZGluZ0NvbXBvc2l0aW9uKGdjaGFy
KiBuZXdDb21wb3NpdGlvbikKK3N0YXRpYyB2b2lkIGltQ29udGV4dENvbW1pdHRlZChHdGtJTUNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IGdjaGFyKiBjb21wb3NpdGlvblN0cmluZywgRWRpdG9yQ2xp
ZW50KiBjbGllbnQpCiB7Ci0gICAgZ19mcmVlKHBlbmRpbmdDb21wb3NpdGlvbik7Ci0gICAgcGVu
ZGluZ0NvbXBvc2l0aW9uID0gbmV3Q29tcG9zaXRpb247Ci19CisgICAgLy8gSWYgdGhpcyBzaWdu
YWwgZmlyZXMgZHVyaW5nIGEga2V5ZG93biBldmVudCB3aGVuIHdlIGFyZSBub3QgaW4gdGhlIG1p
ZGRsZQorICAgIC8vIG9mIGEgY29tcG9zaXRpb24sIHRoZW4gdHJlYXQgdGhpcyAnY29tbWl0JyBh
cyBhIG5vcm1hbCBrZXkgZXZlbnQgYW5kIGp1c3QKKyAgICAvLyBjaGFuZ2UgdGhlIGVkaXRhYmxl
IGFyZWEgcmlnaHQgYmVmb3JlIHRoZSBrZXlwcmVzcyBldmVudC4KKyAgICBpZiAoY2xpZW50LT50
cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50KCkpIHsKKyAgICAgICAgY2xpZW50LT51cGRhdGVQ
ZW5kaW5nQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogCi1zdGF0aWMgdm9pZCBzZXRQZW5kaW5nUHJlZWRpdChnY2hhciogbmV3UHJlZWRpdCkK
LXsKLSAgICBnX2ZyZWUocGVuZGluZ1ByZWVkaXQpOwotICAgIHBlbmRpbmdQcmVlZGl0ID0gbmV3
UHJlZWRpdDsKLX0KKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKGNsaWVudC0+d2ViVmlldygpKS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUg
fHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm47CiAKLXN0YXRp
YyB2b2lkIGNsZWFyUGVuZGluZ0lNRGF0YSgpCi17Ci0gICAgc2V0UGVuZGluZ0NvbXBvc2l0aW9u
KDApOwotICAgIHNldFBlbmRpbmdQcmVlZGl0KDApOwotfQotc3RhdGljIHZvaWQgaW1Db250ZXh0
Q29tbWl0dGVkKEd0a0lNQ29udGV4dCogY29udGV4dCwgY29uc3QgZ2NoYXIqIHN0ciwgRWRpdG9y
Q2xpZW50KiBjbGllbnQpCi17Ci0gICAgLy8gVGhpcyBzaWduYWwgd2lsbCBmaXJlIGR1cmluZyBh
IGtleWRvd24gZXZlbnQuIFdlIHdhbnQgdGhlIGNvbnRlbnRzIG9mIHRoZQotICAgIC8vIGZpZWxk
IHRvIGNoYW5nZSByaWdodCBiZWZvcmUgdGhlIGtleXVwIGV2ZW50LCBzbyB3ZSB3YWl0IHVudGls
IHRoZW4gdG8gYWN0dWFsbHkKLSAgICAvLyBjb21taXQgdGhpcyBjb21wb3NpdGlvbi4KLSAgICBz
ZXRQZW5kaW5nQ29tcG9zaXRpb24oZ19zdHJkdXAoc3RyKSk7CisgICAgZnJhbWUtPmVkaXRvcigp
LT5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOChjb21wb3NpdGlvblN0cmluZykp
OworICAgIGNsaWVudC0+Y2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKTsKIH0KIAogc3RhdGljIHZv
aWQgaW1Db250ZXh0UHJlZWRpdENoYW5nZWQoR3RrSU1Db250ZXh0KiBjb250ZXh0LCBFZGl0b3JD
bGllbnQqIGNsaWVudCkKIHsKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKGNsaWVudC0+d2ViVmll
dygpKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICgh
ZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm47CisK
ICAgICAvLyBXZSBpZ25vcmUgdGhlIHByb3ZpZGVkIFBhbmdvQXR0ckxpc3QgZm9yIG5vdy4KLSAg
ICBnY2hhciogbmV3UHJlZWRpdCA9IDA7Ci0gICAgZ3RrX2ltX2NvbnRleHRfZ2V0X3ByZWVkaXRf
c3RyaW5nKGNvbnRleHQsICZuZXdQcmVlZGl0LCBOVUxMLCBOVUxMKTsKLSAgICBzZXRQZW5kaW5n
UHJlZWRpdChuZXdQcmVlZGl0KTsKKyAgICBHT3duUHRyPGdjaGFyPiBuZXdQcmVlZGl0KDApOwor
ICAgIGd0a19pbV9jb250ZXh0X2dldF9wcmVlZGl0X3N0cmluZyhjb250ZXh0LCAmbmV3UHJlZWRp
dC5vdXRQdHIoKSwgMCwgMCk7CisKKyAgICBTdHJpbmcgcHJlZWRpdFN0cmluZyA9IFN0cmluZzo6
ZnJvbVVURjgobmV3UHJlZWRpdC5nZXQoKSk7CisgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJs
aW5lPiB1bmRlcmxpbmVzOworICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJs
aW5lKDAsIHByZWVkaXRTdHJpbmcubGVuZ3RoKCksIENvbG9yKDAsIDAsIDApLCBmYWxzZSkpOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdFN0cmluZywgdW5kZXJs
aW5lcywgMCwgMCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50Ojp1cGRhdGVQZW5kaW5nQ29tcG9z
aXRpb24oY29uc3QgZ2NoYXIqIG5ld0NvbXBvc2l0aW9uKQoreworICAgIC8vIFRoZSBJTUNvbnRl
eHQgbWF5IHNpZ25hbCBtb3JlIHRoYW4gb25lIGNvbXBsZXRlZCBjb21wb3NpdGlvbiBpbiBhIHJv
dywKKyAgICAvLyBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYXBwZW5kIHRoZW0sIHJhdGhlciB0
aGFuIG92ZXJ3cml0ZSB0aGUgb2xkIG9uZS4KKyAgICBpZiAoIW1fcGVuZGluZ0NvbXBvc2l0aW9u
KQorICAgICAgICBtX3BlbmRpbmdDb21wb3NpdGlvbi5zZXQoZ19zdHJkdXAobmV3Q29tcG9zaXRp
b24pKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGVuZGluZ0NvbXBvc2l0aW9uLnNldChnX3N0cmNv
bmNhdChtX3BlbmRpbmdDb21wb3NpdGlvbi5nZXQoKSwgbmV3Q29tcG9zaXRpb24sIE5VTEwpKTsK
IH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBhY3RpdmUp
CkBAIC0xMzksNyArMTQ4LDcgQEAgaW50IEVkaXRvckNsaWVudDo6c3BlbGxDaGVja2VyRG9jdW1l
bnRUYWcoKQogCiBib29sIEVkaXRvckNsaWVudDo6c2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNvcmU6
OlJhbmdlKikKIHsKLSAgICBjbGVhclBlbmRpbmdJTURhdGEoKTsKKyAgICBjbGVhclBlbmRpbmdD
b21wb3NpdGlvbigpOwogCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTE0Nyw3ICsxNTYsNyBAQCBib29sIEVkaXRvckNsaWVudDo6c2hvdWxkQmVnaW5FZGl0aW5n
KFdlYkNvcmU6OlJhbmdlKikKIAogYm9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZEVuZEVkaXRpbmco
V2ViQ29yZTo6UmFuZ2UqKQogewotICAgIGNsZWFyUGVuZGluZ0lNRGF0YSgpOworICAgIGNsZWFy
UGVuZGluZ0NvbXBvc2l0aW9uKCk7CiAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biB0cnVlOwpAQCAtNDY2LDggKzQ3NSwxMiBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5
Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGlmICghY29tbWFu
ZC5pc1RleHRJbnNlcnRpb24oKSAmJiBjb21tYW5kLmV4ZWN1dGUoZXZlbnQpKQogICAgICAgICAg
ICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogCisgICAgICAgICAgICBjbGVhclBl
bmRpbmdDb21wb3NpdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2Ug
aWYgKGNvbW1hbmQuZXhlY3V0ZShldmVudCkpIHsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChj
b21tYW5kLmV4ZWN1dGUoZXZlbnQpKSB7CisgICAgICAgICAgICBjbGVhclBlbmRpbmdDb21wb3Np
dGlvbigpOwogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ3OCwyNSArNDkxLDE0IEBAIHZvaWQgRWRpdG9y
Q2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIC8v
IGJlIHJlZmxlY3RlZCBpbiB0aGUgY29udGVudHMgb2YgdGhlIGZpZWxkIHVudGlsIHRoZSBrZXl1
cCBET00gZXZlbnQuCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXBy
ZXNzRXZlbnQpIHsKIAotICAgICAgICBpZiAocGVuZGluZ0NvbXBvc2l0aW9uKSB7Ci0gICAgICAg
ICAgICBTdHJpbmcgY29tcG9zaXRpb25TdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHBlbmRpbmdD
b21wb3NpdGlvbik7Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3Np
dGlvbihjb21wb3NpdGlvblN0cmluZyk7Ci0KLSAgICAgICAgICAgIGNsZWFyUGVuZGluZ0lNRGF0
YSgpOwotICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0KLSAgICAgICAg
fSBlbHNlIGlmIChwZW5kaW5nUHJlZWRpdCkgewotICAgICAgICAgICAgU3RyaW5nIHByZWVkaXRT
dHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHBlbmRpbmdQcmVlZGl0KTsKLQotICAgICAgICAgICAg
Ly8gRG9uJ3QgdXNlIGFuIGVtcHR5IHByZWVkaXQgYXMgaXQgd2lsbCBkZXN0cm95IHRoZSBjdXJy
ZW50Ci0gICAgICAgICAgICAvLyBzZWxlY3Rpb24sIGV2ZW4gaWYgdGhlIGNvbXBvc2l0aW9uIGlz
IGNhbmNlbGxlZCBvciBmYWlscyBsYXRlciBvbi4KLSAgICAgICAgICAgIGlmICghcHJlZWRpdFN0
cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
cmxpbmU+IHVuZGVybGluZXM7Ci0gICAgICAgICAgICAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29t
cG9zaXRpb25VbmRlcmxpbmUoMCwgcHJlZWRpdFN0cmluZy5sZW5ndGgoKSwgQ29sb3IoMCwgMCwg
MCksIGZhbHNlKSk7Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3Np
dGlvbihwcmVlZGl0U3RyaW5nLCB1bmRlcmxpbmVzLCAwLCAwKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgY2xlYXJQZW5kaW5nSU1EYXRhKCk7CisgICAgICAgIC8vIElmIHdlIGhhdmUg
YSBwZW5kaW5nIGNvbXBvc2l0aW9uIGF0IHRoaXMgcG9pbnQsIGl0IGhhcHBlbmVkIHdoaWxlCisg
ICAgICAgIC8vIGZpbHRlcmluZyBhIGtleXByZXNzLCBzbyB3ZSB0cmVhdCBpdCBhcyBhIG5vcm1h
bCB0ZXh0IGluc2VydGlvbi4KKyAgICAgICAgLy8gVGhpcyB3aWxsIGFsc28gZW5zdXJlIHRoYXQg
aWYgdGhlIGtleXByZXNzIGV2ZW50IGhhbmRsZXIgY2hhbmdlZCB0aGUKKyAgICAgICAgLy8gY3Vy
cmVudGx5IGZvY3VzZWQgbm9kZSwgdGhlIHRleHQgaXMgc3RpbGwgaW5zZXJ0ZWQgaW50byB0aGUg
b3JpZ2luYWwKKyAgICAgICAgLy8gbm9kZSAoaW5zZXJ0VGV4dCgpIGhhcyB0aGlzIGxvZ2ljLCBi
dXQgY29uZmlybUNvbXBvc2l0aW9uKCkgZG9lcyBub3QpLgorICAgICAgICBpZiAobV9wZW5kaW5n
Q29tcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChT
dHJpbmc6OmZyb21VVEY4KG1fcGVuZGluZ0NvbXBvc2l0aW9uLmdldCgpKSwgZXZlbnQpOworICAg
ICAgICAgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKTsKICAgICAgICAgICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOwogCiAgICAgICAgIH0gZWxzZSB7CkBAIC01MjAsMTAgKzUyMiw0
MyBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJk
RXZlbnQqIGV2ZW50KQogICAgIGlmICghdGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZyYW1lLT5lZGl0
b3IoKS0+Y2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBUT0RPOiBXZSBuZWVk
IHRvIGRlY2lkZSB3aGljaCBmaWx0ZXJlZCBrZXlzdHJva2VzIHNob3VsZCBiZSB0cmVhdGVkIGFz
IElNCi0gICAgLy8gZXZlbnRzIGFuZCB3aGljaCBzaG91bGQgbm90LgogICAgIFdlYktpdFdlYlZp
ZXdQcml2YXRlKiBwcml2ID0gbV93ZWJWaWV3LT5wcml2OwotICAgIGd0a19pbV9jb250ZXh0X2Zp
bHRlcl9rZXlwcmVzcyhwcml2LT5pbUNvbnRleHQsIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtFdmVu
dEtleSgpKTsKKworICAgIC8vIFNvbWUgSU0gY29udGV4dHMgKGUuZy4gJ3NpbXBsZScpIHdpbGwg
YWN0IGFzIGlmIHRoZXkgZmlsdGVyIGV2ZXJ5CisgICAgLy8ga2V5c3Ryb2tlIGFuZCBqdXN0IGlz
c3VlIGEgJ2NvbW1pdCcgc2lnbmFsIGR1cmluZyBoYW5kbGluZy4gSW4gc2l0dWF0aW9ucworICAg
IC8vIHdoZXJlIHRoZSAnY29tbWl0JyBzaWduYWwgaGFwcGVucyBkdXJpbmcgZmlsdGVyaW5nIGFu
ZCB0aGVyZSBpcyBubyBhY3RpdmUKKyAgICAvLyBjb21wb3NpdGlvbiwgYWN0IGFzIGlmIHRoZSBr
ZXlzdHJva2Ugd2FzIG5vdCBmaWx0ZXJlZC4KKworICAgIC8vIEhlcmUgaXMgYSB0eXBpY2FsIHNl
cXVlbmNlIG9mIGV2ZW50cyBmb3IgdGhlICdzaW1wbGUnIGNvbnRleHQ6CisgICAgLy8gMS4gR0RL
IGtleSBwcmVzcyBldmVudCAtPiB3ZWJraXRfd2ViX3ZpZXdfa2V5X3ByZXNzX2V2ZW50CisgICAg
Ly8gMi4gS2V5ZG93biBldmVudCAtPiBFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5
ZG93bgorICAgIC8vICAgICBndGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MgcmV0dXJucyB0
cnVlLCBidXQgdGhlcmUgaXMgYXBlbmRpbmcKKyAgICAvLyAgICAgY29tcG9zaXRpb24gc28gZXZl
bnQtPnByZXZlbnREZWZhdWx0IGlzIG5vdCBjYWxsZWQgKGJlbG93KS4KKyAgICAvLyAzLiBLZXlk
b3duIGV2ZW50IGJ1YmJsZXMgdGhyb3VnaCB0aGUgRE9NCisgICAgLy8gNC4gS2V5ZG93biBldmVu
dCAtPiBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQKKyAgICAvLyAgICAgTm8gYWN0
aW9uIHRha2VuLgorICAgIC8vIDQuIEdESyBrZXkgcmVsZWFzZSBldmVudCAtPiB3ZWJraXRfd2Vi
X3ZpZXdfa2V5X3JlbGVhc2VfZXZlbnQKKyAgICAvLyA1LiBndGtfaW1fY29udGV4dF9maWx0ZXJf
a2V5cHJlc3MgaXMgY2FsbGVkIG9uIHRoZSByZWxlYXNlIGV2ZW50LgorICAgIC8vICAgICBTaW1w
bGUgZG9lcyBub3QgZmlsdGVyIG1vc3Qga2V5IHJlbGVhc2VzLCBzbyB0aGUgZXZlbnQgY29udGlu
dWVzLgorICAgIC8vIDYuIEtleXByZXNzIGV2ZW50IGJ1YmJsZXMgdGhyb3VnaCB0aGUgRE9NLgor
ICAgIC8vIDcuIEtleXByZXNzIGV2ZW50IC0+IEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRF
dmVudAorICAgIC8vICAgICBwZW5kaW5nIGNvbXBvc2l0aW9uIGlzIGluc2VydGVkLgorICAgIC8v
IDguIEtleXVwIGV2ZW50IGJ1YmJsZXMgdGhyb3VnaCB0aGUgRE9NLgorICAgIC8vIDkuIEtleXVw
IGV2ZW50IC0+IEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudAorICAgIC8vICAgICBO
byBhY3Rpb24gdGFrZW4uCisKKyAgICAvLyBUaGVyZSBhcmUgdHdvIHNpdHVhdGlvbnMgd2hlcmUg
d2UgZG8gZmlsdGVyIHRoZSBrZXlzdHJva2U6CisgICAgLy8gMS4gVGhlIElNQ29udGV4dCBpbnN0
cnVjdGVkIHVzIHRvIGZpbHRlciBhbmQgd2UgaGF2ZSBubyBwZW5kaW5nIGNvbXBvc2l0aW9uLgor
ICAgIC8vIDIuIFRoZSBJTUNvbnRleHQgZGlkIG5vdCBpbnN0cnVjdCB1cyB0byBmaWx0ZXIsIGJ1
dCB0aGUga2V5c3Ryb2tlIGNhdXNlZCBhCisgICAgLy8gICAgY29tcG9zaXRpb24gaW4gcHJvZ3Jl
c3MgdG8gZmluaXNoLiBJdCBzZWVtcyB0aGF0IHNvbWV0aW1lcyBTQ0lNIHdpbGwgZmluaXNoCisg
ICAgLy8gICAgYSBjb21wb3NpdGlvbiBhbmQgbm90IG1hcmsgdGhlIGtleXN0cm9rZSBhcyBmaWx0
ZXJlZC4KKyAgICBjbGVhclBlbmRpbmdDb21wb3NpdGlvbigpOworICAgIG1fdHJlYXRDb250ZXh0
Q29tbWl0QXNLZXlFdmVudCA9ICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9u
KCk7CisgICAgaWYgKChndGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MocHJpdi0+aW1Db250
ZXh0LCBldmVudC0+a2V5RXZlbnQoKS0+Z2RrRXZlbnRLZXkoKSkgJiYgIW1fcGVuZGluZ0NvbXBv
c2l0aW9uKQorICAgICAgICB8fCAoIW1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCAmJiAh
dGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKSkKKyAgICAgICAgZXZlbnQt
PnByZXZlbnREZWZhdWx0KCk7CisKKyAgICBtX3RyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQg
PSBmYWxzZTsKIH0KIAogRWRpdG9yQ2xpZW50OjpFZGl0b3JDbGllbnQoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCmlu
ZGV4IDkyOTI2NTEuLjJmMDJkMGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRHdGsuaApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAw
NiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBNYXJ0aW4gUm9iaW5zb24gPG1y
b2JpbnNvbkB3ZWJraXQub3JnPgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAt
MzQsOCArMzUsMTAgQEAKIAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL2d0ay9HT3duUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7Cit0eXBlZGVmIGNoYXIgZ2NoYXI7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBQYWdlOwpAQCAtNTMsNiArNTYsMTEgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgcHVibGljOgogICAgICAgICBFZGl0b3JDbGllbnQoV2ViS2l0
V2ViVmlldyopOwogICAgICAgICB+RWRpdG9yQ2xpZW50KCk7CisgICAgICAgIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KKyAgICAgICAgYm9vbCB0cmVhdENv
bnRleHRDb21taXRBc0tleUV2ZW50KCkgeyByZXR1cm4gbV90cmVhdENvbnRleHRDb21taXRBc0tl
eUV2ZW50OyB9CisgICAgICAgIHZvaWQgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKSB7IG1fcGVu
ZGluZ0NvbXBvc2l0aW9uLnNldCgwKTsgfQorICAgICAgICBib29sIGhhc1BlbmRpbmdDb21wb3Np
dGlvbigpIHsgcmV0dXJuIG1fcGVuZGluZ0NvbXBvc2l0aW9uOyB9CisgICAgICAgIHZvaWQgdXBk
YXRlUGVuZGluZ0NvbXBvc2l0aW9uKGNvbnN0IGNoYXIqKTsKIAogICAgICAgICAvLyBmcm9tIEVk
aXRvckNsaWVudAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOwpAQCAtMTIw
LDYgKzEyOCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
V2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OworICAgICAgICBib29sIG1fdHJlYXRDb250ZXh0Q29t
bWl0QXNLZXlFdmVudDsKKyAgICAgICAgR093blB0cjxnY2hhcj4gbV9wZW5kaW5nQ29tcG9zaXRp
b247CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay90ZXN0cy90ZXN0a2V5ZXZl
bnRzLmMgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RrZXlldmVudHMuYwppbmRleCBlZTc3MjhjLi45
MGQ4ODhlIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RrZXlldmVudHMuYworKysg
Yi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RrZXlldmVudHMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgTWFydGluIFJvYmluc29uCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTAgTWFydGluIFJvYmluc29uIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCkBAIC0yMiwxMiArMjIsMTYgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNs
dWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ29udGV4dFJlZi5oPgorCiAKICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKIAog
dHlwZWRlZiBzdHJ1Y3QgewotICBjaGFyKiBwYWdlOwotICBnYm9vbGVhbiBzaG91bGRCZUhhbmRs
ZWQ7CisgICAgY2hhciogcGFnZTsKKyAgICBjb25zdCBjaGFyKiB0ZXh0OworICAgIGdib29sZWFu
IHNob3VsZEJlSGFuZGxlZDsKIH0gVGVzdEluZm87CiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTgy
LDcgKzg2LDYgQEAgc3RhdGljIGdib29sZWFuIGtleV9wcmVzc19ldmVudF9jYihXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBHZGtFdmVudCogZXZlbnQsIGdwb2kKICAgICByZXR1cm4gRkFMU0U7CiB9
CiAKLQogc3RhdGljIGdib29sZWFuIGtleV9yZWxlYXNlX2V2ZW50X2NiKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIEdka0V2ZW50KiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKIHsKICAgICAvLyBXZWJD
b3JlIG5ldmVyIHNlZW1zIHRvIG1hcmsga2V5dXAgZXZlbnRzIGFzIGhhbmRsZWQuCkBAIC05NSwx
MSArOTgsMTUgQEAgc3RhdGljIGdib29sZWFuIGtleV9yZWxlYXNlX2V2ZW50X2NiKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIEdka0V2ZW50KiBldmVudCwgZ3AKICAgICByZXR1cm4gRkFMU0U7CiB9
CiAKLXN0YXRpYyB2b2lkIGxvYWRfc3RhdHVzX2NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQ
YXJhbVNwZWMqIHNwZWMsIGdwb2ludGVyIGRhdGEpCitzdGF0aWMgdm9pZCB0ZXN0X2tleXByZXNz
X2V2ZW50c19sb2FkX3N0YXR1c19jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVj
KiBzcGVjLCBncG9pbnRlciBkYXRhKQogewogICAgIEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSA9
IChLZXlFdmVudEZpeHR1cmUqKWRhdGE7CiAgICAgV2ViS2l0TG9hZFN0YXR1cyBzdGF0dXMgPSB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRfc3RhdHVzKHdlYlZpZXcpOwogICAgIGlmIChzdGF0dXMg
PT0gV0VCS0lUX0xPQURfRklOSVNIRUQpIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChmaXh0
dXJlLT53ZWJWaWV3LCAia2V5LXByZXNzLWV2ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBHX0NBTExCQUNLKGtleV9wcmVzc19ldmVudF9jYiksIGZpeHR1cmUpOworICAgICAgICBnX3Np
Z25hbF9jb25uZWN0KGZpeHR1cmUtPndlYlZpZXcsICJrZXktcmVsZWFzZS1ldmVudCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhrZXlfcmVsZWFzZV9ldmVudF9jYiksIGZp
eHR1cmUpOwogICAgICAgICBndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0
dXJlLT53ZWJWaWV3KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka191bmlj
b2RlX3RvX2tleXZhbCgnYScpLCAwKTsKICAgICB9CkBAIC0xMTAsMjUgKzExNywxNCBAQCBnYm9v
bGVhbiBtYXBfZXZlbnRfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEdka0V2ZW50KiBldmVudCwgZ3Bv
aW50ZXIgZGF0YSkKIHsKICAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMod2lkZ2V0KTsKICAgICBL
ZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilkYXRhOwotCi0gICAg
Z19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAia2V5LXByZXNzLWV2ZW50IiwKLSAg
ICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0soa2V5X3ByZXNzX2V2ZW50X2NiKSwgZml4dHVy
ZSk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAia2V5LXJlbGVhc2Ut
ZXZlbnQiLAotICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhrZXlfcmVsZWFzZV9ldmVu
dF9jYiksIGZpeHR1cmUpOwotCi0gICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3
LCAibm90aWZ5Ojpsb2FkLXN0YXR1cyIsCi0gICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNL
KGxvYWRfc3RhdHVzX2NiKSwgZml4dHVyZSk7Ci0KICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9z
dHJpbmcoZml4dHVyZS0+d2ViVmlldywgZml4dHVyZS0+aW5mby0+cGFnZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRleHQvaHRtbCIsICJ1dGYtOCIsICJmaWxlOi8vIik7Ci0K
ICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3Rfa2V5cHJlc3MoS2V5RXZl
bnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCitzdGF0aWMgdm9pZCBzZXR1
cF9rZXlldmVudF90ZXN0KEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRlciBk
YXRhLCBHQ2FsbGJhY2sgbG9hZF9ldmVudF9jYWxsYmFjaykKIHsKICAgICBmaXh0dXJlLT5pbmZv
ID0gKFRlc3RJbmZvKilkYXRhOwotCiAgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53aW5k
b3csICJtYXAtZXZlbnQiLAogICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhtYXBfZXZl
bnRfY2IpLCBmaXh0dXJlKTsKIApAQCAtMTM2LDEwICsxMzIsMTYxIEBAIHN0YXRpYyB2b2lkIHRl
c3Rfa2V5cHJlc3MoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEp
CiAgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldykpOwogICAg
IGd0a193aW5kb3dfcHJlc2VudChHVEtfV0lORE9XKGZpeHR1cmUtPndpbmRvdykpOwogCisgICAg
Z19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1cyIs
CisgICAgICAgICAgICAgICAgICAgICBsb2FkX2V2ZW50X2NhbGxiYWNrLCBmaXh0dXJlKTsKKwog
ICAgIGdfbWFpbl9sb29wX3J1bihmaXh0dXJlLT5sb29wKTsKK30KKworc3RhdGljIHZvaWQgdGVz
dF9rZXlwcmVzc19ldmVudHMoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVy
IGRhdGEpCit7CisgICAgc2V0dXBfa2V5ZXZlbnRfdGVzdChmaXh0dXJlLCBkYXRhLCBHX0NBTExC
QUNLKHRlc3Rfa2V5cHJlc3NfZXZlbnRzX2xvYWRfc3RhdHVzX2NiKSk7Cit9CisKK3N0YXRpYyBn
Ym9vbGVhbiBlbGVtZW50X3RleHRfZXF1YWxfdG8oSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0
IGdjaGFyKiB0ZXh0KQoreworICAgIEpTU3RyaW5nUmVmIHNjcmlwdFN0cmluZyA9IEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKAorICAgICAgIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50
QnlJZChcImluXCIpLnZhbHVlOyIpOworICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBKU0V2YWx1YXRl
U2NyaXB0KGNvbnRleHQsIHNjcmlwdFN0cmluZywgMCwgMCwgMCwgMCk7CisgICAgSlNTdHJpbmdS
ZWxlYXNlKHNjcmlwdFN0cmluZyk7CisKKyAgICAvLyBJZiB0aGUgdmFsdWUgaXNuJ3QgYSBzdHJp
bmcsIHRoZSBlbGVtZW50IGlzIHByb2JhYmx5IGEgZGl2CisgICAgLy8gc28gZ3JhYiB0aGUgaW5u
ZXJUZXh0IGluc3RlYWQuCisgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUp
KSB7CisgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdFN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKAorICAgICAgICAgICJ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
XCJpblwiKS5pbm5lclRleHQ7Iik7CisgICAgICAgIHZhbHVlID0gSlNFdmFsdWF0ZVNjcmlwdChj
b250ZXh0LCBzY3JpcHRTdHJpbmcsIDAsIDAsIDAsIDApOworICAgICAgICBKU1N0cmluZ1JlbGVh
c2Uoc2NyaXB0U3RyaW5nKTsKKyAgICB9CisKKyAgICBnX2Fzc2VydChKU1ZhbHVlSXNTdHJpbmco
Y29udGV4dCwgdmFsdWUpKTsKKyAgICBKU1N0cmluZ1JlZiBpbnB1dFN0cmluZyA9IEpTVmFsdWVU
b1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIDApOworICAgIGdfYXNzZXJ0KGlucHV0U3RyaW5n
KTsKKworICAgIGdpbnQgc2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShp
bnB1dFN0cmluZyk7CisgICAgZ2NoYXIqIGNTdHJpbmcgPSBnX21hbGxvYyhzaXplKTsKKyAgICBK
U1N0cmluZ0dldFVURjhDU3RyaW5nKGlucHV0U3RyaW5nLCBjU3RyaW5nLCBzaXplKTsKKyAgICBK
U1N0cmluZ1JlbGVhc2UoaW5wdXRTdHJpbmcpOworCisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gZ191
dGY4X2NvbGxhdGUoY1N0cmluZywgdGV4dCkgPT0gMDsKKyAgICBnX2ZyZWUoY1N0cmluZyk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQgdGVzdF9pbWVfbG9hZF9zdGF0dXNf
Y2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFtU3BlYyogc3BlYywgZ3BvaW50ZXIgZGF0
YSkKK3sKKyAgICBLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilk
YXRhOworICAgIFdlYktpdExvYWRTdGF0dXMgc3RhdHVzID0gd2Via2l0X3dlYl92aWV3X2dldF9s
b2FkX3N0YXR1cyh3ZWJWaWV3KTsKKyAgICBpZiAoc3RhdHVzICE9IFdFQktJVF9MT0FEX0ZJTklT
SEVEKQorICAgICAgICByZXR1cm47CisKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9
IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2dsb2JhbF9jb250ZXh0KAorICAgICAgICB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldykpOworICAgIGdfYXNzZXJ0KGNvbnRleHQpOwor
CisgICAgR3RrSU1Db250ZXh0KiBpbUNvbnRleHQgPSAwOworICAgIGdfb2JqZWN0X2dldCh3ZWJW
aWV3LCAiaW0tY29udGV4dCIsICZpbUNvbnRleHQsIE5VTEwpOworICAgIGdfYXNzZXJ0KGltQ29u
dGV4dCk7CisKKyAgICAvLyBUZXN0IHRoYXQgY29tbWl0cyB0aGF0IGhhcHBlbiBvdXRzaWRlIG9m
IGtleSBldmVudHMKKyAgICAvLyBjaGFuZ2UgdGhlIHRleHQgZmllbGQgaW1tZWRpYXRlbHkuIFRo
aXMgY2xvc2VseSByZXBsaWNhdGVzCisgICAgLy8gdGhlIGJlaGF2aW9yIG9mIFNDSU0uCisgICAg
Z19hc3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsICIiKSk7CisgICAgZ19zaWdu
YWxfZW1pdF9ieV9uYW1lKGltQ29udGV4dCwgImNvbW1pdCIsICJhIik7CisgICAgZ19hc3NlcnQo
ZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsICJhIikpOworICAgIGdfc2lnbmFsX2VtaXRf
YnlfbmFtZShpbUNvbnRleHQsICJjb21taXQiLCAiYiIpOworICAgIGdfYXNzZXJ0KGVsZW1lbnRf
dGV4dF9lcXVhbF90byhjb250ZXh0LCAiYWIiKSk7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1l
KGltQ29udGV4dCwgImNvbW1pdCIsICJjIik7CisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0X2Vx
dWFsX3RvKGNvbnRleHQsICJhYmMiKSk7CisKKyAgICBnX29iamVjdF91bnJlZihpbUNvbnRleHQp
OworICAgIGdfbWFpbl9sb29wX3F1aXQoZml4dHVyZS0+bG9vcCk7Cit9CisKK3N0YXRpYyB2b2lk
IHRlc3RfaW1lKEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRlciBkYXRhKQor
eworICAgIHNldHVwX2tleWV2ZW50X3Rlc3QoZml4dHVyZSwgZGF0YSwgR19DQUxMQkFDSyh0ZXN0
X2ltZV9sb2FkX3N0YXR1c19jYikpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gdmVyaWZ5X2NvbnRl
bnRzKGdwb2ludGVyIGRhdGEpCit7CisgICAgS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlID0gKEtl
eUV2ZW50Rml4dHVyZSopZGF0YTsKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdl
YmtpdF93ZWJfZnJhbWVfZ2V0X2dsb2JhbF9jb250ZXh0KAorICAgICAgICB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X21haW5fZnJhbWUoZml4dHVyZS0+d2ViVmlldykpOworICAgIGdfYXNzZXJ0KGNvbnRl
eHQpOworCisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsIGZpeHR1
cmUtPmluZm8tPnRleHQpKTsKKyAgICBnX21haW5fbG9vcF9xdWl0KGZpeHR1cmUtPmxvb3ApOwor
ICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9ibG9ja2luZ19sb2FkX3N0
YXR1c19jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBzcGVjLCBncG9pbnRl
ciBkYXRhKQoreworICAgIEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSA9IChLZXlFdmVudEZpeHR1
cmUqKWRhdGE7CisgICAgV2ViS2l0TG9hZFN0YXR1cyBzdGF0dXMgPSB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2xvYWRfc3RhdHVzKHdlYlZpZXcpOworICAgIGlmIChzdGF0dXMgIT0gV0VCS0lUX0xPQURf
RklOSVNIRUQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBmaXJzdCBrZXlwcmVzcyBl
dmVudCBzaG91bGQgbm90IG1vZGlmeSB0aGUgZmllbGQuCisgICAgZml4dHVyZS0+aW5mby0+dGV4
dCA9ICJiYyI7CisgICAgZ3RrX3Rlc3Rfd2lkZ2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4dHVy
ZS0+d2ViVmlldyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka191bmljb2RlX3Rv
X2tleXZhbCgnYScpLCAwKTsKKyAgICBndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdF
VChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX3Vu
aWNvZGVfdG9fa2V5dmFsKCdiJyksIDApOworICAgIGd0a190ZXN0X3dpZGdldF9zZW5kX2tleShH
VEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZGtfdW5pY29kZV90b19rZXl2YWwoJ2MnKSwgMCk7CisgICAgZ19pZGxlX2FkZCh2ZXJpZnlf
Y29udGVudHMsIGZpeHR1cmUpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X2Jsb2NraW5nKEtleUV2
ZW50Rml4dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRlciBkYXRhKQoreworICAgIHNldHVwX2tl
eWV2ZW50X3Rlc3QoZml4dHVyZSwgZGF0YSwgR19DQUxMQkFDSyh0ZXN0X2Jsb2NraW5nX2xvYWRf
c3RhdHVzX2NiKSk7Cit9CiAKKyNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKSAmJiBHVEtf
Q0hFQ0tfVkVSU0lPTigyLCAxNiwgMCkKK3N0YXRpYyB2b2lkIHRlc3RfeGltX2xvYWRfc3RhdHVz
X2NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqIHNwZWMsIGdwb2ludGVyIGRh
dGEpCit7CisgICAgS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlID0gKEtleUV2ZW50Rml4dHVyZSop
ZGF0YTsKKyAgICBXZWJLaXRMb2FkU3RhdHVzIHN0YXR1cyA9IHdlYmtpdF93ZWJfdmlld19nZXRf
bG9hZF9zdGF0dXMod2ViVmlldyk7CisgICAgaWYgKHN0YXR1cyAhPSBXRUJLSVRfTE9BRF9GSU5J
U0hFRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3RrSU1Db250ZXh0KiBpbUNvbnRleHQgPSAw
OworICAgIGdfb2JqZWN0X2dldCh3ZWJWaWV3LCAiaW0tY29udGV4dCIsICZpbUNvbnRleHQsIE5V
TEwpOworICAgIGdfYXNzZXJ0KGltQ29udGV4dCk7CisKKyAgICBjb25zdCBjaGFyKiBvcmlnaW5h
bElkID0gZ3RrX2ltX211bHRpY29udGV4dF9nZXRfY29udGV4dF9pZChHVEtfSU1fTVVMVElDT05U
RVhUKGltQ29udGV4dCkpOworICAgIGd0a19pbV9tdWx0aWNvbnRleHRfc2V0X2NvbnRleHRfaWQo
R1RLX0lNX01VTFRJQ09OVEVYVChpbUNvbnRleHQpLCAieGltIik7CisKKyAgICAvLyBUZXN0IHRo
YXQgY29tbWl0cyB0aGF0IGhhcHBlbiBvdXRzaWRlIG9mIGtleSBldmVudHMKKyAgICAvLyBjaGFu
Z2UgdGhlIHRleHQgZmllbGQgaW1tZWRpYXRlbHkuIFRoaXMgY2xvc2VseSByZXBsaWNhdGVzCisg
ICAgLy8gdGhlIGJlaGF2aW9yIG9mIFNDSU0uCisgICAgZml4dHVyZS0+aW5mby0+dGV4dCA9ICJk
ZWJpYW4iOworICAgIGd0a190ZXN0X3dpZGdldF9zZW5kX2tleShHVEtfV0lER0VUKGZpeHR1cmUt
PndlYlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfdW5pY29kZV90b19r
ZXl2YWwoJ2QnKSwgMCk7CisgICAgZ3RrX3Rlc3Rfd2lkZ2V0X3NlbmRfa2V5KEdUS19XSURHRVQo
Zml4dHVyZS0+d2ViVmlldyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka191bmlj
b2RlX3RvX2tleXZhbCgnZScpLCAwKTsKKyAgICBndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RL
X1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdiJyksIDApOworICAgIGd0a190ZXN0X3dpZGdldF9zZW5k
X2tleShHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2YWwoJ2knKSwgMCk7CisgICAgZ3RrX3Rlc3Rfd2lk
Z2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnYScpLCAwKTsKKyAgICBndGtf
dGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCduJyksIDApOwor
CisgICAgZ3RrX2ltX211bHRpY29udGV4dF9zZXRfY29udGV4dF9pZChHVEtfSU1fTVVMVElDT05U
RVhUKGltQ29udGV4dCksIG9yaWdpbmFsSWQpOworICAgIGdfb2JqZWN0X3VucmVmKGltQ29udGV4
dCk7CisKKyAgICBnX2lkbGVfYWRkKHZlcmlmeV9jb250ZW50cywgZml4dHVyZSk7CiB9CiAKK3N0
YXRpYyB2b2lkIHRlc3RfeGltKEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRl
ciBkYXRhKQoreworICAgIHNldHVwX2tleWV2ZW50X3Rlc3QoZml4dHVyZSwgZGF0YSwgR19DQUxM
QkFDSyh0ZXN0X3hpbV9sb2FkX3N0YXR1c19jYikpOworfQorI2VuZGlmCisKIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiogYXJndikKIHsKICAgICBnX3RocmVhZF9pbml0KE5VTEwpOwpAQCAtMTQ3
LDMwICsyOTQsODUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiAgICAgZ190
ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKIAotICAgIGdfdGVzdF9h
ZGQoIi93ZWJraXQva2V5ZXZlbnQvdGV4dGZpZWxkIiwgS2V5RXZlbnRGaXh0dXJlLAotICAgICAg
ICAgICAgICAgdGVzdF9pbmZvX25ldygiPGh0bWw+PGJvZHk+PGlucHV0IGlkPVwiaW5cIiB0eXBl
PVwidGV4dFwiPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxzY3JpcHQ+ZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTsiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICI8L3NjcmlwdD48L2JvZHk+PC9odG1sPiIsIFRSVUUpLAorCisgICAgLy8gV2UnbGwg
dGVzdCBpbnB1dCBvbiBhIHNsZXcgb2YgZGlmZmVyZW50IG5vZGUgdHlwZXMuIEtleSBldmVudHMg
dG8KKyAgICAvLyB0ZXh0IGlucHV0cyBhbmQgZWRpdGFibGUgZGl2cyBzaG91bGQgYmUgbWFya2Vk
IGFzIGhhbmRsZWQuIEtleSBldmVudHMKKyAgICAvLyB0byBidXR0b25zIGFuZCBsaW5rcyBzaG91
bGQgbm90LgorICAgIGNvbnN0IGNoYXIqIHRleHRpbnB1dF9odG1sID0gIjxodG1sPjxib2R5Pjxp
bnB1dCBpZD1cImluXCIgdHlwZT1cInRleHRcIj4iCisgICAgICAgICI8c2NyaXB0PmRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iOwor
ICAgIGNvbnN0IGNoYXIqIGJ1dHRvbl9odG1sID0gIjxodG1sPjxib2R5PjxpbnB1dCBpZD1cImlu
XCIgdHlwZT1cImJ1dHRvblwiPiIKKyAgICAgICAgIjxzY3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2luJykuZm9jdXMoKTs8L3NjcmlwdD48L2JvZHk+PC9odG1sPiI7CisgICAgY29uc3Qg
Y2hhciogbGlua19odG1sID0gIjxodG1sPjxib2R5PjxhIGhyZWY9XCJodHRwOi8vd3d3Lmdub21l
Lm9yZ1wiIGlkPVwiaW5cIj4iCisgICAgICAgICJMSU5LWSBNQ0xJTktFUlNPTjwvYT48c2NyaXB0
PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7PC9zY3JpcHQ+IgorICAgICAg
ICAiPC9ib2R5PjwvaHRtbD4iOworICAgIGNvbnN0IGNoYXIqIGRpdl9odG1sID0gIjxodG1sPjxi
b2R5PjxkaXYgaWQ9XCJpblwiIGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIj4iCisgICAgICAgICI8
c2NyaXB0PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7PC9zY3JpcHQ+PC9i
b2R5PjwvaHRtbD4iOworCisgICAgLy8gVGhlc2UgYXJlIHNpbWlsYXIgdG8gdGhlIGJsb2NrcyBh
Ym92ZSwgYnV0IHRoZXkgc2hvdWxkIGJsb2NrIHRoZSBmaXJzdAorICAgIC8vIGtleXByZXNzIG1v
ZGlmeWluZyB0aGUgZWRpdGFibGUgbm9kZS4KKyAgICBjb25zdCBjaGFyKiB0ZXh0aW5wdXRfaHRt
bF9ibG9ja2luZyA9ICI8aHRtbD48Ym9keT4iCisgICAgICAgICI8aW5wdXQgaWQ9XCJpblwiIHR5
cGU9XCJ0ZXh0XCIgIgorICAgICAgICAib25rZXlwcmVzcz1cImlmIChmaXJzdCkge2V2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7Zmlyc3Q9ZmFsc2U7fVwiPiIKKyAgICAgICAgIjxzY3JpcHQ+Zmlyc3Qg
PSB0cnVlO1xuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8L3NjcmlwdD5c
biIKKyAgICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+IjsKKyAgICBjb25zdCBjaGFyKiBk
aXZfaHRtbF9ibG9ja2luZyA9ICI8aHRtbD48Ym9keT4iCisgICAgICAgICI8ZGl2IGlkPVwiaW5c
IiBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCIgIgorICAgICAgICAib25rZXlwcmVzcz1cImlmIChm
aXJzdCkge2V2ZW50LnByZXZlbnREZWZhdWx0KCk7Zmlyc3Q9ZmFsc2U7fVwiPiIKKyAgICAgICAg
IjxzY3JpcHQ+Zmlyc3QgPSB0cnVlOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1
cygpOzwvc2NyaXB0PlxuIgorICAgICAgICAiPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iOworCisg
ICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudHMvZXZlbnQtdGV4dGlucHV0IiwgS2V5RXZl
bnRGaXh0dXJlLAorICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldyh0ZXh0aW5wdXRfaHRtbCwg
VFJVRSksCiAgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKLSAgICAgICAg
ICAgICAgIHRlc3Rfa2V5cHJlc3MsCisgICAgICAgICAgICAgICB0ZXN0X2tleXByZXNzX2V2ZW50
cywKICAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKLQotICAgIGdf
dGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQvYnV0dG9ucyIsIEtleUV2ZW50Rml4dHVyZSwKLSAg
ICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcoIjxodG1sPjxib2R5PjxpbnB1dCBpZD1cImluXCIg
dHlwZT1cImJ1dHRvblwiPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxzY3JpcHQ+
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTsiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICI8L3NjcmlwdD48L2JvZHk+PC9odG1sPiIsIEZBTFNFKSwKKyAgICBnX3Rl
c3RfYWRkKCIvd2Via2l0L2tleWV2ZW50cy9ldmVudC1idXR0b25zIiwgS2V5RXZlbnRGaXh0dXJl
LAorICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldyhidXR0b25faHRtbCwgRkFMU0UpLAogICAg
ICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCi0gICAgICAgICAgICAgICB0ZXN0
X2tleXByZXNzLAorICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzc19ldmVudHMsCiAgICAgICAg
ICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7Ci0KLSAgICBnX3Rlc3RfYWRkKCIv
d2Via2l0L2tleWV2ZW50L2xpbmsiLCBLZXlFdmVudEZpeHR1cmUsCi0gICAgICAgICAgICAgICB0
ZXN0X2luZm9fbmV3KCI8aHRtbD48Ym9keT48YSBocmVmPVwiaHR0cDovL3d3dy5nbm9tZS5vcmdc
IiBpZD1cImluXCI+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTElOS1kgTUNMSU5L
RVJTT048L2E+PHNjcmlwdD4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0PiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIjwvYm9keT48L2h0bWw+IiwgRkFMU0UpLAorICAgIGdfdGVzdF9hZGQo
Ii93ZWJraXQva2V5ZXZlbnRzL2V2ZW50LWxpbmsiLCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAg
ICAgICAgICB0ZXN0X2luZm9fbmV3KGxpbmtfaHRtbCwgRkFMU0UpLAogICAgICAgICAgICAgICAg
a2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCi0gICAgICAgICAgICAgICB0ZXN0X2tleXByZXNzLAor
ICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzc19ldmVudHMsCiAgICAgICAgICAgICAgICBrZXlf
ZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVu
dC9ldmVudC1kaXYiLCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9f
bmV3KGRpdl9odG1sLCBUUlVFKSwKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3Nl
dHVwLAorICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzc19ldmVudHMsCisgICAgICAgICAgICAg
ICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9r
ZXlldmVudC9pbWUtdGV4dGlucHV0IiwgS2V5RXZlbnRGaXh0dXJlLAorICAgICAgICAgICAgICAg
dGVzdF9pbmZvX25ldyh0ZXh0aW5wdXRfaHRtbCwgVFJVRSksCisgICAgICAgICAgICAgICBrZXlf
ZXZlbnRfZml4dHVyZV9zZXR1cCwKKyAgICAgICAgICAgICAgIHRlc3RfaW1lLAorICAgICAgICAg
ICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdfdGVzdF9hZGQoIi93ZWJr
aXQva2V5ZXZlbnQvaW1lLWRpdiIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRl
c3RfaW5mb19uZXcoZGl2X2h0bWwsIFRSVUUpLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2Zp
eHR1cmVfc2V0dXAsCisgICAgICAgICAgICAgICB0ZXN0X2ltZSwKKyAgICAgICAgICAgICAgIGtl
eV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2
ZW50L2Jsb2NrLXRleHRpbnB1dCIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRl
c3RfaW5mb19uZXcodGV4dGlucHV0X2h0bWxfYmxvY2tpbmcsIFRSVUUpLAorICAgICAgICAgICAg
ICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCisgICAgICAgICAgICAgICB0ZXN0X2Jsb2NraW5n
LAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdfdGVz
dF9hZGQoIi93ZWJraXQva2V5ZXZlbnQvYmxvY2stZGl2IiwgS2V5RXZlbnRGaXh0dXJlLAorICAg
ICAgICAgICAgICAgdGVzdF9pbmZvX25ldyhkaXZfaHRtbF9ibG9ja2luZywgVFJVRSksCisgICAg
ICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKKyAgICAgICAgICAgICAgIHRlc3Rf
YmxvY2tpbmcsCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7Cisj
aWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkgJiYgR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTYs
IDApCisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudC94aW0tdGV4dGlucHV0IiwgS2V5
RXZlbnRGaXh0dXJlLAorICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldyh0ZXh0aW5wdXRfaHRt
bCwgVFJVRSksCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKKyAgICAg
ICAgICAgICAgIHRlc3RfeGltLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVh
cmRvd24pOworICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQveGltLWRpdiIsIEtleUV2
ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcoZGl2X2h0bWwsIFRSVUUp
LAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCisgICAgICAgICAgICAg
ICB0ZXN0X3hpbSwKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsK
KyNlbmRpZgogCiAgICAgcmV0dXJuIGdfdGVzdF9ydW4oKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKaW5kZXggZDZhOGI4My4uOTA1ZTY0ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKQEAgLTUxMCwxMiArNTEwLDE5IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRf
d2ViX3ZpZXdfa2V5X3JlbGVhc2VfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5
CiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQp
OwogCisgICAgLy8gR1RLKyBJTSBjb250ZXh0cyBvZnRlbiByZXF1aXJlIHVzIHRvIGZpbHRlciBr
ZXkgcmVsZWFzZSBldmVudHMsIHdoaWNoCisgICAgLy8gV2ViQ29yZSBkb2VzIG5vdCBkbyBieSBk
ZWZhdWx0LCBzbyB3ZSBmaWx0ZXIgdGhlIGV2ZW50IGhlcmUuIFdlIG9ubHkgYmxvY2sKKyAgICAv
LyB0aGUgZXZlbnQgaWYgd2UgZG9uJ3QgaGF2ZSBhIHBlbmRpbmcgY29tcG9zaXRpb24sIGJlY2F1
c2UgdGhhdCBtZWFucyB3ZQorICAgIC8vIGFyZSB1c2luZyBhIGNvbnRleHQgbGlrZSAnc2ltcGxl
JyB3aGljaCBtYXJrcyBldmVyeSBrZXlzdHJva2UgYXMgZmlsdGVyZWQuCisgICAgV2ViS2l0OjpF
ZGl0b3JDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PFdlYktpdDo6RWRpdG9yQ2xpZW50Kj4o
Y29yZSh3ZWJWaWV3KS0+ZWRpdG9yQ2xpZW50KCkpOworICAgIGlmIChndGtfaW1fY29udGV4dF9m
aWx0ZXJfa2V5cHJlc3Mod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0LCBldmVudCkgJiYgIWNsaWVu
dC0+aGFzUGVuZGluZ0NvbXBvc2l0aW9uKCkpCisgICAgICAgIHJldHVybiBUUlVFOworCiAgICAg
RnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpOwogICAgIGlmICghZnJhbWUtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuIEZB
TFNFOwogCiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleWJvYXJkRXZlbnQoZXZlbnQpOwot
CiAgICAgaWYgKGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoa2V5Ym9hcmRFdmVudCkp
CiAgICAgICAgIHJldHVybiBUUlVFOwogCkBAIC02NzAsNiArNjc3LDggQEAgc3RhdGljIGdib29s
ZWFuIHdlYmtpdF93ZWJfdmlld19mb2N1c19pbl9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnRGb2N1cyoKICAgICAgICAgICAgIGZvY3VzQ29udHJvbGxlci0+c2V0Rm9jdXNlZCh0cnVl
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZm9jdXNDb250cm9sbGVyLT5zZXRGb2N1c2Vk
RnJhbWUoY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCkpOworCisgICAgICAgIGd0a19pbV9jb250
ZXh0X2ZvY3VzX2luKHdlYlZpZXctPnByaXYtPmltQ29udGV4dCk7CiAgICAgfQogICAgIHJldHVy
biBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5mb2N1c19p
bl9ldmVudCh3aWRnZXQsIGV2ZW50KTsKIH0KQEAgLTY4MCw2ICs2ODksNyBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvY3VzX291dF9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwg
R2RrRXZlbnRGb2N1cwogCiAgICAgY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPnNl
dEFjdGl2ZShmYWxzZSk7CiAgICAgY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPnNl
dEZvY3VzZWQoZmFsc2UpOworICAgIGd0a19pbV9jb250ZXh0X2ZvY3VzX291dCh3ZWJWaWV3LT5w
cml2LT5pbUNvbnRleHQpOwogCiAgICAgcmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dl
Yl92aWV3X3BhcmVudF9jbGFzcyktPmZvY3VzX291dF9ldmVudCh3aWRnZXQsIGV2ZW50KTsKIH0K
LS0gCjEuNi4zLjMKCg==
</data>
<flag name="commit-queue"
          id="31899"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50660</attachid>
            <date>2010-03-13 12:05:06 -0800</date>
            <delta_ts>2010-03-16 00:46:50 -0700</delta_ts>
            <desc>Patch for this issue (rev7)</desc>
            <filename>0001-can-t-input-korean-into-lower-all-input-box-except-a.patch</filename>
            <type>text/plain</type>
            <size>30415</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA0N2QwODZiZDdhNTI4MWMxMjA4Mjg5Y2VmNGY3YTRjNWIzZDI1NjFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBGcmksIDI5IEphbiAyMDEwIDE4OjUyOjM1IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
Y2FuJ3QgaW5wdXQga29yZWFuIGludG8gbG93ZXIgYWxsIGlucHV0IGJveCBleGNlcHQgYWRyZXNz
IGlucHV0IGJveCBpbiB3ZWJraXQgZ3RrIGxhdW5jaGVyCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzIyOTAKCi0tLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA0NSArKysrCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5jcHAgfCAgMTM4ICsrKysrKysrLS0tLS0KIFdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggICB8ICAgMTAgKwogV2ViS2l0L2d0ay90ZXN0
cy90ZXN0a2V5ZXZlbnRzLmMgICAgICAgICAgICAgIHwgIDI3MiArKysrKysrKysrKysrKysrKysr
KystLS0tCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgICAgICAgfCAg
IDEzICstCiA1IGZpbGVzIGNoYW5nZWQsIDM5MSBpbnNlcnRpb25zKCspLCA4NyBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCmluZGV4IDI2ZmE1MWIuLmUzZjQ0YjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDMt
MTMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNhbid0IGlucHV0IGtvcmVhbiBp
bnRvIGxvd2VyIGFsbCBpbnB1dCBib3ggZXhjZXB0IGFkcmVzcyBpbnB1dCBib3ggaW4gd2Via2l0
IGd0ayBsYXVuY2hlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzIyOTAKKworICAgICAgICBNYWtlIHRoZSBHVEsrIEVkaXRvckNsaWVudCBwcm9wZXJs
eSBoYW5kbGUgZGlmZmVyZW50IHR5cGVzIG9mIGlucHV0IG1vZHVsZQorICAgICAgICBiZWhhdmlv
ciBzdWNoIGFzIGNvbW1pdCBhbmQgcHJlZWRpdCBzaWduYWxzIHRoYXQgaGFwcGVuIG91dHNpZGUg
b2Yga2V5IGV2ZW50CisgICAgICAgIGZpbHRlcmluZyBhbmQgbXVsdGlwbGUgdGltZXMgaW4gYSBy
b3cuIEZpbHRlciBrZXl1cCBldmVudHMgYXMgd2VsbCBhcyBrZXlkb3duCisgICAgICAgIGV2ZW50
cyBhbmQgY2FsbCBndGtfaW1fY29udGV4dF9mb2N1c197aW4vb3V0fSB3aGVuIHRoZSBXZWJWaWV3
IGZvY3VzIGNoYW5nZXMuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIHRoaXMgYmVoYXZpb3Ig
dG8gdGhlIEdUSysgdW5pdCB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltQ29udGV4dENvbW1pdHRlZCk6IEhh
bmRsZSB0aGlzIHNpZ25hbCBwcm9wZXJseSB3aGVuIGl0IGhhcHBlbnMgb3V0c2lkZSBvZgorICAg
ICAgICBrZXkgZXZlbnQgZmlsdGVyaW5nLgorICAgICAgICAoV2ViS2l0OjppbUNvbnRleHRQcmVl
ZGl0Q2hhbmdlZCk6IEltbWVkaWF0ZWx5IHVwZGF0ZSB0aGUgcHJlZWRpdCBzdGF0ZSBhbmQgZG8g
bm90IHJlamVjdAorICAgICAgICBlbXB0eSBwcmVlZGl0cywgc28gdGhhdCBjYW5jZWxsYXRpb24g
d29ya3MgcHJvcGVybHkuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6dXBkYXRlUGVu
ZGluZ0NvbXBvc2l0aW9uKTogQWRkIHRoaXMgbWV0aG9kLCB3aGljaCBoYW5kbGVzIHRoZQorICAg
ICAgICBzaXR1YXRpb24gd2hlcmUgYSBjb21taXQgc2lnbmFsIGhhcHBlbnMgd2hlbiB0aGVyZSBp
cyBzdGlsbCBhIHBlbmRpbmcgY29tbWl0LgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6
OnNob3VsZEJlZ2luRWRpdGluZyk6IENsZWFyIHBlbmRpbmcgY29tcG9zaXRpb24gc3RhdGUgYmVm
b3JlIGVkaXRpbmcKKyAgICAgICAgc3RhcnRzLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGll
bnQ6OnNob3VsZEVuZEVkaXRpbmcpOiBDbGVhciBwZW5kaW5nIGNvbXBvc2l0aW9uIHN0YXRlIGJl
Zm9yZSBlZGl0aW5nIGVuZHMuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6aGFuZGxl
S2V5Ym9hcmRFdmVudCk6IE5vIGxvbmdlciBzcGVjaWFsIGNhc2UgcHJlZWRpdHMgd2hpY2ggaGFw
cGVuIGR1cmluZworICAgICAgICBrZXkgZXZlbnQgZmlsdGVyaW5nLiBXaGVuIGNvbmZpcm1pbmcg
YSBwZW5kaW5nIGNvbXBvc2l0aW9uIHVzZSBpbnNlcnRUZXh0IGluc3RlYWQgb2YgY29uZmlybUNv
bXBvc2l0aW9uLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0
aG9kS2V5ZG93bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmg6
IE1ha2UgcGVuZGluZ0NvbXBvc2l0aW9uIGEgbWVtYmVyLCBzbyB0aGF0IG11bHRpcGxlIFdlYlZp
ZXdzCisgICAgICAgIGRvIG5vdCBzaGFyZSBzdGF0ZS4KKyAgICAgICAgKFdlYktpdDo6RWRpdG9y
Q2xpZW50Ojp3ZWJWaWV3KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6
dHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpF
ZGl0b3JDbGllbnQ6OmNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKTogQWRkZWQuCisgICAgICAgICog
dGVzdHMvdGVzdGtleWV2ZW50cy5jOgorICAgICAgICAodGVzdF9rZXlwcmVzc19ldmVudHNfbG9h
ZF9zdGF0dXNfY2IpOgorICAgICAgICAobWFwX2V2ZW50X2NiKToKKyAgICAgICAgKHNldHVwX2tl
eWV2ZW50X3Rlc3QpOgorICAgICAgICAodGVzdF9rZXlwcmVzc19ldmVudHMpOgorICAgICAgICAo
ZWxlbWVudF90ZXh0X2VxdWFsX3RvKToKKyAgICAgICAgKHRlc3RfaW1lX2xvYWRfc3RhdHVzX2Ni
KToKKyAgICAgICAgKHRlc3RfaW1lKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19rZXlfcmVsZWFz
ZV9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQpOgorCiAy
MDEwLTAzLTEyICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFi
b3JhLmNvLnVrPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsu
Y3BwCmluZGV4IDA3MDA5MzkuLmQ4ZGFjN2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5jcHAKQEAgLTQsNiArNCw3IEBACiAgKiAgQ29weXJpZ2h0IChD
KSAyMDA5IERpZWdvIEVzY2FsYW50ZSBVcnJlbG8gPGRpZWdvZUBnbm9tZS5vcmc+CiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA5LCBJZ2FsaWEgUy5MLgorICogIENvcHlyaWdodCAoQykgMjAx
MCwgTWFydGluIFJvYmluc29uIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTUxLDQwICs1Miw0OCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBnY2hhciogcGVuZGluZ0NvbXBvc2l0aW9uID0gMDsK
LXN0YXRpYyBnY2hhciogcGVuZGluZ1ByZWVkaXQgPSAwOwotCi1zdGF0aWMgdm9pZCBzZXRQZW5k
aW5nQ29tcG9zaXRpb24oZ2NoYXIqIG5ld0NvbXBvc2l0aW9uKQorc3RhdGljIHZvaWQgaW1Db250
ZXh0Q29tbWl0dGVkKEd0a0lNQ29udGV4dCogY29udGV4dCwgY29uc3QgZ2NoYXIqIGNvbXBvc2l0
aW9uU3RyaW5nLCBFZGl0b3JDbGllbnQqIGNsaWVudCkKIHsKLSAgICBnX2ZyZWUocGVuZGluZ0Nv
bXBvc2l0aW9uKTsKLSAgICBwZW5kaW5nQ29tcG9zaXRpb24gPSBuZXdDb21wb3NpdGlvbjsKLX0K
KyAgICAvLyBJZiB0aGlzIHNpZ25hbCBmaXJlcyBkdXJpbmcgYSBrZXlkb3duIGV2ZW50IHdoZW4g
d2UgYXJlIG5vdCBpbiB0aGUgbWlkZGxlCisgICAgLy8gb2YgYSBjb21wb3NpdGlvbiwgdGhlbiB0
cmVhdCB0aGlzICdjb21taXQnIGFzIGEgbm9ybWFsIGtleSBldmVudCBhbmQganVzdAorICAgIC8v
IGNoYW5nZSB0aGUgZWRpdGFibGUgYXJlYSByaWdodCBiZWZvcmUgdGhlIGtleXByZXNzIGV2ZW50
LgorICAgIGlmIChjbGllbnQtPnRyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQoKSkgeworICAg
ICAgICBjbGllbnQtPnVwZGF0ZVBlbmRpbmdDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLXN0YXRpYyB2b2lkIHNldFBlbmRpbmdQcmVlZGl0
KGdjaGFyKiBuZXdQcmVlZGl0KQotewotICAgIGdfZnJlZShwZW5kaW5nUHJlZWRpdCk7Ci0gICAg
cGVuZGluZ1ByZWVkaXQgPSBuZXdQcmVlZGl0OwotfQorICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
Y2xpZW50LT53ZWJWaWV3KCkpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAg
ICAgIHJldHVybjsKIAotc3RhdGljIHZvaWQgY2xlYXJQZW5kaW5nSU1EYXRhKCkKLXsKLSAgICBz
ZXRQZW5kaW5nQ29tcG9zaXRpb24oMCk7Ci0gICAgc2V0UGVuZGluZ1ByZWVkaXQoMCk7Ci19Ci1z
dGF0aWMgdm9pZCBpbUNvbnRleHRDb21taXR0ZWQoR3RrSU1Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBnY2hhciogc3RyLCBFZGl0b3JDbGllbnQqIGNsaWVudCkKLXsKLSAgICAvLyBUaGlzIHNpZ25h
bCB3aWxsIGZpcmUgZHVyaW5nIGEga2V5ZG93biBldmVudC4gV2Ugd2FudCB0aGUgY29udGVudHMg
b2YgdGhlCi0gICAgLy8gZmllbGQgdG8gY2hhbmdlIHJpZ2h0IGJlZm9yZSB0aGUga2V5dXAgZXZl
bnQsIHNvIHdlIHdhaXQgdW50aWwgdGhlbiB0byBhY3R1YWxseQotICAgIC8vIGNvbW1pdCB0aGlz
IGNvbXBvc2l0aW9uLgotICAgIHNldFBlbmRpbmdDb21wb3NpdGlvbihnX3N0cmR1cChzdHIpKTsK
KyAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihTdHJpbmc6OmZyb21VVEY4
KGNvbXBvc2l0aW9uU3RyaW5nKSk7CisgICAgY2xpZW50LT5jbGVhclBlbmRpbmdDb21wb3NpdGlv
bigpOwogfQogCiBzdGF0aWMgdm9pZCBpbUNvbnRleHRQcmVlZGl0Q2hhbmdlZChHdGtJTUNvbnRl
eHQqIGNvbnRleHQsIEVkaXRvckNsaWVudCogY2xpZW50KQogeworICAgIEZyYW1lKiBmcmFtZSA9
IGNvcmUoY2xpZW50LT53ZWJWaWV3KCkpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIC8vIFdlIGlnbm9yZSB0aGUgcHJvdmlkZWQgUGFuZ29B
dHRyTGlzdCBmb3Igbm93LgotICAgIGdjaGFyKiBuZXdQcmVlZGl0ID0gMDsKLSAgICBndGtfaW1f
Y29udGV4dF9nZXRfcHJlZWRpdF9zdHJpbmcoY29udGV4dCwgJm5ld1ByZWVkaXQsIE5VTEwsIE5V
TEwpOwotICAgIHNldFBlbmRpbmdQcmVlZGl0KG5ld1ByZWVkaXQpOworICAgIEdPd25QdHI8Z2No
YXI+IG5ld1ByZWVkaXQoMCk7CisgICAgZ3RrX2ltX2NvbnRleHRfZ2V0X3ByZWVkaXRfc3RyaW5n
KGNvbnRleHQsICZuZXdQcmVlZGl0Lm91dFB0cigpLCAwLCAwKTsKKworICAgIFN0cmluZyBwcmVl
ZGl0U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChuZXdQcmVlZGl0LmdldCgpKTsKKyAgICBWZWN0
b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXM7CisgICAgdW5kZXJsaW5lcy5hcHBl
bmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgcHJlZWRpdFN0cmluZy5sZW5ndGgoKSwgQ29sb3Io
MCwgMCwgMCksIGZhbHNlKSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihw
cmVlZGl0U3RyaW5nLCB1bmRlcmxpbmVzLCAwLCAwKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnQ6
OnVwZGF0ZVBlbmRpbmdDb21wb3NpdGlvbihjb25zdCBnY2hhciogbmV3Q29tcG9zaXRpb24pCit7
CisgICAgLy8gVGhlIElNQ29udGV4dCBtYXkgc2lnbmFsIG1vcmUgdGhhbiBvbmUgY29tcGxldGVk
IGNvbXBvc2l0aW9uIGluIGEgcm93LAorICAgIC8vIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBh
cHBlbmQgdGhlbSwgcmF0aGVyIHRoYW4gb3ZlcndyaXRlIHRoZSBvbGQgb25lLgorICAgIGlmICgh
bV9wZW5kaW5nQ29tcG9zaXRpb24pCisgICAgICAgIG1fcGVuZGluZ0NvbXBvc2l0aW9uLnNldChn
X3N0cmR1cChuZXdDb21wb3NpdGlvbikpOworICAgIGVsc2UKKyAgICAgICAgbV9wZW5kaW5nQ29t
cG9zaXRpb24uc2V0KGdfc3RyY29uY2F0KG1fcGVuZGluZ0NvbXBvc2l0aW9uLmdldCgpLCBuZXdD
b21wb3NpdGlvbiwgTlVMTCkpOwogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRo
b2RTdGF0ZShib29sIGFjdGl2ZSkKQEAgLTEzOSw3ICsxNDgsNyBAQCBpbnQgRWRpdG9yQ2xpZW50
OjpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpCiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpzaG91bGRC
ZWdpbkVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKQogewotICAgIGNsZWFyUGVuZGluZ0lNRGF0YSgp
OworICAgIGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7CiAKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiB0cnVlOwpAQCAtMTQ3LDcgKzE1Niw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50
OjpzaG91bGRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKQogCiBib29sIEVkaXRvckNsaWVu
dDo6c2hvdWxkRW5kRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopCiB7Ci0gICAgY2xlYXJQZW5kaW5n
SU1EYXRhKCk7CisgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKTsKIAogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC00NjYsOCArNDc1LDEyIEBAIHZvaWQgRWRp
dG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAg
ICAgICAgICAgaWYgKCFjb21tYW5kLmlzVGV4dEluc2VydGlvbigpICYmIGNvbW1hbmQuZXhlY3V0
ZShldmVudCkpCiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAK
KyAgICAgICAgICAgIGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7CiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoY29tbWFuZC5leGVjdXRlKGV2ZW50KSkgeworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGNvbW1hbmQuZXhlY3V0ZShldmVudCkpIHsKKyAgICAgICAgICAg
IGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7CiAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDc4LDI1ICs0
OTEsMTQgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRF
dmVudCogZXZlbnQpCiAgICAgLy8gYmUgcmVmbGVjdGVkIGluIHRoZSBjb250ZW50cyBvZiB0aGUg
ZmllbGQgdW50aWwgdGhlIGtleXVwIERPTSBldmVudC4KICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkgewogCi0gICAgICAgIGlmIChwZW5kaW5nQ29t
cG9zaXRpb24pIHsKLSAgICAgICAgICAgIFN0cmluZyBjb21wb3NpdGlvblN0cmluZyA9IFN0cmlu
Zzo6ZnJvbVVURjgocGVuZGluZ0NvbXBvc2l0aW9uKTsKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nKTsKLQotICAgICAgICAg
ICAgY2xlYXJQZW5kaW5nSU1EYXRhKCk7Ci0gICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKLQotICAgICAgICB9IGVsc2UgaWYgKHBlbmRpbmdQcmVlZGl0KSB7Ci0gICAgICAg
ICAgICBTdHJpbmcgcHJlZWRpdFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgocGVuZGluZ1ByZWVk
aXQpOwotCi0gICAgICAgICAgICAvLyBEb24ndCB1c2UgYW4gZW1wdHkgcHJlZWRpdCBhcyBpdCB3
aWxsIGRlc3Ryb3kgdGhlIGN1cnJlbnQKLSAgICAgICAgICAgIC8vIHNlbGVjdGlvbiwgZXZlbiBp
ZiB0aGUgY29tcG9zaXRpb24gaXMgY2FuY2VsbGVkIG9yIGZhaWxzIGxhdGVyIG9uLgotICAgICAg
ICAgICAgaWYgKCFwcmVlZGl0U3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIFZl
Y3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKLSAgICAgICAgICAgICAgICB1
bmRlcmxpbmVzLmFwcGVuZChDb21wb3NpdGlvblVuZGVybGluZSgwLCBwcmVlZGl0U3RyaW5nLmxl
bmd0aCgpLCBDb2xvcigwLCAwLCAwKSwgZmFsc2UpKTsKLSAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPnNldENvbXBvc2l0aW9uKHByZWVkaXRTdHJpbmcsIHVuZGVybGluZXMsIDAsIDAp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjbGVhclBlbmRpbmdJTURhdGEoKTsKKyAg
ICAgICAgLy8gSWYgd2UgaGF2ZSBhIHBlbmRpbmcgY29tcG9zaXRpb24gYXQgdGhpcyBwb2ludCwg
aXQgaGFwcGVuZWQgd2hpbGUKKyAgICAgICAgLy8gZmlsdGVyaW5nIGEga2V5cHJlc3MsIHNvIHdl
IHRyZWF0IGl0IGFzIGEgbm9ybWFsIHRleHQgaW5zZXJ0aW9uLgorICAgICAgICAvLyBUaGlzIHdp
bGwgYWxzbyBlbnN1cmUgdGhhdCBpZiB0aGUga2V5cHJlc3MgZXZlbnQgaGFuZGxlciBjaGFuZ2Vk
IHRoZQorICAgICAgICAvLyBjdXJyZW50bHkgZm9jdXNlZCBub2RlLCB0aGUgdGV4dCBpcyBzdGls
bCBpbnNlcnRlZCBpbnRvIHRoZSBvcmlnaW5hbAorICAgICAgICAvLyBub2RlIChpbnNlcnRUZXh0
KCkgaGFzIHRoaXMgbG9naWMsIGJ1dCBjb25maXJtQ29tcG9zaXRpb24oKSBkb2VzIG5vdCkuCisg
ICAgICAgIGlmIChtX3BlbmRpbmdDb21wb3NpdGlvbikgeworICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5pbnNlcnRUZXh0KFN0cmluZzo6ZnJvbVVURjgobV9wZW5kaW5nQ29tcG9zaXRpb24u
Z2V0KCkpLCBldmVudCk7CisgICAgICAgICAgICBjbGVhclBlbmRpbmdDb21wb3NpdGlvbigpOwog
ICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAKICAgICAgICAgfSBlbHNl
IHsKQEAgLTUyMCwxNSArNTIyLDQ5IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1l
dGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYgKCF0YXJnZXRGcmFtZSB8
fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gZGVjaWRlIHdoaWNoIGZpbHRlcmVkIGtleXN0cm9rZXMg
c2hvdWxkIGJlIHRyZWF0ZWQgYXMgSU0KLSAgICAvLyBldmVudHMgYW5kIHdoaWNoIHNob3VsZCBu
b3QuCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBtX3dlYlZpZXctPnByaXY7Ci0g
ICAgZ3RrX2ltX2NvbnRleHRfZmlsdGVyX2tleXByZXNzKHByaXYtPmltQ29udGV4dCwgZXZlbnQt
PmtleUV2ZW50KCktPmdka0V2ZW50S2V5KCkpOworCisgICAgLy8gU29tZSBJTSBjb250ZXh0cyAo
ZS5nLiAnc2ltcGxlJykgd2lsbCBhY3QgYXMgaWYgdGhleSBmaWx0ZXIgZXZlcnkKKyAgICAvLyBr
ZXlzdHJva2UgYW5kIGp1c3QgaXNzdWUgYSAnY29tbWl0JyBzaWduYWwgZHVyaW5nIGhhbmRsaW5n
LiBJbiBzaXR1YXRpb25zCisgICAgLy8gd2hlcmUgdGhlICdjb21taXQnIHNpZ25hbCBoYXBwZW5z
IGR1cmluZyBmaWx0ZXJpbmcgYW5kIHRoZXJlIGlzIG5vIGFjdGl2ZQorICAgIC8vIGNvbXBvc2l0
aW9uLCBhY3QgYXMgaWYgdGhlIGtleXN0cm9rZSB3YXMgbm90IGZpbHRlcmVkLgorCisgICAgLy8g
SGVyZSBpcyBhIHR5cGljYWwgc2VxdWVuY2Ugb2YgZXZlbnRzIGZvciB0aGUgJ3NpbXBsZScgY29u
dGV4dDoKKyAgICAvLyAxLiBHREsga2V5IHByZXNzIGV2ZW50IC0+IHdlYmtpdF93ZWJfdmlld19r
ZXlfcHJlc3NfZXZlbnQKKyAgICAvLyAyLiBLZXlkb3duIGV2ZW50IC0+IEVkaXRvckNsaWVudDo6
aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duCisgICAgLy8gICAgIGd0a19pbV9jb250ZXh0X2ZpbHRl
cl9rZXlwcmVzcyByZXR1cm5zIHRydWUsIGJ1dCB0aGVyZSBpcyBhcGVuZGluZworICAgIC8vICAg
ICBjb21wb3NpdGlvbiBzbyBldmVudC0+cHJldmVudERlZmF1bHQgaXMgbm90IGNhbGxlZCAoYmVs
b3cpLgorICAgIC8vIDMuIEtleWRvd24gZXZlbnQgYnViYmxlcyB0aHJvdWdoIHRoZSBET00KKyAg
ICAvLyA0LiBLZXlkb3duIGV2ZW50IC0+IEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVu
dAorICAgIC8vICAgICBObyBhY3Rpb24gdGFrZW4uCisgICAgLy8gNC4gR0RLIGtleSByZWxlYXNl
IGV2ZW50IC0+IHdlYmtpdF93ZWJfdmlld19rZXlfcmVsZWFzZV9ldmVudAorICAgIC8vIDUuIGd0
a19pbV9jb250ZXh0X2ZpbHRlcl9rZXlwcmVzcyBpcyBjYWxsZWQgb24gdGhlIHJlbGVhc2UgZXZl
bnQuCisgICAgLy8gICAgIFNpbXBsZSBkb2VzIG5vdCBmaWx0ZXIgbW9zdCBrZXkgcmVsZWFzZXMs
IHNvIHRoZSBldmVudCBjb250aW51ZXMuCisgICAgLy8gNi4gS2V5cHJlc3MgZXZlbnQgYnViYmxl
cyB0aHJvdWdoIHRoZSBET00uCisgICAgLy8gNy4gS2V5cHJlc3MgZXZlbnQgLT4gRWRpdG9yQ2xp
ZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50CisgICAgLy8gICAgIHBlbmRpbmcgY29tcG9zaXRpb24g
aXMgaW5zZXJ0ZWQuCisgICAgLy8gOC4gS2V5dXAgZXZlbnQgYnViYmxlcyB0aHJvdWdoIHRoZSBE
T00uCisgICAgLy8gOS4gS2V5dXAgZXZlbnQgLT4gRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2Fy
ZEV2ZW50CisgICAgLy8gICAgIE5vIGFjdGlvbiB0YWtlbi4KKworICAgIC8vIFRoZXJlIGFyZSB0
d28gc2l0dWF0aW9ucyB3aGVyZSB3ZSBkbyBmaWx0ZXIgdGhlIGtleXN0cm9rZToKKyAgICAvLyAx
LiBUaGUgSU1Db250ZXh0IGluc3RydWN0ZWQgdXMgdG8gZmlsdGVyIGFuZCB3ZSBoYXZlIG5vIHBl
bmRpbmcgY29tcG9zaXRpb24uCisgICAgLy8gMi4gVGhlIElNQ29udGV4dCBkaWQgbm90IGluc3Ry
dWN0IHVzIHRvIGZpbHRlciwgYnV0IHRoZSBrZXlzdHJva2UgY2F1c2VkIGEKKyAgICAvLyAgICBj
b21wb3NpdGlvbiBpbiBwcm9ncmVzcyB0byBmaW5pc2guIEl0IHNlZW1zIHRoYXQgc29tZXRpbWVz
IFNDSU0gd2lsbCBmaW5pc2gKKyAgICAvLyAgICBhIGNvbXBvc2l0aW9uIGFuZCBub3QgbWFyayB0
aGUga2V5c3Ryb2tlIGFzIGZpbHRlcmVkLgorICAgIGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7
CisgICAgbV90cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50ID0gIXRhcmdldEZyYW1lLT5lZGl0
b3IoKS0+aGFzQ29tcG9zaXRpb24oKTsKKyAgICBpZiAoKGd0a19pbV9jb250ZXh0X2ZpbHRlcl9r
ZXlwcmVzcyhwcml2LT5pbUNvbnRleHQsIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtFdmVudEtleSgp
KSAmJiAhbV9wZW5kaW5nQ29tcG9zaXRpb24pCisgICAgICAgIHx8ICghbV90cmVhdENvbnRleHRD
b21taXRBc0tleUV2ZW50ICYmICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9u
KCkpKQorICAgICAgICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKKworICAgIG1fdHJlYXRDb250
ZXh0Q29tbWl0QXNLZXlFdmVudCA9IGZhbHNlOwogfQogCiBFZGl0b3JDbGllbnQ6OkVkaXRvckNs
aWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV9pc0luUmVkbyhmYWxzZSkKICAg
ICAsIG1fd2ViVmlldyh3ZWJWaWV3KQorICAgICwgbV90cmVhdENvbnRleHRDb21taXRBc0tleUV2
ZW50KGZhbHNlKQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gbV93ZWJWaWV3
LT5wcml2OwogICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+aW1Db250ZXh0LCAiY29tbWl0Iiwg
R19DQUxMQkFDSyhpbUNvbnRleHRDb21taXR0ZWQpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCmluZGV4IDkyOTI2NTEuLjgyNWMxNDYgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKKysrIGIv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaApAQCAtMiw2ICsyLDcg
QEAKICAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogICoKICAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMzQsOCArMzUsMTAgQEAKIAogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRX
ZWJWaWV3OwordHlwZWRlZiBjaGFyIGdjaGFyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgUGFnZTsKQEAgLTUzLDYgKzU2LDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIHB1
YmxpYzoKICAgICAgICAgRWRpdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcqKTsKICAgICAgICAgfkVk
aXRvckNsaWVudCgpOworICAgICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KCkgeyByZXR1cm4g
bV93ZWJWaWV3OyB9CisgICAgICAgIGJvb2wgdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCgp
IHsgcmV0dXJuIG1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudDsgfQorICAgICAgICB2b2lk
IGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCkgeyBtX3BlbmRpbmdDb21wb3NpdGlvbi5zZXQoMCk7
IH0KKyAgICAgICAgYm9vbCBoYXNQZW5kaW5nQ29tcG9zaXRpb24oKSB7IHJldHVybiBtX3BlbmRp
bmdDb21wb3NpdGlvbjsgfQorICAgICAgICB2b2lkIHVwZGF0ZVBlbmRpbmdDb21wb3NpdGlvbihj
b25zdCBjaGFyKik7CiAKICAgICAgICAgLy8gZnJvbSBFZGl0b3JDbGllbnQKICAgICAgICAgdmly
dHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKQEAgLTEyMCw2ICsxMjgsOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmll
dzsKKyAgICAgICAgYm9vbCBtX3RyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQ7CisgICAgICAg
IEdPd25QdHI8Z2NoYXI+IG1fcGVuZGluZ0NvbXBvc2l0aW9uOwogICAgIH07CiB9CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdGtleWV2ZW50cy5jIGIvV2ViS2l0L2d0ay90ZXN0
cy90ZXN0a2V5ZXZlbnRzLmMKaW5kZXggM2M5ZTE5OC4uNTVhNDNjNSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay90ZXN0cy90ZXN0a2V5ZXZlbnRzLmMKKysrIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0
a2V5ZXZlbnRzLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IE1h
cnRpbiBSb2JpbnNvbgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIE1hcnRpbiBSb2JpbnNv
biA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsMTIgKzIy
LDE2IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNp
bmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJp
bmdSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KKwogCiAj
aWYgR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgY2hh
ciogcGFnZTsKLSAgZ2Jvb2xlYW4gc2hvdWxkQmVIYW5kbGVkOworICAgIGNoYXIqIHBhZ2U7Cisg
ICAgY29uc3QgY2hhciogdGV4dDsKKyAgICBnYm9vbGVhbiBzaG91bGRCZUhhbmRsZWQ7CiB9IFRl
c3RJbmZvOwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC04Miw3ICs4Niw2IEBAIHN0YXRpYyBnYm9v
bGVhbiBrZXlfcHJlc3NfZXZlbnRfY2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR2RrRXZlbnQq
IGV2ZW50LCBncG9pCiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi0KIHN0YXRpYyBnYm9vbGVhbiBr
ZXlfcmVsZWFzZV9ldmVudF9jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtFdmVudCogZXZl
bnQsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAgLy8gV2ViQ29yZSBuZXZlciBzZWVtcyB0byBtYXJr
IGtleXVwIGV2ZW50cyBhcyBoYW5kbGVkLgpAQCAtOTUsMTEgKzk4LDE1IEBAIHN0YXRpYyBnYm9v
bGVhbiBrZXlfcmVsZWFzZV9ldmVudF9jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtFdmVu
dCogZXZlbnQsIGdwCiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgdm9pZCBsb2FkX3N0
YXR1c19jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBzcGVjLCBncG9pbnRl
ciBkYXRhKQorc3RhdGljIHZvaWQgdGVzdF9rZXlwcmVzc19ldmVudHNfbG9hZF9zdGF0dXNfY2Io
V2ViS2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFtU3BlYyogc3BlYywgZ3BvaW50ZXIgZGF0YSkK
IHsKICAgICBLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilkYXRh
OwogICAgIFdlYktpdExvYWRTdGF0dXMgc3RhdHVzID0gd2Via2l0X3dlYl92aWV3X2dldF9sb2Fk
X3N0YXR1cyh3ZWJWaWV3KTsKICAgICBpZiAoc3RhdHVzID09IFdFQktJVF9MT0FEX0ZJTklTSEVE
KSB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoZml4dHVyZS0+d2ViVmlldywgImtleS1wcmVz
cy1ldmVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhrZXlfcHJlc3Nf
ZXZlbnRfY2IpLCBmaXh0dXJlKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53
ZWJWaWV3LCAia2V5LXJlbGVhc2UtZXZlbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdf
Q0FMTEJBQ0soa2V5X3JlbGVhc2VfZXZlbnRfY2IpLCBmaXh0dXJlKTsKICAgICAgICAgaWYgKCFn
dGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFs
KCdhJyksIDApKQogICAgICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKQEAgLTExMSwy
NSArMTE4LDE0IEBAIGdib29sZWFuIG1hcF9ldmVudF9jYihHdGtXaWRnZXQgKndpZGdldCwgR2Rr
RXZlbnQqIGV2ZW50LCBncG9pbnRlciBkYXRhKQogewogICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1
cyh3aWRnZXQpOwogICAgIEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSA9IChLZXlFdmVudEZpeHR1
cmUqKWRhdGE7Ci0KLSAgICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUtPndlYlZpZXcsICJrZXkt
cHJlc3MtZXZlbnQiLAotICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhrZXlfcHJlc3Nf
ZXZlbnRfY2IpLCBmaXh0dXJlKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUtPndlYlZp
ZXcsICJrZXktcmVsZWFzZS1ldmVudCIsCi0gICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNL
KGtleV9yZWxlYXNlX2V2ZW50X2NiKSwgZml4dHVyZSk7Ci0KLSAgICBnX3NpZ25hbF9jb25uZWN0
KGZpeHR1cmUtPndlYlZpZXcsICJub3RpZnk6OmxvYWQtc3RhdHVzIiwKLSAgICAgICAgICAgICAg
ICAgICAgIEdfQ0FMTEJBQ0sobG9hZF9zdGF0dXNfY2IpLCBmaXh0dXJlKTsKLQogICAgIHdlYmtp
dF93ZWJfdmlld19sb2FkX3N0cmluZyhmaXh0dXJlLT53ZWJWaWV3LCBmaXh0dXJlLT5pbmZvLT5w
YWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dC9odG1sIiwgInV0Zi04
IiwgImZpbGU6Ly8iKTsKLQogICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIHZvaWQgdGVz
dF9rZXlwcmVzcyhLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkK
K3N0YXRpYyB2b2lkIHNldHVwX2tleWV2ZW50X3Rlc3QoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJl
LCBnY29uc3Rwb2ludGVyIGRhdGEsIEdDYWxsYmFjayBsb2FkX2V2ZW50X2NhbGxiYWNrKQogewog
ICAgIGZpeHR1cmUtPmluZm8gPSAoVGVzdEluZm8qKWRhdGE7Ci0KICAgICBnX3NpZ25hbF9jb25u
ZWN0KGZpeHR1cmUtPndpbmRvdywgIm1hcC1ldmVudCIsCiAgICAgICAgICAgICAgICAgICAgICBH
X0NBTExCQUNLKG1hcF9ldmVudF9jYiksIGZpeHR1cmUpOwogCkBAIC0xMzcsMTAgKzEzMywxNjEg
QEAgc3RhdGljIHZvaWQgdGVzdF9rZXlwcmVzcyhLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUsIGdj
b25zdHBvaW50ZXIgZGF0YSkKICAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChmaXh0dXJl
LT53ZWJWaWV3KSk7CiAgICAgZ3RrX3dpbmRvd19wcmVzZW50KEdUS19XSU5ET1coZml4dHVyZS0+
d2luZG93KSk7CiAKKyAgICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUtPndlYlZpZXcsICJub3Rp
Znk6OmxvYWQtc3RhdHVzIiwKKyAgICAgICAgICAgICAgICAgICAgIGxvYWRfZXZlbnRfY2FsbGJh
Y2ssIGZpeHR1cmUpOworCiAgICAgZ19tYWluX2xvb3BfcnVuKGZpeHR1cmUtPmxvb3ApOworfQor
CitzdGF0aWMgdm9pZCB0ZXN0X2tleXByZXNzX2V2ZW50cyhLZXlFdmVudEZpeHR1cmUqIGZpeHR1
cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkKK3sKKyAgICBzZXR1cF9rZXlldmVudF90ZXN0KGZpeHR1
cmUsIGRhdGEsIEdfQ0FMTEJBQ0sodGVzdF9rZXlwcmVzc19ldmVudHNfbG9hZF9zdGF0dXNfY2Ip
KTsKK30KKworc3RhdGljIGdib29sZWFuIGVsZW1lbnRfdGV4dF9lcXVhbF90byhKU0NvbnRleHRS
ZWYgY29udGV4dCwgY29uc3QgZ2NoYXIqIHRleHQpCit7CisgICAgSlNTdHJpbmdSZWYgc2NyaXB0
U3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoCisgICAgICAid2luZG93LmRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaW5cIikudmFsdWU7Iik7CisgICAgSlNWYWx1ZVJlZiB2
YWx1ZSA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0U3RyaW5nLCAwLCAwLCAwLCAw
KTsKKyAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0U3RyaW5nKTsKKworICAgIC8vIElmIHRoZSB2
YWx1ZSBpc24ndCBhIHN0cmluZywgdGhlIGVsZW1lbnQgaXMgcHJvYmFibHkgYSBkaXYKKyAgICAv
LyBzbyBncmFiIHRoZSBpbm5lclRleHQgaW5zdGVhZC4KKyAgICBpZiAoIUpTVmFsdWVJc1N0cmlu
Zyhjb250ZXh0LCB2YWx1ZSkpIHsKKyAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0U3RyaW5nID0g
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoCisgICAgICAgICAgIndpbmRvdy5kb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChcImluXCIpLmlubmVyVGV4dDsiKTsKKyAgICAgICAgdmFsdWUgPSBK
U0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdFN0cmluZywgMCwgMCwgMCwgMCk7CisgICAg
ICAgIEpTU3RyaW5nUmVsZWFzZShzY3JpcHRTdHJpbmcpOworICAgIH0KKworICAgIGdfYXNzZXJ0
KEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCB2YWx1ZSkpOworICAgIEpTU3RyaW5nUmVmIGlucHV0
U3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCB2YWx1ZSwgMCk7CisgICAgZ19h
c3NlcnQoaW5wdXRTdHJpbmcpOworCisgICAgZ2ludCBzaXplID0gSlNTdHJpbmdHZXRNYXhpbXVt
VVRGOENTdHJpbmdTaXplKGlucHV0U3RyaW5nKTsKKyAgICBnY2hhciogY1N0cmluZyA9IGdfbWFs
bG9jKHNpemUpOworICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoaW5wdXRTdHJpbmcsIGNTdHJp
bmcsIHNpemUpOworICAgIEpTU3RyaW5nUmVsZWFzZShpbnB1dFN0cmluZyk7CisKKyAgICBnYm9v
bGVhbiByZXN1bHQgPSBnX3V0ZjhfY29sbGF0ZShjU3RyaW5nLCB0ZXh0KSA9PSAwOworICAgIGdf
ZnJlZShjU3RyaW5nKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZCB0ZXN0
X2ltZV9sb2FkX3N0YXR1c19jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBz
cGVjLCBncG9pbnRlciBkYXRhKQoreworICAgIEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSA9IChL
ZXlFdmVudEZpeHR1cmUqKWRhdGE7CisgICAgV2ViS2l0TG9hZFN0YXR1cyBzdGF0dXMgPSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2xvYWRfc3RhdHVzKHdlYlZpZXcpOworICAgIGlmIChzdGF0dXMgIT0g
V0VCS0lUX0xPQURfRklOSVNIRUQpCisgICAgICAgIHJldHVybjsKKworICAgIEpTR2xvYmFsQ29u
dGV4dFJlZiBjb250ZXh0ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfZ2xvYmFsX2NvbnRleHQoCisg
ICAgICAgIHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZSh3ZWJWaWV3KSk7CisgICAgZ19h
c3NlcnQoY29udGV4dCk7CisKKyAgICBHdGtJTUNvbnRleHQqIGltQ29udGV4dCA9IDA7CisgICAg
Z19vYmplY3RfZ2V0KHdlYlZpZXcsICJpbS1jb250ZXh0IiwgJmltQ29udGV4dCwgTlVMTCk7Cisg
ICAgZ19hc3NlcnQoaW1Db250ZXh0KTsKKworICAgIC8vIFRlc3QgdGhhdCBjb21taXRzIHRoYXQg
aGFwcGVuIG91dHNpZGUgb2Yga2V5IGV2ZW50cworICAgIC8vIGNoYW5nZSB0aGUgdGV4dCBmaWVs
ZCBpbW1lZGlhdGVseS4gVGhpcyBjbG9zZWx5IHJlcGxpY2F0ZXMKKyAgICAvLyB0aGUgYmVoYXZp
b3Igb2YgU0NJTS4KKyAgICBnX2Fzc2VydChlbGVtZW50X3RleHRfZXF1YWxfdG8oY29udGV4dCwg
IiIpKTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoaW1Db250ZXh0LCAiY29tbWl0IiwgImEi
KTsKKyAgICBnX2Fzc2VydChlbGVtZW50X3RleHRfZXF1YWxfdG8oY29udGV4dCwgImEiKSk7Cisg
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGltQ29udGV4dCwgImNvbW1pdCIsICJiIik7CisgICAg
Z19hc3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsICJhYiIpKTsKKyAgICBnX3Np
Z25hbF9lbWl0X2J5X25hbWUoaW1Db250ZXh0LCAiY29tbWl0IiwgImMiKTsKKyAgICBnX2Fzc2Vy
dChlbGVtZW50X3RleHRfZXF1YWxfdG8oY29udGV4dCwgImFiYyIpKTsKKworICAgIGdfb2JqZWN0
X3VucmVmKGltQ29udGV4dCk7CisgICAgZ19tYWluX2xvb3BfcXVpdChmaXh0dXJlLT5sb29wKTsK
K30KKworc3RhdGljIHZvaWQgdGVzdF9pbWUoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29u
c3Rwb2ludGVyIGRhdGEpCit7CisgICAgc2V0dXBfa2V5ZXZlbnRfdGVzdChmaXh0dXJlLCBkYXRh
LCBHX0NBTExCQUNLKHRlc3RfaW1lX2xvYWRfc3RhdHVzX2NiKSk7Cit9CisKK3N0YXRpYyBnYm9v
bGVhbiB2ZXJpZnlfY29udGVudHMoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBLZXlFdmVudEZpeHR1
cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilkYXRhOworICAgIEpTR2xvYmFsQ29udGV4
dFJlZiBjb250ZXh0ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfZ2xvYmFsX2NvbnRleHQoCisgICAg
ICAgIHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZShmaXh0dXJlLT53ZWJWaWV3KSk7Cisg
ICAgZ19hc3NlcnQoY29udGV4dCk7CisKKyAgICBnX2Fzc2VydChlbGVtZW50X3RleHRfZXF1YWxf
dG8oY29udGV4dCwgZml4dHVyZS0+aW5mby0+dGV4dCkpOworICAgIGdfbWFpbl9sb29wX3F1aXQo
Zml4dHVyZS0+bG9vcCk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZCB0ZXN0
X2Jsb2NraW5nX2xvYWRfc3RhdHVzX2NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNw
ZWMqIHNwZWMsIGdwb2ludGVyIGRhdGEpCit7CisgICAgS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJl
ID0gKEtleUV2ZW50Rml4dHVyZSopZGF0YTsKKyAgICBXZWJLaXRMb2FkU3RhdHVzIHN0YXR1cyA9
IHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZF9zdGF0dXMod2ViVmlldyk7CisgICAgaWYgKHN0YXR1
cyAhPSBXRUJLSVRfTE9BRF9GSU5JU0hFRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhl
IGZpcnN0IGtleXByZXNzIGV2ZW50IHNob3VsZCBub3QgbW9kaWZ5IHRoZSBmaWVsZC4KKyAgICBm
aXh0dXJlLT5pbmZvLT50ZXh0ID0gImJjIjsKKyAgICBndGtfdGVzdF93aWRnZXRfc2VuZF9rZXko
R1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdhJyksIDApOworICAgIGd0a190ZXN0X3dpZGdldF9z
ZW5kX2tleShHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2YWwoJ2InKSwgMCk7CisgICAgZ3RrX3Rlc3Rf
d2lkZ2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnYycpLCAwKTsKKyAgICBn
X2lkbGVfYWRkKHZlcmlmeV9jb250ZW50cywgZml4dHVyZSk7Cit9CisKK3N0YXRpYyB2b2lkIHRl
c3RfYmxvY2tpbmcoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEp
Cit7CisgICAgc2V0dXBfa2V5ZXZlbnRfdGVzdChmaXh0dXJlLCBkYXRhLCBHX0NBTExCQUNLKHRl
c3RfYmxvY2tpbmdfbG9hZF9zdGF0dXNfY2IpKTsKK30KIAorI2lmIGRlZmluZWQoR0RLX1dJTkRP
V0lOR19YMTEpICYmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQorc3RhdGljIHZvaWQgdGVz
dF94aW1fbG9hZF9zdGF0dXNfY2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFtU3BlYyog
c3BlYywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUgPSAo
S2V5RXZlbnRGaXh0dXJlKilkYXRhOworICAgIFdlYktpdExvYWRTdGF0dXMgc3RhdHVzID0gd2Vi
a2l0X3dlYl92aWV3X2dldF9sb2FkX3N0YXR1cyh3ZWJWaWV3KTsKKyAgICBpZiAoc3RhdHVzICE9
IFdFQktJVF9MT0FEX0ZJTklTSEVEKQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtJTUNvbnRl
eHQqIGltQ29udGV4dCA9IDA7CisgICAgZ19vYmplY3RfZ2V0KHdlYlZpZXcsICJpbS1jb250ZXh0
IiwgJmltQ29udGV4dCwgTlVMTCk7CisgICAgZ19hc3NlcnQoaW1Db250ZXh0KTsKKworICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsSWQgPSBndGtfaW1fbXVsdGljb250ZXh0X2dldF9jb250ZXh0X2lk
KEdUS19JTV9NVUxUSUNPTlRFWFQoaW1Db250ZXh0KSk7CisgICAgZ3RrX2ltX211bHRpY29udGV4
dF9zZXRfY29udGV4dF9pZChHVEtfSU1fTVVMVElDT05URVhUKGltQ29udGV4dCksICJ4aW0iKTsK
KworICAgIC8vIFRlc3QgdGhhdCBjb21taXRzIHRoYXQgaGFwcGVuIG91dHNpZGUgb2Yga2V5IGV2
ZW50cworICAgIC8vIGNoYW5nZSB0aGUgdGV4dCBmaWVsZCBpbW1lZGlhdGVseS4gVGhpcyBjbG9z
ZWx5IHJlcGxpY2F0ZXMKKyAgICAvLyB0aGUgYmVoYXZpb3Igb2YgU0NJTS4KKyAgICBmaXh0dXJl
LT5pbmZvLT50ZXh0ID0gImRlYmlhbiI7CisgICAgZ3RrX3Rlc3Rfd2lkZ2V0X3NlbmRfa2V5KEdU
S19XSURHRVQoZml4dHVyZS0+d2ViVmlldyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdka191bmljb2RlX3RvX2tleXZhbCgnZCcpLCAwKTsKKyAgICBndGtfdGVzdF93aWRnZXRfc2Vu
ZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdlJyksIDApOworICAgIGd0a190ZXN0X3dp
ZGdldF9zZW5kX2tleShHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2YWwoJ2InKSwgMCk7CisgICAgZ3Rr
X3Rlc3Rfd2lkZ2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnaScpLCAwKTsK
KyAgICBndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdh
JyksIDApOworICAgIGd0a190ZXN0X3dpZGdldF9zZW5kX2tleShHVEtfV0lER0VUKGZpeHR1cmUt
PndlYlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfdW5pY29kZV90b19r
ZXl2YWwoJ24nKSwgMCk7CisKKyAgICBndGtfaW1fbXVsdGljb250ZXh0X3NldF9jb250ZXh0X2lk
KEdUS19JTV9NVUxUSUNPTlRFWFQoaW1Db250ZXh0KSwgb3JpZ2luYWxJZCk7CisgICAgZ19vYmpl
Y3RfdW5yZWYoaW1Db250ZXh0KTsKKworICAgIGdfaWRsZV9hZGQodmVyaWZ5X2NvbnRlbnRzLCBm
aXh0dXJlKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdF94aW0oS2V5RXZlbnRGaXh0dXJlKiBmaXh0
dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCit7CisgICAgc2V0dXBfa2V5ZXZlbnRfdGVzdChmaXh0
dXJlLCBkYXRhLCBHX0NBTExCQUNLKHRlc3RfeGltX2xvYWRfc3RhdHVzX2NiKSk7Cit9CisjZW5k
aWYKKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewogICAgIGdfdGhyZWFkX2lu
aXQoTlVMTCk7CkBAIC0xNDgsMzAgKzI5NSw4NSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAKICAgICBnX3Rlc3RfYnVnX2Jhc2UoImh0dHBzOi8vYnVncy53ZWJraXQub3JnLyIp
OwogCi0gICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudC90ZXh0ZmllbGQiLCBLZXlFdmVu
dEZpeHR1cmUsCi0gICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KCI8aHRtbD48Ym9keT48aW5w
dXQgaWQ9XCJpblwiIHR5cGU9XCJ0ZXh0XCI+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiPHNjcmlwdD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOyIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+IiwgVFJVRSks
CisKKyAgICAvLyBXZSdsbCB0ZXN0IGlucHV0IG9uIGEgc2xldyBvZiBkaWZmZXJlbnQgbm9kZSB0
eXBlcy4gS2V5IGV2ZW50cyB0bworICAgIC8vIHRleHQgaW5wdXRzIGFuZCBlZGl0YWJsZSBkaXZz
IHNob3VsZCBiZSBtYXJrZWQgYXMgaGFuZGxlZC4gS2V5IGV2ZW50cworICAgIC8vIHRvIGJ1dHRv
bnMgYW5kIGxpbmtzIHNob3VsZCBub3QuCisgICAgY29uc3QgY2hhciogdGV4dGlucHV0X2h0bWwg
PSAiPGh0bWw+PGJvZHk+PGlucHV0IGlkPVwiaW5cIiB0eXBlPVwidGV4dFwiPiIKKyAgICAgICAg
IjxzY3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8L3NjcmlwdD48
L2JvZHk+PC9odG1sPiI7CisgICAgY29uc3QgY2hhciogYnV0dG9uX2h0bWwgPSAiPGh0bWw+PGJv
ZHk+PGlucHV0IGlkPVwiaW5cIiB0eXBlPVwiYnV0dG9uXCI+IgorICAgICAgICAiPHNjcmlwdD5k
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0PjwvYm9keT48L2h0
bWw+IjsKKyAgICBjb25zdCBjaGFyKiBsaW5rX2h0bWwgPSAiPGh0bWw+PGJvZHk+PGEgaHJlZj1c
Imh0dHA6Ly93d3cuZ25vbWUub3JnXCIgaWQ9XCJpblwiPiIKKyAgICAgICAgIkxJTktZIE1DTElO
S0VSU09OPC9hPjxzY3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8
L3NjcmlwdD4iCisgICAgICAgICI8L2JvZHk+PC9odG1sPiI7CisgICAgY29uc3QgY2hhciogZGl2
X2h0bWwgPSAiPGh0bWw+PGJvZHk+PGRpdiBpZD1cImluXCIgY29udGVudGVkaXRhYmxlPVwidHJ1
ZVwiPiIKKyAgICAgICAgIjxzY3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9j
dXMoKTs8L3NjcmlwdD48L2JvZHk+PC9odG1sPiI7CisKKyAgICAvLyBUaGVzZSBhcmUgc2ltaWxh
ciB0byB0aGUgYmxvY2tzIGFib3ZlLCBidXQgdGhleSBzaG91bGQgYmxvY2sgdGhlIGZpcnN0Cisg
ICAgLy8ga2V5cHJlc3MgbW9kaWZ5aW5nIHRoZSBlZGl0YWJsZSBub2RlLgorICAgIGNvbnN0IGNo
YXIqIHRleHRpbnB1dF9odG1sX2Jsb2NraW5nID0gIjxodG1sPjxib2R5PiIKKyAgICAgICAgIjxp
bnB1dCBpZD1cImluXCIgdHlwZT1cInRleHRcIiAiCisgICAgICAgICJvbmtleXByZXNzPVwiaWYg
KGZpcnN0KSB7ZXZlbnQucHJldmVudERlZmF1bHQoKTtmaXJzdD1mYWxzZTt9XCI+IgorICAgICAg
ICAiPHNjcmlwdD5maXJzdCA9IHRydWU7XG5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5m
b2N1cygpOzwvc2NyaXB0PlxuIgorICAgICAgICAiPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iOwor
ICAgIGNvbnN0IGNoYXIqIGRpdl9odG1sX2Jsb2NraW5nID0gIjxodG1sPjxib2R5PiIKKyAgICAg
ICAgIjxkaXYgaWQ9XCJpblwiIGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIiAiCisgICAgICAgICJv
bmtleXByZXNzPVwiaWYgKGZpcnN0KSB7ZXZlbnQucHJldmVudERlZmF1bHQoKTtmaXJzdD1mYWxz
ZTt9XCI+IgorICAgICAgICAiPHNjcmlwdD5maXJzdCA9IHRydWU7IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdpbicpLmZvY3VzKCk7PC9zY3JpcHQ+XG4iCisgICAgICAgICI8L3NjcmlwdD48L2Jv
ZHk+PC9odG1sPiI7CisKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50cy9ldmVudC10
ZXh0aW5wdXQiLCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3
KHRleHRpbnB1dF9odG1sLCBUUlVFKSwKICAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJl
X3NldHVwLAotICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzcywKKyAgICAgICAgICAgICAgIHRl
c3Rfa2V5cHJlc3NfZXZlbnRzLAogICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVh
cmRvd24pOwotCi0gICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudC9idXR0b25zIiwgS2V5
RXZlbnRGaXh0dXJlLAotICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldygiPGh0bWw+PGJvZHk+
PGlucHV0IGlkPVwiaW5cIiB0eXBlPVwiYnV0dG9uXCI+IgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiPHNjcmlwdD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOyIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+Iiwg
RkFMU0UpLAorICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnRzL2V2ZW50LWJ1dHRvbnMi
LCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KGJ1dHRvbl9o
dG1sLCBGQUxTRSksCiAgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKLSAg
ICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3MsCisgICAgICAgICAgICAgICB0ZXN0X2tleXByZXNz
X2V2ZW50cywKICAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKLQot
ICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQvbGluayIsIEtleUV2ZW50Rml4dHVyZSwK
LSAgICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcoIjxodG1sPjxib2R5PjxhIGhyZWY9XCJodHRw
Oi8vd3d3Lmdub21lLm9yZ1wiIGlkPVwiaW5cIj4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJMSU5LWSBNQ0xJTktFUlNPTjwvYT48c2NyaXB0PiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7PC9zY3JpcHQ+
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPC9ib2R5PjwvaHRtbD4iLCBGQUxTRSks
CisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudHMvZXZlbnQtbGluayIsIEtleUV2ZW50
Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcobGlua19odG1sLCBGQUxTRSks
CiAgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKLSAgICAgICAgICAgICAg
IHRlc3Rfa2V5cHJlc3MsCisgICAgICAgICAgICAgICB0ZXN0X2tleXByZXNzX2V2ZW50cywKICAg
ICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rlc3RfYWRk
KCIvd2Via2l0L2tleWV2ZW50L2V2ZW50LWRpdiIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAg
ICAgICAgIHRlc3RfaW5mb19uZXcoZGl2X2h0bWwsIFRSVUUpLAorICAgICAgICAgICAgICAga2V5
X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCisgICAgICAgICAgICAgICB0ZXN0X2tleXByZXNzX2V2ZW50
cywKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rl
c3RfYWRkKCIvd2Via2l0L2tleWV2ZW50L2ltZS10ZXh0aW5wdXQiLCBLZXlFdmVudEZpeHR1cmUs
CisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KHRleHRpbnB1dF9odG1sLCBUUlVFKSwKKyAg
ICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAorICAgICAgICAgICAgICAgdGVz
dF9pbWUsCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisgICAg
Z190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudC9pbWUtZGl2IiwgS2V5RXZlbnRGaXh0dXJlLAor
ICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldyhkaXZfaHRtbCwgVFJVRSksCisgICAgICAgICAg
ICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKKyAgICAgICAgICAgICAgIHRlc3RfaW1lLAor
ICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdfdGVzdF9h
ZGQoIi93ZWJraXQva2V5ZXZlbnQvYmxvY2stdGV4dGlucHV0IiwgS2V5RXZlbnRGaXh0dXJlLAor
ICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldyh0ZXh0aW5wdXRfaHRtbF9ibG9ja2luZywgVFJV
RSksCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKKyAgICAgICAgICAg
ICAgIHRlc3RfYmxvY2tpbmcsCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFy
ZG93bik7CisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudC9ibG9jay1kaXYiLCBLZXlF
dmVudEZpeHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KGRpdl9odG1sX2Jsb2Nr
aW5nLCBUUlVFKSwKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAorICAg
ICAgICAgICAgICAgdGVzdF9ibG9ja2luZywKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0
dXJlX3RlYXJkb3duKTsKKyNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKSAmJiBHVEtfQ0hF
Q0tfVkVSU0lPTigyLCAxNiwgMCkKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50L3hp
bS10ZXh0aW5wdXQiLCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9f
bmV3KHRleHRpbnB1dF9odG1sLCBUUlVFKSwKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0
dXJlX3NldHVwLAorICAgICAgICAgICAgICAgdGVzdF94aW0sCisgICAgICAgICAgICAgICBrZXlf
ZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVu
dC94aW0tZGl2IiwgS2V5RXZlbnRGaXh0dXJlLAorICAgICAgICAgICAgICAgdGVzdF9pbmZvX25l
dyhkaXZfaHRtbCwgVFJVRSksCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1
cCwKKyAgICAgICAgICAgICAgIHRlc3RfeGltLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2Zp
eHR1cmVfdGVhcmRvd24pOworI2VuZGlmCiAKICAgICByZXR1cm4gZ190ZXN0X3J1bigpOwogfQpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBlMmE0MDE3Li5mMjM4ZjAwIDEwMDY0
NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNTYyLDEyICs1NjIsMTkgQEAgc3RhdGlj
IGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19rZXlfcmVsZWFzZV9ldmVudChHdGtXaWRnZXQqIHdp
ZGdldCwgR2RrRXZlbnRLZXkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lU
X1dFQl9WSUVXKHdpZGdldCk7CiAKKyAgICAvLyBHVEsrIElNIGNvbnRleHRzIG9mdGVuIHJlcXVp
cmUgdXMgdG8gZmlsdGVyIGtleSByZWxlYXNlIGV2ZW50cywgd2hpY2gKKyAgICAvLyBXZWJDb3Jl
IGRvZXMgbm90IGRvIGJ5IGRlZmF1bHQsIHNvIHdlIGZpbHRlciB0aGUgZXZlbnQgaGVyZS4gV2Ug
b25seSBibG9jaworICAgIC8vIHRoZSBldmVudCBpZiB3ZSBkb24ndCBoYXZlIGEgcGVuZGluZyBj
b21wb3NpdGlvbiwgYmVjYXVzZSB0aGF0IG1lYW5zIHdlCisgICAgLy8gYXJlIHVzaW5nIGEgY29u
dGV4dCBsaWtlICdzaW1wbGUnIHdoaWNoIG1hcmtzIGV2ZXJ5IGtleXN0cm9rZSBhcyBmaWx0ZXJl
ZC4KKyAgICBXZWJLaXQ6OkVkaXRvckNsaWVudCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViS2l0
OjpFZGl0b3JDbGllbnQqPihjb3JlKHdlYlZpZXcpLT5lZGl0b3JDbGllbnQoKSk7CisgICAgaWYg
KGd0a19pbV9jb250ZXh0X2ZpbHRlcl9rZXlwcmVzcyh3ZWJWaWV3LT5wcml2LT5pbUNvbnRleHQs
IGV2ZW50KSAmJiAhY2xpZW50LT5oYXNQZW5kaW5nQ29tcG9zaXRpb24oKSkKKyAgICAgICAgcmV0
dXJuIFRSVUU7CisKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZS0+dmlldygpKQog
ICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQga2V5Ym9h
cmRFdmVudChldmVudCk7Ci0KICAgICBpZiAoZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVu
dChrZXlib2FyZEV2ZW50KSkKICAgICAgICAgcmV0dXJuIFRSVUU7CiAKQEAgLTcyMiw2ICs3Mjks
OCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvY3VzX2luX2V2ZW50KEd0a1dp
ZGdldCogd2lkZ2V0LCBHZGtFdmVudEZvY3VzKgogICAgICAgICAgICAgZm9jdXNDb250cm9sbGVy
LT5zZXRGb2N1c2VkKHRydWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmb2N1c0NvbnRy
b2xsZXItPnNldEZvY3VzZWRGcmFtZShjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKSk7CisKKyAg
ICAgICAgZ3RrX2ltX2NvbnRleHRfZm9jdXNfaW4od2ViVmlldy0+cHJpdi0+aW1Db250ZXh0KTsK
ICAgICB9CiAgICAgcmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVu
dF9jbGFzcyktPmZvY3VzX2luX2V2ZW50KHdpZGdldCwgZXZlbnQpOwogfQpAQCAtNzM4LDYgKzc0
Nyw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfb3V0X2V2ZW50KEd0
a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEZvY3VzCiAgICAgICAgIHBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5zZXRGb2N1c2VkKGZhbHNlKTsKICAgICB9CiAKKyAgICBndGtfaW1fY29udGV4dF9m
b2N1c19vdXQod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0KTsKKwogICAgIHJldHVybiBHVEtfV0lE
R0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5mb2N1c19vdXRfZXZlbnQo
d2lkZ2V0LCBldmVudCk7CiB9CiAKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="commit-queue"
          id="33832"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50772</attachid>
            <date>2010-03-16 00:46:50 -0700</date>
            <delta_ts>2010-03-16 01:12:38 -0700</delta_ts>
            <desc>Patch for this issue (rev8)</desc>
            <filename>0001-can-t-input-korean-into-lower-all-input-box-except-a.patch</filename>
            <type>text/plain</type>
            <size>31482</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSAxZTc4MGNjNzBjNzNhZDk1MDQyYTYyNjg2NDJhNzMxZDI1OGFmN2FlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1hcnRpbi5qYW1lcy5yb2JpbnNv
bkBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTUgTWFyIDIwMTAgMjI6MzA6MzggLTA3MDAKU3ViamVj
dDogW1BBVENIXSBjYW4ndCBpbnB1dCBrb3JlYW4gaW50byBsb3dlciBhbGwgaW5wdXQgYm94IGV4
Y2VwdCBhZHJlc3MgaW5wdXQgYm94IGluIHdlYmtpdCBndGsgbGF1bmNoZXIKIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjI5MAoKLS0tCiBXZWJLaXQvZ3RrL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ1ICsrKysKIFdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCB8ICAxNDIgKysrKysrKystLS0tLQogV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaCAgIHwgICAxMCArCiBXZWJL
aXQvZ3RrL3Rlc3RzL3Rlc3RrZXlldmVudHMuYyAgICAgICAgICAgICAgfCAgMjg1ICsrKysrKysr
KysrKysrKysrKysrKystLS0KIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwICAg
ICAgICAgICB8ICAgMTQgKystCiA1IGZpbGVzIGNoYW5nZWQsIDQwOSBpbnNlcnRpb25zKCspLCA4
NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCmluZGV4IDUxOWNhYTUuLmRkNDA3MTEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDgg
QEAKKzIwMTAtMDMtMTUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNhbid0IGlu
cHV0IGtvcmVhbiBpbnRvIGxvd2VyIGFsbCBpbnB1dCBib3ggZXhjZXB0IGFkcmVzcyBpbnB1dCBi
b3ggaW4gd2Via2l0IGd0ayBsYXVuY2hlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzIyOTAKKworICAgICAgICBNYWtlIHRoZSBHVEsrIEVkaXRvckNs
aWVudCBwcm9wZXJseSBoYW5kbGUgZGlmZmVyZW50IHR5cGVzIG9mIGlucHV0IG1vZHVsZQorICAg
ICAgICBiZWhhdmlvciBzdWNoIGFzIGNvbW1pdCBhbmQgcHJlZWRpdCBzaWduYWxzIHRoYXQgaGFw
cGVuIG91dHNpZGUgb2Yga2V5IGV2ZW50CisgICAgICAgIGZpbHRlcmluZyBhbmQgbXVsdGlwbGUg
dGltZXMgaW4gYSByb3cuIEZpbHRlciBrZXl1cCBldmVudHMgYXMgd2VsbCBhcyBrZXlkb3duCisg
ICAgICAgIGV2ZW50cyBhbmQgY2FsbCBndGtfaW1fY29udGV4dF9mb2N1c197aW4vb3V0fSB3aGVu
IHRoZSBXZWJWaWV3IGZvY3VzIGNoYW5nZXMuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIHRo
aXMgYmVoYXZpb3IgdG8gdGhlIEdUSysgdW5pdCB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltQ29udGV4dENv
bW1pdHRlZCk6IEhhbmRsZSB0aGlzIHNpZ25hbCBwcm9wZXJseSB3aGVuIGl0IGhhcHBlbnMgb3V0
c2lkZSBvZgorICAgICAgICBrZXkgZXZlbnQgZmlsdGVyaW5nLgorICAgICAgICAoV2ViS2l0Ojpp
bUNvbnRleHRQcmVlZGl0Q2hhbmdlZCk6IEltbWVkaWF0ZWx5IHVwZGF0ZSB0aGUgcHJlZWRpdCBz
dGF0ZSBhbmQgZG8gbm90IHJlamVjdAorICAgICAgICBlbXB0eSBwcmVlZGl0cywgc28gdGhhdCBj
YW5jZWxsYXRpb24gd29ya3MgcHJvcGVybHkuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVu
dDo6dXBkYXRlUGVuZGluZ0NvbXBvc2l0aW9uKTogQWRkIHRoaXMgbWV0aG9kLCB3aGljaCBoYW5k
bGVzIHRoZQorICAgICAgICBzaXR1YXRpb24gd2hlcmUgYSBjb21taXQgc2lnbmFsIGhhcHBlbnMg
d2hlbiB0aGVyZSBpcyBzdGlsbCBhIHBlbmRpbmcgY29tbWl0LgorICAgICAgICAoV2ViS2l0OjpF
ZGl0b3JDbGllbnQ6OnNob3VsZEJlZ2luRWRpdGluZyk6IENsZWFyIHBlbmRpbmcgY29tcG9zaXRp
b24gc3RhdGUgYmVmb3JlIGVkaXRpbmcKKyAgICAgICAgc3RhcnRzLgorICAgICAgICAoV2ViS2l0
OjpFZGl0b3JDbGllbnQ6OnNob3VsZEVuZEVkaXRpbmcpOiBDbGVhciBwZW5kaW5nIGNvbXBvc2l0
aW9uIHN0YXRlIGJlZm9yZSBlZGl0aW5nIGVuZHMuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNs
aWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6IE5vIGxvbmdlciBzcGVjaWFsIGNhc2UgcHJlZWRp
dHMgd2hpY2ggaGFwcGVuIGR1cmluZworICAgICAgICBrZXkgZXZlbnQgZmlsdGVyaW5nLiBXaGVu
IGNvbmZpcm1pbmcgYSBwZW5kaW5nIGNvbXBvc2l0aW9uIHVzZSBpbnNlcnRUZXh0IGluc3RlYWQg
b2YgY29uZmlybUNvbXBvc2l0aW9uLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6Omhh
bmRsZUlucHV0TWV0aG9kS2V5ZG93bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50R3RrLmg6IE1ha2UgcGVuZGluZ0NvbXBvc2l0aW9uIGEgbWVtYmVyLCBzbyB0aGF0IG11
bHRpcGxlIFdlYlZpZXdzCisgICAgICAgIGRvIG5vdCBzaGFyZSBzdGF0ZS4KKyAgICAgICAgKFdl
YktpdDo6RWRpdG9yQ2xpZW50Ojp3ZWJWaWV3KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkVk
aXRvckNsaWVudDo6dHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCk6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKTogQWRkZWQu
CisgICAgICAgICogdGVzdHMvdGVzdGtleWV2ZW50cy5jOgorICAgICAgICAodGVzdF9rZXlwcmVz
c19ldmVudHNfbG9hZF9zdGF0dXNfY2IpOgorICAgICAgICAobWFwX2V2ZW50X2NiKToKKyAgICAg
ICAgKHNldHVwX2tleWV2ZW50X3Rlc3QpOgorICAgICAgICAodGVzdF9rZXlwcmVzc19ldmVudHMp
OgorICAgICAgICAoZWxlbWVudF90ZXh0X2VxdWFsX3RvKToKKyAgICAgICAgKHRlc3RfaW1lX2xv
YWRfc3RhdHVzX2NiKToKKyAgICAgICAgKHRlc3RfaW1lKToKKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19rZXlfcmVsZWFzZV9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5f
ZXZlbnQpOgorCiAyMDEwLTAzLTE1ICBKb2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NA
Z21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCAwNzAwOTM5
Li5lMzJkYmQwIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRH
dGsuY3BwCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwOSBEaWVnbyBFc2Nh
bGFudGUgVXJyZWxvIDxkaWVnb2VAZ25vbWUub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykg
MjAwOSwgSWdhbGlhIFMuTC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAsIE1hcnRpbiBSb2JpbnNv
biA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01MSw0MCAr
NTIsNDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1zdGF0aWMgZ2NoYXIqIHBlbmRpbmdDb21wb3NpdGlvbiA9IDA7Ci1zdGF0aWMgZ2NoYXIqIHBl
bmRpbmdQcmVlZGl0ID0gMDsKLQotc3RhdGljIHZvaWQgc2V0UGVuZGluZ0NvbXBvc2l0aW9uKGdj
aGFyKiBuZXdDb21wb3NpdGlvbikKK3N0YXRpYyB2b2lkIGltQ29udGV4dENvbW1pdHRlZChHdGtJ
TUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGdjaGFyKiBjb21wb3NpdGlvblN0cmluZywgRWRpdG9y
Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgZ19mcmVlKHBlbmRpbmdDb21wb3NpdGlvbik7Ci0gICAg
cGVuZGluZ0NvbXBvc2l0aW9uID0gbmV3Q29tcG9zaXRpb247Ci19CisgICAgLy8gSWYgdGhpcyBz
aWduYWwgZmlyZXMgZHVyaW5nIGEga2V5ZG93biBldmVudCB3aGVuIHdlIGFyZSBub3QgaW4gdGhl
IG1pZGRsZQorICAgIC8vIG9mIGEgY29tcG9zaXRpb24sIHRoZW4gdHJlYXQgdGhpcyAnY29tbWl0
JyBhcyBhIG5vcm1hbCBrZXkgZXZlbnQgYW5kIGp1c3QKKyAgICAvLyBjaGFuZ2UgdGhlIGVkaXRh
YmxlIGFyZWEgcmlnaHQgYmVmb3JlIHRoZSBrZXlwcmVzcyBldmVudC4KKyAgICBpZiAoY2xpZW50
LT50cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50KCkpIHsKKyAgICAgICAgY2xpZW50LT51cGRh
dGVQZW5kaW5nQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOworICAgICAgICByZXR1cm47
CisgICAgfQogCi1zdGF0aWMgdm9pZCBzZXRQZW5kaW5nUHJlZWRpdChnY2hhciogbmV3UHJlZWRp
dCkKLXsKLSAgICBnX2ZyZWUocGVuZGluZ1ByZWVkaXQpOwotICAgIHBlbmRpbmdQcmVlZGl0ID0g
bmV3UHJlZWRpdDsKLX0KKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKGNsaWVudC0+d2ViVmlldygp
KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJh
bWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm47CiAKLXN0
YXRpYyB2b2lkIGNsZWFyUGVuZGluZ0lNRGF0YSgpCi17Ci0gICAgc2V0UGVuZGluZ0NvbXBvc2l0
aW9uKDApOwotICAgIHNldFBlbmRpbmdQcmVlZGl0KDApOwotfQotc3RhdGljIHZvaWQgaW1Db250
ZXh0Q29tbWl0dGVkKEd0a0lNQ29udGV4dCogY29udGV4dCwgY29uc3QgZ2NoYXIqIHN0ciwgRWRp
dG9yQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgLy8gVGhpcyBzaWduYWwgd2lsbCBmaXJlIGR1cmlu
ZyBhIGtleWRvd24gZXZlbnQuIFdlIHdhbnQgdGhlIGNvbnRlbnRzIG9mIHRoZQotICAgIC8vIGZp
ZWxkIHRvIGNoYW5nZSByaWdodCBiZWZvcmUgdGhlIGtleXVwIGV2ZW50LCBzbyB3ZSB3YWl0IHVu
dGlsIHRoZW4gdG8gYWN0dWFsbHkKLSAgICAvLyBjb21taXQgdGhpcyBjb21wb3NpdGlvbi4KLSAg
ICBzZXRQZW5kaW5nQ29tcG9zaXRpb24oZ19zdHJkdXAoc3RyKSk7CisgICAgZnJhbWUtPmVkaXRv
cigpLT5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOChjb21wb3NpdGlvblN0cmlu
ZykpOworICAgIGNsaWVudC0+Y2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKTsKIH0KIAogc3RhdGlj
IHZvaWQgaW1Db250ZXh0UHJlZWRpdENoYW5nZWQoR3RrSU1Db250ZXh0KiBjb250ZXh0LCBFZGl0
b3JDbGllbnQqIGNsaWVudCkKIHsKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKGNsaWVudC0+d2Vi
VmlldygpKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlm
ICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm47
CisKICAgICAvLyBXZSBpZ25vcmUgdGhlIHByb3ZpZGVkIFBhbmdvQXR0ckxpc3QgZm9yIG5vdy4K
LSAgICBnY2hhciogbmV3UHJlZWRpdCA9IDA7Ci0gICAgZ3RrX2ltX2NvbnRleHRfZ2V0X3ByZWVk
aXRfc3RyaW5nKGNvbnRleHQsICZuZXdQcmVlZGl0LCBOVUxMLCBOVUxMKTsKLSAgICBzZXRQZW5k
aW5nUHJlZWRpdChuZXdQcmVlZGl0KTsKKyAgICBHT3duUHRyPGdjaGFyPiBuZXdQcmVlZGl0KDAp
OworICAgIGd0a19pbV9jb250ZXh0X2dldF9wcmVlZGl0X3N0cmluZyhjb250ZXh0LCAmbmV3UHJl
ZWRpdC5vdXRQdHIoKSwgMCwgMCk7CisKKyAgICBTdHJpbmcgcHJlZWRpdFN0cmluZyA9IFN0cmlu
Zzo6ZnJvbVVURjgobmV3UHJlZWRpdC5nZXQoKSk7CisgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5k
ZXJsaW5lPiB1bmRlcmxpbmVzOworICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5k
ZXJsaW5lKDAsIHByZWVkaXRTdHJpbmcubGVuZ3RoKCksIENvbG9yKDAsIDAsIDApLCBmYWxzZSkp
OworICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdFN0cmluZywgdW5k
ZXJsaW5lcywgMCwgMCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50Ojp1cGRhdGVQZW5kaW5nQ29t
cG9zaXRpb24oY29uc3QgZ2NoYXIqIG5ld0NvbXBvc2l0aW9uKQoreworICAgIC8vIFRoZSBJTUNv
bnRleHQgbWF5IHNpZ25hbCBtb3JlIHRoYW4gb25lIGNvbXBsZXRlZCBjb21wb3NpdGlvbiBpbiBh
IHJvdywKKyAgICAvLyBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYXBwZW5kIHRoZW0sIHJhdGhl
ciB0aGFuIG92ZXJ3cml0ZSB0aGUgb2xkIG9uZS4KKyAgICBpZiAoIW1fcGVuZGluZ0NvbXBvc2l0
aW9uKQorICAgICAgICBtX3BlbmRpbmdDb21wb3NpdGlvbi5zZXQoZ19zdHJkdXAobmV3Q29tcG9z
aXRpb24pKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGVuZGluZ0NvbXBvc2l0aW9uLnNldChnX3N0
cmNvbmNhdChtX3BlbmRpbmdDb21wb3NpdGlvbi5nZXQoKSwgbmV3Q29tcG9zaXRpb24sIE5VTEwp
KTsKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBhY3Rp
dmUpCkBAIC0xMzksNyArMTQ4LDcgQEAgaW50IEVkaXRvckNsaWVudDo6c3BlbGxDaGVja2VyRG9j
dW1lbnRUYWcoKQogCiBib29sIEVkaXRvckNsaWVudDo6c2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNv
cmU6OlJhbmdlKikKIHsKLSAgICBjbGVhclBlbmRpbmdJTURhdGEoKTsKKyAgICBjbGVhclBlbmRp
bmdDb21wb3NpdGlvbigpOwogCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTE0Nyw3ICsxNTYsNyBAQCBib29sIEVkaXRvckNsaWVudDo6c2hvdWxkQmVnaW5FZGl0
aW5nKFdlYkNvcmU6OlJhbmdlKikKIAogYm9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZEVuZEVkaXRp
bmcoV2ViQ29yZTo6UmFuZ2UqKQogewotICAgIGNsZWFyUGVuZGluZ0lNRGF0YSgpOworICAgIGNs
ZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7CiAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJl
dHVybiB0cnVlOwpAQCAtNDY2LDggKzQ3NSwxMiBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxl
S2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGlmICghY29t
bWFuZC5pc1RleHRJbnNlcnRpb24oKSAmJiBjb21tYW5kLmV4ZWN1dGUoZXZlbnQpKQogICAgICAg
ICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogCisgICAgICAgICAgICBjbGVh
clBlbmRpbmdDb21wb3NpdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVs
c2UgaWYgKGNvbW1hbmQuZXhlY3V0ZShldmVudCkpIHsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChjb21tYW5kLmV4ZWN1dGUoZXZlbnQpKSB7CisgICAgICAgICAgICBjbGVhclBlbmRpbmdDb21w
b3NpdGlvbigpOwogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ3OCwyNSArNDkxLDE0IEBAIHZvaWQgRWRp
dG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAg
IC8vIGJlIHJlZmxlY3RlZCBpbiB0aGUgY29udGVudHMgb2YgdGhlIGZpZWxkIHVudGlsIHRoZSBr
ZXl1cCBET00gZXZlbnQuCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtl
eXByZXNzRXZlbnQpIHsKIAotICAgICAgICBpZiAocGVuZGluZ0NvbXBvc2l0aW9uKSB7Ci0gICAg
ICAgICAgICBTdHJpbmcgY29tcG9zaXRpb25TdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHBlbmRp
bmdDb21wb3NpdGlvbik7Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21w
b3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7Ci0KLSAgICAgICAgICAgIGNsZWFyUGVuZGluZ0lN
RGF0YSgpOwotICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0KLSAgICAg
ICAgfSBlbHNlIGlmIChwZW5kaW5nUHJlZWRpdCkgewotICAgICAgICAgICAgU3RyaW5nIHByZWVk
aXRTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHBlbmRpbmdQcmVlZGl0KTsKLQotICAgICAgICAg
ICAgLy8gRG9uJ3QgdXNlIGFuIGVtcHR5IHByZWVkaXQgYXMgaXQgd2lsbCBkZXN0cm95IHRoZSBj
dXJyZW50Ci0gICAgICAgICAgICAvLyBzZWxlY3Rpb24sIGV2ZW4gaWYgdGhlIGNvbXBvc2l0aW9u
IGlzIGNhbmNlbGxlZCBvciBmYWlscyBsYXRlciBvbi4KLSAgICAgICAgICAgIGlmICghcHJlZWRp
dFN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8Q29tcG9zaXRpb25V
bmRlcmxpbmU+IHVuZGVybGluZXM7Ci0gICAgICAgICAgICAgICAgdW5kZXJsaW5lcy5hcHBlbmQo
Q29tcG9zaXRpb25VbmRlcmxpbmUoMCwgcHJlZWRpdFN0cmluZy5sZW5ndGgoKSwgQ29sb3IoMCwg
MCwgMCksIGZhbHNlKSk7Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21w
b3NpdGlvbihwcmVlZGl0U3RyaW5nLCB1bmRlcmxpbmVzLCAwLCAwKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgY2xlYXJQZW5kaW5nSU1EYXRhKCk7CisgICAgICAgIC8vIElmIHdlIGhh
dmUgYSBwZW5kaW5nIGNvbXBvc2l0aW9uIGF0IHRoaXMgcG9pbnQsIGl0IGhhcHBlbmVkIHdoaWxl
CisgICAgICAgIC8vIGZpbHRlcmluZyBhIGtleXByZXNzLCBzbyB3ZSB0cmVhdCBpdCBhcyBhIG5v
cm1hbCB0ZXh0IGluc2VydGlvbi4KKyAgICAgICAgLy8gVGhpcyB3aWxsIGFsc28gZW5zdXJlIHRo
YXQgaWYgdGhlIGtleXByZXNzIGV2ZW50IGhhbmRsZXIgY2hhbmdlZCB0aGUKKyAgICAgICAgLy8g
Y3VycmVudGx5IGZvY3VzZWQgbm9kZSwgdGhlIHRleHQgaXMgc3RpbGwgaW5zZXJ0ZWQgaW50byB0
aGUgb3JpZ2luYWwKKyAgICAgICAgLy8gbm9kZSAoaW5zZXJ0VGV4dCgpIGhhcyB0aGlzIGxvZ2lj
LCBidXQgY29uZmlybUNvbXBvc2l0aW9uKCkgZG9lcyBub3QpLgorICAgICAgICBpZiAobV9wZW5k
aW5nQ29tcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4
dChTdHJpbmc6OmZyb21VVEY4KG1fcGVuZGluZ0NvbXBvc2l0aW9uLmdldCgpKSwgZXZlbnQpOwor
ICAgICAgICAgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKTsKICAgICAgICAgICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogCiAgICAgICAgIH0gZWxzZSB7CkBAIC01MjAsMTUgKzUy
Miw1MyBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJv
YXJkRXZlbnQqIGV2ZW50KQogICAgIGlmICghdGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZyYW1lLT5l
ZGl0b3IoKS0+Y2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBUT0RPOiBXZSBu
ZWVkIHRvIGRlY2lkZSB3aGljaCBmaWx0ZXJlZCBrZXlzdHJva2VzIHNob3VsZCBiZSB0cmVhdGVk
IGFzIElNCi0gICAgLy8gZXZlbnRzIGFuZCB3aGljaCBzaG91bGQgbm90LgogICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gbV93ZWJWaWV3LT5wcml2OwotICAgIGd0a19pbV9jb250ZXh0
X2ZpbHRlcl9rZXlwcmVzcyhwcml2LT5pbUNvbnRleHQsIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtF
dmVudEtleSgpKTsKKworCisgICAgLy8gU29tZSBJTSBjb250ZXh0cyAoZS5nLiAnc2ltcGxlJykg
d2lsbCBhY3QgYXMgaWYgdGhleSBmaWx0ZXIgZXZlcnkKKyAgICAvLyBrZXlzdHJva2UgYW5kIGp1
c3QgaXNzdWUgYSAnY29tbWl0JyBzaWduYWwgZHVyaW5nIGhhbmRsaW5nLiBJbiBzaXR1YXRpb25z
CisgICAgLy8gd2hlcmUgdGhlICdjb21taXQnIHNpZ25hbCBoYXBwZW5zIGR1cmluZyBmaWx0ZXJp
bmcgYW5kIHRoZXJlIGlzIG5vIGFjdGl2ZQorICAgIC8vIGNvbXBvc2l0aW9uLCBhY3QgYXMgaWYg
dGhlIGtleXN0cm9rZSB3YXMgbm90IGZpbHRlcmVkLiBUaGUgb25lIGV4Y2VwdGlvbiB0bworICAg
IC8vIHRoaXMgaXMgd2hlbiB0aGUga2V5dmFsIHBhcmFtZXRlciBvZiB0aGUgR2RrS2V5RXZlbnQg
aXMgMCwgd2hpY2ggaXMgb2Z0ZW4KKyAgICAvLyBhIGtleSBldmVudCBzZW50IGJ5IHRoZSBJTSBj
b250ZXh0IGZvciBjb21taXR0aW5nIHRoZSBjdXJyZW50IGNvbXBvc2l0aW9uLgorCisgICAgLy8g
SGVyZSBpcyBhIHR5cGljYWwgc2VxdWVuY2Ugb2YgZXZlbnRzIGZvciB0aGUgJ3NpbXBsZScgY29u
dGV4dDoKKyAgICAvLyAxLiBHREsga2V5IHByZXNzIGV2ZW50IC0+IHdlYmtpdF93ZWJfdmlld19r
ZXlfcHJlc3NfZXZlbnQKKyAgICAvLyAyLiBLZXlkb3duIGV2ZW50IC0+IEVkaXRvckNsaWVudDo6
aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duCisgICAgLy8gICAgIGd0a19pbV9jb250ZXh0X2ZpbHRl
cl9rZXlwcmVzcyByZXR1cm5zIHRydWUsIGJ1dCB0aGVyZSBpcyBhIHBlbmRpbmcKKyAgICAvLyAg
ICAgY29tcG9zaXRpb24gc28gZXZlbnQtPnByZXZlbnREZWZhdWx0IGlzIG5vdCBjYWxsZWQgKGJl
bG93KS4KKyAgICAvLyAzLiBLZXlkb3duIGV2ZW50IGJ1YmJsZXMgdGhyb3VnaCB0aGUgRE9NCisg
ICAgLy8gNC4gS2V5ZG93biBldmVudCAtPiBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQKKyAgICAvLyAgICAgTm8gYWN0aW9uIHRha2VuLgorICAgIC8vIDQuIEdESyBrZXkgcmVsZWFz
ZSBldmVudCAtPiB3ZWJraXRfd2ViX3ZpZXdfa2V5X3JlbGVhc2VfZXZlbnQKKyAgICAvLyA1LiBn
dGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MgaXMgY2FsbGVkIG9uIHRoZSByZWxlYXNlIGV2
ZW50LgorICAgIC8vICAgICBTaW1wbGUgZG9lcyBub3QgZmlsdGVyIG1vc3Qga2V5IHJlbGVhc2Vz
LCBzbyB0aGUgZXZlbnQgY29udGludWVzLgorICAgIC8vIDYuIEtleXByZXNzIGV2ZW50IGJ1YmJs
ZXMgdGhyb3VnaCB0aGUgRE9NLgorICAgIC8vIDcuIEtleXByZXNzIGV2ZW50IC0+IEVkaXRvckNs
aWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudAorICAgIC8vICAgICBwZW5kaW5nIGNvbXBvc2l0aW9u
IGlzIGluc2VydGVkLgorICAgIC8vIDguIEtleXVwIGV2ZW50IGJ1YmJsZXMgdGhyb3VnaCB0aGUg
RE9NLgorICAgIC8vIDkuIEtleXVwIGV2ZW50IC0+IEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9h
cmRFdmVudAorICAgIC8vICAgICBObyBhY3Rpb24gdGFrZW4uCisKKyAgICAvLyBUaGVyZSBhcmUg
dHdvIHNpdHVhdGlvbnMgd2hlcmUgd2UgZG8gZmlsdGVyIHRoZSBrZXlzdHJva2U6CisgICAgLy8g
MS4gVGhlIElNQ29udGV4dCBpbnN0cnVjdGVkIHVzIHRvIGZpbHRlciBhbmQgd2UgaGF2ZSBubyBw
ZW5kaW5nIGNvbXBvc2l0aW9uLgorICAgIC8vIDIuIFRoZSBJTUNvbnRleHQgZGlkIG5vdCBpbnN0
cnVjdCB1cyB0byBmaWx0ZXIsIGJ1dCB0aGUga2V5c3Ryb2tlIGNhdXNlZCBhCisgICAgLy8gICAg
Y29tcG9zaXRpb24gaW4gcHJvZ3Jlc3MgdG8gZmluaXNoLiBJdCBzZWVtcyB0aGF0IHNvbWV0aW1l
cyBTQ0lNIHdpbGwgZmluaXNoCisgICAgLy8gICAgYSBjb21wb3NpdGlvbiBhbmQgbm90IG1hcmsg
dGhlIGtleXN0cm9rZSBhcyBmaWx0ZXJlZC4KKyAgICBtX3RyZWF0Q29udGV4dENvbW1pdEFzS2V5
RXZlbnQgPSAoIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkgJiYKKyAg
ICAgICAgKCFldmVudC0+a2V5RXZlbnQoKS0+Z2RrRXZlbnRLZXkoKS0+a2V5dmFsID09IDApOwor
ICAgIGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7CisgICAgaWYgKChndGtfaW1fY29udGV4dF9m
aWx0ZXJfa2V5cHJlc3MocHJpdi0+aW1Db250ZXh0LCBldmVudC0+a2V5RXZlbnQoKS0+Z2RrRXZl
bnRLZXkoKSkgJiYgIW1fcGVuZGluZ0NvbXBvc2l0aW9uKQorICAgICAgICB8fCAoIW1fdHJlYXRD
b250ZXh0Q29tbWl0QXNLZXlFdmVudCAmJiAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5oYXNDb21w
b3NpdGlvbigpKSkKKyAgICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7CisKKyAgICBtX3Ry
ZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQgPSBmYWxzZTsKIH0KIAogRWRpdG9yQ2xpZW50OjpF
ZGl0b3JDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICA6IG1faXNJblJlZG8oZmFs
c2UpCiAgICAgLCBtX3dlYlZpZXcod2ViVmlldykKKyAgICAsIG1fdHJlYXRDb250ZXh0Q29tbWl0
QXNLZXlFdmVudChmYWxzZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1f
d2ViVmlldy0+cHJpdjsKICAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPmltQ29udGV4dCwgImNv
bW1pdCIsIEdfQ0FMTEJBQ0soaW1Db250ZXh0Q29tbWl0dGVkKSwgdGhpcyk7CmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaAppbmRleCA5MjkyNjUxLi44MjVjMTQ2
IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5o
CisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKQEAgLTIs
NiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0Br
ZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgTWFydGluIFJvYmluc29uIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4K
ICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTM0LDggKzM1LDEwIEBACiAKICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcg
V2ViS2l0V2ViVmlldzsKK3R5cGVkZWYgY2hhciBnY2hhcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIFBhZ2U7CkBAIC01Myw2ICs1NiwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIEVkaXRvckNsaWVudChXZWJLaXRXZWJWaWV3Kik7CiAgICAg
ICAgIH5FZGl0b3JDbGllbnQoKTsKKyAgICAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldygpIHsg
cmV0dXJuIG1fd2ViVmlldzsgfQorICAgICAgICBib29sIHRyZWF0Q29udGV4dENvbW1pdEFzS2V5
RXZlbnQoKSB7IHJldHVybiBtX3RyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQ7IH0KKyAgICAg
ICAgdm9pZCBjbGVhclBlbmRpbmdDb21wb3NpdGlvbigpIHsgbV9wZW5kaW5nQ29tcG9zaXRpb24u
c2V0KDApOyB9CisgICAgICAgIGJvb2wgaGFzUGVuZGluZ0NvbXBvc2l0aW9uKCkgeyByZXR1cm4g
bV9wZW5kaW5nQ29tcG9zaXRpb247IH0KKyAgICAgICAgdm9pZCB1cGRhdGVQZW5kaW5nQ29tcG9z
aXRpb24oY29uc3QgY2hhciopOwogCiAgICAgICAgIC8vIGZyb20gRWRpdG9yQ2xpZW50CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7CkBAIC0xMjAsNiArMTI4LDggQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXRXZWJWaWV3KiBt
X3dlYlZpZXc7CisgICAgICAgIGJvb2wgbV90cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50Owor
ICAgICAgICBHT3duUHRyPGdjaGFyPiBtX3BlbmRpbmdDb21wb3NpdGlvbjsKICAgICB9OwogfQog
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RrZXlldmVudHMuYyBiL1dlYktpdC9n
dGsvdGVzdHMvdGVzdGtleWV2ZW50cy5jCmluZGV4IDNjOWUxOTguLmI0MWEwMzIgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdGtleWV2ZW50cy5jCisrKyBiL1dlYktpdC9ndGsvdGVz
dHMvdGVzdGtleWV2ZW50cy5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBNYXJ0aW4gUm9iaW5zb24KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBNYXJ0aW4g
Um9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIy
LDEyICsyMiwxNiBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlv
Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTU3RyaW5nUmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+
CisKIAogI2lmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE0LCAwKQogCiB0eXBlZGVmIHN0cnVjdCB7
Ci0gIGNoYXIqIHBhZ2U7Ci0gIGdib29sZWFuIHNob3VsZEJlSGFuZGxlZDsKKyAgICBjaGFyKiBw
YWdlOworICAgIGNoYXIqIHRleHQ7CisgICAgZ2Jvb2xlYW4gc2hvdWxkQmVIYW5kbGVkOwogfSBU
ZXN0SW5mbzsKIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtNDUsNiArNDksNyBAQCB0ZXN0X2luZm9f
bmV3KGNvbnN0IGNoYXIqIHBhZ2UsIGdib29sZWFuIHNob3VsZEJlSGFuZGxlZCkKICAgICBpbmZv
ID0gZ19zbGljZV9uZXcoVGVzdEluZm8pOwogICAgIGluZm8tPnBhZ2UgPSBnX3N0cmR1cChwYWdl
KTsKICAgICBpbmZvLT5zaG91bGRCZUhhbmRsZWQgPSBzaG91bGRCZUhhbmRsZWQ7CisgICAgaW5m
by0+dGV4dCA9IDA7CiAKICAgICByZXR1cm4gaW5mbzsKIH0KQEAgLTUzLDYgKzU4LDcgQEAgdm9p
ZAogdGVzdF9pbmZvX2Rlc3Ryb3koVGVzdEluZm8qIGluZm8pCiB7CiAgICAgZ19mcmVlKGluZm8t
PnBhZ2UpOworICAgIGdfZnJlZShpbmZvLT50ZXh0KTsKICAgICBnX3NsaWNlX2ZyZWUoVGVzdElu
Zm8sIGluZm8pOwogfQogCkBAIC04Miw3ICs4OCw2IEBAIHN0YXRpYyBnYm9vbGVhbiBrZXlfcHJl
c3NfZXZlbnRfY2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR2RrRXZlbnQqIGV2ZW50LCBncG9p
CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi0KIHN0YXRpYyBnYm9vbGVhbiBrZXlfcmVsZWFzZV9l
dmVudF9jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtFdmVudCogZXZlbnQsIGdwb2ludGVy
IGRhdGEpCiB7CiAgICAgLy8gV2ViQ29yZSBuZXZlciBzZWVtcyB0byBtYXJrIGtleXVwIGV2ZW50
cyBhcyBoYW5kbGVkLgpAQCAtOTUsMTEgKzEwMCwxNSBAQCBzdGF0aWMgZ2Jvb2xlYW4ga2V5X3Jl
bGVhc2VfZXZlbnRfY2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR2RrRXZlbnQqIGV2ZW50LCBn
cAogICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIHZvaWQgbG9hZF9zdGF0dXNfY2IoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFtU3BlYyogc3BlYywgZ3BvaW50ZXIgZGF0YSkKK3N0
YXRpYyB2b2lkIHRlc3Rfa2V5cHJlc3NfZXZlbnRzX2xvYWRfc3RhdHVzX2NiKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqIHNwZWMsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAgS2V5
RXZlbnRGaXh0dXJlKiBmaXh0dXJlID0gKEtleUV2ZW50Rml4dHVyZSopZGF0YTsKICAgICBXZWJL
aXRMb2FkU3RhdHVzIHN0YXR1cyA9IHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZF9zdGF0dXMod2Vi
Vmlldyk7CiAgICAgaWYgKHN0YXR1cyA9PSBXRUJLSVRfTE9BRF9GSU5JU0hFRCkgeworICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUtPndlYlZpZXcsICJrZXktcHJlc3MtZXZlbnQiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0soa2V5X3ByZXNzX2V2ZW50X2NiKSwg
Zml4dHVyZSk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoZml4dHVyZS0+d2ViVmlldywgImtl
eS1yZWxlYXNlLWV2ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKGtl
eV9yZWxlYXNlX2V2ZW50X2NiKSwgZml4dHVyZSk7CiAgICAgICAgIGlmICghZ3RrX3Rlc3Rfd2lk
Z2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldyksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnYScpLCAwKSkK
ICAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CkBAIC0xMTEsMjUgKzEyMCwxNCBA
QCBnYm9vbGVhbiBtYXBfZXZlbnRfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEdka0V2ZW50KiBldmVu
dCwgZ3BvaW50ZXIgZGF0YSkKIHsKICAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMod2lkZ2V0KTsK
ICAgICBLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilkYXRhOwot
Ci0gICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAia2V5LXByZXNzLWV2ZW50
IiwKLSAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0soa2V5X3ByZXNzX2V2ZW50X2NiKSwg
Zml4dHVyZSk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAia2V5LXJl
bGVhc2UtZXZlbnQiLAotICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhrZXlfcmVsZWFz
ZV9ldmVudF9jYiksIGZpeHR1cmUpOwotCi0gICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53
ZWJWaWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1cyIsCi0gICAgICAgICAgICAgICAgICAgICBHX0NB
TExCQUNLKGxvYWRfc3RhdHVzX2NiKSwgZml4dHVyZSk7Ci0KICAgICB3ZWJraXRfd2ViX3ZpZXdf
bG9hZF9zdHJpbmcoZml4dHVyZS0+d2ViVmlldywgZml4dHVyZS0+aW5mby0+cGFnZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHQvaHRtbCIsICJ1dGYtOCIsICJmaWxlOi8v
Iik7Ci0KICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3Rfa2V5cHJlc3Mo
S2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCitzdGF0aWMgdm9p
ZCBzZXR1cF9rZXlldmVudF90ZXN0KEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9p
bnRlciBkYXRhLCBHQ2FsbGJhY2sgbG9hZF9ldmVudF9jYWxsYmFjaykKIHsKICAgICBmaXh0dXJl
LT5pbmZvID0gKFRlc3RJbmZvKilkYXRhOwotCiAgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJl
LT53aW5kb3csICJtYXAtZXZlbnQiLAogICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyht
YXBfZXZlbnRfY2IpLCBmaXh0dXJlKTsKIApAQCAtMTM3LDEwICsxMzUsMTcyIEBAIHN0YXRpYyB2
b2lkIHRlc3Rfa2V5cHJlc3MoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVy
IGRhdGEpCiAgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldykp
OwogICAgIGd0a193aW5kb3dfcHJlc2VudChHVEtfV0lORE9XKGZpeHR1cmUtPndpbmRvdykpOwog
CisgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAibm90aWZ5Ojpsb2FkLXN0
YXR1cyIsCisgICAgICAgICAgICAgICAgICAgICBsb2FkX2V2ZW50X2NhbGxiYWNrLCBmaXh0dXJl
KTsKKwogICAgIGdfbWFpbl9sb29wX3J1bihmaXh0dXJlLT5sb29wKTsKK30KKworc3RhdGljIHZv
aWQgdGVzdF9rZXlwcmVzc19ldmVudHMoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rw
b2ludGVyIGRhdGEpCit7CisgICAgc2V0dXBfa2V5ZXZlbnRfdGVzdChmaXh0dXJlLCBkYXRhLCBH
X0NBTExCQUNLKHRlc3Rfa2V5cHJlc3NfZXZlbnRzX2xvYWRfc3RhdHVzX2NiKSk7Cit9CisKK3N0
YXRpYyBnYm9vbGVhbiBlbGVtZW50X3RleHRfZXF1YWxfdG8oSlNDb250ZXh0UmVmIGNvbnRleHQs
IGNvbnN0IGdjaGFyKiB0ZXh0KQoreworICAgIEpTU3RyaW5nUmVmIHNjcmlwdFN0cmluZyA9IEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKAorICAgICAgIndpbmRvdy5kb2N1bWVudC5nZXRF
bGVtZW50QnlJZChcImluXCIpLnZhbHVlOyIpOworICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBKU0V2
YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdFN0cmluZywgMCwgMCwgMCwgMCk7CisgICAgSlNT
dHJpbmdSZWxlYXNlKHNjcmlwdFN0cmluZyk7CisKKyAgICAvLyBJZiB0aGUgdmFsdWUgaXNuJ3Qg
YSBzdHJpbmcsIHRoZSBlbGVtZW50IGlzIHByb2JhYmx5IGEgZGl2CisgICAgLy8gc28gZ3JhYiB0
aGUgaW5uZXJUZXh0IGluc3RlYWQuCisgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwg
dmFsdWUpKSB7CisgICAgICAgIEpTU3RyaW5nUmVmIHNjcmlwdFN0cmluZyA9IEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKAorICAgICAgICAgICJ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoXCJpblwiKS5pbm5lclRleHQ7Iik7CisgICAgICAgIHZhbHVlID0gSlNFdmFsdWF0ZVNj
cmlwdChjb250ZXh0LCBzY3JpcHRTdHJpbmcsIDAsIDAsIDAsIDApOworICAgICAgICBKU1N0cmlu
Z1JlbGVhc2Uoc2NyaXB0U3RyaW5nKTsKKyAgICB9CisKKyAgICBnX2Fzc2VydChKU1ZhbHVlSXNT
dHJpbmcoY29udGV4dCwgdmFsdWUpKTsKKyAgICBKU1N0cmluZ1JlZiBpbnB1dFN0cmluZyA9IEpT
VmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIDApOworICAgIGdfYXNzZXJ0KGlucHV0
U3RyaW5nKTsKKworICAgIGdpbnQgc2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5n
U2l6ZShpbnB1dFN0cmluZyk7CisgICAgZ2NoYXIqIGNTdHJpbmcgPSBnX21hbGxvYyhzaXplKTsK
KyAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGlucHV0U3RyaW5nLCBjU3RyaW5nLCBzaXplKTsK
KyAgICBKU1N0cmluZ1JlbGVhc2UoaW5wdXRTdHJpbmcpOworCisgICAgZ2Jvb2xlYW4gcmVzdWx0
ID0gZ191dGY4X2NvbGxhdGUoY1N0cmluZywgdGV4dCkgPT0gMDsKKyAgICBnX2ZyZWUoY1N0cmlu
Zyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQgdGVzdF9pbWVfbG9hZF9z
dGF0dXNfY2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFtU3BlYyogc3BlYywgZ3BvaW50
ZXIgZGF0YSkKK3sKKyAgICBLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0
dXJlKilkYXRhOworICAgIFdlYktpdExvYWRTdGF0dXMgc3RhdHVzID0gd2Via2l0X3dlYl92aWV3
X2dldF9sb2FkX3N0YXR1cyh3ZWJWaWV3KTsKKyAgICBpZiAoc3RhdHVzICE9IFdFQktJVF9MT0FE
X0ZJTklTSEVEKQorICAgICAgICByZXR1cm47CisKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29u
dGV4dCA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2dsb2JhbF9jb250ZXh0KAorICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldykpOworICAgIGdfYXNzZXJ0KGNvbnRl
eHQpOworCisgICAgR3RrSU1Db250ZXh0KiBpbUNvbnRleHQgPSAwOworICAgIGdfb2JqZWN0X2dl
dCh3ZWJWaWV3LCAiaW0tY29udGV4dCIsICZpbUNvbnRleHQsIE5VTEwpOworICAgIGdfYXNzZXJ0
KGltQ29udGV4dCk7CisKKyAgICAvLyBUZXN0IHRoYXQgY29tbWl0cyB0aGF0IGhhcHBlbiBvdXRz
aWRlIG9mIGtleSBldmVudHMKKyAgICAvLyBjaGFuZ2UgdGhlIHRleHQgZmllbGQgaW1tZWRpYXRl
bHkuIFRoaXMgY2xvc2VseSByZXBsaWNhdGVzCisgICAgLy8gdGhlIGJlaGF2aW9yIG9mIFNDSU0u
CisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsICIiKSk7CisgICAg
Z19zaWduYWxfZW1pdF9ieV9uYW1lKGltQ29udGV4dCwgImNvbW1pdCIsICJhIik7CisgICAgZ19h
c3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsICJhIikpOworICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZShpbUNvbnRleHQsICJjb21taXQiLCAiYiIpOworICAgIGdfYXNzZXJ0KGVs
ZW1lbnRfdGV4dF9lcXVhbF90byhjb250ZXh0LCAiYWIiKSk7CisgICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKGltQ29udGV4dCwgImNvbW1pdCIsICJjIik7CisgICAgZ19hc3NlcnQoZWxlbWVudF90
ZXh0X2VxdWFsX3RvKGNvbnRleHQsICJhYmMiKSk7CisKKyAgICBnX29iamVjdF91bnJlZihpbUNv
bnRleHQpOworICAgIGdfbWFpbl9sb29wX3F1aXQoZml4dHVyZS0+bG9vcCk7Cit9CisKK3N0YXRp
YyB2b2lkIHRlc3RfaW1lKEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRlciBk
YXRhKQoreworICAgIHNldHVwX2tleWV2ZW50X3Rlc3QoZml4dHVyZSwgZGF0YSwgR19DQUxMQkFD
Syh0ZXN0X2ltZV9sb2FkX3N0YXR1c19jYikpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gdmVyaWZ5
X2NvbnRlbnRzKGdwb2ludGVyIGRhdGEpCit7CisgICAgS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJl
ID0gKEtleUV2ZW50Rml4dHVyZSopZGF0YTsKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4
dCA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2dsb2JhbF9jb250ZXh0KAorICAgICAgICB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUoZml4dHVyZS0+d2ViVmlldykpOworICAgIGdfYXNzZXJ0
KGNvbnRleHQpOworCisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQs
IGZpeHR1cmUtPmluZm8tPnRleHQpKTsKKyAgICBnX21haW5fbG9vcF9xdWl0KGZpeHR1cmUtPmxv
b3ApOworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9ibG9ja2luZ19s
b2FkX3N0YXR1c19jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBzcGVjLCBn
cG9pbnRlciBkYXRhKQoreworICAgIEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSA9IChLZXlFdmVu
dEZpeHR1cmUqKWRhdGE7CisgICAgV2ViS2l0TG9hZFN0YXR1cyBzdGF0dXMgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2xvYWRfc3RhdHVzKHdlYlZpZXcpOworICAgIGlmIChzdGF0dXMgIT0gV0VCS0lU
X0xPQURfRklOSVNIRUQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBmaXJzdCBrZXlw
cmVzcyBldmVudCBzaG91bGQgbm90IG1vZGlmeSB0aGUgZmllbGQuCisgICAgZml4dHVyZS0+aW5m
by0+dGV4dCA9IGdfc3RyZHVwKCJiYyIpOworICAgIGlmICghZ3RrX3Rlc3Rfd2lkZ2V0X3NlbmRf
a2V5KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2YWwoJ2EnKSwgMCkpCisgICAgICAgIGdfYXNz
ZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgaWYgKCFndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RL
X1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZGtfdW5pY29kZV90b19rZXl2YWwoJ2InKSwgMCkpCisgICAgICAgIGdfYXNzZXJ0X25v
dF9yZWFjaGVkKCk7CisgICAgaWYgKCFndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdF
VChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZGtfdW5pY29kZV90b19rZXl2YWwoJ2MnKSwgMCkpCisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFj
aGVkKCk7CisKKyAgICBnX2lkbGVfYWRkKHZlcmlmeV9jb250ZW50cywgZml4dHVyZSk7Cit9CisK
K3N0YXRpYyB2b2lkIHRlc3RfYmxvY2tpbmcoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29u
c3Rwb2ludGVyIGRhdGEpCit7CisgICAgc2V0dXBfa2V5ZXZlbnRfdGVzdChmaXh0dXJlLCBkYXRh
LCBHX0NBTExCQUNLKHRlc3RfYmxvY2tpbmdfbG9hZF9zdGF0dXNfY2IpKTsKK30KIAorI2lmIGRl
ZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpICYmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQor
c3RhdGljIHZvaWQgdGVzdF94aW1fbG9hZF9zdGF0dXNfY2IoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgR1BhcmFtU3BlYyogc3BlYywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBLZXlFdmVudEZpeHR1
cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilkYXRhOworICAgIFdlYktpdExvYWRTdGF0
dXMgc3RhdHVzID0gd2Via2l0X3dlYl92aWV3X2dldF9sb2FkX3N0YXR1cyh3ZWJWaWV3KTsKKyAg
ICBpZiAoc3RhdHVzICE9IFdFQktJVF9MT0FEX0ZJTklTSEVEKQorICAgICAgICByZXR1cm47CisK
KyAgICBHdGtJTUNvbnRleHQqIGltQ29udGV4dCA9IDA7CisgICAgZ19vYmplY3RfZ2V0KHdlYlZp
ZXcsICJpbS1jb250ZXh0IiwgJmltQ29udGV4dCwgTlVMTCk7CisgICAgZ19hc3NlcnQoaW1Db250
ZXh0KTsKKworICAgIGdjaGFyKiBvcmlnaW5hbElkID0gZ19zdHJkdXAoZ3RrX2ltX211bHRpY29u
dGV4dF9nZXRfY29udGV4dF9pZChHVEtfSU1fTVVMVElDT05URVhUKGltQ29udGV4dCkpKTsKKyAg
ICBndGtfaW1fbXVsdGljb250ZXh0X3NldF9jb250ZXh0X2lkKEdUS19JTV9NVUxUSUNPTlRFWFQo
aW1Db250ZXh0KSwgInhpbSIpOworCisgICAgLy8gVGVzdCB0aGF0IGNvbW1pdHMgdGhhdCBoYXBw
ZW4gb3V0c2lkZSBvZiBrZXkgZXZlbnRzCisgICAgLy8gY2hhbmdlIHRoZSB0ZXh0IGZpZWxkIGlt
bWVkaWF0ZWx5LiBUaGlzIGNsb3NlbHkgcmVwbGljYXRlcworICAgIC8vIHRoZSBiZWhhdmlvciBv
ZiBTQ0lNLgorICAgIGZpeHR1cmUtPmluZm8tPnRleHQgPSBnX3N0cmR1cCgiZGViaWFuIik7Cisg
ICAgaWYgKCFndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJW
aWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tl
eXZhbCgnZCcpLCAwKSkKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICBpZiAo
IWd0a190ZXN0X3dpZGdldF9zZW5kX2tleShHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2YWwoJ2UnKSwg
MCkpCisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgaWYgKCFndGtfdGVzdF93
aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdiJyksIDApKQorICAgICAg
ICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgIGlmICghZ3RrX3Rlc3Rfd2lkZ2V0X3NlbmRf
a2V5KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnaScpLCAwKSkKKyAgICAgICAgZ19hc3NlcnRf
bm90X3JlYWNoZWQoKTsKKyAgICBpZiAoIWd0a190ZXN0X3dpZGdldF9zZW5kX2tleShHVEtfV0lE
R0VUKGZpeHR1cmUtPndlYlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtf
dW5pY29kZV90b19rZXl2YWwoJ2EnKSwgMCkpCisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVk
KCk7CisgICAgaWYgKCFndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJl
LT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX3VuaWNvZGVfdG9f
a2V5dmFsKCduJyksIDApKQorICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworCisgICAg
Z3RrX2ltX211bHRpY29udGV4dF9zZXRfY29udGV4dF9pZChHVEtfSU1fTVVMVElDT05URVhUKGlt
Q29udGV4dCksIG9yaWdpbmFsSWQpOworICAgIGdfZnJlZShvcmlnaW5hbElkKTsKKyAgICBnX29i
amVjdF91bnJlZihpbUNvbnRleHQpOworCisgICAgZ19pZGxlX2FkZCh2ZXJpZnlfY29udGVudHMs
IGZpeHR1cmUpOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0X3hpbShLZXlFdmVudEZpeHR1cmUqIGZp
eHR1cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkKK3sKKyAgICBzZXR1cF9rZXlldmVudF90ZXN0KGZp
eHR1cmUsIGRhdGEsIEdfQ0FMTEJBQ0sodGVzdF94aW1fbG9hZF9zdGF0dXNfY2IpKTsKK30KKyNl
bmRpZgorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAgICAgZ190aHJlYWRf
aW5pdChOVUxMKTsKQEAgLTE0OCwzMCArMzA4LDg1IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikKIAogICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
Iik7CiAKLSAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50L3RleHRmaWVsZCIsIEtleUV2
ZW50Rml4dHVyZSwKLSAgICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcoIjxodG1sPjxib2R5Pjxp
bnB1dCBpZD1cImluXCIgdHlwZT1cInRleHRcIj4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICI8c2NyaXB0PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7IgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iLCBUUlVF
KSwKKworICAgIC8vIFdlJ2xsIHRlc3QgaW5wdXQgb24gYSBzbGV3IG9mIGRpZmZlcmVudCBub2Rl
IHR5cGVzLiBLZXkgZXZlbnRzIHRvCisgICAgLy8gdGV4dCBpbnB1dHMgYW5kIGVkaXRhYmxlIGRp
dnMgc2hvdWxkIGJlIG1hcmtlZCBhcyBoYW5kbGVkLiBLZXkgZXZlbnRzCisgICAgLy8gdG8gYnV0
dG9ucyBhbmQgbGlua3Mgc2hvdWxkIG5vdC4KKyAgICBjb25zdCBjaGFyKiB0ZXh0aW5wdXRfaHRt
bCA9ICI8aHRtbD48Ym9keT48aW5wdXQgaWQ9XCJpblwiIHR5cGU9XCJ0ZXh0XCI+IgorICAgICAg
ICAiPHNjcmlwdD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0
PjwvYm9keT48L2h0bWw+IjsKKyAgICBjb25zdCBjaGFyKiBidXR0b25faHRtbCA9ICI8aHRtbD48
Ym9keT48aW5wdXQgaWQ9XCJpblwiIHR5cGU9XCJidXR0b25cIj4iCisgICAgICAgICI8c2NyaXB0
PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7PC9zY3JpcHQ+PC9ib2R5Pjwv
aHRtbD4iOworICAgIGNvbnN0IGNoYXIqIGxpbmtfaHRtbCA9ICI8aHRtbD48Ym9keT48YSBocmVm
PVwiaHR0cDovL3d3dy5nbm9tZS5vcmdcIiBpZD1cImluXCI+IgorICAgICAgICAiTElOS1kgTUNM
SU5LRVJTT048L2E+PHNjcmlwdD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygp
Ozwvc2NyaXB0PiIKKyAgICAgICAgIjwvYm9keT48L2h0bWw+IjsKKyAgICBjb25zdCBjaGFyKiBk
aXZfaHRtbCA9ICI8aHRtbD48Ym9keT48ZGl2IGlkPVwiaW5cIiBjb250ZW50ZWRpdGFibGU9XCJ0
cnVlXCI+IgorICAgICAgICAiPHNjcmlwdD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5m
b2N1cygpOzwvc2NyaXB0PjwvYm9keT48L2h0bWw+IjsKKworICAgIC8vIFRoZXNlIGFyZSBzaW1p
bGFyIHRvIHRoZSBibG9ja3MgYWJvdmUsIGJ1dCB0aGV5IHNob3VsZCBibG9jayB0aGUgZmlyc3QK
KyAgICAvLyBrZXlwcmVzcyBtb2RpZnlpbmcgdGhlIGVkaXRhYmxlIG5vZGUuCisgICAgY29uc3Qg
Y2hhciogdGV4dGlucHV0X2h0bWxfYmxvY2tpbmcgPSAiPGh0bWw+PGJvZHk+IgorICAgICAgICAi
PGlucHV0IGlkPVwiaW5cIiB0eXBlPVwidGV4dFwiICIKKyAgICAgICAgIm9ua2V5cHJlc3M9XCJp
ZiAoZmlyc3QpIHtldmVudC5wcmV2ZW50RGVmYXVsdCgpO2ZpcnN0PWZhbHNlO31cIj4iCisgICAg
ICAgICI8c2NyaXB0PmZpcnN0ID0gdHJ1ZTtcbmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicp
LmZvY3VzKCk7PC9zY3JpcHQ+XG4iCisgICAgICAgICI8L3NjcmlwdD48L2JvZHk+PC9odG1sPiI7
CisgICAgY29uc3QgY2hhciogZGl2X2h0bWxfYmxvY2tpbmcgPSAiPGh0bWw+PGJvZHk+IgorICAg
ICAgICAiPGRpdiBpZD1cImluXCIgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiICIKKyAgICAgICAg
Im9ua2V5cHJlc3M9XCJpZiAoZmlyc3QpIHtldmVudC5wcmV2ZW50RGVmYXVsdCgpO2ZpcnN0PWZh
bHNlO31cIj4iCisgICAgICAgICI8c2NyaXB0PmZpcnN0ID0gdHJ1ZTsgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8L3NjcmlwdD5cbiIKKyAgICAgICAgIjwvc2NyaXB0Pjwv
Ym9keT48L2h0bWw+IjsKKworICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnRzL2V2ZW50
LXRleHRpbnB1dCIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5mb19u
ZXcodGV4dGlucHV0X2h0bWwsIFRSVUUpLAogICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1
cmVfc2V0dXAsCi0gICAgICAgICAgICAgICB0ZXN0X2tleXByZXNzLAorICAgICAgICAgICAgICAg
dGVzdF9rZXlwcmVzc19ldmVudHMsCiAgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90
ZWFyZG93bik7Ci0KLSAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50L2J1dHRvbnMiLCBL
ZXlFdmVudEZpeHR1cmUsCi0gICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KCI8aHRtbD48Ym9k
eT48aW5wdXQgaWQ9XCJpblwiIHR5cGU9XCJidXR0b25cIj4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICI8c2NyaXB0PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4i
LCBGQUxTRSksCisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudHMvZXZlbnQtYnV0dG9u
cyIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcoYnV0dG9u
X2h0bWwsIEZBTFNFKSwKICAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAot
ICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzcywKKyAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJl
c3NfZXZlbnRzLAogICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOwot
Ci0gICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudC9saW5rIiwgS2V5RXZlbnRGaXh0dXJl
LAotICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldygiPGh0bWw+PGJvZHk+PGEgaHJlZj1cImh0
dHA6Ly93d3cuZ25vbWUub3JnXCIgaWQ9XCJpblwiPiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkxJTktZIE1DTElOS0VSU09OPC9hPjxzY3JpcHQ+IgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8L3Njcmlw
dD4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8L2JvZHk+PC9odG1sPiIsIEZBTFNF
KSwKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50cy9ldmVudC1saW5rIiwgS2V5RXZl
bnRGaXh0dXJlLAorICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldyhsaW5rX2h0bWwsIEZBTFNF
KSwKICAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAotICAgICAgICAgICAg
ICAgdGVzdF9rZXlwcmVzcywKKyAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3NfZXZlbnRzLAog
ICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdfdGVzdF9h
ZGQoIi93ZWJraXQva2V5ZXZlbnQvZXZlbnQtZGl2IiwgS2V5RXZlbnRGaXh0dXJlLAorICAgICAg
ICAgICAgICAgdGVzdF9pbmZvX25ldyhkaXZfaHRtbCwgVFJVRSksCisgICAgICAgICAgICAgICBr
ZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKKyAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3NfZXZl
bnRzLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdf
dGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQvaW1lLXRleHRpbnB1dCIsIEtleUV2ZW50Rml4dHVy
ZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcodGV4dGlucHV0X2h0bWwsIFRSVUUpLAor
ICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCisgICAgICAgICAgICAgICB0
ZXN0X2ltZSwKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAg
ICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50L2ltZS1kaXYiLCBLZXlFdmVudEZpeHR1cmUs
CisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KGRpdl9odG1sLCBUUlVFKSwKKyAgICAgICAg
ICAgICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAorICAgICAgICAgICAgICAgdGVzdF9pbWUs
CisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisgICAgZ190ZXN0
X2FkZCgiL3dlYmtpdC9rZXlldmVudC9ibG9jay10ZXh0aW5wdXQiLCBLZXlFdmVudEZpeHR1cmUs
CisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KHRleHRpbnB1dF9odG1sX2Jsb2NraW5nLCBU
UlVFKSwKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAorICAgICAgICAg
ICAgICAgdGVzdF9ibG9ja2luZywKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3Rl
YXJkb3duKTsKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50L2Jsb2NrLWRpdiIsIEtl
eUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcoZGl2X2h0bWxfYmxv
Y2tpbmcsIFRSVUUpLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCisg
ICAgICAgICAgICAgICB0ZXN0X2Jsb2NraW5nLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2Zp
eHR1cmVfdGVhcmRvd24pOworI2lmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpICYmIEdUS19D
SEVDS19WRVJTSU9OKDIsIDE2LCAwKQorICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQv
eGltLXRleHRpbnB1dCIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5m
b19uZXcodGV4dGlucHV0X2h0bWwsIFRSVUUpLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2Zp
eHR1cmVfc2V0dXAsCisgICAgICAgICAgICAgICB0ZXN0X3hpbSwKKyAgICAgICAgICAgICAgIGtl
eV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2
ZW50L3hpbS1kaXYiLCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9f
bmV3KGRpdl9odG1sLCBUUlVFKSwKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3Nl
dHVwLAorICAgICAgICAgICAgICAgdGVzdF94aW0sCisgICAgICAgICAgICAgICBrZXlfZXZlbnRf
Zml4dHVyZV90ZWFyZG93bik7CisjZW5kaWYKIAogICAgIHJldHVybiBnX3Rlc3RfcnVuKCk7CiB9
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDgxY2U1MDIuLmI3MGQ5N2QgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC01NjIsMTIgKzU2MiwxOSBAQCBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2tleV9yZWxlYXNlX2V2ZW50KEd0a1dpZGdldCog
d2lkZ2V0LCBHZGtFdmVudEtleQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJL
SVRfV0VCX1ZJRVcod2lkZ2V0KTsKIAorICAgIC8vIEdUSysgSU0gY29udGV4dHMgb2Z0ZW4gcmVx
dWlyZSB1cyB0byBmaWx0ZXIga2V5IHJlbGVhc2UgZXZlbnRzLCB3aGljaAorICAgIC8vIFdlYkNv
cmUgZG9lcyBub3QgZG8gYnkgZGVmYXVsdCwgc28gd2UgZmlsdGVyIHRoZSBldmVudCBoZXJlLiBX
ZSBvbmx5IGJsb2NrCisgICAgLy8gdGhlIGV2ZW50IGlmIHdlIGRvbid0IGhhdmUgYSBwZW5kaW5n
IGNvbXBvc2l0aW9uLCBiZWNhdXNlIHRoYXQgbWVhbnMgd2UKKyAgICAvLyBhcmUgdXNpbmcgYSBj
b250ZXh0IGxpa2UgJ3NpbXBsZScgd2hpY2ggbWFya3MgZXZlcnkga2V5c3Ryb2tlIGFzIGZpbHRl
cmVkLgorICAgIFdlYktpdDo6RWRpdG9yQ2xpZW50KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJL
aXQ6OkVkaXRvckNsaWVudCo+KGNvcmUod2ViVmlldyktPmVkaXRvckNsaWVudCgpKTsKKyAgICBp
ZiAoZ3RrX2ltX2NvbnRleHRfZmlsdGVyX2tleXByZXNzKHdlYlZpZXctPnByaXYtPmltQ29udGV4
dCwgZXZlbnQpICYmICFjbGllbnQtPmhhc1BlbmRpbmdDb21wb3NpdGlvbigpKQorICAgICAgICBy
ZXR1cm4gVFJVRTsKKwogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lLT52aWV3KCkp
CiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXli
b2FyZEV2ZW50KGV2ZW50KTsKLQogICAgIGlmIChmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2
ZW50KGtleWJvYXJkRXZlbnQpKQogICAgICAgICByZXR1cm4gVFJVRTsKIApAQCAtNzI3LDYgKzcz
NCw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqCiAgICAgICAgICAgICBmb2N1c0NvbnRyb2xs
ZXItPnNldEZvY3VzZWQodHJ1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZvY3VzQ29u
dHJvbGxlci0+c2V0Rm9jdXNlZEZyYW1lKGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpKTsKKwor
ICAgICAgICBndGtfaW1fY29udGV4dF9mb2N1c19pbih3ZWJWaWV3LT5wcml2LT5pbUNvbnRleHQp
OwogICAgIH0KICAgICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFy
ZW50X2NsYXNzKS0+Zm9jdXNfaW5fZXZlbnQod2lkZ2V0LCBldmVudCk7CiB9CkBAIC03NDMsNiAr
NzUyLDkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb2N1c19vdXRfZXZlbnQo
R3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMKICAgICAgICAgcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPnNldEZvY3VzZWQoZmFsc2UpOwogICAgIH0KIAorICAgIGlmICh3ZWJWaWV3LT5w
cml2LT5pbUNvbnRleHQpCisgICAgICAgIGd0a19pbV9jb250ZXh0X2ZvY3VzX291dCh3ZWJWaWV3
LT5wcml2LT5pbUNvbnRleHQpOworCiAgICAgcmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0
X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPmZvY3VzX291dF9ldmVudCh3aWRnZXQsIGV2ZW50KTsK
IH0KIAotLSAKMS42LjMuMwoK
</data>
<flag name="commit-queue"
          id="33945"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50775</attachid>
            <date>2010-03-16 01:12:38 -0700</date>
            <delta_ts>2010-03-16 09:16:00 -0700</delta_ts>
            <desc>Patch for this issue (rev9)</desc>
            <filename>0001-can-t-input-korean-into-lower-all-input-box-except-a.patch</filename>
            <type>text/plain</type>
            <size>31475</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA4NWQ1NTc3ZjVlNTI5M2ZhMTBmNDg2ZjY4ODYwODc5NjlmNWJlMTg1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1hcnRpbi5qYW1lcy5yb2JpbnNv
bkBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTUgTWFyIDIwMTAgMjI6MzA6MzggLTA3MDAKU3ViamVj
dDogW1BBVENIXSBjYW4ndCBpbnB1dCBrb3JlYW4gaW50byBsb3dlciBhbGwgaW5wdXQgYm94IGV4
Y2VwdCBhZHJlc3MgaW5wdXQgYm94IGluIHdlYmtpdCBndGsgbGF1bmNoZXIKIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjI5MAoKLS0tCiBXZWJLaXQvZ3RrL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ1ICsrKysKIFdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCB8ICAxNDIgKysrKysrKystLS0tLQogV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaCAgIHwgICAxMCArCiBXZWJL
aXQvZ3RrL3Rlc3RzL3Rlc3RrZXlldmVudHMuYyAgICAgICAgICAgICAgfCAgMjg1ICsrKysrKysr
KysrKysrKysrKysrKystLS0KIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwICAg
ICAgICAgICB8ICAgMTQgKystCiA1IGZpbGVzIGNoYW5nZWQsIDQwOSBpbnNlcnRpb25zKCspLCA4
NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCmluZGV4IDUxOWNhYTUuLmRkNDA3MTEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDgg
QEAKKzIwMTAtMDMtMTUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNhbid0IGlu
cHV0IGtvcmVhbiBpbnRvIGxvd2VyIGFsbCBpbnB1dCBib3ggZXhjZXB0IGFkcmVzcyBpbnB1dCBi
b3ggaW4gd2Via2l0IGd0ayBsYXVuY2hlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzIyOTAKKworICAgICAgICBNYWtlIHRoZSBHVEsrIEVkaXRvckNs
aWVudCBwcm9wZXJseSBoYW5kbGUgZGlmZmVyZW50IHR5cGVzIG9mIGlucHV0IG1vZHVsZQorICAg
ICAgICBiZWhhdmlvciBzdWNoIGFzIGNvbW1pdCBhbmQgcHJlZWRpdCBzaWduYWxzIHRoYXQgaGFw
cGVuIG91dHNpZGUgb2Yga2V5IGV2ZW50CisgICAgICAgIGZpbHRlcmluZyBhbmQgbXVsdGlwbGUg
dGltZXMgaW4gYSByb3cuIEZpbHRlciBrZXl1cCBldmVudHMgYXMgd2VsbCBhcyBrZXlkb3duCisg
ICAgICAgIGV2ZW50cyBhbmQgY2FsbCBndGtfaW1fY29udGV4dF9mb2N1c197aW4vb3V0fSB3aGVu
IHRoZSBXZWJWaWV3IGZvY3VzIGNoYW5nZXMuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIHRo
aXMgYmVoYXZpb3IgdG8gdGhlIEdUSysgdW5pdCB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltQ29udGV4dENv
bW1pdHRlZCk6IEhhbmRsZSB0aGlzIHNpZ25hbCBwcm9wZXJseSB3aGVuIGl0IGhhcHBlbnMgb3V0
c2lkZSBvZgorICAgICAgICBrZXkgZXZlbnQgZmlsdGVyaW5nLgorICAgICAgICAoV2ViS2l0Ojpp
bUNvbnRleHRQcmVlZGl0Q2hhbmdlZCk6IEltbWVkaWF0ZWx5IHVwZGF0ZSB0aGUgcHJlZWRpdCBz
dGF0ZSBhbmQgZG8gbm90IHJlamVjdAorICAgICAgICBlbXB0eSBwcmVlZGl0cywgc28gdGhhdCBj
YW5jZWxsYXRpb24gd29ya3MgcHJvcGVybHkuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVu
dDo6dXBkYXRlUGVuZGluZ0NvbXBvc2l0aW9uKTogQWRkIHRoaXMgbWV0aG9kLCB3aGljaCBoYW5k
bGVzIHRoZQorICAgICAgICBzaXR1YXRpb24gd2hlcmUgYSBjb21taXQgc2lnbmFsIGhhcHBlbnMg
d2hlbiB0aGVyZSBpcyBzdGlsbCBhIHBlbmRpbmcgY29tbWl0LgorICAgICAgICAoV2ViS2l0OjpF
ZGl0b3JDbGllbnQ6OnNob3VsZEJlZ2luRWRpdGluZyk6IENsZWFyIHBlbmRpbmcgY29tcG9zaXRp
b24gc3RhdGUgYmVmb3JlIGVkaXRpbmcKKyAgICAgICAgc3RhcnRzLgorICAgICAgICAoV2ViS2l0
OjpFZGl0b3JDbGllbnQ6OnNob3VsZEVuZEVkaXRpbmcpOiBDbGVhciBwZW5kaW5nIGNvbXBvc2l0
aW9uIHN0YXRlIGJlZm9yZSBlZGl0aW5nIGVuZHMuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNs
aWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6IE5vIGxvbmdlciBzcGVjaWFsIGNhc2UgcHJlZWRp
dHMgd2hpY2ggaGFwcGVuIGR1cmluZworICAgICAgICBrZXkgZXZlbnQgZmlsdGVyaW5nLiBXaGVu
IGNvbmZpcm1pbmcgYSBwZW5kaW5nIGNvbXBvc2l0aW9uIHVzZSBpbnNlcnRUZXh0IGluc3RlYWQg
b2YgY29uZmlybUNvbXBvc2l0aW9uLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6Omhh
bmRsZUlucHV0TWV0aG9kS2V5ZG93bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50R3RrLmg6IE1ha2UgcGVuZGluZ0NvbXBvc2l0aW9uIGEgbWVtYmVyLCBzbyB0aGF0IG11
bHRpcGxlIFdlYlZpZXdzCisgICAgICAgIGRvIG5vdCBzaGFyZSBzdGF0ZS4KKyAgICAgICAgKFdl
YktpdDo6RWRpdG9yQ2xpZW50Ojp3ZWJWaWV3KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkVk
aXRvckNsaWVudDo6dHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCk6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKTogQWRkZWQu
CisgICAgICAgICogdGVzdHMvdGVzdGtleWV2ZW50cy5jOgorICAgICAgICAodGVzdF9rZXlwcmVz
c19ldmVudHNfbG9hZF9zdGF0dXNfY2IpOgorICAgICAgICAobWFwX2V2ZW50X2NiKToKKyAgICAg
ICAgKHNldHVwX2tleWV2ZW50X3Rlc3QpOgorICAgICAgICAodGVzdF9rZXlwcmVzc19ldmVudHMp
OgorICAgICAgICAoZWxlbWVudF90ZXh0X2VxdWFsX3RvKToKKyAgICAgICAgKHRlc3RfaW1lX2xv
YWRfc3RhdHVzX2NiKToKKyAgICAgICAgKHRlc3RfaW1lKToKKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19rZXlfcmVsZWFzZV9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5f
ZXZlbnQpOgorCiAyMDEwLTAzLTE1ICBKb2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NA
Z21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCAwNzAwOTM5
Li5kODMzYWM5IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRH
dGsuY3BwCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwOSBEaWVnbyBFc2Nh
bGFudGUgVXJyZWxvIDxkaWVnb2VAZ25vbWUub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykg
MjAwOSwgSWdhbGlhIFMuTC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAsIE1hcnRpbiBSb2JpbnNv
biA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01MSw0MCAr
NTIsNDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1zdGF0aWMgZ2NoYXIqIHBlbmRpbmdDb21wb3NpdGlvbiA9IDA7Ci1zdGF0aWMgZ2NoYXIqIHBl
bmRpbmdQcmVlZGl0ID0gMDsKLQotc3RhdGljIHZvaWQgc2V0UGVuZGluZ0NvbXBvc2l0aW9uKGdj
aGFyKiBuZXdDb21wb3NpdGlvbikKK3N0YXRpYyB2b2lkIGltQ29udGV4dENvbW1pdHRlZChHdGtJ
TUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGdjaGFyKiBjb21wb3NpdGlvblN0cmluZywgRWRpdG9y
Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgZ19mcmVlKHBlbmRpbmdDb21wb3NpdGlvbik7Ci0gICAg
cGVuZGluZ0NvbXBvc2l0aW9uID0gbmV3Q29tcG9zaXRpb247Ci19CisgICAgLy8gSWYgdGhpcyBz
aWduYWwgZmlyZXMgZHVyaW5nIGEga2V5ZG93biBldmVudCB3aGVuIHdlIGFyZSBub3QgaW4gdGhl
IG1pZGRsZQorICAgIC8vIG9mIGEgY29tcG9zaXRpb24sIHRoZW4gdHJlYXQgdGhpcyAnY29tbWl0
JyBhcyBhIG5vcm1hbCBrZXkgZXZlbnQgYW5kIGp1c3QKKyAgICAvLyBjaGFuZ2UgdGhlIGVkaXRh
YmxlIGFyZWEgcmlnaHQgYmVmb3JlIHRoZSBrZXlwcmVzcyBldmVudC4KKyAgICBpZiAoY2xpZW50
LT50cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50KCkpIHsKKyAgICAgICAgY2xpZW50LT51cGRh
dGVQZW5kaW5nQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOworICAgICAgICByZXR1cm47
CisgICAgfQogCi1zdGF0aWMgdm9pZCBzZXRQZW5kaW5nUHJlZWRpdChnY2hhciogbmV3UHJlZWRp
dCkKLXsKLSAgICBnX2ZyZWUocGVuZGluZ1ByZWVkaXQpOwotICAgIHBlbmRpbmdQcmVlZGl0ID0g
bmV3UHJlZWRpdDsKLX0KKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKGNsaWVudC0+d2ViVmlldygp
KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJh
bWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm47CiAKLXN0
YXRpYyB2b2lkIGNsZWFyUGVuZGluZ0lNRGF0YSgpCi17Ci0gICAgc2V0UGVuZGluZ0NvbXBvc2l0
aW9uKDApOwotICAgIHNldFBlbmRpbmdQcmVlZGl0KDApOwotfQotc3RhdGljIHZvaWQgaW1Db250
ZXh0Q29tbWl0dGVkKEd0a0lNQ29udGV4dCogY29udGV4dCwgY29uc3QgZ2NoYXIqIHN0ciwgRWRp
dG9yQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgLy8gVGhpcyBzaWduYWwgd2lsbCBmaXJlIGR1cmlu
ZyBhIGtleWRvd24gZXZlbnQuIFdlIHdhbnQgdGhlIGNvbnRlbnRzIG9mIHRoZQotICAgIC8vIGZp
ZWxkIHRvIGNoYW5nZSByaWdodCBiZWZvcmUgdGhlIGtleXVwIGV2ZW50LCBzbyB3ZSB3YWl0IHVu
dGlsIHRoZW4gdG8gYWN0dWFsbHkKLSAgICAvLyBjb21taXQgdGhpcyBjb21wb3NpdGlvbi4KLSAg
ICBzZXRQZW5kaW5nQ29tcG9zaXRpb24oZ19zdHJkdXAoc3RyKSk7CisgICAgZnJhbWUtPmVkaXRv
cigpLT5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOChjb21wb3NpdGlvblN0cmlu
ZykpOworICAgIGNsaWVudC0+Y2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKTsKIH0KIAogc3RhdGlj
IHZvaWQgaW1Db250ZXh0UHJlZWRpdENoYW5nZWQoR3RrSU1Db250ZXh0KiBjb250ZXh0LCBFZGl0
b3JDbGllbnQqIGNsaWVudCkKIHsKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKGNsaWVudC0+d2Vi
VmlldygpKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlm
ICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm47
CisKICAgICAvLyBXZSBpZ25vcmUgdGhlIHByb3ZpZGVkIFBhbmdvQXR0ckxpc3QgZm9yIG5vdy4K
LSAgICBnY2hhciogbmV3UHJlZWRpdCA9IDA7Ci0gICAgZ3RrX2ltX2NvbnRleHRfZ2V0X3ByZWVk
aXRfc3RyaW5nKGNvbnRleHQsICZuZXdQcmVlZGl0LCBOVUxMLCBOVUxMKTsKLSAgICBzZXRQZW5k
aW5nUHJlZWRpdChuZXdQcmVlZGl0KTsKKyAgICBHT3duUHRyPGdjaGFyPiBuZXdQcmVlZGl0KDAp
OworICAgIGd0a19pbV9jb250ZXh0X2dldF9wcmVlZGl0X3N0cmluZyhjb250ZXh0LCAmbmV3UHJl
ZWRpdC5vdXRQdHIoKSwgMCwgMCk7CisKKyAgICBTdHJpbmcgcHJlZWRpdFN0cmluZyA9IFN0cmlu
Zzo6ZnJvbVVURjgobmV3UHJlZWRpdC5nZXQoKSk7CisgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5k
ZXJsaW5lPiB1bmRlcmxpbmVzOworICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5k
ZXJsaW5lKDAsIHByZWVkaXRTdHJpbmcubGVuZ3RoKCksIENvbG9yKDAsIDAsIDApLCBmYWxzZSkp
OworICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdFN0cmluZywgdW5k
ZXJsaW5lcywgMCwgMCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50Ojp1cGRhdGVQZW5kaW5nQ29t
cG9zaXRpb24oY29uc3QgZ2NoYXIqIG5ld0NvbXBvc2l0aW9uKQoreworICAgIC8vIFRoZSBJTUNv
bnRleHQgbWF5IHNpZ25hbCBtb3JlIHRoYW4gb25lIGNvbXBsZXRlZCBjb21wb3NpdGlvbiBpbiBh
IHJvdywKKyAgICAvLyBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYXBwZW5kIHRoZW0sIHJhdGhl
ciB0aGFuIG92ZXJ3cml0ZSB0aGUgb2xkIG9uZS4KKyAgICBpZiAoIW1fcGVuZGluZ0NvbXBvc2l0
aW9uKQorICAgICAgICBtX3BlbmRpbmdDb21wb3NpdGlvbi5zZXQoZ19zdHJkdXAobmV3Q29tcG9z
aXRpb24pKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGVuZGluZ0NvbXBvc2l0aW9uLnNldChnX3N0
cmNvbmNhdChtX3BlbmRpbmdDb21wb3NpdGlvbi5nZXQoKSwgbmV3Q29tcG9zaXRpb24sIE5VTEwp
KTsKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBhY3Rp
dmUpCkBAIC0xMzksNyArMTQ4LDcgQEAgaW50IEVkaXRvckNsaWVudDo6c3BlbGxDaGVja2VyRG9j
dW1lbnRUYWcoKQogCiBib29sIEVkaXRvckNsaWVudDo6c2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNv
cmU6OlJhbmdlKikKIHsKLSAgICBjbGVhclBlbmRpbmdJTURhdGEoKTsKKyAgICBjbGVhclBlbmRp
bmdDb21wb3NpdGlvbigpOwogCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTE0Nyw3ICsxNTYsNyBAQCBib29sIEVkaXRvckNsaWVudDo6c2hvdWxkQmVnaW5FZGl0
aW5nKFdlYkNvcmU6OlJhbmdlKikKIAogYm9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZEVuZEVkaXRp
bmcoV2ViQ29yZTo6UmFuZ2UqKQogewotICAgIGNsZWFyUGVuZGluZ0lNRGF0YSgpOworICAgIGNs
ZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7CiAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJl
dHVybiB0cnVlOwpAQCAtNDY2LDggKzQ3NSwxMiBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxl
S2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGlmICghY29t
bWFuZC5pc1RleHRJbnNlcnRpb24oKSAmJiBjb21tYW5kLmV4ZWN1dGUoZXZlbnQpKQogICAgICAg
ICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogCisgICAgICAgICAgICBjbGVh
clBlbmRpbmdDb21wb3NpdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVs
c2UgaWYgKGNvbW1hbmQuZXhlY3V0ZShldmVudCkpIHsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChjb21tYW5kLmV4ZWN1dGUoZXZlbnQpKSB7CisgICAgICAgICAgICBjbGVhclBlbmRpbmdDb21w
b3NpdGlvbigpOwogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ3OCwyNSArNDkxLDE0IEBAIHZvaWQgRWRp
dG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAg
IC8vIGJlIHJlZmxlY3RlZCBpbiB0aGUgY29udGVudHMgb2YgdGhlIGZpZWxkIHVudGlsIHRoZSBr
ZXl1cCBET00gZXZlbnQuCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtl
eXByZXNzRXZlbnQpIHsKIAotICAgICAgICBpZiAocGVuZGluZ0NvbXBvc2l0aW9uKSB7Ci0gICAg
ICAgICAgICBTdHJpbmcgY29tcG9zaXRpb25TdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHBlbmRp
bmdDb21wb3NpdGlvbik7Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21w
b3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7Ci0KLSAgICAgICAgICAgIGNsZWFyUGVuZGluZ0lN
RGF0YSgpOwotICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0KLSAgICAg
ICAgfSBlbHNlIGlmIChwZW5kaW5nUHJlZWRpdCkgewotICAgICAgICAgICAgU3RyaW5nIHByZWVk
aXRTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHBlbmRpbmdQcmVlZGl0KTsKLQotICAgICAgICAg
ICAgLy8gRG9uJ3QgdXNlIGFuIGVtcHR5IHByZWVkaXQgYXMgaXQgd2lsbCBkZXN0cm95IHRoZSBj
dXJyZW50Ci0gICAgICAgICAgICAvLyBzZWxlY3Rpb24sIGV2ZW4gaWYgdGhlIGNvbXBvc2l0aW9u
IGlzIGNhbmNlbGxlZCBvciBmYWlscyBsYXRlciBvbi4KLSAgICAgICAgICAgIGlmICghcHJlZWRp
dFN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8Q29tcG9zaXRpb25V
bmRlcmxpbmU+IHVuZGVybGluZXM7Ci0gICAgICAgICAgICAgICAgdW5kZXJsaW5lcy5hcHBlbmQo
Q29tcG9zaXRpb25VbmRlcmxpbmUoMCwgcHJlZWRpdFN0cmluZy5sZW5ndGgoKSwgQ29sb3IoMCwg
MCwgMCksIGZhbHNlKSk7Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21w
b3NpdGlvbihwcmVlZGl0U3RyaW5nLCB1bmRlcmxpbmVzLCAwLCAwKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgY2xlYXJQZW5kaW5nSU1EYXRhKCk7CisgICAgICAgIC8vIElmIHdlIGhh
dmUgYSBwZW5kaW5nIGNvbXBvc2l0aW9uIGF0IHRoaXMgcG9pbnQsIGl0IGhhcHBlbmVkIHdoaWxl
CisgICAgICAgIC8vIGZpbHRlcmluZyBhIGtleXByZXNzLCBzbyB3ZSB0cmVhdCBpdCBhcyBhIG5v
cm1hbCB0ZXh0IGluc2VydGlvbi4KKyAgICAgICAgLy8gVGhpcyB3aWxsIGFsc28gZW5zdXJlIHRo
YXQgaWYgdGhlIGtleXByZXNzIGV2ZW50IGhhbmRsZXIgY2hhbmdlZCB0aGUKKyAgICAgICAgLy8g
Y3VycmVudGx5IGZvY3VzZWQgbm9kZSwgdGhlIHRleHQgaXMgc3RpbGwgaW5zZXJ0ZWQgaW50byB0
aGUgb3JpZ2luYWwKKyAgICAgICAgLy8gbm9kZSAoaW5zZXJ0VGV4dCgpIGhhcyB0aGlzIGxvZ2lj
LCBidXQgY29uZmlybUNvbXBvc2l0aW9uKCkgZG9lcyBub3QpLgorICAgICAgICBpZiAobV9wZW5k
aW5nQ29tcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4
dChTdHJpbmc6OmZyb21VVEY4KG1fcGVuZGluZ0NvbXBvc2l0aW9uLmdldCgpKSwgZXZlbnQpOwor
ICAgICAgICAgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKTsKICAgICAgICAgICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogCiAgICAgICAgIH0gZWxzZSB7CkBAIC01MjAsMTUgKzUy
Miw1MyBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJv
YXJkRXZlbnQqIGV2ZW50KQogICAgIGlmICghdGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZyYW1lLT5l
ZGl0b3IoKS0+Y2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBUT0RPOiBXZSBu
ZWVkIHRvIGRlY2lkZSB3aGljaCBmaWx0ZXJlZCBrZXlzdHJva2VzIHNob3VsZCBiZSB0cmVhdGVk
IGFzIElNCi0gICAgLy8gZXZlbnRzIGFuZCB3aGljaCBzaG91bGQgbm90LgogICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gbV93ZWJWaWV3LT5wcml2OwotICAgIGd0a19pbV9jb250ZXh0
X2ZpbHRlcl9rZXlwcmVzcyhwcml2LT5pbUNvbnRleHQsIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtF
dmVudEtleSgpKTsKKworCisgICAgLy8gU29tZSBJTSBjb250ZXh0cyAoZS5nLiAnc2ltcGxlJykg
d2lsbCBhY3QgYXMgaWYgdGhleSBmaWx0ZXIgZXZlcnkKKyAgICAvLyBrZXlzdHJva2UgYW5kIGp1
c3QgaXNzdWUgYSAnY29tbWl0JyBzaWduYWwgZHVyaW5nIGhhbmRsaW5nLiBJbiBzaXR1YXRpb25z
CisgICAgLy8gd2hlcmUgdGhlICdjb21taXQnIHNpZ25hbCBoYXBwZW5zIGR1cmluZyBmaWx0ZXJp
bmcgYW5kIHRoZXJlIGlzIG5vIGFjdGl2ZQorICAgIC8vIGNvbXBvc2l0aW9uLCBhY3QgYXMgaWYg
dGhlIGtleXN0cm9rZSB3YXMgbm90IGZpbHRlcmVkLiBUaGUgb25lIGV4Y2VwdGlvbiB0bworICAg
IC8vIHRoaXMgaXMgd2hlbiB0aGUga2V5dmFsIHBhcmFtZXRlciBvZiB0aGUgR2RrS2V5RXZlbnQg
aXMgMCwgd2hpY2ggaXMgb2Z0ZW4KKyAgICAvLyBhIGtleSBldmVudCBzZW50IGJ5IHRoZSBJTSBj
b250ZXh0IGZvciBjb21taXR0aW5nIHRoZSBjdXJyZW50IGNvbXBvc2l0aW9uLgorCisgICAgLy8g
SGVyZSBpcyBhIHR5cGljYWwgc2VxdWVuY2Ugb2YgZXZlbnRzIGZvciB0aGUgJ3NpbXBsZScgY29u
dGV4dDoKKyAgICAvLyAxLiBHREsga2V5IHByZXNzIGV2ZW50IC0+IHdlYmtpdF93ZWJfdmlld19r
ZXlfcHJlc3NfZXZlbnQKKyAgICAvLyAyLiBLZXlkb3duIGV2ZW50IC0+IEVkaXRvckNsaWVudDo6
aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duCisgICAgLy8gICAgIGd0a19pbV9jb250ZXh0X2ZpbHRl
cl9rZXlwcmVzcyByZXR1cm5zIHRydWUsIGJ1dCB0aGVyZSBpcyBhIHBlbmRpbmcKKyAgICAvLyAg
ICAgY29tcG9zaXRpb24gc28gZXZlbnQtPnByZXZlbnREZWZhdWx0IGlzIG5vdCBjYWxsZWQgKGJl
bG93KS4KKyAgICAvLyAzLiBLZXlkb3duIGV2ZW50IGJ1YmJsZXMgdGhyb3VnaCB0aGUgRE9NCisg
ICAgLy8gNC4gS2V5ZG93biBldmVudCAtPiBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQKKyAgICAvLyAgICAgTm8gYWN0aW9uIHRha2VuLgorICAgIC8vIDQuIEdESyBrZXkgcmVsZWFz
ZSBldmVudCAtPiB3ZWJraXRfd2ViX3ZpZXdfa2V5X3JlbGVhc2VfZXZlbnQKKyAgICAvLyA1LiBn
dGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MgaXMgY2FsbGVkIG9uIHRoZSByZWxlYXNlIGV2
ZW50LgorICAgIC8vICAgICBTaW1wbGUgZG9lcyBub3QgZmlsdGVyIG1vc3Qga2V5IHJlbGVhc2Vz
LCBzbyB0aGUgZXZlbnQgY29udGludWVzLgorICAgIC8vIDYuIEtleXByZXNzIGV2ZW50IGJ1YmJs
ZXMgdGhyb3VnaCB0aGUgRE9NLgorICAgIC8vIDcuIEtleXByZXNzIGV2ZW50IC0+IEVkaXRvckNs
aWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudAorICAgIC8vICAgICBwZW5kaW5nIGNvbXBvc2l0aW9u
IGlzIGluc2VydGVkLgorICAgIC8vIDguIEtleXVwIGV2ZW50IGJ1YmJsZXMgdGhyb3VnaCB0aGUg
RE9NLgorICAgIC8vIDkuIEtleXVwIGV2ZW50IC0+IEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9h
cmRFdmVudAorICAgIC8vICAgICBObyBhY3Rpb24gdGFrZW4uCisKKyAgICAvLyBUaGVyZSBhcmUg
dHdvIHNpdHVhdGlvbnMgd2hlcmUgd2UgZG8gZmlsdGVyIHRoZSBrZXlzdHJva2U6CisgICAgLy8g
MS4gVGhlIElNQ29udGV4dCBpbnN0cnVjdGVkIHVzIHRvIGZpbHRlciBhbmQgd2UgaGF2ZSBubyBw
ZW5kaW5nIGNvbXBvc2l0aW9uLgorICAgIC8vIDIuIFRoZSBJTUNvbnRleHQgZGlkIG5vdCBpbnN0
cnVjdCB1cyB0byBmaWx0ZXIsIGJ1dCB0aGUga2V5c3Ryb2tlIGNhdXNlZCBhCisgICAgLy8gICAg
Y29tcG9zaXRpb24gaW4gcHJvZ3Jlc3MgdG8gZmluaXNoLiBJdCBzZWVtcyB0aGF0IHNvbWV0aW1l
cyBTQ0lNIHdpbGwgZmluaXNoCisgICAgLy8gICAgYSBjb21wb3NpdGlvbiBhbmQgbm90IG1hcmsg
dGhlIGtleXN0cm9rZSBhcyBmaWx0ZXJlZC4KKyAgICBtX3RyZWF0Q29udGV4dENvbW1pdEFzS2V5
RXZlbnQgPSAoIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICAg
ICAgICYmIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtFdmVudEtleSgpLT5rZXl2YWw7CisgICAgY2xl
YXJQZW5kaW5nQ29tcG9zaXRpb24oKTsKKyAgICBpZiAoKGd0a19pbV9jb250ZXh0X2ZpbHRlcl9r
ZXlwcmVzcyhwcml2LT5pbUNvbnRleHQsIGV2ZW50LT5rZXlFdmVudCgpLT5nZGtFdmVudEtleSgp
KSAmJiAhbV9wZW5kaW5nQ29tcG9zaXRpb24pCisgICAgICAgIHx8ICghbV90cmVhdENvbnRleHRD
b21taXRBc0tleUV2ZW50ICYmICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9u
KCkpKQorICAgICAgICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKKworICAgIG1fdHJlYXRDb250
ZXh0Q29tbWl0QXNLZXlFdmVudCA9IGZhbHNlOwogfQogCiBFZGl0b3JDbGllbnQ6OkVkaXRvckNs
aWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV9pc0luUmVkbyhmYWxzZSkKICAg
ICAsIG1fd2ViVmlldyh3ZWJWaWV3KQorICAgICwgbV90cmVhdENvbnRleHRDb21taXRBc0tleUV2
ZW50KGZhbHNlKQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gbV93ZWJWaWV3
LT5wcml2OwogICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+aW1Db250ZXh0LCAiY29tbWl0Iiwg
R19DQUxMQkFDSyhpbUNvbnRleHRDb21taXR0ZWQpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCmluZGV4IDkyOTI2NTEuLjgyNWMxNDYgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKKysrIGIv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaApAQCAtMiw2ICsyLDcg
QEAKICAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogICoKICAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMzQsOCArMzUsMTAgQEAKIAogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRX
ZWJWaWV3OwordHlwZWRlZiBjaGFyIGdjaGFyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgUGFnZTsKQEAgLTUzLDYgKzU2LDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIHB1
YmxpYzoKICAgICAgICAgRWRpdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcqKTsKICAgICAgICAgfkVk
aXRvckNsaWVudCgpOworICAgICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KCkgeyByZXR1cm4g
bV93ZWJWaWV3OyB9CisgICAgICAgIGJvb2wgdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCgp
IHsgcmV0dXJuIG1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudDsgfQorICAgICAgICB2b2lk
IGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCkgeyBtX3BlbmRpbmdDb21wb3NpdGlvbi5zZXQoMCk7
IH0KKyAgICAgICAgYm9vbCBoYXNQZW5kaW5nQ29tcG9zaXRpb24oKSB7IHJldHVybiBtX3BlbmRp
bmdDb21wb3NpdGlvbjsgfQorICAgICAgICB2b2lkIHVwZGF0ZVBlbmRpbmdDb21wb3NpdGlvbihj
b25zdCBjaGFyKik7CiAKICAgICAgICAgLy8gZnJvbSBFZGl0b3JDbGllbnQKICAgICAgICAgdmly
dHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKQEAgLTEyMCw2ICsxMjgsOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmll
dzsKKyAgICAgICAgYm9vbCBtX3RyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQ7CisgICAgICAg
IEdPd25QdHI8Z2NoYXI+IG1fcGVuZGluZ0NvbXBvc2l0aW9uOwogICAgIH07CiB9CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdGtleWV2ZW50cy5jIGIvV2ViS2l0L2d0ay90ZXN0
cy90ZXN0a2V5ZXZlbnRzLmMKaW5kZXggM2M5ZTE5OC4uYjQxYTAzMiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay90ZXN0cy90ZXN0a2V5ZXZlbnRzLmMKKysrIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0
a2V5ZXZlbnRzLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IE1h
cnRpbiBSb2JpbnNvbgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIE1hcnRpbiBSb2JpbnNv
biA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsMTIgKzIy
LDE2IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNp
bmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJp
bmdSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KKwogCiAj
aWYgR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgY2hh
ciogcGFnZTsKLSAgZ2Jvb2xlYW4gc2hvdWxkQmVIYW5kbGVkOworICAgIGNoYXIqIHBhZ2U7Cisg
ICAgY2hhciogdGV4dDsKKyAgICBnYm9vbGVhbiBzaG91bGRCZUhhbmRsZWQ7CiB9IFRlc3RJbmZv
OwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC00NSw2ICs0OSw3IEBAIHRlc3RfaW5mb19uZXcoY29u
c3QgY2hhciogcGFnZSwgZ2Jvb2xlYW4gc2hvdWxkQmVIYW5kbGVkKQogICAgIGluZm8gPSBnX3Ns
aWNlX25ldyhUZXN0SW5mbyk7CiAgICAgaW5mby0+cGFnZSA9IGdfc3RyZHVwKHBhZ2UpOwogICAg
IGluZm8tPnNob3VsZEJlSGFuZGxlZCA9IHNob3VsZEJlSGFuZGxlZDsKKyAgICBpbmZvLT50ZXh0
ID0gMDsKIAogICAgIHJldHVybiBpbmZvOwogfQpAQCAtNTMsNiArNTgsNyBAQCB2b2lkCiB0ZXN0
X2luZm9fZGVzdHJveShUZXN0SW5mbyogaW5mbykKIHsKICAgICBnX2ZyZWUoaW5mby0+cGFnZSk7
CisgICAgZ19mcmVlKGluZm8tPnRleHQpOwogICAgIGdfc2xpY2VfZnJlZShUZXN0SW5mbywgaW5m
byk7CiB9CiAKQEAgLTgyLDcgKzg4LDYgQEAgc3RhdGljIGdib29sZWFuIGtleV9wcmVzc19ldmVu
dF9jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtFdmVudCogZXZlbnQsIGdwb2kKICAgICBy
ZXR1cm4gRkFMU0U7CiB9CiAKLQogc3RhdGljIGdib29sZWFuIGtleV9yZWxlYXNlX2V2ZW50X2Ni
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdka0V2ZW50KiBldmVudCwgZ3BvaW50ZXIgZGF0YSkK
IHsKICAgICAvLyBXZWJDb3JlIG5ldmVyIHNlZW1zIHRvIG1hcmsga2V5dXAgZXZlbnRzIGFzIGhh
bmRsZWQuCkBAIC05NSwxMSArMTAwLDE1IEBAIHN0YXRpYyBnYm9vbGVhbiBrZXlfcmVsZWFzZV9l
dmVudF9jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtFdmVudCogZXZlbnQsIGdwCiAgICAg
cmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgdm9pZCBsb2FkX3N0YXR1c19jYihXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBzcGVjLCBncG9pbnRlciBkYXRhKQorc3RhdGljIHZv
aWQgdGVzdF9rZXlwcmVzc19ldmVudHNfbG9hZF9zdGF0dXNfY2IoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgR1BhcmFtU3BlYyogc3BlYywgZ3BvaW50ZXIgZGF0YSkKIHsKICAgICBLZXlFdmVudEZp
eHR1cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilkYXRhOwogICAgIFdlYktpdExvYWRT
dGF0dXMgc3RhdHVzID0gd2Via2l0X3dlYl92aWV3X2dldF9sb2FkX3N0YXR1cyh3ZWJWaWV3KTsK
ICAgICBpZiAoc3RhdHVzID09IFdFQktJVF9MT0FEX0ZJTklTSEVEKSB7CisgICAgICAgIGdfc2ln
bmFsX2Nvbm5lY3QoZml4dHVyZS0+d2ViVmlldywgImtleS1wcmVzcy1ldmVudCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhrZXlfcHJlc3NfZXZlbnRfY2IpLCBmaXh0dXJl
KTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAia2V5LXJlbGVh
c2UtZXZlbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0soa2V5X3JlbGVh
c2VfZXZlbnRfY2IpLCBmaXh0dXJlKTsKICAgICAgICAgaWYgKCFndGtfdGVzdF93aWRnZXRfc2Vu
ZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdhJyksIDApKQogICAgICAg
ICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKQEAgLTExMSwyNSArMTIwLDE0IEBAIGdib29s
ZWFuIG1hcF9ldmVudF9jYihHdGtXaWRnZXQgKndpZGdldCwgR2RrRXZlbnQqIGV2ZW50LCBncG9p
bnRlciBkYXRhKQogewogICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyh3aWRnZXQpOwogICAgIEtl
eUV2ZW50Rml4dHVyZSogZml4dHVyZSA9IChLZXlFdmVudEZpeHR1cmUqKWRhdGE7Ci0KLSAgICBn
X3NpZ25hbF9jb25uZWN0KGZpeHR1cmUtPndlYlZpZXcsICJrZXktcHJlc3MtZXZlbnQiLAotICAg
ICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhrZXlfcHJlc3NfZXZlbnRfY2IpLCBmaXh0dXJl
KTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUtPndlYlZpZXcsICJrZXktcmVsZWFzZS1l
dmVudCIsCi0gICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKGtleV9yZWxlYXNlX2V2ZW50
X2NiKSwgZml4dHVyZSk7Ci0KLSAgICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUtPndlYlZpZXcs
ICJub3RpZnk6OmxvYWQtc3RhdHVzIiwKLSAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0so
bG9hZF9zdGF0dXNfY2IpLCBmaXh0dXJlKTsKLQogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0
cmluZyhmaXh0dXJlLT53ZWJWaWV3LCBmaXh0dXJlLT5pbmZvLT5wYWdlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidGV4dC9odG1sIiwgInV0Zi04IiwgImZpbGU6Ly8iKTsKLQog
ICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIHZvaWQgdGVzdF9rZXlwcmVzcyhLZXlFdmVu
dEZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkKK3N0YXRpYyB2b2lkIHNldHVw
X2tleWV2ZW50X3Rlc3QoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRh
dGEsIEdDYWxsYmFjayBsb2FkX2V2ZW50X2NhbGxiYWNrKQogewogICAgIGZpeHR1cmUtPmluZm8g
PSAoVGVzdEluZm8qKWRhdGE7Ci0KICAgICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUtPndpbmRv
dywgIm1hcC1ldmVudCIsCiAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKG1hcF9ldmVu
dF9jYiksIGZpeHR1cmUpOwogCkBAIC0xMzcsMTAgKzEzNSwxNzIgQEAgc3RhdGljIHZvaWQgdGVz
dF9rZXlwcmVzcyhLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkK
ICAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSk7CiAgICAg
Z3RrX3dpbmRvd19wcmVzZW50KEdUS19XSU5ET1coZml4dHVyZS0+d2luZG93KSk7CiAKKyAgICBn
X3NpZ25hbF9jb25uZWN0KGZpeHR1cmUtPndlYlZpZXcsICJub3RpZnk6OmxvYWQtc3RhdHVzIiwK
KyAgICAgICAgICAgICAgICAgICAgIGxvYWRfZXZlbnRfY2FsbGJhY2ssIGZpeHR1cmUpOworCiAg
ICAgZ19tYWluX2xvb3BfcnVuKGZpeHR1cmUtPmxvb3ApOworfQorCitzdGF0aWMgdm9pZCB0ZXN0
X2tleXByZXNzX2V2ZW50cyhLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIg
ZGF0YSkKK3sKKyAgICBzZXR1cF9rZXlldmVudF90ZXN0KGZpeHR1cmUsIGRhdGEsIEdfQ0FMTEJB
Q0sodGVzdF9rZXlwcmVzc19ldmVudHNfbG9hZF9zdGF0dXNfY2IpKTsKK30KKworc3RhdGljIGdi
b29sZWFuIGVsZW1lbnRfdGV4dF9lcXVhbF90byhKU0NvbnRleHRSZWYgY29udGV4dCwgY29uc3Qg
Z2NoYXIqIHRleHQpCit7CisgICAgSlNTdHJpbmdSZWYgc2NyaXB0U3RyaW5nID0gSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoCisgICAgICAid2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKFwiaW5cIikudmFsdWU7Iik7CisgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTRXZhbHVhdGVT
Y3JpcHQoY29udGV4dCwgc2NyaXB0U3RyaW5nLCAwLCAwLCAwLCAwKTsKKyAgICBKU1N0cmluZ1Jl
bGVhc2Uoc2NyaXB0U3RyaW5nKTsKKworICAgIC8vIElmIHRoZSB2YWx1ZSBpc24ndCBhIHN0cmlu
ZywgdGhlIGVsZW1lbnQgaXMgcHJvYmFibHkgYSBkaXYKKyAgICAvLyBzbyBncmFiIHRoZSBpbm5l
clRleHQgaW5zdGVhZC4KKyAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCB2YWx1ZSkp
IHsKKyAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0U3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoCisgICAgICAgICAgIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChc
ImluXCIpLmlubmVyVGV4dDsiKTsKKyAgICAgICAgdmFsdWUgPSBKU0V2YWx1YXRlU2NyaXB0KGNv
bnRleHQsIHNjcmlwdFN0cmluZywgMCwgMCwgMCwgMCk7CisgICAgICAgIEpTU3RyaW5nUmVsZWFz
ZShzY3JpcHRTdHJpbmcpOworICAgIH0KKworICAgIGdfYXNzZXJ0KEpTVmFsdWVJc1N0cmluZyhj
b250ZXh0LCB2YWx1ZSkpOworICAgIEpTU3RyaW5nUmVmIGlucHV0U3RyaW5nID0gSlNWYWx1ZVRv
U3RyaW5nQ29weShjb250ZXh0LCB2YWx1ZSwgMCk7CisgICAgZ19hc3NlcnQoaW5wdXRTdHJpbmcp
OworCisgICAgZ2ludCBzaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGlu
cHV0U3RyaW5nKTsKKyAgICBnY2hhciogY1N0cmluZyA9IGdfbWFsbG9jKHNpemUpOworICAgIEpT
U3RyaW5nR2V0VVRGOENTdHJpbmcoaW5wdXRTdHJpbmcsIGNTdHJpbmcsIHNpemUpOworICAgIEpT
U3RyaW5nUmVsZWFzZShpbnB1dFN0cmluZyk7CisKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBnX3V0
ZjhfY29sbGF0ZShjU3RyaW5nLCB0ZXh0KSA9PSAwOworICAgIGdfZnJlZShjU3RyaW5nKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZCB0ZXN0X2ltZV9sb2FkX3N0YXR1c19j
YihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBzcGVjLCBncG9pbnRlciBkYXRh
KQoreworICAgIEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSA9IChLZXlFdmVudEZpeHR1cmUqKWRh
dGE7CisgICAgV2ViS2l0TG9hZFN0YXR1cyBzdGF0dXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xv
YWRfc3RhdHVzKHdlYlZpZXcpOworICAgIGlmIChzdGF0dXMgIT0gV0VCS0lUX0xPQURfRklOSVNI
RUQpCisgICAgICAgIHJldHVybjsKKworICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0g
d2Via2l0X3dlYl9mcmFtZV9nZXRfZ2xvYmFsX2NvbnRleHQoCisgICAgICAgIHdlYmtpdF93ZWJf
dmlld19nZXRfbWFpbl9mcmFtZSh3ZWJWaWV3KSk7CisgICAgZ19hc3NlcnQoY29udGV4dCk7CisK
KyAgICBHdGtJTUNvbnRleHQqIGltQ29udGV4dCA9IDA7CisgICAgZ19vYmplY3RfZ2V0KHdlYlZp
ZXcsICJpbS1jb250ZXh0IiwgJmltQ29udGV4dCwgTlVMTCk7CisgICAgZ19hc3NlcnQoaW1Db250
ZXh0KTsKKworICAgIC8vIFRlc3QgdGhhdCBjb21taXRzIHRoYXQgaGFwcGVuIG91dHNpZGUgb2Yg
a2V5IGV2ZW50cworICAgIC8vIGNoYW5nZSB0aGUgdGV4dCBmaWVsZCBpbW1lZGlhdGVseS4gVGhp
cyBjbG9zZWx5IHJlcGxpY2F0ZXMKKyAgICAvLyB0aGUgYmVoYXZpb3Igb2YgU0NJTS4KKyAgICBn
X2Fzc2VydChlbGVtZW50X3RleHRfZXF1YWxfdG8oY29udGV4dCwgIiIpKTsKKyAgICBnX3NpZ25h
bF9lbWl0X2J5X25hbWUoaW1Db250ZXh0LCAiY29tbWl0IiwgImEiKTsKKyAgICBnX2Fzc2VydChl
bGVtZW50X3RleHRfZXF1YWxfdG8oY29udGV4dCwgImEiKSk7CisgICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKGltQ29udGV4dCwgImNvbW1pdCIsICJiIik7CisgICAgZ19hc3NlcnQoZWxlbWVudF90
ZXh0X2VxdWFsX3RvKGNvbnRleHQsICJhYiIpKTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUo
aW1Db250ZXh0LCAiY29tbWl0IiwgImMiKTsKKyAgICBnX2Fzc2VydChlbGVtZW50X3RleHRfZXF1
YWxfdG8oY29udGV4dCwgImFiYyIpKTsKKworICAgIGdfb2JqZWN0X3VucmVmKGltQ29udGV4dCk7
CisgICAgZ19tYWluX2xvb3BfcXVpdChmaXh0dXJlLT5sb29wKTsKK30KKworc3RhdGljIHZvaWQg
dGVzdF9pbWUoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCit7
CisgICAgc2V0dXBfa2V5ZXZlbnRfdGVzdChmaXh0dXJlLCBkYXRhLCBHX0NBTExCQUNLKHRlc3Rf
aW1lX2xvYWRfc3RhdHVzX2NiKSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB2ZXJpZnlfY29udGVu
dHMoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUgPSAoS2V5
RXZlbnRGaXh0dXJlKilkYXRhOworICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0gd2Vi
a2l0X3dlYl9mcmFtZV9nZXRfZ2xvYmFsX2NvbnRleHQoCisgICAgICAgIHdlYmtpdF93ZWJfdmll
d19nZXRfbWFpbl9mcmFtZShmaXh0dXJlLT53ZWJWaWV3KSk7CisgICAgZ19hc3NlcnQoY29udGV4
dCk7CisKKyAgICBnX2Fzc2VydChlbGVtZW50X3RleHRfZXF1YWxfdG8oY29udGV4dCwgZml4dHVy
ZS0+aW5mby0+dGV4dCkpOworICAgIGdfbWFpbl9sb29wX3F1aXQoZml4dHVyZS0+bG9vcCk7Cisg
ICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X2Jsb2NraW5nX2xvYWRfc3Rh
dHVzX2NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqIHNwZWMsIGdwb2ludGVy
IGRhdGEpCit7CisgICAgS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlID0gKEtleUV2ZW50Rml4dHVy
ZSopZGF0YTsKKyAgICBXZWJLaXRMb2FkU3RhdHVzIHN0YXR1cyA9IHdlYmtpdF93ZWJfdmlld19n
ZXRfbG9hZF9zdGF0dXMod2ViVmlldyk7CisgICAgaWYgKHN0YXR1cyAhPSBXRUJLSVRfTE9BRF9G
SU5JU0hFRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIGZpcnN0IGtleXByZXNzIGV2
ZW50IHNob3VsZCBub3QgbW9kaWZ5IHRoZSBmaWVsZC4KKyAgICBmaXh0dXJlLT5pbmZvLT50ZXh0
ID0gZ19zdHJkdXAoImJjIik7CisgICAgaWYgKCFndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RL
X1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnYScpLCAwKSkKKyAgICAgICAgZ19hc3NlcnRfbm90
X3JlYWNoZWQoKTsKKyAgICBpZiAoIWd0a190ZXN0X3dpZGdldF9zZW5kX2tleShHVEtfV0lER0VU
KGZpeHR1cmUtPndlYlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdk
a191bmljb2RlX3RvX2tleXZhbCgnYicpLCAwKSkKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNo
ZWQoKTsKKyAgICBpZiAoIWd0a190ZXN0X3dpZGdldF9zZW5kX2tleShHVEtfV0lER0VUKGZpeHR1
cmUtPndlYlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka191bmlj
b2RlX3RvX2tleXZhbCgnYycpLCAwKSkKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsK
KworICAgIGdfaWRsZV9hZGQodmVyaWZ5X2NvbnRlbnRzLCBmaXh0dXJlKTsKK30KKworc3RhdGlj
IHZvaWQgdGVzdF9ibG9ja2luZyhLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50
ZXIgZGF0YSkKK3sKKyAgICBzZXR1cF9rZXlldmVudF90ZXN0KGZpeHR1cmUsIGRhdGEsIEdfQ0FM
TEJBQ0sodGVzdF9ibG9ja2luZ19sb2FkX3N0YXR1c19jYikpOworfQogCisjaWYgZGVmaW5lZChH
REtfV0lORE9XSU5HX1gxMSkgJiYgR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTYsIDApCitzdGF0aWMg
dm9pZCB0ZXN0X3hpbV9sb2FkX3N0YXR1c19jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFy
YW1TcGVjKiBzcGVjLCBncG9pbnRlciBkYXRhKQoreworICAgIEtleUV2ZW50Rml4dHVyZSogZml4
dHVyZSA9IChLZXlFdmVudEZpeHR1cmUqKWRhdGE7CisgICAgV2ViS2l0TG9hZFN0YXR1cyBzdGF0
dXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRfc3RhdHVzKHdlYlZpZXcpOworICAgIGlmIChz
dGF0dXMgIT0gV0VCS0lUX0xPQURfRklOSVNIRUQpCisgICAgICAgIHJldHVybjsKKworICAgIEd0
a0lNQ29udGV4dCogaW1Db250ZXh0ID0gMDsKKyAgICBnX29iamVjdF9nZXQod2ViVmlldywgImlt
LWNvbnRleHQiLCAmaW1Db250ZXh0LCBOVUxMKTsKKyAgICBnX2Fzc2VydChpbUNvbnRleHQpOwor
CisgICAgZ2NoYXIqIG9yaWdpbmFsSWQgPSBnX3N0cmR1cChndGtfaW1fbXVsdGljb250ZXh0X2dl
dF9jb250ZXh0X2lkKEdUS19JTV9NVUxUSUNPTlRFWFQoaW1Db250ZXh0KSkpOworICAgIGd0a19p
bV9tdWx0aWNvbnRleHRfc2V0X2NvbnRleHRfaWQoR1RLX0lNX01VTFRJQ09OVEVYVChpbUNvbnRl
eHQpLCAieGltIik7CisKKyAgICAvLyBUZXN0IHRoYXQgY29tbWl0cyB0aGF0IGhhcHBlbiBvdXRz
aWRlIG9mIGtleSBldmVudHMKKyAgICAvLyBjaGFuZ2UgdGhlIHRleHQgZmllbGQgaW1tZWRpYXRl
bHkuIFRoaXMgY2xvc2VseSByZXBsaWNhdGVzCisgICAgLy8gdGhlIGJlaGF2aW9yIG9mIFNDSU0u
CisgICAgZml4dHVyZS0+aW5mby0+dGV4dCA9IGdfc3RyZHVwKCJkZWJpYW4iKTsKKyAgICBpZiAo
IWd0a190ZXN0X3dpZGdldF9zZW5kX2tleShHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdk
JyksIDApKQorICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgIGlmICghZ3RrX3Rl
c3Rfd2lkZ2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnZScpLCAwKSkKKyAg
ICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICBpZiAoIWd0a190ZXN0X3dpZGdldF9z
ZW5kX2tleShHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2YWwoJ2InKSwgMCkpCisgICAgICAgIGdfYXNz
ZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgaWYgKCFndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RL
X1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2RrX3VuaWNvZGVfdG9fa2V5dmFsKCdpJyksIDApKQorICAgICAgICBnX2Fzc2VydF9ub3RfcmVh
Y2hlZCgpOworICAgIGlmICghZ3RrX3Rlc3Rfd2lkZ2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4
dHVyZS0+d2ViVmlldyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka191bmljb2Rl
X3RvX2tleXZhbCgnYScpLCAwKSkKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAg
ICBpZiAoIWd0a190ZXN0X3dpZGdldF9zZW5kX2tleShHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZp
ZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2YWwo
J24nKSwgMCkpCisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisKKyAgICBndGtfaW1f
bXVsdGljb250ZXh0X3NldF9jb250ZXh0X2lkKEdUS19JTV9NVUxUSUNPTlRFWFQoaW1Db250ZXh0
KSwgb3JpZ2luYWxJZCk7CisgICAgZ19mcmVlKG9yaWdpbmFsSWQpOworICAgIGdfb2JqZWN0X3Vu
cmVmKGltQ29udGV4dCk7CisKKyAgICBnX2lkbGVfYWRkKHZlcmlmeV9jb250ZW50cywgZml4dHVy
ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RfeGltKEtleUV2ZW50Rml4dHVyZSogZml4dHVyZSwg
Z2NvbnN0cG9pbnRlciBkYXRhKQoreworICAgIHNldHVwX2tleWV2ZW50X3Rlc3QoZml4dHVyZSwg
ZGF0YSwgR19DQUxMQkFDSyh0ZXN0X3hpbV9sb2FkX3N0YXR1c19jYikpOworfQorI2VuZGlmCisK
IGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKICAgICBnX3RocmVhZF9pbml0KE5V
TEwpOwpAQCAtMTQ4LDMwICszMDgsODUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KQogCiAgICAgZ190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKIAot
ICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQvdGV4dGZpZWxkIiwgS2V5RXZlbnRGaXh0
dXJlLAotICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldygiPGh0bWw+PGJvZHk+PGlucHV0IGlk
PVwiaW5cIiB0eXBlPVwidGV4dFwiPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxz
Y3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTsiCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICI8L3NjcmlwdD48L2JvZHk+PC9odG1sPiIsIFRSVUUpLAorCisg
ICAgLy8gV2UnbGwgdGVzdCBpbnB1dCBvbiBhIHNsZXcgb2YgZGlmZmVyZW50IG5vZGUgdHlwZXMu
IEtleSBldmVudHMgdG8KKyAgICAvLyB0ZXh0IGlucHV0cyBhbmQgZWRpdGFibGUgZGl2cyBzaG91
bGQgYmUgbWFya2VkIGFzIGhhbmRsZWQuIEtleSBldmVudHMKKyAgICAvLyB0byBidXR0b25zIGFu
ZCBsaW5rcyBzaG91bGQgbm90LgorICAgIGNvbnN0IGNoYXIqIHRleHRpbnB1dF9odG1sID0gIjxo
dG1sPjxib2R5PjxpbnB1dCBpZD1cImluXCIgdHlwZT1cInRleHRcIj4iCisgICAgICAgICI8c2Ny
aXB0PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7PC9zY3JpcHQ+PC9ib2R5
PjwvaHRtbD4iOworICAgIGNvbnN0IGNoYXIqIGJ1dHRvbl9odG1sID0gIjxodG1sPjxib2R5Pjxp
bnB1dCBpZD1cImluXCIgdHlwZT1cImJ1dHRvblwiPiIKKyAgICAgICAgIjxzY3JpcHQ+ZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8L3NjcmlwdD48L2JvZHk+PC9odG1sPiI7
CisgICAgY29uc3QgY2hhciogbGlua19odG1sID0gIjxodG1sPjxib2R5PjxhIGhyZWY9XCJodHRw
Oi8vd3d3Lmdub21lLm9yZ1wiIGlkPVwiaW5cIj4iCisgICAgICAgICJMSU5LWSBNQ0xJTktFUlNP
TjwvYT48c2NyaXB0PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7PC9zY3Jp
cHQ+IgorICAgICAgICAiPC9ib2R5PjwvaHRtbD4iOworICAgIGNvbnN0IGNoYXIqIGRpdl9odG1s
ID0gIjxodG1sPjxib2R5PjxkaXYgaWQ9XCJpblwiIGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIj4i
CisgICAgICAgICI8c2NyaXB0PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7
PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iOworCisgICAgLy8gVGhlc2UgYXJlIHNpbWlsYXIgdG8g
dGhlIGJsb2NrcyBhYm92ZSwgYnV0IHRoZXkgc2hvdWxkIGJsb2NrIHRoZSBmaXJzdAorICAgIC8v
IGtleXByZXNzIG1vZGlmeWluZyB0aGUgZWRpdGFibGUgbm9kZS4KKyAgICBjb25zdCBjaGFyKiB0
ZXh0aW5wdXRfaHRtbF9ibG9ja2luZyA9ICI8aHRtbD48Ym9keT4iCisgICAgICAgICI8aW5wdXQg
aWQ9XCJpblwiIHR5cGU9XCJ0ZXh0XCIgIgorICAgICAgICAib25rZXlwcmVzcz1cImlmIChmaXJz
dCkge2V2ZW50LnByZXZlbnREZWZhdWx0KCk7Zmlyc3Q9ZmFsc2U7fVwiPiIKKyAgICAgICAgIjxz
Y3JpcHQ+Zmlyc3QgPSB0cnVlO1xuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMo
KTs8L3NjcmlwdD5cbiIKKyAgICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+IjsKKyAgICBj
b25zdCBjaGFyKiBkaXZfaHRtbF9ibG9ja2luZyA9ICI8aHRtbD48Ym9keT4iCisgICAgICAgICI8
ZGl2IGlkPVwiaW5cIiBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCIgIgorICAgICAgICAib25rZXlw
cmVzcz1cImlmIChmaXJzdCkge2V2ZW50LnByZXZlbnREZWZhdWx0KCk7Zmlyc3Q9ZmFsc2U7fVwi
PiIKKyAgICAgICAgIjxzY3JpcHQ+Zmlyc3QgPSB0cnVlOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0PlxuIgorICAgICAgICAiPC9zY3JpcHQ+PC9ib2R5Pjwv
aHRtbD4iOworCisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudHMvZXZlbnQtdGV4dGlu
cHV0IiwgS2V5RXZlbnRGaXh0dXJlLAorICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldyh0ZXh0
aW5wdXRfaHRtbCwgVFJVRSksCiAgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1
cCwKLSAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3MsCisgICAgICAgICAgICAgICB0ZXN0X2tl
eXByZXNzX2V2ZW50cywKICAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3du
KTsKLQotICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQvYnV0dG9ucyIsIEtleUV2ZW50
Rml4dHVyZSwKLSAgICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcoIjxodG1sPjxib2R5PjxpbnB1
dCBpZD1cImluXCIgdHlwZT1cImJ1dHRvblwiPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIjxzY3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTsiCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICI8L3NjcmlwdD48L2JvZHk+PC9odG1sPiIsIEZBTFNF
KSwKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50cy9ldmVudC1idXR0b25zIiwgS2V5
RXZlbnRGaXh0dXJlLAorICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldyhidXR0b25faHRtbCwg
RkFMU0UpLAogICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCi0gICAgICAg
ICAgICAgICB0ZXN0X2tleXByZXNzLAorICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzc19ldmVu
dHMsCiAgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7Ci0KLSAgICBn
X3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50L2xpbmsiLCBLZXlFdmVudEZpeHR1cmUsCi0gICAg
ICAgICAgICAgICB0ZXN0X2luZm9fbmV3KCI8aHRtbD48Ym9keT48YSBocmVmPVwiaHR0cDovL3d3
dy5nbm9tZS5vcmdcIiBpZD1cImluXCI+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
TElOS1kgTUNMSU5LRVJTT048L2E+PHNjcmlwdD4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0PiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvYm9keT48L2h0bWw+IiwgRkFMU0UpLAorICAg
IGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnRzL2V2ZW50LWxpbmsiLCBLZXlFdmVudEZpeHR1
cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KGxpbmtfaHRtbCwgRkFMU0UpLAogICAg
ICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCi0gICAgICAgICAgICAgICB0ZXN0
X2tleXByZXNzLAorICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzc19ldmVudHMsCiAgICAgICAg
ICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisgICAgZ190ZXN0X2FkZCgiL3dl
YmtpdC9rZXlldmVudC9ldmVudC1kaXYiLCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAgICAgICAg
ICB0ZXN0X2luZm9fbmV3KGRpdl9odG1sLCBUUlVFKSwKKyAgICAgICAgICAgICAgIGtleV9ldmVu
dF9maXh0dXJlX3NldHVwLAorICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzc19ldmVudHMsCisg
ICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisgICAgZ190ZXN0X2Fk
ZCgiL3dlYmtpdC9rZXlldmVudC9pbWUtdGV4dGlucHV0IiwgS2V5RXZlbnRGaXh0dXJlLAorICAg
ICAgICAgICAgICAgdGVzdF9pbmZvX25ldyh0ZXh0aW5wdXRfaHRtbCwgVFJVRSksCisgICAgICAg
ICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKKyAgICAgICAgICAgICAgIHRlc3RfaW1l
LAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdfdGVz
dF9hZGQoIi93ZWJraXQva2V5ZXZlbnQvaW1lLWRpdiIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAg
ICAgICAgICAgIHRlc3RfaW5mb19uZXcoZGl2X2h0bWwsIFRSVUUpLAorICAgICAgICAgICAgICAg
a2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCisgICAgICAgICAgICAgICB0ZXN0X2ltZSwKKyAgICAg
ICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rlc3RfYWRkKCIv
d2Via2l0L2tleWV2ZW50L2Jsb2NrLXRleHRpbnB1dCIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAg
ICAgICAgICAgIHRlc3RfaW5mb19uZXcodGV4dGlucHV0X2h0bWxfYmxvY2tpbmcsIFRSVUUpLAor
ICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCisgICAgICAgICAgICAgICB0
ZXN0X2Jsb2NraW5nLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24p
OworICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQvYmxvY2stZGl2IiwgS2V5RXZlbnRG
aXh0dXJlLAorICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldyhkaXZfaHRtbF9ibG9ja2luZywg
VFJVRSksCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKKyAgICAgICAg
ICAgICAgIHRlc3RfYmxvY2tpbmcsCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90
ZWFyZG93bik7CisjaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkgJiYgR1RLX0NIRUNLX1ZF
UlNJT04oMiwgMTYsIDApCisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudC94aW0tdGV4
dGlucHV0IiwgS2V5RXZlbnRGaXh0dXJlLAorICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldyh0
ZXh0aW5wdXRfaHRtbCwgVFJVRSksCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9z
ZXR1cCwKKyAgICAgICAgICAgICAgIHRlc3RfeGltLAorICAgICAgICAgICAgICAga2V5X2V2ZW50
X2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQveGlt
LWRpdiIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcoZGl2
X2h0bWwsIFRSVUUpLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCisg
ICAgICAgICAgICAgICB0ZXN0X3hpbSwKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJl
X3RlYXJkb3duKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIGdfdGVzdF9ydW4oKTsKIH0KZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggODFjZTUwMi4uYjcwZDk3ZCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTU2MiwxMiArNTYyLDE5IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfd2ViX3ZpZXdfa2V5X3JlbGVhc2VfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQs
IEdka0V2ZW50S2V5CiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyh3aWRnZXQpOwogCisgICAgLy8gR1RLKyBJTSBjb250ZXh0cyBvZnRlbiByZXF1aXJlIHVz
IHRvIGZpbHRlciBrZXkgcmVsZWFzZSBldmVudHMsIHdoaWNoCisgICAgLy8gV2ViQ29yZSBkb2Vz
IG5vdCBkbyBieSBkZWZhdWx0LCBzbyB3ZSBmaWx0ZXIgdGhlIGV2ZW50IGhlcmUuIFdlIG9ubHkg
YmxvY2sKKyAgICAvLyB0aGUgZXZlbnQgaWYgd2UgZG9uJ3QgaGF2ZSBhIHBlbmRpbmcgY29tcG9z
aXRpb24sIGJlY2F1c2UgdGhhdCBtZWFucyB3ZQorICAgIC8vIGFyZSB1c2luZyBhIGNvbnRleHQg
bGlrZSAnc2ltcGxlJyB3aGljaCBtYXJrcyBldmVyeSBrZXlzdHJva2UgYXMgZmlsdGVyZWQuCisg
ICAgV2ViS2l0OjpFZGl0b3JDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PFdlYktpdDo6RWRp
dG9yQ2xpZW50Kj4oY29yZSh3ZWJWaWV3KS0+ZWRpdG9yQ2xpZW50KCkpOworICAgIGlmIChndGtf
aW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3Mod2ViVmlldy0+cHJpdi0+aW1Db250ZXh0LCBldmVu
dCkgJiYgIWNsaWVudC0+aGFzUGVuZGluZ0NvbXBvc2l0aW9uKCkpCisgICAgICAgIHJldHVybiBU
UlVFOworCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGlmICghZnJhbWUtPnZpZXcoKSkKICAgICAg
ICAgcmV0dXJuIEZBTFNFOwogCiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleWJvYXJkRXZl
bnQoZXZlbnQpOwotCiAgICAgaWYgKGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoa2V5
Ym9hcmRFdmVudCkpCiAgICAgICAgIHJldHVybiBUUlVFOwogCkBAIC03MjcsNiArNzM0LDggQEAg
c3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb2N1c19pbl9ldmVudChHdGtXaWRnZXQq
IHdpZGdldCwgR2RrRXZlbnRGb2N1cyoKICAgICAgICAgICAgIGZvY3VzQ29udHJvbGxlci0+c2V0
Rm9jdXNlZCh0cnVlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZm9jdXNDb250cm9sbGVy
LT5zZXRGb2N1c2VkRnJhbWUoY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCkpOworCisgICAgICAg
IGd0a19pbV9jb250ZXh0X2ZvY3VzX2luKHdlYlZpZXctPnByaXYtPmltQ29udGV4dCk7CiAgICAg
fQogICAgIHJldHVybiBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xh
c3MpLT5mb2N1c19pbl9ldmVudCh3aWRnZXQsIGV2ZW50KTsKIH0KQEAgLTc0Myw2ICs3NTIsOSBA
QCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvY3VzX291dF9ldmVudChHdGtXaWRn
ZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cwogICAgICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+c2V0Rm9jdXNlZChmYWxzZSk7CiAgICAgfQogCisgICAgaWYgKHdlYlZpZXctPnByaXYtPmlt
Q29udGV4dCkKKyAgICAgICAgZ3RrX2ltX2NvbnRleHRfZm9jdXNfb3V0KHdlYlZpZXctPnByaXYt
PmltQ29udGV4dCk7CisKICAgICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3Zp
ZXdfcGFyZW50X2NsYXNzKS0+Zm9jdXNfb3V0X2V2ZW50KHdpZGdldCwgZXZlbnQpOwogfQogCi0t
IAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="33948"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
    <flag name="commit-queue"
          id="33949"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50799</attachid>
            <date>2010-03-16 09:16:00 -0700</date>
            <delta_ts>2010-03-16 09:34:06 -0700</delta_ts>
            <desc>Patch for this issue (final)</desc>
            <filename>0001-can-t-input-korean-into-lower-all-input-box-except-a.patch</filename>
            <type>text/plain</type>
            <size>31455</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBhZmY5NmI4Y2NkNmFjMDRiYzQ3MjVlODNlZDYxOTIzNTE3MjgwNDQ5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBUdWUsIDE2IE1hciAyMDEwIDA5OjA4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
Y2FuJ3QgaW5wdXQga29yZWFuIGludG8gbG93ZXIgYWxsIGlucHV0IGJveCBleGNlcHQgYWRyZXNz
IGlucHV0IGJveCBpbiB3ZWJraXQgZ3RrIGxhdW5jaGVyCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzIyOTAKCi0tLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA0NSArKysrCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5jcHAgfCAgMTQyICsrKysrKysrLS0tLS0KIFdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggICB8ICAgMTAgKwogV2ViS2l0L2d0ay90ZXN0
cy90ZXN0a2V5ZXZlbnRzLmMgICAgICAgICAgICAgIHwgIDI4NSArKysrKysrKysrKysrKysrKysr
KysrLS0tCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgICAgICAgfCAg
IDE0ICsrLQogNSBmaWxlcyBjaGFuZ2VkLCA0MDkgaW5zZXJ0aW9ucygrKSwgODcgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCA5NjQzNjJjLi5lZDBiYjI0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEwLTAz
LTE2ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjYW4ndCBpbnB1dCBrb3JlYW4g
aW50byBsb3dlciBhbGwgaW5wdXQgYm94IGV4Y2VwdCBhZHJlc3MgaW5wdXQgYm94IGluIHdlYmtp
dCBndGsgbGF1bmNoZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMyMjkwCisKKyAgICAgICAgTWFrZSB0aGUgR1RLKyBFZGl0b3JDbGllbnQgcHJvcGVy
bHkgaGFuZGxlIGRpZmZlcmVudCB0eXBlcyBvZiBpbnB1dCBtb2R1bGUKKyAgICAgICAgYmVoYXZp
b3Igc3VjaCBhcyBjb21taXQgYW5kIHByZWVkaXQgc2lnbmFscyB0aGF0IGhhcHBlbiBvdXRzaWRl
IG9mIGtleSBldmVudAorICAgICAgICBmaWx0ZXJpbmcgYW5kIG11bHRpcGxlIHRpbWVzIGluIGEg
cm93LiBGaWx0ZXIga2V5dXAgZXZlbnRzIGFzIHdlbGwgYXMga2V5ZG93bgorICAgICAgICBldmVu
dHMgYW5kIGNhbGwgZ3RrX2ltX2NvbnRleHRfZm9jdXNfe2luL291dH0gd2hlbiB0aGUgV2ViVmll
dyBmb2N1cyBjaGFuZ2VzLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciB0aGlzIGJlaGF2aW9y
IHRvIHRoZSBHVEsrIHVuaXQgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjppbUNvbnRleHRDb21taXR0ZWQpOiBI
YW5kbGUgdGhpcyBzaWduYWwgcHJvcGVybHkgd2hlbiBpdCBoYXBwZW5zIG91dHNpZGUgb2YKKyAg
ICAgICAga2V5IGV2ZW50IGZpbHRlcmluZy4KKyAgICAgICAgKFdlYktpdDo6aW1Db250ZXh0UHJl
ZWRpdENoYW5nZWQpOiBJbW1lZGlhdGVseSB1cGRhdGUgdGhlIHByZWVkaXQgc3RhdGUgYW5kIGRv
IG5vdCByZWplY3QKKyAgICAgICAgZW1wdHkgcHJlZWRpdHMsIHNvIHRoYXQgY2FuY2VsbGF0aW9u
IHdvcmtzIHByb3Blcmx5LgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OnVwZGF0ZVBl
bmRpbmdDb21wb3NpdGlvbik6IEFkZCB0aGlzIG1ldGhvZCwgd2hpY2ggaGFuZGxlcyB0aGUKKyAg
ICAgICAgc2l0dWF0aW9uIHdoZXJlIGEgY29tbWl0IHNpZ25hbCBoYXBwZW5zIHdoZW4gdGhlcmUg
aXMgc3RpbGwgYSBwZW5kaW5nIGNvbW1pdC4KKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50
OjpzaG91bGRCZWdpbkVkaXRpbmcpOiBDbGVhciBwZW5kaW5nIGNvbXBvc2l0aW9uIHN0YXRlIGJl
Zm9yZSBlZGl0aW5nCisgICAgICAgIHN0YXJ0cy4KKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xp
ZW50OjpzaG91bGRFbmRFZGl0aW5nKTogQ2xlYXIgcGVuZGluZyBjb21wb3NpdGlvbiBzdGF0ZSBi
ZWZvcmUgZWRpdGluZyBlbmRzLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRs
ZUtleWJvYXJkRXZlbnQpOiBObyBsb25nZXIgc3BlY2lhbCBjYXNlIHByZWVkaXRzIHdoaWNoIGhh
cHBlbiBkdXJpbmcKKyAgICAgICAga2V5IGV2ZW50IGZpbHRlcmluZy4gV2hlbiBjb25maXJtaW5n
IGEgcGVuZGluZyBjb21wb3NpdGlvbiB1c2UgaW5zZXJ0VGV4dCBpbnN0ZWFkIG9mIGNvbmZpcm1D
b21wb3NpdGlvbi4KKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1l
dGhvZEtleWRvd24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5o
OiBNYWtlIHBlbmRpbmdDb21wb3NpdGlvbiBhIG1lbWJlciwgc28gdGhhdCBtdWx0aXBsZSBXZWJW
aWV3cworICAgICAgICBkbyBub3Qgc2hhcmUgc3RhdGUuCisgICAgICAgIChXZWJLaXQ6OkVkaXRv
ckNsaWVudDo6d2ViVmlldyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6
OnRyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
RWRpdG9yQ2xpZW50OjpjbGVhclBlbmRpbmdDb21wb3NpdGlvbik6IEFkZGVkLgorICAgICAgICAq
IHRlc3RzL3Rlc3RrZXlldmVudHMuYzoKKyAgICAgICAgKHRlc3Rfa2V5cHJlc3NfZXZlbnRzX2xv
YWRfc3RhdHVzX2NiKToKKyAgICAgICAgKG1hcF9ldmVudF9jYik6CisgICAgICAgIChzZXR1cF9r
ZXlldmVudF90ZXN0KToKKyAgICAgICAgKHRlc3Rfa2V5cHJlc3NfZXZlbnRzKToKKyAgICAgICAg
KGVsZW1lbnRfdGV4dF9lcXVhbF90byk6CisgICAgICAgICh0ZXN0X2ltZV9sb2FkX3N0YXR1c19j
Yik6CisgICAgICAgICh0ZXN0X2ltZSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfa2V5X3JlbGVh
c2VfZXZlbnQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2ZvY3VzX2luX2V2ZW50KToKKwog
MjAxMC0wMy0xNiAgWXVyeSBTZW1pa2hhdHNreSA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5jcHAKaW5kZXggMDcwMDkzOS4uOGYyZWNmYSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCisrKyBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcApAQCAtNCw2ICs0LDcg
QEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgRGllZ28gRXNjYWxhbnRlIFVycmVsbyA8ZGllZ29l
QGdub21lLm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDksIElnYWxpYSBTLkwuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDEwLCBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQu
b3JnPgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNTEsNDAgKzUyLDQ4IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIGdjaGFyKiBwZW5k
aW5nQ29tcG9zaXRpb24gPSAwOwotc3RhdGljIGdjaGFyKiBwZW5kaW5nUHJlZWRpdCA9IDA7Ci0K
LXN0YXRpYyB2b2lkIHNldFBlbmRpbmdDb21wb3NpdGlvbihnY2hhciogbmV3Q29tcG9zaXRpb24p
CitzdGF0aWMgdm9pZCBpbUNvbnRleHRDb21taXR0ZWQoR3RrSU1Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBnY2hhciogY29tcG9zaXRpb25TdHJpbmcsIEVkaXRvckNsaWVudCogY2xpZW50KQogewot
ICAgIGdfZnJlZShwZW5kaW5nQ29tcG9zaXRpb24pOwotICAgIHBlbmRpbmdDb21wb3NpdGlvbiA9
IG5ld0NvbXBvc2l0aW9uOwotfQorICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUoY2xpZW50LT53ZWJW
aWV3KCkpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgaWYg
KCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgICAgIHJldHVybjsK
IAotc3RhdGljIHZvaWQgc2V0UGVuZGluZ1ByZWVkaXQoZ2NoYXIqIG5ld1ByZWVkaXQpCi17Ci0g
ICAgZ19mcmVlKHBlbmRpbmdQcmVlZGl0KTsKLSAgICBwZW5kaW5nUHJlZWRpdCA9IG5ld1ByZWVk
aXQ7Ci19CisgICAgLy8gSWYgdGhpcyBzaWduYWwgZmlyZXMgZHVyaW5nIGEga2V5ZG93biBldmVu
dCB3aGVuIHdlIGFyZSBub3QgaW4gdGhlIG1pZGRsZQorICAgIC8vIG9mIGEgY29tcG9zaXRpb24s
IHRoZW4gdHJlYXQgdGhpcyAnY29tbWl0JyBhcyBhIG5vcm1hbCBrZXkgZXZlbnQgYW5kIGp1c3QK
KyAgICAvLyBjaGFuZ2UgdGhlIGVkaXRhYmxlIGFyZWEgcmlnaHQgYmVmb3JlIHRoZSBrZXlwcmVz
cyBldmVudC4KKyAgICBpZiAoY2xpZW50LT50cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50KCkp
IHsKKyAgICAgICAgY2xpZW50LT51cGRhdGVQZW5kaW5nQ29tcG9zaXRpb24oY29tcG9zaXRpb25T
dHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQogCi1zdGF0aWMgdm9pZCBjbGVhclBlbmRp
bmdJTURhdGEoKQotewotICAgIHNldFBlbmRpbmdDb21wb3NpdGlvbigwKTsKLSAgICBzZXRQZW5k
aW5nUHJlZWRpdCgwKTsKLX0KLXN0YXRpYyB2b2lkIGltQ29udGV4dENvbW1pdHRlZChHdGtJTUNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IGdjaGFyKiBzdHIsIEVkaXRvckNsaWVudCogY2xpZW50KQot
ewotICAgIC8vIFRoaXMgc2lnbmFsIHdpbGwgZmlyZSBkdXJpbmcgYSBrZXlkb3duIGV2ZW50LiBX
ZSB3YW50IHRoZSBjb250ZW50cyBvZiB0aGUKLSAgICAvLyBmaWVsZCB0byBjaGFuZ2UgcmlnaHQg
YmVmb3JlIHRoZSBrZXl1cCBldmVudCwgc28gd2Ugd2FpdCB1bnRpbCB0aGVuIHRvIGFjdHVhbGx5
Ci0gICAgLy8gY29tbWl0IHRoaXMgY29tcG9zaXRpb24uCi0gICAgc2V0UGVuZGluZ0NvbXBvc2l0
aW9uKGdfc3RyZHVwKHN0cikpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0
aW9uKFN0cmluZzo6ZnJvbVVURjgoY29tcG9zaXRpb25TdHJpbmcpKTsKKyAgICBjbGllbnQtPmNs
ZWFyUGVuZGluZ0NvbXBvc2l0aW9uKCk7CiB9CiAKIHN0YXRpYyB2b2lkIGltQ29udGV4dFByZWVk
aXRDaGFuZ2VkKEd0a0lNQ29udGV4dCogY29udGV4dCwgRWRpdG9yQ2xpZW50KiBjbGllbnQpCiB7
CisgICAgRnJhbWUqIGZyYW1lID0gY29yZShjbGllbnQtPndlYlZpZXcoKSktPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+
ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gV2UgaWdub3Jl
IHRoZSBwcm92aWRlZCBQYW5nb0F0dHJMaXN0IGZvciBub3cuCi0gICAgZ2NoYXIqIG5ld1ByZWVk
aXQgPSAwOwotICAgIGd0a19pbV9jb250ZXh0X2dldF9wcmVlZGl0X3N0cmluZyhjb250ZXh0LCAm
bmV3UHJlZWRpdCwgTlVMTCwgTlVMTCk7Ci0gICAgc2V0UGVuZGluZ1ByZWVkaXQobmV3UHJlZWRp
dCk7CisgICAgR093blB0cjxnY2hhcj4gbmV3UHJlZWRpdCgwKTsKKyAgICBndGtfaW1fY29udGV4
dF9nZXRfcHJlZWRpdF9zdHJpbmcoY29udGV4dCwgJm5ld1ByZWVkaXQub3V0UHRyKCksIDAsIDAp
OworCisgICAgU3RyaW5nIHByZWVkaXRTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KG5ld1ByZWVk
aXQuZ2V0KCkpOworICAgIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsK
KyAgICB1bmRlcmxpbmVzLmFwcGVuZChDb21wb3NpdGlvblVuZGVybGluZSgwLCBwcmVlZGl0U3Ry
aW5nLmxlbmd0aCgpLCBDb2xvcigwLCAwLCAwKSwgZmFsc2UpKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCktPnNldENvbXBvc2l0aW9uKHByZWVkaXRTdHJpbmcsIHVuZGVybGluZXMsIDAsIDApOworfQor
Cit2b2lkIEVkaXRvckNsaWVudDo6dXBkYXRlUGVuZGluZ0NvbXBvc2l0aW9uKGNvbnN0IGdjaGFy
KiBuZXdDb21wb3NpdGlvbikKK3sKKyAgICAvLyBUaGUgSU1Db250ZXh0IG1heSBzaWduYWwgbW9y
ZSB0aGFuIG9uZSBjb21wbGV0ZWQgY29tcG9zaXRpb24gaW4gYSByb3csCisgICAgLy8gaW4gd2hp
Y2ggY2FzZSB3ZSB3YW50IHRvIGFwcGVuZCB0aGVtLCByYXRoZXIgdGhhbiBvdmVyd3JpdGUgdGhl
IG9sZCBvbmUuCisgICAgaWYgKCFtX3BlbmRpbmdDb21wb3NpdGlvbikKKyAgICAgICAgbV9wZW5k
aW5nQ29tcG9zaXRpb24uc2V0KGdfc3RyZHVwKG5ld0NvbXBvc2l0aW9uKSk7CisgICAgZWxzZQor
ICAgICAgICBtX3BlbmRpbmdDb21wb3NpdGlvbi5zZXQoZ19zdHJjb25jYXQobV9wZW5kaW5nQ29t
cG9zaXRpb24uZ2V0KCksIG5ld0NvbXBvc2l0aW9uLCBOVUxMKSk7CiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgYWN0aXZlKQpAQCAtMTM5LDcgKzE0OCw3
IEBAIGludCBFZGl0b3JDbGllbnQ6OnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkKIAogYm9vbCBF
ZGl0b3JDbGllbnQ6OnNob3VsZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopCiB7Ci0gICAg
Y2xlYXJQZW5kaW5nSU1EYXRhKCk7CisgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKTsKIAog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDcsNyArMTU2LDcg
QEAgYm9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpSYW5nZSop
CiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpzaG91bGRFbmRFZGl0aW5nKFdlYkNvcmU6OlJhbmdlKikK
IHsKLSAgICBjbGVhclBlbmRpbmdJTURhdGEoKTsKKyAgICBjbGVhclBlbmRpbmdDb21wb3NpdGlv
bigpOwogCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ2Niw4
ICs0NzUsMTIgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBpZiAoIWNvbW1hbmQuaXNUZXh0SW5zZXJ0aW9u
KCkgJiYgY29tbWFuZC5leGVjdXRlKGV2ZW50KSkKICAgICAgICAgICAgICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKIAorICAgICAgICAgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24o
KTsKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIGlmIChjb21tYW5kLmV4ZWN1
dGUoZXZlbnQpKSB7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29tbWFuZC5leGVjdXRlKGV2
ZW50KSkgeworICAgICAgICAgICAgY2xlYXJQZW5kaW5nQ29tcG9zaXRpb24oKTsKICAgICAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC00NzgsMjUgKzQ5MSwxNCBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5
Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAvLyBiZSByZWZsZWN0ZWQgaW4g
dGhlIGNvbnRlbnRzIG9mIHRoZSBmaWVsZCB1bnRpbCB0aGUga2V5dXAgRE9NIGV2ZW50LgogICAg
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KSB7CiAKLSAg
ICAgICAgaWYgKHBlbmRpbmdDb21wb3NpdGlvbikgewotICAgICAgICAgICAgU3RyaW5nIGNvbXBv
c2l0aW9uU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChwZW5kaW5nQ29tcG9zaXRpb24pOwotICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25T
dHJpbmcpOwotCi0gICAgICAgICAgICBjbGVhclBlbmRpbmdJTURhdGEoKTsKLSAgICAgICAgICAg
IGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotCi0gICAgICAgIH0gZWxzZSBpZiAocGVuZGlu
Z1ByZWVkaXQpIHsKLSAgICAgICAgICAgIFN0cmluZyBwcmVlZGl0U3RyaW5nID0gU3RyaW5nOjpm
cm9tVVRGOChwZW5kaW5nUHJlZWRpdCk7Ci0KLSAgICAgICAgICAgIC8vIERvbid0IHVzZSBhbiBl
bXB0eSBwcmVlZGl0IGFzIGl0IHdpbGwgZGVzdHJveSB0aGUgY3VycmVudAotICAgICAgICAgICAg
Ly8gc2VsZWN0aW9uLCBldmVuIGlmIHRoZSBjb21wb3NpdGlvbiBpcyBjYW5jZWxsZWQgb3IgZmFp
bHMgbGF0ZXIgb24uCi0gICAgICAgICAgICBpZiAoIXByZWVkaXRTdHJpbmcuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVz
OwotICAgICAgICAgICAgICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5l
KDAsIHByZWVkaXRTdHJpbmcubGVuZ3RoKCksIENvbG9yKDAsIDAsIDApLCBmYWxzZSkpOwotICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdFN0cmlu
ZywgdW5kZXJsaW5lcywgMCwgMCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNsZWFy
UGVuZGluZ0lNRGF0YSgpOworICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgcGVuZGluZyBjb21wb3Np
dGlvbiBhdCB0aGlzIHBvaW50LCBpdCBoYXBwZW5lZCB3aGlsZQorICAgICAgICAvLyBmaWx0ZXJp
bmcgYSBrZXlwcmVzcywgc28gd2UgdHJlYXQgaXQgYXMgYSBub3JtYWwgdGV4dCBpbnNlcnRpb24u
CisgICAgICAgIC8vIFRoaXMgd2lsbCBhbHNvIGVuc3VyZSB0aGF0IGlmIHRoZSBrZXlwcmVzcyBl
dmVudCBoYW5kbGVyIGNoYW5nZWQgdGhlCisgICAgICAgIC8vIGN1cnJlbnRseSBmb2N1c2VkIG5v
ZGUsIHRoZSB0ZXh0IGlzIHN0aWxsIGluc2VydGVkIGludG8gdGhlIG9yaWdpbmFsCisgICAgICAg
IC8vIG5vZGUgKGluc2VydFRleHQoKSBoYXMgdGhpcyBsb2dpYywgYnV0IGNvbmZpcm1Db21wb3Np
dGlvbigpIGRvZXMgbm90KS4KKyAgICAgICAgaWYgKG1fcGVuZGluZ0NvbXBvc2l0aW9uKSB7Cisg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoU3RyaW5nOjpmcm9tVVRGOCht
X3BlbmRpbmdDb21wb3NpdGlvbi5nZXQoKSksIGV2ZW50KTsKKyAgICAgICAgICAgIGNsZWFyUGVu
ZGluZ0NvbXBvc2l0aW9uKCk7CiAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKIAogICAgICAgICB9IGVsc2UgewpAQCAtNTIwLDE1ICs1MjIsNTMgQEAgdm9pZCBFZGl0b3JD
bGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICBpZiAoIXRhcmdldEZyYW1lIHx8ICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gVE9ETzogV2UgbmVlZCB0byBkZWNpZGUgd2hpY2gg
ZmlsdGVyZWQga2V5c3Ryb2tlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyBJTQotICAgIC8vIGV2ZW50
cyBhbmQgd2hpY2ggc2hvdWxkIG5vdC4KICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9
IG1fd2ViVmlldy0+cHJpdjsKLSAgICBndGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MocHJp
di0+aW1Db250ZXh0LCBldmVudC0+a2V5RXZlbnQoKS0+Z2RrRXZlbnRLZXkoKSk7CisKKworICAg
IC8vIFNvbWUgSU0gY29udGV4dHMgKGUuZy4gJ3NpbXBsZScpIHdpbGwgYWN0IGFzIGlmIHRoZXkg
ZmlsdGVyIGV2ZXJ5CisgICAgLy8ga2V5c3Ryb2tlIGFuZCBqdXN0IGlzc3VlIGEgJ2NvbW1pdCcg
c2lnbmFsIGR1cmluZyBoYW5kbGluZy4gSW4gc2l0dWF0aW9ucworICAgIC8vIHdoZXJlIHRoZSAn
Y29tbWl0JyBzaWduYWwgaGFwcGVucyBkdXJpbmcgZmlsdGVyaW5nIGFuZCB0aGVyZSBpcyBubyBh
Y3RpdmUKKyAgICAvLyBjb21wb3NpdGlvbiwgYWN0IGFzIGlmIHRoZSBrZXlzdHJva2Ugd2FzIG5v
dCBmaWx0ZXJlZC4gVGhlIG9uZSBleGNlcHRpb24gdG8KKyAgICAvLyB0aGlzIGlzIHdoZW4gdGhl
IGtleXZhbCBwYXJhbWV0ZXIgb2YgdGhlIEdka0tleUV2ZW50IGlzIDAsIHdoaWNoIGlzIG9mdGVu
CisgICAgLy8gYSBrZXkgZXZlbnQgc2VudCBieSB0aGUgSU0gY29udGV4dCBmb3IgY29tbWl0dGlu
ZyB0aGUgY3VycmVudCBjb21wb3NpdGlvbi4KKworICAgIC8vIEhlcmUgaXMgYSB0eXBpY2FsIHNl
cXVlbmNlIG9mIGV2ZW50cyBmb3IgdGhlICdzaW1wbGUnIGNvbnRleHQ6CisgICAgLy8gMS4gR0RL
IGtleSBwcmVzcyBldmVudCAtPiB3ZWJraXRfd2ViX3ZpZXdfa2V5X3ByZXNzX2V2ZW50CisgICAg
Ly8gMi4gS2V5ZG93biBldmVudCAtPiBFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5
ZG93bgorICAgIC8vICAgICBndGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MgcmV0dXJucyB0
cnVlLCBidXQgdGhlcmUgaXMgYSBwZW5kaW5nCisgICAgLy8gICAgIGNvbXBvc2l0aW9uIHNvIGV2
ZW50LT5wcmV2ZW50RGVmYXVsdCBpcyBub3QgY2FsbGVkIChiZWxvdykuCisgICAgLy8gMy4gS2V5
ZG93biBldmVudCBidWJibGVzIHRocm91Z2ggdGhlIERPTQorICAgIC8vIDQuIEtleWRvd24gZXZl
bnQgLT4gRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50CisgICAgLy8gICAgIE5vIGFj
dGlvbiB0YWtlbi4KKyAgICAvLyA0LiBHREsga2V5IHJlbGVhc2UgZXZlbnQgLT4gd2Via2l0X3dl
Yl92aWV3X2tleV9yZWxlYXNlX2V2ZW50CisgICAgLy8gNS4gZ3RrX2ltX2NvbnRleHRfZmlsdGVy
X2tleXByZXNzIGlzIGNhbGxlZCBvbiB0aGUgcmVsZWFzZSBldmVudC4KKyAgICAvLyAgICAgU2lt
cGxlIGRvZXMgbm90IGZpbHRlciBtb3N0IGtleSByZWxlYXNlcywgc28gdGhlIGV2ZW50IGNvbnRp
bnVlcy4KKyAgICAvLyA2LiBLZXlwcmVzcyBldmVudCBidWJibGVzIHRocm91Z2ggdGhlIERPTS4K
KyAgICAvLyA3LiBLZXlwcmVzcyBldmVudCAtPiBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJk
RXZlbnQKKyAgICAvLyAgICAgcGVuZGluZyBjb21wb3NpdGlvbiBpcyBpbnNlcnRlZC4KKyAgICAv
LyA4LiBLZXl1cCBldmVudCBidWJibGVzIHRocm91Z2ggdGhlIERPTS4KKyAgICAvLyA5LiBLZXl1
cCBldmVudCAtPiBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQKKyAgICAvLyAgICAg
Tm8gYWN0aW9uIHRha2VuLgorCisgICAgLy8gVGhlcmUgYXJlIHR3byBzaXR1YXRpb25zIHdoZXJl
IHdlIGRvIGZpbHRlciB0aGUga2V5c3Ryb2tlOgorICAgIC8vIDEuIFRoZSBJTUNvbnRleHQgaW5z
dHJ1Y3RlZCB1cyB0byBmaWx0ZXIgYW5kIHdlIGhhdmUgbm8gcGVuZGluZyBjb21wb3NpdGlvbi4K
KyAgICAvLyAyLiBUaGUgSU1Db250ZXh0IGRpZCBub3QgaW5zdHJ1Y3QgdXMgdG8gZmlsdGVyLCBi
dXQgdGhlIGtleXN0cm9rZSBjYXVzZWQgYQorICAgIC8vICAgIGNvbXBvc2l0aW9uIGluIHByb2dy
ZXNzIHRvIGZpbmlzaC4gSXQgc2VlbXMgdGhhdCBzb21ldGltZXMgU0NJTSB3aWxsIGZpbmlzaAor
ICAgIC8vICAgIGEgY29tcG9zaXRpb24gYW5kIG5vdCBtYXJrIHRoZSBrZXlzdHJva2UgYXMgZmls
dGVyZWQuCisgICAgbV90cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50ID0gKCF0YXJnZXRGcmFt
ZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpCisgICAgICAgICAmJiBldmVudC0+a2V5RXZl
bnQoKS0+Z2RrRXZlbnRLZXkoKS0+a2V5dmFsOworICAgIGNsZWFyUGVuZGluZ0NvbXBvc2l0aW9u
KCk7CisgICAgaWYgKChndGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MocHJpdi0+aW1Db250
ZXh0LCBldmVudC0+a2V5RXZlbnQoKS0+Z2RrRXZlbnRLZXkoKSkgJiYgIW1fcGVuZGluZ0NvbXBv
c2l0aW9uKQorICAgICAgICB8fCAoIW1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudCAmJiAh
dGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKSkKKyAgICAgICAgZXZlbnQt
PnByZXZlbnREZWZhdWx0KCk7CisKKyAgICBtX3RyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQg
PSBmYWxzZTsKIH0KIAogRWRpdG9yQ2xpZW50OjpFZGl0b3JDbGllbnQoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKICAgICA6IG1faXNJblJlZG8oZmFsc2UpCiAgICAgLCBtX3dlYlZpZXcod2ViVmll
dykKKyAgICAsIG1fdHJlYXRDb250ZXh0Q29tbWl0QXNLZXlFdmVudChmYWxzZSkKIHsKICAgICBX
ZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1fd2ViVmlldy0+cHJpdjsKICAgICBnX3NpZ25h
bF9jb25uZWN0KHByaXYtPmltQ29udGV4dCwgImNvbW1pdCIsIEdfQ0FMTEJBQ0soaW1Db250ZXh0
Q29tbWl0dGVkKSwgdGhpcyk7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRHdGsuaAppbmRleCA5MjkyNjUxLi44MjVjMTQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTWFydGluIFJv
Ymluc29uIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKQEAgLTM0LDggKzM1LDEwIEBACiAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KIAog
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKK3R5cGVkZWYgY2hh
ciBnY2hhcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBhZ2U7CkBAIC01Myw2
ICs1NiwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIEVkaXRv
ckNsaWVudChXZWJLaXRXZWJWaWV3Kik7CiAgICAgICAgIH5FZGl0b3JDbGllbnQoKTsKKyAgICAg
ICAgV2ViS2l0V2ViVmlldyogd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQorICAgICAg
ICBib29sIHRyZWF0Q29udGV4dENvbW1pdEFzS2V5RXZlbnQoKSB7IHJldHVybiBtX3RyZWF0Q29u
dGV4dENvbW1pdEFzS2V5RXZlbnQ7IH0KKyAgICAgICAgdm9pZCBjbGVhclBlbmRpbmdDb21wb3Np
dGlvbigpIHsgbV9wZW5kaW5nQ29tcG9zaXRpb24uc2V0KDApOyB9CisgICAgICAgIGJvb2wgaGFz
UGVuZGluZ0NvbXBvc2l0aW9uKCkgeyByZXR1cm4gbV9wZW5kaW5nQ29tcG9zaXRpb247IH0KKyAg
ICAgICAgdm9pZCB1cGRhdGVQZW5kaW5nQ29tcG9zaXRpb24oY29uc3QgY2hhciopOwogCiAgICAg
ICAgIC8vIGZyb20gRWRpdG9yQ2xpZW50CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJv
eWVkKCk7CkBAIC0xMjAsNiArMTI4LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CisgICAgICAgIGJvb2wgbV90
cmVhdENvbnRleHRDb21taXRBc0tleUV2ZW50OworICAgICAgICBHT3duUHRyPGdjaGFyPiBtX3Bl
bmRpbmdDb21wb3NpdGlvbjsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3Rl
c3RzL3Rlc3RrZXlldmVudHMuYyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdGtleWV2ZW50cy5jCmlu
ZGV4IDNjOWUxOTguLmI0MWEwMzIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdGtl
eWV2ZW50cy5jCisrKyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdGtleWV2ZW50cy5jCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBNYXJ0aW4gUm9iaW5zb24KKyAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxMCBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQu
b3JnPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDEyICsyMiwxNiBAQAogI2luY2x1ZGUgPHN0
cmluZy5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CisKIAogI2lmIEdUS19DSEVDS19WRVJTSU9O
KDIsIDE0LCAwKQogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gIGNoYXIqIHBhZ2U7Ci0gIGdib29sZWFu
IHNob3VsZEJlSGFuZGxlZDsKKyAgICBjaGFyKiBwYWdlOworICAgIGNoYXIqIHRleHQ7CisgICAg
Z2Jvb2xlYW4gc2hvdWxkQmVIYW5kbGVkOwogfSBUZXN0SW5mbzsKIAogdHlwZWRlZiBzdHJ1Y3Qg
ewpAQCAtNDUsNiArNDksNyBAQCB0ZXN0X2luZm9fbmV3KGNvbnN0IGNoYXIqIHBhZ2UsIGdib29s
ZWFuIHNob3VsZEJlSGFuZGxlZCkKICAgICBpbmZvID0gZ19zbGljZV9uZXcoVGVzdEluZm8pOwog
ICAgIGluZm8tPnBhZ2UgPSBnX3N0cmR1cChwYWdlKTsKICAgICBpbmZvLT5zaG91bGRCZUhhbmRs
ZWQgPSBzaG91bGRCZUhhbmRsZWQ7CisgICAgaW5mby0+dGV4dCA9IDA7CiAKICAgICByZXR1cm4g
aW5mbzsKIH0KQEAgLTUzLDYgKzU4LDcgQEAgdm9pZAogdGVzdF9pbmZvX2Rlc3Ryb3koVGVzdElu
Zm8qIGluZm8pCiB7CiAgICAgZ19mcmVlKGluZm8tPnBhZ2UpOworICAgIGdfZnJlZShpbmZvLT50
ZXh0KTsKICAgICBnX3NsaWNlX2ZyZWUoVGVzdEluZm8sIGluZm8pOwogfQogCkBAIC04Miw3ICs4
OCw2IEBAIHN0YXRpYyBnYm9vbGVhbiBrZXlfcHJlc3NfZXZlbnRfY2IoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgR2RrRXZlbnQqIGV2ZW50LCBncG9pCiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi0K
IHN0YXRpYyBnYm9vbGVhbiBrZXlfcmVsZWFzZV9ldmVudF9jYihXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBHZGtFdmVudCogZXZlbnQsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAgLy8gV2ViQ29yZSBu
ZXZlciBzZWVtcyB0byBtYXJrIGtleXVwIGV2ZW50cyBhcyBoYW5kbGVkLgpAQCAtOTUsMTEgKzEw
MCwxNSBAQCBzdGF0aWMgZ2Jvb2xlYW4ga2V5X3JlbGVhc2VfZXZlbnRfY2IoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgR2RrRXZlbnQqIGV2ZW50LCBncAogICAgIHJldHVybiBGQUxTRTsKIH0KIAot
c3RhdGljIHZvaWQgbG9hZF9zdGF0dXNfY2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFt
U3BlYyogc3BlYywgZ3BvaW50ZXIgZGF0YSkKK3N0YXRpYyB2b2lkIHRlc3Rfa2V5cHJlc3NfZXZl
bnRzX2xvYWRfc3RhdHVzX2NiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqIHNw
ZWMsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAgS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlID0gKEtl
eUV2ZW50Rml4dHVyZSopZGF0YTsKICAgICBXZWJLaXRMb2FkU3RhdHVzIHN0YXR1cyA9IHdlYmtp
dF93ZWJfdmlld19nZXRfbG9hZF9zdGF0dXMod2ViVmlldyk7CiAgICAgaWYgKHN0YXR1cyA9PSBX
RUJLSVRfTE9BRF9GSU5JU0hFRCkgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGZpeHR1cmUt
PndlYlZpZXcsICJrZXktcHJlc3MtZXZlbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdf
Q0FMTEJBQ0soa2V5X3ByZXNzX2V2ZW50X2NiKSwgZml4dHVyZSk7CisgICAgICAgIGdfc2lnbmFs
X2Nvbm5lY3QoZml4dHVyZS0+d2ViVmlldywgImtleS1yZWxlYXNlLWV2ZW50IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKGtleV9yZWxlYXNlX2V2ZW50X2NiKSwgZml4dHVy
ZSk7CiAgICAgICAgIGlmICghZ3RrX3Rlc3Rfd2lkZ2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4
dHVyZS0+d2ViVmlldyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdk
a191bmljb2RlX3RvX2tleXZhbCgnYScpLCAwKSkKICAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9y
ZWFjaGVkKCk7CkBAIC0xMTEsMjUgKzEyMCwxNCBAQCBnYm9vbGVhbiBtYXBfZXZlbnRfY2IoR3Rr
V2lkZ2V0ICp3aWRnZXQsIEdka0V2ZW50KiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKIHsKICAgICBn
dGtfd2lkZ2V0X2dyYWJfZm9jdXMod2lkZ2V0KTsKICAgICBLZXlFdmVudEZpeHR1cmUqIGZpeHR1
cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilkYXRhOwotCi0gICAgZ19zaWduYWxfY29ubmVjdChmaXh0
dXJlLT53ZWJWaWV3LCAia2V5LXByZXNzLWV2ZW50IiwKLSAgICAgICAgICAgICAgICAgICAgIEdf
Q0FMTEJBQ0soa2V5X3ByZXNzX2V2ZW50X2NiKSwgZml4dHVyZSk7Ci0gICAgZ19zaWduYWxfY29u
bmVjdChmaXh0dXJlLT53ZWJWaWV3LCAia2V5LXJlbGVhc2UtZXZlbnQiLAotICAgICAgICAgICAg
ICAgICAgICAgR19DQUxMQkFDSyhrZXlfcmVsZWFzZV9ldmVudF9jYiksIGZpeHR1cmUpOwotCi0g
ICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53ZWJWaWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1
cyIsCi0gICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKGxvYWRfc3RhdHVzX2NiKSwgZml4
dHVyZSk7Ci0KICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcoZml4dHVyZS0+d2ViVmll
dywgZml4dHVyZS0+aW5mby0+cGFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRleHQvaHRtbCIsICJ1dGYtOCIsICJmaWxlOi8vIik7Ci0KICAgICByZXR1cm4gRkFMU0U7CiB9
CiAKLXN0YXRpYyB2b2lkIHRlc3Rfa2V5cHJlc3MoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBn
Y29uc3Rwb2ludGVyIGRhdGEpCitzdGF0aWMgdm9pZCBzZXR1cF9rZXlldmVudF90ZXN0KEtleUV2
ZW50Rml4dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRlciBkYXRhLCBHQ2FsbGJhY2sgbG9hZF9l
dmVudF9jYWxsYmFjaykKIHsKICAgICBmaXh0dXJlLT5pbmZvID0gKFRlc3RJbmZvKilkYXRhOwot
CiAgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53aW5kb3csICJtYXAtZXZlbnQiLAogICAg
ICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhtYXBfZXZlbnRfY2IpLCBmaXh0dXJlKTsKIApA
QCAtMTM3LDEwICsxMzUsMTcyIEBAIHN0YXRpYyB2b2lkIHRlc3Rfa2V5cHJlc3MoS2V5RXZlbnRG
aXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCiAgICAgZ3RrX3dpZGdldF9zaG93
KEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldykpOwogICAgIGd0a193aW5kb3dfcHJlc2VudChH
VEtfV0lORE9XKGZpeHR1cmUtPndpbmRvdykpOwogCisgICAgZ19zaWduYWxfY29ubmVjdChmaXh0
dXJlLT53ZWJWaWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1cyIsCisgICAgICAgICAgICAgICAgICAg
ICBsb2FkX2V2ZW50X2NhbGxiYWNrLCBmaXh0dXJlKTsKKwogICAgIGdfbWFpbl9sb29wX3J1bihm
aXh0dXJlLT5sb29wKTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9rZXlwcmVzc19ldmVudHMoS2V5
RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCit7CisgICAgc2V0dXBf
a2V5ZXZlbnRfdGVzdChmaXh0dXJlLCBkYXRhLCBHX0NBTExCQUNLKHRlc3Rfa2V5cHJlc3NfZXZl
bnRzX2xvYWRfc3RhdHVzX2NiKSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBlbGVtZW50X3RleHRf
ZXF1YWxfdG8oSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IGdjaGFyKiB0ZXh0KQoreworICAg
IEpTU3RyaW5nUmVmIHNjcmlwdFN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KAorICAgICAgIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImluXCIpLnZhbHVlOyIp
OworICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlw
dFN0cmluZywgMCwgMCwgMCwgMCk7CisgICAgSlNTdHJpbmdSZWxlYXNlKHNjcmlwdFN0cmluZyk7
CisKKyAgICAvLyBJZiB0aGUgdmFsdWUgaXNuJ3QgYSBzdHJpbmcsIHRoZSBlbGVtZW50IGlzIHBy
b2JhYmx5IGEgZGl2CisgICAgLy8gc28gZ3JhYiB0aGUgaW5uZXJUZXh0IGluc3RlYWQuCisgICAg
aWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKSB7CisgICAgICAgIEpTU3RyaW5n
UmVmIHNjcmlwdFN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKAorICAgICAg
ICAgICJ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJpblwiKS5pbm5lclRleHQ7Iik7
CisgICAgICAgIHZhbHVlID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHRTdHJpbmcs
IDAsIDAsIDAsIDApOworICAgICAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0U3RyaW5nKTsKKyAg
ICB9CisKKyAgICBnX2Fzc2VydChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKTsKKyAg
ICBKU1N0cmluZ1JlZiBpbnB1dFN0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwg
dmFsdWUsIDApOworICAgIGdfYXNzZXJ0KGlucHV0U3RyaW5nKTsKKworICAgIGdpbnQgc2l6ZSA9
IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShpbnB1dFN0cmluZyk7CisgICAgZ2No
YXIqIGNTdHJpbmcgPSBnX21hbGxvYyhzaXplKTsKKyAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5n
KGlucHV0U3RyaW5nLCBjU3RyaW5nLCBzaXplKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UoaW5wdXRT
dHJpbmcpOworCisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gZ191dGY4X2NvbGxhdGUoY1N0cmluZywg
dGV4dCkgPT0gMDsKKyAgICBnX2ZyZWUoY1N0cmluZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworc3RhdGljIHZvaWQgdGVzdF9pbWVfbG9hZF9zdGF0dXNfY2IoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgR1BhcmFtU3BlYyogc3BlYywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBLZXlFdmVudEZp
eHR1cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0dXJlKilkYXRhOworICAgIFdlYktpdExvYWRT
dGF0dXMgc3RhdHVzID0gd2Via2l0X3dlYl92aWV3X2dldF9sb2FkX3N0YXR1cyh3ZWJWaWV3KTsK
KyAgICBpZiAoc3RhdHVzICE9IFdFQktJVF9MT0FEX0ZJTklTSEVEKQorICAgICAgICByZXR1cm47
CisKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0
X2dsb2JhbF9jb250ZXh0KAorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUo
d2ViVmlldykpOworICAgIGdfYXNzZXJ0KGNvbnRleHQpOworCisgICAgR3RrSU1Db250ZXh0KiBp
bUNvbnRleHQgPSAwOworICAgIGdfb2JqZWN0X2dldCh3ZWJWaWV3LCAiaW0tY29udGV4dCIsICZp
bUNvbnRleHQsIE5VTEwpOworICAgIGdfYXNzZXJ0KGltQ29udGV4dCk7CisKKyAgICAvLyBUZXN0
IHRoYXQgY29tbWl0cyB0aGF0IGhhcHBlbiBvdXRzaWRlIG9mIGtleSBldmVudHMKKyAgICAvLyBj
aGFuZ2UgdGhlIHRleHQgZmllbGQgaW1tZWRpYXRlbHkuIFRoaXMgY2xvc2VseSByZXBsaWNhdGVz
CisgICAgLy8gdGhlIGJlaGF2aW9yIG9mIFNDSU0uCisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0
X2VxdWFsX3RvKGNvbnRleHQsICIiKSk7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGltQ29u
dGV4dCwgImNvbW1pdCIsICJhIik7CisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3Rv
KGNvbnRleHQsICJhIikpOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShpbUNvbnRleHQsICJj
b21taXQiLCAiYiIpOworICAgIGdfYXNzZXJ0KGVsZW1lbnRfdGV4dF9lcXVhbF90byhjb250ZXh0
LCAiYWIiKSk7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGltQ29udGV4dCwgImNvbW1pdCIs
ICJjIik7CisgICAgZ19hc3NlcnQoZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsICJhYmMi
KSk7CisKKyAgICBnX29iamVjdF91bnJlZihpbUNvbnRleHQpOworICAgIGdfbWFpbl9sb29wX3F1
aXQoZml4dHVyZS0+bG9vcCk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfaW1lKEtleUV2ZW50Rml4
dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRlciBkYXRhKQoreworICAgIHNldHVwX2tleWV2ZW50
X3Rlc3QoZml4dHVyZSwgZGF0YSwgR19DQUxMQkFDSyh0ZXN0X2ltZV9sb2FkX3N0YXR1c19jYikp
OworfQorCitzdGF0aWMgZ2Jvb2xlYW4gdmVyaWZ5X2NvbnRlbnRzKGdwb2ludGVyIGRhdGEpCit7
CisgICAgS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlID0gKEtleUV2ZW50Rml4dHVyZSopZGF0YTsK
KyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2ds
b2JhbF9jb250ZXh0KAorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUoZml4
dHVyZS0+d2ViVmlldykpOworICAgIGdfYXNzZXJ0KGNvbnRleHQpOworCisgICAgZ19hc3NlcnQo
ZWxlbWVudF90ZXh0X2VxdWFsX3RvKGNvbnRleHQsIGZpeHR1cmUtPmluZm8tPnRleHQpKTsKKyAg
ICBnX21haW5fbG9vcF9xdWl0KGZpeHR1cmUtPmxvb3ApOworICAgIHJldHVybiBGQUxTRTsKK30K
Kworc3RhdGljIHZvaWQgdGVzdF9ibG9ja2luZ19sb2FkX3N0YXR1c19jYihXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBzcGVjLCBncG9pbnRlciBkYXRhKQoreworICAgIEtleUV2
ZW50Rml4dHVyZSogZml4dHVyZSA9IChLZXlFdmVudEZpeHR1cmUqKWRhdGE7CisgICAgV2ViS2l0
TG9hZFN0YXR1cyBzdGF0dXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRfc3RhdHVzKHdlYlZp
ZXcpOworICAgIGlmIChzdGF0dXMgIT0gV0VCS0lUX0xPQURfRklOSVNIRUQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIFRoZSBmaXJzdCBrZXlwcmVzcyBldmVudCBzaG91bGQgbm90IG1vZGlm
eSB0aGUgZmllbGQuCisgICAgZml4dHVyZS0+aW5mby0+dGV4dCA9IGdfc3RyZHVwKCJiYyIpOwor
ICAgIGlmICghZ3RrX3Rlc3Rfd2lkZ2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4dHVyZS0+d2Vi
VmlldyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfdW5pY29kZV90b19r
ZXl2YWwoJ2EnKSwgMCkpCisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgaWYg
KCFndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2YWwo
J2InKSwgMCkpCisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgaWYgKCFndGtf
dGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2YWwoJ2MnKSwg
MCkpCisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisKKyAgICBnX2lkbGVfYWRkKHZl
cmlmeV9jb250ZW50cywgZml4dHVyZSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfYmxvY2tpbmco
S2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGRhdGEpCit7CisgICAgc2V0
dXBfa2V5ZXZlbnRfdGVzdChmaXh0dXJlLCBkYXRhLCBHX0NBTExCQUNLKHRlc3RfYmxvY2tpbmdf
bG9hZF9zdGF0dXNfY2IpKTsKK30KIAorI2lmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpICYm
IEdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQorc3RhdGljIHZvaWQgdGVzdF94aW1fbG9hZF9z
dGF0dXNfY2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFtU3BlYyogc3BlYywgZ3BvaW50
ZXIgZGF0YSkKK3sKKyAgICBLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUgPSAoS2V5RXZlbnRGaXh0
dXJlKilkYXRhOworICAgIFdlYktpdExvYWRTdGF0dXMgc3RhdHVzID0gd2Via2l0X3dlYl92aWV3
X2dldF9sb2FkX3N0YXR1cyh3ZWJWaWV3KTsKKyAgICBpZiAoc3RhdHVzICE9IFdFQktJVF9MT0FE
X0ZJTklTSEVEKQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtJTUNvbnRleHQqIGltQ29udGV4
dCA9IDA7CisgICAgZ19vYmplY3RfZ2V0KHdlYlZpZXcsICJpbS1jb250ZXh0IiwgJmltQ29udGV4
dCwgTlVMTCk7CisgICAgZ19hc3NlcnQoaW1Db250ZXh0KTsKKworICAgIGdjaGFyKiBvcmlnaW5h
bElkID0gZ19zdHJkdXAoZ3RrX2ltX211bHRpY29udGV4dF9nZXRfY29udGV4dF9pZChHVEtfSU1f
TVVMVElDT05URVhUKGltQ29udGV4dCkpKTsKKyAgICBndGtfaW1fbXVsdGljb250ZXh0X3NldF9j
b250ZXh0X2lkKEdUS19JTV9NVUxUSUNPTlRFWFQoaW1Db250ZXh0KSwgInhpbSIpOworCisgICAg
Ly8gVGVzdCB0aGF0IGNvbW1pdHMgdGhhdCBoYXBwZW4gb3V0c2lkZSBvZiBrZXkgZXZlbnRzCisg
ICAgLy8gY2hhbmdlIHRoZSB0ZXh0IGZpZWxkIGltbWVkaWF0ZWx5LiBUaGlzIGNsb3NlbHkgcmVw
bGljYXRlcworICAgIC8vIHRoZSBiZWhhdmlvciBvZiBTQ0lNLgorICAgIGZpeHR1cmUtPmluZm8t
PnRleHQgPSBnX3N0cmR1cCgiZGViaWFuIik7CisgICAgaWYgKCFndGtfdGVzdF93aWRnZXRfc2Vu
ZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tleXZhbCgnZCcpLCAwKSkKKyAgICAgICAgZ19h
c3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICBpZiAoIWd0a190ZXN0X3dpZGdldF9zZW5kX2tleShH
VEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZGtfdW5pY29kZV90b19rZXl2YWwoJ2UnKSwgMCkpCisgICAgICAgIGdfYXNzZXJ0X25vdF9y
ZWFjaGVkKCk7CisgICAgaWYgKCFndGtfdGVzdF93aWRnZXRfc2VuZF9rZXkoR1RLX1dJREdFVChm
aXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX3VuaWNv
ZGVfdG9fa2V5dmFsKCdiJyksIDApKQorICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOwor
ICAgIGlmICghZ3RrX3Rlc3Rfd2lkZ2V0X3NlbmRfa2V5KEdUS19XSURHRVQoZml4dHVyZS0+d2Vi
VmlldyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka191bmljb2RlX3RvX2tleXZh
bCgnaScpLCAwKSkKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICBpZiAoIWd0
a190ZXN0X3dpZGdldF9zZW5kX2tleShHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfdW5pY29kZV90b19rZXl2YWwoJ2EnKSwgMCkp
CisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgaWYgKCFndGtfdGVzdF93aWRn
ZXRfc2VuZF9rZXkoR1RLX1dJREdFVChmaXh0dXJlLT53ZWJWaWV3KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2RrX3VuaWNvZGVfdG9fa2V5dmFsKCduJyksIDApKQorICAgICAgICBn
X2Fzc2VydF9ub3RfcmVhY2hlZCgpOworCisgICAgZ3RrX2ltX211bHRpY29udGV4dF9zZXRfY29u
dGV4dF9pZChHVEtfSU1fTVVMVElDT05URVhUKGltQ29udGV4dCksIG9yaWdpbmFsSWQpOworICAg
IGdfZnJlZShvcmlnaW5hbElkKTsKKyAgICBnX29iamVjdF91bnJlZihpbUNvbnRleHQpOworCisg
ICAgZ19pZGxlX2FkZCh2ZXJpZnlfY29udGVudHMsIGZpeHR1cmUpOwogfQogCitzdGF0aWMgdm9p
ZCB0ZXN0X3hpbShLZXlFdmVudEZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkK
K3sKKyAgICBzZXR1cF9rZXlldmVudF90ZXN0KGZpeHR1cmUsIGRhdGEsIEdfQ0FMTEJBQ0sodGVz
dF94aW1fbG9hZF9zdGF0dXNfY2IpKTsKK30KKyNlbmRpZgorCiBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiB7CiAgICAgZ190aHJlYWRfaW5pdChOVUxMKTsKQEAgLTE0OCwzMCArMzA4
LDg1IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIAogICAgIGdfdGVzdF9idWdf
YmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIik7CiAKLSAgICBnX3Rlc3RfYWRkKCIvd2Vi
a2l0L2tleWV2ZW50L3RleHRmaWVsZCIsIEtleUV2ZW50Rml4dHVyZSwKLSAgICAgICAgICAgICAg
IHRlc3RfaW5mb19uZXcoIjxodG1sPjxib2R5PjxpbnB1dCBpZD1cImluXCIgdHlwZT1cInRleHRc
Ij4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8c2NyaXB0PmRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iLCBUUlVFKSwKKworICAgIC8vIFdlJ2xsIHRlc3QgaW5w
dXQgb24gYSBzbGV3IG9mIGRpZmZlcmVudCBub2RlIHR5cGVzLiBLZXkgZXZlbnRzIHRvCisgICAg
Ly8gdGV4dCBpbnB1dHMgYW5kIGVkaXRhYmxlIGRpdnMgc2hvdWxkIGJlIG1hcmtlZCBhcyBoYW5k
bGVkLiBLZXkgZXZlbnRzCisgICAgLy8gdG8gYnV0dG9ucyBhbmQgbGlua3Mgc2hvdWxkIG5vdC4K
KyAgICBjb25zdCBjaGFyKiB0ZXh0aW5wdXRfaHRtbCA9ICI8aHRtbD48Ym9keT48aW5wdXQgaWQ9
XCJpblwiIHR5cGU9XCJ0ZXh0XCI+IgorICAgICAgICAiPHNjcmlwdD5kb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0PjwvYm9keT48L2h0bWw+IjsKKyAgICBjb25z
dCBjaGFyKiBidXR0b25faHRtbCA9ICI8aHRtbD48Ym9keT48aW5wdXQgaWQ9XCJpblwiIHR5cGU9
XCJidXR0b25cIj4iCisgICAgICAgICI8c2NyaXB0PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
bicpLmZvY3VzKCk7PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iOworICAgIGNvbnN0IGNoYXIqIGxp
bmtfaHRtbCA9ICI8aHRtbD48Ym9keT48YSBocmVmPVwiaHR0cDovL3d3dy5nbm9tZS5vcmdcIiBp
ZD1cImluXCI+IgorICAgICAgICAiTElOS1kgTUNMSU5LRVJTT048L2E+PHNjcmlwdD5kb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0PiIKKyAgICAgICAgIjwvYm9k
eT48L2h0bWw+IjsKKyAgICBjb25zdCBjaGFyKiBkaXZfaHRtbCA9ICI8aHRtbD48Ym9keT48ZGl2
IGlkPVwiaW5cIiBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCI+IgorICAgICAgICAiPHNjcmlwdD5k
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4nKS5mb2N1cygpOzwvc2NyaXB0PjwvYm9keT48L2h0
bWw+IjsKKworICAgIC8vIFRoZXNlIGFyZSBzaW1pbGFyIHRvIHRoZSBibG9ja3MgYWJvdmUsIGJ1
dCB0aGV5IHNob3VsZCBibG9jayB0aGUgZmlyc3QKKyAgICAvLyBrZXlwcmVzcyBtb2RpZnlpbmcg
dGhlIGVkaXRhYmxlIG5vZGUuCisgICAgY29uc3QgY2hhciogdGV4dGlucHV0X2h0bWxfYmxvY2tp
bmcgPSAiPGh0bWw+PGJvZHk+IgorICAgICAgICAiPGlucHV0IGlkPVwiaW5cIiB0eXBlPVwidGV4
dFwiICIKKyAgICAgICAgIm9ua2V5cHJlc3M9XCJpZiAoZmlyc3QpIHtldmVudC5wcmV2ZW50RGVm
YXVsdCgpO2ZpcnN0PWZhbHNlO31cIj4iCisgICAgICAgICI8c2NyaXB0PmZpcnN0ID0gdHJ1ZTtc
bmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7PC9zY3JpcHQ+XG4iCisgICAg
ICAgICI8L3NjcmlwdD48L2JvZHk+PC9odG1sPiI7CisgICAgY29uc3QgY2hhciogZGl2X2h0bWxf
YmxvY2tpbmcgPSAiPGh0bWw+PGJvZHk+IgorICAgICAgICAiPGRpdiBpZD1cImluXCIgY29udGVu
dGVkaXRhYmxlPVwidHJ1ZVwiICIKKyAgICAgICAgIm9ua2V5cHJlc3M9XCJpZiAoZmlyc3QpIHtl
dmVudC5wcmV2ZW50RGVmYXVsdCgpO2ZpcnN0PWZhbHNlO31cIj4iCisgICAgICAgICI8c2NyaXB0
PmZpcnN0ID0gdHJ1ZTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8L3Nj
cmlwdD5cbiIKKyAgICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+IjsKKworICAgIGdfdGVz
dF9hZGQoIi93ZWJraXQva2V5ZXZlbnRzL2V2ZW50LXRleHRpbnB1dCIsIEtleUV2ZW50Rml4dHVy
ZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcodGV4dGlucHV0X2h0bWwsIFRSVUUpLAog
ICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCi0gICAgICAgICAgICAgICB0
ZXN0X2tleXByZXNzLAorICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzc19ldmVudHMsCiAgICAg
ICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7Ci0KLSAgICBnX3Rlc3RfYWRk
KCIvd2Via2l0L2tleWV2ZW50L2J1dHRvbnMiLCBLZXlFdmVudEZpeHR1cmUsCi0gICAgICAgICAg
ICAgICB0ZXN0X2luZm9fbmV3KCI8aHRtbD48Ym9keT48aW5wdXQgaWQ9XCJpblwiIHR5cGU9XCJi
dXR0b25cIj4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8c2NyaXB0PmRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdpbicpLmZvY3VzKCk7IgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iLCBGQUxTRSksCisgICAgZ190ZXN0X2FkZCgi
L3dlYmtpdC9rZXlldmVudHMvZXZlbnQtYnV0dG9ucyIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAg
ICAgICAgICAgIHRlc3RfaW5mb19uZXcoYnV0dG9uX2h0bWwsIEZBTFNFKSwKICAgICAgICAgICAg
ICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAotICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVz
cywKKyAgICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3NfZXZlbnRzLAogICAgICAgICAgICAgICAg
a2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOwotCi0gICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9r
ZXlldmVudC9saW5rIiwgS2V5RXZlbnRGaXh0dXJlLAotICAgICAgICAgICAgICAgdGVzdF9pbmZv
X25ldygiPGh0bWw+PGJvZHk+PGEgaHJlZj1cImh0dHA6Ly93d3cuZ25vbWUub3JnXCIgaWQ9XCJp
blwiPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxJTktZIE1DTElOS0VSU09OPC9h
PjxzY3JpcHQ+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2luJykuZm9jdXMoKTs8L3NjcmlwdD4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICI8L2JvZHk+PC9odG1sPiIsIEZBTFNFKSwKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0
L2tleWV2ZW50cy9ldmVudC1saW5rIiwgS2V5RXZlbnRGaXh0dXJlLAorICAgICAgICAgICAgICAg
dGVzdF9pbmZvX25ldyhsaW5rX2h0bWwsIEZBTFNFKSwKICAgICAgICAgICAgICAgIGtleV9ldmVu
dF9maXh0dXJlX3NldHVwLAotICAgICAgICAgICAgICAgdGVzdF9rZXlwcmVzcywKKyAgICAgICAg
ICAgICAgIHRlc3Rfa2V5cHJlc3NfZXZlbnRzLAogICAgICAgICAgICAgICAga2V5X2V2ZW50X2Zp
eHR1cmVfdGVhcmRvd24pOworICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQvZXZlbnQt
ZGl2IiwgS2V5RXZlbnRGaXh0dXJlLAorICAgICAgICAgICAgICAgdGVzdF9pbmZvX25ldyhkaXZf
aHRtbCwgVFJVRSksCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKKyAg
ICAgICAgICAgICAgIHRlc3Rfa2V5cHJlc3NfZXZlbnRzLAorICAgICAgICAgICAgICAga2V5X2V2
ZW50X2ZpeHR1cmVfdGVhcmRvd24pOworICAgIGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQv
aW1lLXRleHRpbnB1dCIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5m
b19uZXcodGV4dGlucHV0X2h0bWwsIFRSVUUpLAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2Zp
eHR1cmVfc2V0dXAsCisgICAgICAgICAgICAgICB0ZXN0X2ltZSwKKyAgICAgICAgICAgICAgIGtl
eV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2
ZW50L2ltZS1kaXYiLCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9f
bmV3KGRpdl9odG1sLCBUUlVFKSwKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3Nl
dHVwLAorICAgICAgICAgICAgICAgdGVzdF9pbWUsCisgICAgICAgICAgICAgICBrZXlfZXZlbnRf
Zml4dHVyZV90ZWFyZG93bik7CisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9rZXlldmVudC9ibG9j
ay10ZXh0aW5wdXQiLCBLZXlFdmVudEZpeHR1cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9f
bmV3KHRleHRpbnB1dF9odG1sX2Jsb2NraW5nLCBUUlVFKSwKKyAgICAgICAgICAgICAgIGtleV9l
dmVudF9maXh0dXJlX3NldHVwLAorICAgICAgICAgICAgICAgdGVzdF9ibG9ja2luZywKKyAgICAg
ICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsKKyAgICBnX3Rlc3RfYWRkKCIv
d2Via2l0L2tleWV2ZW50L2Jsb2NrLWRpdiIsIEtleUV2ZW50Rml4dHVyZSwKKyAgICAgICAgICAg
ICAgIHRlc3RfaW5mb19uZXcoZGl2X2h0bWxfYmxvY2tpbmcsIFRSVUUpLAorICAgICAgICAgICAg
ICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCisgICAgICAgICAgICAgICB0ZXN0X2Jsb2NraW5n
LAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOworI2lmIGRlZmlu
ZWQoR0RLX1dJTkRPV0lOR19YMTEpICYmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQorICAg
IGdfdGVzdF9hZGQoIi93ZWJraXQva2V5ZXZlbnQveGltLXRleHRpbnB1dCIsIEtleUV2ZW50Rml4
dHVyZSwKKyAgICAgICAgICAgICAgIHRlc3RfaW5mb19uZXcodGV4dGlucHV0X2h0bWwsIFRSVUUp
LAorICAgICAgICAgICAgICAga2V5X2V2ZW50X2ZpeHR1cmVfc2V0dXAsCisgICAgICAgICAgICAg
ICB0ZXN0X3hpbSwKKyAgICAgICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3RlYXJkb3duKTsK
KyAgICBnX3Rlc3RfYWRkKCIvd2Via2l0L2tleWV2ZW50L3hpbS1kaXYiLCBLZXlFdmVudEZpeHR1
cmUsCisgICAgICAgICAgICAgICB0ZXN0X2luZm9fbmV3KGRpdl9odG1sLCBUUlVFKSwKKyAgICAg
ICAgICAgICAgIGtleV9ldmVudF9maXh0dXJlX3NldHVwLAorICAgICAgICAgICAgICAgdGVzdF94
aW0sCisgICAgICAgICAgICAgICBrZXlfZXZlbnRfZml4dHVyZV90ZWFyZG93bik7CisjZW5kaWYK
IAogICAgIHJldHVybiBnX3Rlc3RfcnVuKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCmluZGV4IDgxY2U1MDIuLmI3MGQ5N2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCkBAIC01NjIsMTIgKzU2MiwxOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3
X2tleV9yZWxlYXNlX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleQogewogICAg
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKIAorICAg
IC8vIEdUSysgSU0gY29udGV4dHMgb2Z0ZW4gcmVxdWlyZSB1cyB0byBmaWx0ZXIga2V5IHJlbGVh
c2UgZXZlbnRzLCB3aGljaAorICAgIC8vIFdlYkNvcmUgZG9lcyBub3QgZG8gYnkgZGVmYXVsdCwg
c28gd2UgZmlsdGVyIHRoZSBldmVudCBoZXJlLiBXZSBvbmx5IGJsb2NrCisgICAgLy8gdGhlIGV2
ZW50IGlmIHdlIGRvbid0IGhhdmUgYSBwZW5kaW5nIGNvbXBvc2l0aW9uLCBiZWNhdXNlIHRoYXQg
bWVhbnMgd2UKKyAgICAvLyBhcmUgdXNpbmcgYSBjb250ZXh0IGxpa2UgJ3NpbXBsZScgd2hpY2gg
bWFya3MgZXZlcnkga2V5c3Ryb2tlIGFzIGZpbHRlcmVkLgorICAgIFdlYktpdDo6RWRpdG9yQ2xp
ZW50KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkVkaXRvckNsaWVudCo+KGNvcmUod2Vi
VmlldyktPmVkaXRvckNsaWVudCgpKTsKKyAgICBpZiAoZ3RrX2ltX2NvbnRleHRfZmlsdGVyX2tl
eXByZXNzKHdlYlZpZXctPnByaXYtPmltQ29udGV4dCwgZXZlbnQpICYmICFjbGllbnQtPmhhc1Bl
bmRpbmdDb21wb3NpdGlvbigpKQorICAgICAgICByZXR1cm4gVFJVRTsKKwogICAgIEZyYW1lKiBm
cmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKICAgICBpZiAoIWZyYW1lLT52aWV3KCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAog
ICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlib2FyZEV2ZW50KGV2ZW50KTsKLQogICAgIGlm
IChmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KGtleWJvYXJkRXZlbnQpKQogICAgICAg
ICByZXR1cm4gVFJVRTsKIApAQCAtNzI3LDYgKzczNCw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9j
dXMqCiAgICAgICAgICAgICBmb2N1c0NvbnRyb2xsZXItPnNldEZvY3VzZWQodHJ1ZSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGZvY3VzQ29udHJvbGxlci0+c2V0Rm9jdXNlZEZyYW1lKGNv
cmUod2ViVmlldyktPm1haW5GcmFtZSgpKTsKKworICAgICAgICBndGtfaW1fY29udGV4dF9mb2N1
c19pbih3ZWJWaWV3LT5wcml2LT5pbUNvbnRleHQpOwogICAgIH0KICAgICByZXR1cm4gR1RLX1dJ
REdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+Zm9jdXNfaW5fZXZlbnQo
d2lkZ2V0LCBldmVudCk7CiB9CkBAIC03NDMsNiArNzUyLDkgQEAgc3RhdGljIGdib29sZWFuIHdl
YmtpdF93ZWJfdmlld19mb2N1c19vdXRfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50
Rm9jdXMKICAgICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWQoZmFsc2Up
OwogICAgIH0KIAorICAgIGlmICh3ZWJWaWV3LT5wcml2LT5pbUNvbnRleHQpCisgICAgICAgIGd0
a19pbV9jb250ZXh0X2ZvY3VzX291dCh3ZWJWaWV3LT5wcml2LT5pbUNvbnRleHQpOworCiAgICAg
cmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPmZv
Y3VzX291dF9ldmVudCh3aWRnZXQsIGV2ZW50KTsKIH0KIAotLSAKMS42LjMuMwoK
</data>
<flag name="review"
          id="33975"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
    <flag name="commit-queue"
          id="33976"
          type_id="3"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
      

    </bug>

</bugzilla>